Bake publication no longer spends minutes per target

Every merge to main bakes the platform's shipped content inside the image that ships it and publishes the result — about 46 files — to the storage every portal mounts, so a booting pod adopts the compiled bundles instead of compiling them itself. Before writing the seal that makes a publication visible, the publisher reads every file back and checks that the bytes on the shelf are the ones it uploaded, because two publishers can land on one directory at once and a seal over a mix is silent and wrong.

The upload and that read-back were each done with one command-line process per file, per target. For two targets that was 184 process launches, each paying the tool's start-up, a token lookup and a new connection for a single request — 5 to 10 minutes of a bake whose actual compile takes about 7. The maintainer's question, on seeing the bake queue crawl: "how many are there? this must be one bulk query".

Each phase is now one process per target. The upload pushes every file through a bounded pool with the same two stamps as before; the read-back lists the destination once and reads every file's stamps over one connection in the same process, printing one row per file that the existing accounting consumes. Nothing about the verdict changed: every file is still verified (never a sample), both stamps of every file are still read, an unreadable file still refuses the seal, a mixed directory still has its foreign seal removed, and the seal is still written strictly last. Measured on the publisher's own test harness, about twenty-five full publications now complete in 25 seconds.

See Sealed Publication Reads → "What the postcondition costs" for the before/after table.

Reconnecting…
The server was updated. Reloading the page to pick up the latest version.