Skip to content

v2.20.3

Choose a tag to compare

@github-actions github-actions released this 08 Oct 09:20
88182d2

What this cut is

A cut of the release machinery, and the first one measured by it. Every file build writes is byte-identical to v2.20.2's, no generator, default, input format, compile message or assertion moved; what changes is how this package is published.

  • The publish gate is the same sharded selftest CI runs (#1249; #1250). A release run took about 21 minutes, 18m37s of it Publish to npm: npm's prepublishOnly ran the full selftest in one process on one 4-core runner, while CI's six shards on six runners reach the same verdict in about six minutes. The shards, the corpus fetch, typecheck, lint and the merge now live in one reusable workflow that CI and the release call, so the two cannot drift; the merge writes its own document — every shard's commit, exit and counts, the merge's exit, every registered suite in order — and the release's publish job downloads it and hands it to prepublishOnly, which accepts it only when its commit and every shard's commit are exactly the tree being published, the tree is clean, the document was written by this very selftest.ts, shards 1..n are each present once with a green exit and no failure, the counts reconcile, the merge exited 0 and every registered suite appears once in order; any other state is named — TALLY_COMMIT, TALLY_DIRTY, TALLY_SHARD_RED, TALLY_SUITE_MISSING and six more — and the full selftest runs exactly as before. There is no other variable and no flag: the publish is still gated by the full selftest on exactly the published tree, in the same workflow, and the variable points at evidence that is checked rather than at a switch. Shard documents carry their commit and a merge refuses shards from different commits. Three controls hold the design: the reader accepts the writer's own document and refuses eleven plants by name without ever running a selftest; the release workflow's job graph, the variable on the publish step only, and a manual dispatch reaching only the confirmation; and that CI and the release call the one reusable workflow and no other file defines the shards. This cut is the first measurement of the new path; the ceiling comment in the workflow is rewritten from it.

Not in this cut: anything in the compiler, the gate or the mesh operations; Stage D2 of the mesh-reduction contract (end to end with the dependant).