Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 31 additions & 9 deletions scripts/measure-durability-swallow-family.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,28 @@
// node scripts/measure-durability-swallow-family.mjs --sites # every site
// node scripts/measure-durability-swallow-family.mjs --json # machine
// node scripts/measure-durability-swallow-family.mjs --file <p> # one file
// node scripts/measure-durability-swallow-family.mjs --self-test # all 4 control families
// node scripts/measure-durability-swallow-family.mjs --self-test # every control family
// node scripts/measure-durability-swallow-family.mjs --self-test=gated
// # the 3 families CI runs
// # every family but POSITIVE_CONTROLS
//
// THE CONTROL FAMILIES, NAMED rather than counted, so that the next one added
// contradicts a LIST and not an integer -- which is exactly how the two bare integers
// that stood here before went stale, unread, as further families landed:
// `POSITIVE_CONTROLS`, `NEGATIVE_CONTROLS`, `REGRESSION_CONTROLS`, `RESOLUTION_CONTROLS`,
// the `DETERMINED` register cross-check (#13886), the copied gate-vocabulary cross-check
// (#15459), and `WORKLIST_READING_CONTROLS` (#15503).
//
// `--self-test=gated` asserts every one of them EXCEPT `POSITIVE_CONTROLS`, and that
// asymmetry is the point of the split rather than a convenience: the single expression
// `gated ? [] : POSITIVE_CONTROLS` is the ONLY thing either mode drops, and it drops
// those controls because they pin MEMBERS of the #12981 worklist that the repair
// programme exists to REMOVE -- a control a successful repair destroys cannot hold a
// CI gate.
//
// ⛔ THIS PARAGRAPH IS NOT THE AUTHORITY: `SELF_TEST_MODES` is (with the next block,
// for what CI runs and why), together with the verdict line each mode prints, which
// NAMES the families it just asserted. A reader who finds either of them disagreeing
// with this list should trust them and repair this list.
//
// THE CENSUS is NOT a gate: it exits 0 on any membership count, it prints "a
// MEASUREMENT, not a gate" on every run of it, and the file is deliberately not
Expand Down Expand Up @@ -484,8 +503,9 @@ const REGRESSION_CONTROLS = [
/**
* RESOLUTION controls: a (call site -> body) pair that must not move.
*
* The other three families all read MEMBERSHIP, and membership cannot see this
* defect. Measured, on the tree the scope-aware index landed against: the flat
* The other membership-reading families -- POSITIVE, NEGATIVE, REGRESSION -- all
* read MEMBERSHIP, and membership cannot see this defect. Measured, on the tree
* the scope-aware index landed against: the flat
* last-wins index misresolved 27 reached call sites, and the census printed
* byte-identical output before and after the repair — 56 members, 98 quiet, the
* same stats. A control that reads the census output is therefore GREEN against
Expand Down Expand Up @@ -943,9 +963,9 @@ function staleLines(stale) {
*
* ## Why there is a subset at all
*
* All four families were green only while somebody remembered to run them by
* hand: measured on `origin/main`, nothing in `package.json` or `.github/**`
* named this script. The same resolver was then repaired three times (#13459,
* The families that existed then (POSITIVE, NEGATIVE, REGRESSION, RESOLUTION)
* were green only while somebody remembered to run them by hand: measured on
* `origin/main`, nothing in `package.json` or `.github/**` named this script. The same resolver was then repaired three times (#13459,
* #13474, PR #13915) with no gate holding any of the previous repairs, and the
* census's numbers feed #12981's repair worklist, so a wrong denominator
* propagates into that programme unwatched.
Expand All @@ -962,8 +982,10 @@ function staleLines(stale) {
* repairs THAT file. ⛔ A gate that reddens on success is not a gate, and worse,
* it teaches the fleet to route around gates.
*
* So `gated` is the families the repair programme CANNOT destroy — three at
* #13919, joined by the `DETERMINED` register at #13886 (last section) — and the
* So `gated` is the families the repair programme CANNOT destroy — NEGATIVE,
* REGRESSION and RESOLUTION at #13919, joined by the `DETERMINED` register
* (#13886, last sections), the copied gate vocabulary (#15459) and the worklist
* readings (#15503, whose case is made at `WORKLIST_READING_CONTROLS`) — and the
* exclusion is PERMANENT rather than pending (#13919 ruling of 2026-09-01,
* boundary 1): repairs move a member from tier `dark` to tier `channelled` and
* it stays a member, so neither the negative controls, the regression controls,
Expand Down
Loading