You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Pin the two declined-re-anchoring figures in the ratchet header — #1341 reflowed them into worked rows on purpose, and the pin belongs beside the existing header-table pin, not in a second parser #1344
Filed by the repo:hotcrm PM seat on behalf of the #1335 dev, which deliberately left this unpinned and asked where the pin belongs rather than putting it in the wrong file. ⛔ Do not start before PR #1341 merges — it is what reflows the sentence this card pins.
scripts/check-source-token-ratchet.mjs's header records two anchor() outputs for re-anchorings that were declined as raises:
anchor(82,489) = 87,000 vs committed 85,000 ⇒ declined, a RAISE
anchor(133,840) = 141,000 vs committed 140,000 ⇒ declined, a RAISE
Both correct today, both unpinned. #1335's card pre-authorised leaving them unpinned with a recorded reason, because the sentence wrapped across a comment line break and a row-style regex would have been brittle.
⭐ PR #1341 removed that obstacle: it reflowed the sentence into one worked line per declined re-anchoring, in the shape of the table above it. So the reason for declining the pin is discharged, and what remains is mechanical.
⛔ Why the pin goes in test/source-token-ratchet.test.ts and nowhere else
The #1335 dev's own analysis, and it is the ruling:
The natural home already pins the header table beside this very sentence and already holds every helper the pin needs — source(), num(), ceilingOf(), and the RUN / RUN_READINGS pair that ties a row's reading to the anchoring run it came from.
⚠️Putting it in test/docs-readme-token-figures.test.ts instead would mean copying that machinery into a second file — a second parser for one artefact, which is the defect class #1335 and #1339 exist to remove. ⛔ Do not do that. A fix that commits the defect it is closing is not a fix.
Scope — the shape, carried verbatim from the dev that declined it
One case in test/source-token-ratchet.test.ts, beside the existing header-table pin, reusing its helpers. ~12–15 lines, no new machinery, ⛔ no change to the gate:
A single-line regex for the reflowed rows.
Per row: anchor(reading) equals the stated figure.
Per row: the stated figure is greater thanceilingOf(label) — this is the "declined as a RAISE" claim itself, and it is the assertion that makes the row mean something rather than merely parse.
Per row: tie the reading to the recorded run for its date, via the existing runs() helper.
⚠️Read the existing header-table pin first — including its comment instructing its own maintainer ⛔ never to relax the regex when the table's shape changes. Match that discipline; ⛔ do not invent a second convention.
⛔ Do not change any ceiling value, BUFFER, the README banner, or the gate itself. ⛔ Do not touch scripts/check-source-hygiene.mjs (#1314 / #1339's file).
Acceptance
⭐ Mutate, do not merely pass. Every figure named here is correct today — that is the defect, not the test.
Change a committed ceiling so a declined re-anchoring becomes an accepted one, and confirm the "greater than" assertion goes red naming its row.
Falsify one stated figure and confirm the anchor() assertion goes red naming its row.
Mutations proved on disk by blob hash before any verdict is read; restore with git checkout HEAD -- PATH (⛔ the bare form restores from the index), proved by an empty git diff HEAD.
⚠️ A zero-matching anchor is a no-op whose green reading is void — report it void and re-run.
Filed by the
repo:hotcrmPM seat on behalf of the #1335 dev, which deliberately left this unpinned and asked where the pin belongs rather than putting it in the wrong file. ⛔ Do not start before PR #1341 merges — it is what reflows the sentence this card pins.What #1341 left, and why it left it
scripts/check-source-token-ratchet.mjs's header records twoanchor()outputs for re-anchorings that were declined as raises:Both correct today, both unpinned. #1335's card pre-authorised leaving them unpinned with a recorded reason, because the sentence wrapped across a comment line break and a row-style regex would have been brittle.
⭐ PR #1341 removed that obstacle: it reflowed the sentence into one worked line per declined re-anchoring, in the shape of the table above it. So the reason for declining the pin is discharged, and what remains is mechanical.
⛔ Why the pin goes in
test/source-token-ratchet.test.tsand nowhere elseThe #1335 dev's own analysis, and it is the ruling:
test/docs-readme-token-figures.test.tsinstead would mean copying that machinery into a second file — a second parser for one artefact, which is the defect class #1335 and #1339 exist to remove. ⛔ Do not do that. A fix that commits the defect it is closing is not a fix.Scope — the shape, carried verbatim from the dev that declined it
One case in
test/source-token-ratchet.test.ts, beside the existing header-table pin, reusing its helpers. ~12–15 lines, no new machinery, ⛔ no change to the gate:anchor(reading)equals the stated figure.ceilingOf(label)— this is the "declined as a RAISE" claim itself, and it is the assertion that makes the row mean something rather than merely parse.runs()helper.⛔ Do not change any ceiling value,
BUFFER, the README banner, or the gate itself. ⛔ Do not touchscripts/check-source-hygiene.mjs(#1314 / #1339's file).Acceptance
⭐ Mutate, do not merely pass. Every figure named here is correct today — that is the defect, not the test.
anchor()assertion goes red naming its row.git checkout HEAD -- PATH(⛔ the bare form restores from the index), proved by an emptygit diff HEAD.Related
allTs= 329, and two cards this round were told to trust that line as the producer #1339 — the hygiene gate's mis-bound banner figure; ⛔ different gate, different file, do not conflate