Path: none | instrument (frozen assertion reds on repair) | 北极星「仪器为车队服务」
Filed by the domain:spec seat 2 execution seat (座位贴 #18549, session_01JbZnqu8bt6YqfJsr9vaFb3), from the out_of_scope_findings of the #15124 round (PR #19223). ⛔ Filed unassigned, ⛔ no priority:*, ⛔ no domain:*, ⛔ no type — routing and grading are triage's. ⛔ Not a claim.
⚠️ Attribution split, up front. The dev raised a finding in this shape. Two of its three legs are FALSIFIED by this seat's own measurement and are recorded below so nobody re-derives them. What survives is narrower than the dev stated and is measured here by executing the gate's own triage(), not by reading it.
The defect (the surviving leg)
scripts/check-spec-docblock-symbol-anchors.mjs prescribes, in its own exit vocabulary at :155:
[stale-residual] — A CENSUS_RESIDUAL row whose site is clean now. Delete the row.
Its self-test at :654 pins the LIVE residual count to a FROZEN, DATED historical figure:
check(liveTriage.pinned.length === CENSUS_17065.hardFindings,
`the pinned residual must equal the census's ${CENSUS_17065.hardFindings} hard findings, got ${liveTriage.pinned.length}`);
and CENSUS_17065 is declared at :196-199, verbatim:
The census this gate was registered against … ⛔ Historical measurements, not a budget to spend.
⇒ performing the prescribed repair reds the gate, and the only arithmetic that would clear it is editing a dated historical measurement the same file forbids editing. The first legitimate repair has no honest exit.
Measured — the gate's own triage(), executed, with two controls
node importing triage, CENSUS_RESIDUAL and CENSUS_17065 from the gate itself; findings synthesised one per row count (7 rows, sum(count) = 7):
rows=7 sum(count)=7 CENSUS_17065.hardFindings=7
[baseline, nothing repaired] pinned=7 hard=0 stale=0
assertion pinned.length === hardFindings -> true (green)
[after the prescribed repair: fix the citation AND delete its row]
pinned=6 hard=0 stale=0
assertion pinned.length === hardFindings -> false ⇐ RED
[control A: citation repaired, row LEFT] pinned=6 stale=1 ⇒ the gate's own [stale-residual] RED
[control B, dark: unchanged] pinned=7 (green)
⭐ Control A is what makes this a trap rather than a nit: leaving the row is red by [stale-residual], and deleting it is red by the census equality. Both exits from a genuine repair are red.
⛔ Two legs FALSIFIED — recorded so they are not re-derived
-
「deleting a row trips SELF_TEST_BATTERY_FLOOR 64 → 61」 — false. SELF_TEST_BATTERY_FLOOR is 1 (:470), and it floors the roster's SIZE, not the case count. The case count lives in SELF_TEST_BATTERIES (:464-466, value 64), and the file explicitly sanctions this exact decrement at :458-463:
⛔ Three of these cases are registered PER CENSUS_RESIDUAL row … so 21 of the 64 are the 7 day-one rows, and REPAIRING a citation and deleting its row legitimately lowers this floor by 3 — that is the ONLY reason it may be lowered.
⇒ the battery side is not a blocker; it is the one place the file already thought this through.
-
「the census cannot be decremented without breaking its own arithmetic check」 — false. That check is trackedTargetLineCitations + declinedCitations === commentProseLineCitations; executed: 6 + 183 = 189 vs 189 → true, and hardFindings is not a term in it. Decrementing hardFindings 7 → 6 breaks no arithmetic. What it breaks is the dated-measurement property at :196-199 — which is the real objection, and a different one.
Remedy shapes (⛔ none prescribed; triage's and the maintainer's call)
- Pin the live count to a live derivation —
CENSUS_RESIDUAL.reduce((a, r) => a + r.count, 0) — so repairing a row moves both sides at once and the historical census stays historical. Smallest change; keeps the assertion's teeth.
- Keep the equality and record a repair ledger beside the census, so
hardFindings stays the day-one figure and the pin reads hardFindings − repaired.
- Drop the equality, on the ground that
[stale-residual] and the battery floor already cover it. ⚠️ Cheapest, and it removes a check nobody has yet seen fire on a real drift.
⚠️ NOT measured
- ⛔ Whether any sibling gate in this family carries the same live-equality-against-frozen-census shape. Not swept. ⛔ Do not read this card as a class card.
- ⛔ The full
--self-test was not executed — the probe exercised triage() and evaluated the :654 predicate directly. Both readings agree, but a full run is the harder evidence and was not taken.
- ⛔ No repair was attempted on a real citation, so the repair's other fourteen surfaces are unmeasured.
Carrier — corrected
The dev named #16960 as the carrier. #16960 is CLOSED (read at file time), so it is not one. The real carrier is whoever performs the first repair of a CENSUS_RESIDUAL row — none is scheduled, which is why this is worth a card rather than a note: the trap is invisible until someone does the right thing.
Dedupe
Two queries over open and closed. check-spec-docblock-symbol-anchors → 8 results (#18101 open, #18899, #16898, #17065, #15313, #13449, #13788, #13713 closed) — the resolver's refusal classes, the platform-checklist corpus's own rule, this gate's origin card, and anchor-authoring cards; none is about the residual being unable to shrink. CENSUS_RESIDUAL OR SELF_TEST_BATTERY_FLOOR → 5 results (#18919, #18512, #16007, #18940, #17097) — all about self-test rosters, floors and handshakes on OTHER gates; none names this equality.
⛔ The zero on this shape is a reading, not a void one: both queries return many siblings, so the instrument fires.
Dedupe words
check-spec-docblock-symbol-anchors · CENSUS_RESIDUAL · CENSUS_17065.hardFindings · shrink-only residual that cannot shrink · stale-residual · live equality against a dated census
Generated by Claude Code
Path: none | instrument (frozen assertion reds on repair) | 北极星「仪器为车队服务」
Filed by the
domain:specseat 2 execution seat (座位贴 #18549,session_01JbZnqu8bt6YqfJsr9vaFb3), from theout_of_scope_findingsof the #15124 round (PR #19223). ⛔ Filed unassigned, ⛔ nopriority:*, ⛔ nodomain:*, ⛔ no type — routing and grading are triage's. ⛔ Not a claim.triage(), not by reading it.The defect (the surviving leg)
scripts/check-spec-docblock-symbol-anchors.mjsprescribes, in its own exit vocabulary at:155:Its self-test at
:654pins the LIVE residual count to a FROZEN, DATED historical figure:and
CENSUS_17065is declared at:196-199, verbatim:⇒ performing the prescribed repair reds the gate, and the only arithmetic that would clear it is editing a dated historical measurement the same file forbids editing. The first legitimate repair has no honest exit.
Measured — the gate's own
triage(), executed, with two controlsnodeimportingtriage,CENSUS_RESIDUALandCENSUS_17065from the gate itself; findings synthesised one per rowcount(7 rows,sum(count)= 7):⭐ Control A is what makes this a trap rather than a nit: leaving the row is red by
[stale-residual], and deleting it is red by the census equality. Both exits from a genuine repair are red.⛔ Two legs FALSIFIED — recorded so they are not re-derived
「deleting a row trips
SELF_TEST_BATTERY_FLOOR64 → 61」 — false.SELF_TEST_BATTERY_FLOORis 1 (:470), and it floors the roster's SIZE, not the case count. The case count lives inSELF_TEST_BATTERIES(:464-466, value 64), and the file explicitly sanctions this exact decrement at:458-463:⇒ the battery side is not a blocker; it is the one place the file already thought this through.
「the census cannot be decremented without breaking its own arithmetic check」 — false. That check is
trackedTargetLineCitations + declinedCitations === commentProseLineCitations; executed:6 + 183 = 189vs189→ true, andhardFindingsis not a term in it. DecrementinghardFindings7 → 6 breaks no arithmetic. What it breaks is the dated-measurement property at:196-199— which is the real objection, and a different one.Remedy shapes (⛔ none prescribed; triage's and the maintainer's call)
CENSUS_RESIDUAL.reduce((a, r) => a + r.count, 0)— so repairing a row moves both sides at once and the historical census stays historical. Smallest change; keeps the assertion's teeth.hardFindingsstays the day-one figure and the pin readshardFindings − repaired.[stale-residual]and the battery floor already cover it.--self-testwas not executed — the probe exercisedtriage()and evaluated the:654predicate directly. Both readings agree, but a full run is the harder evidence and was not taken.Carrier — corrected
The dev named #16960 as the carrier. #16960 is CLOSED (read at file time), so it is not one. The real carrier is whoever performs the first repair of a
CENSUS_RESIDUALrow — none is scheduled, which is why this is worth a card rather than a note: the trap is invisible until someone does the right thing.Dedupe
Two queries over open and closed.
check-spec-docblock-symbol-anchors→ 8 results (#18101 open, #18899, #16898, #17065, #15313, #13449, #13788, #13713 closed) — the resolver's refusal classes, the platform-checklist corpus's own rule, this gate's origin card, and anchor-authoring cards; none is about the residual being unable to shrink.CENSUS_RESIDUAL OR SELF_TEST_BATTERY_FLOOR→ 5 results (#18919, #18512, #16007, #18940, #17097) — all about self-test rosters, floors and handshakes on OTHER gates; none names this equality.⛔ The zero on this shape is a reading, not a void one: both queries return many siblings, so the instrument fires.
Dedupe words
check-spec-docblock-symbol-anchors·CENSUS_RESIDUAL·CENSUS_17065.hardFindings· shrink-only residual that cannot shrink · stale-residual · live equality against a dated censusGenerated by Claude Code