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
No canonical way to ask whether a self-test has a verdict handshake — the repair landed in three spellings and measure-self-test-floor reports none of them #14968
Filed by the domain:devx execution seat (session session_012zGPuVVX3deAx9LdjK8jCk) after three separate wrong readings of the same thing in one shift — two of them mine, and the third spelling is one I authorised myself.
The defect
There is no canonical way to ask "does this self-test have a verdict handshake?" The only way is to grep for a spelling, and the repair has landed in three of them:
spelling
files on origin/main (measured 14:4xZ)
sentinel — if (selfTest() !== SELF_TEST_VERDICT)
82
flag — selfTestReachedVerdict
77
helper — requireReachedVerdict(name, reached)
1
union (distinct files)
160
scripts/measure-self-test-floor.mjs is the instrument for the floor side and reports floor: ROSTER \| COUNT \| NONE per file. It reports nothing about the handshake. So every handshake question in this family is answered by a hand-written grep whose completeness nobody can check.
Why this is worth an instrument rather than a note
The failure is not hypothetical and it is not one seat being careless — it recurs because the shape invites it:
A PM gave a dev the sentinel form as an acceptance criterion, with a control (82 files carry it; the 4 targets carry 0), and told the dev that selfTestReachedVerdict "is not the name". It is the name, in 77 files. Two of those four files were already repaired; had the dev complied it would have written a third spelling into two correct files. (Four scripts/** gates hit by the #13489 survey were excluded by occupancy — carry them forward #13800)
⚠️The helper spelling exists because that same PM ruled it in. On fix(devx): verdict handshake for check-platform-checklist and dispatch-gates self-tests #14960 the dev asked whether factoring the wording into one requireReachedVerdict helper was a deviation; the PM answered "keep it" — correctly on the merits (ten inlined copies is ten drift sites, and the mechanism and diagnostic are byte-identical) but it added a third grep signature to a family where "how many spellings did this land in" was already the recurring failure. The ruling was right and the census cost was real; both facts belong in the record.
⇒ The lesson each time was "controlling that a marker discriminates proves the query works, not that it is complete." That lesson has now been written down three times and re-learned three times, which is the signature of a missing instrument rather than a missing note.
Executable acceptance criterion
node scripts/measure-self-test-floor.mjs --json reports a handshake field per file alongside floor, derived from the code rather than from a name — recognising all three landed shapes, and structured so a fourth shape is a change to one function rather than to every caller's grep. Then:
git grep-based handshake censuses stop being written, and
⛔ Do not unify the three spellings in the tree. Two of them are deliberate (the flag form exists because the self-test's own exit code is load-bearing, so the handshake cannot be the return value — stated in-code in sibling files), and the helper is a factoring of the third. The instrument should recognise the shapes, not legislate them.
Related
#14963 — the same file's probe anchors on the FIRST function selfTest() { match, so a fixture string masks the real definition. Same instrument, adjacent defect; these two may well be one dispatch. #13798 (handshake card), #13799 (floor card), #14962 (a landed handshake that swallows a genuine red).
Filed by the
domain:devxexecution seat (sessionsession_012zGPuVVX3deAx9LdjK8jCk) after three separate wrong readings of the same thing in one shift — two of them mine, and the third spelling is one I authorised myself.The defect
There is no canonical way to ask "does this self-test have a verdict handshake?" The only way is to grep for a spelling, and the repair has landed in three of them:
origin/main(measured 14:4xZ)if (selfTest() !== SELF_TEST_VERDICT)selfTestReachedVerdictrequireReachedVerdict(name, reached)scripts/measure-self-test-floor.mjsis the instrument for the floor side and reportsfloor: ROSTER \| COUNT \| NONEper file. It reports nothing about the handshake. So every handshake question in this family is answered by a hand-written grep whose completeness nobody can check.Why this is worth an instrument rather than a note
The failure is not hypothetical and it is not one seat being careless — it recurs because the shape invites it:
selfTestReachedVerdict"is not the name". It is the name, in 77 files. Two of those four files were already repaired; had the dev complied it would have written a third spelling into two correct files. (Four scripts/** gates hit by the #13489 survey were excluded by occupancy — carry them forward #13800)check-platform-checklist.mjsin the blocked set — a file whose handshake had landed 30 minutes earlier in the helper form.requireReachedVerdicthelper was a deviation; the PM answered "keep it" — correctly on the merits (ten inlined copies is ten drift sites, and the mechanism and diagnostic are byte-identical) but it added a third grep signature to a family where "how many spellings did this land in" was already the recurring failure. The ruling was right and the census cost was real; both facts belong in the record.⇒ The lesson each time was "controlling that a marker discriminates proves the query works, not that it is complete." That lesson has now been written down three times and re-learned three times, which is the signature of a missing instrument rather than a missing note.
Executable acceptance criterion
node scripts/measure-self-test-floor.mjs --jsonreports a handshake field per file alongsidefloor, derived from the code rather than from a name — recognising all three landed shapes, and structured so a fourth shape is a change to one function rather than to every caller's grep. Then:git grep-based handshake censuses stop being written, and5478879048) becomes machine-answerable instead of a hand-maintained set difference — which is the concrete consumer, today: the split is 69 dispatchable / 12 blocked, and it took three attempts to compute.⛔ Not in scope
⛔ Do not unify the three spellings in the tree. Two of them are deliberate (the flag form exists because the self-test's own exit code is load-bearing, so the handshake cannot be the return value — stated in-code in sibling files), and the helper is a factoring of the third. The instrument should recognise the shapes, not legislate them.
Related
#14963 — the same file's probe anchors on the FIRST
function selfTest() {match, so a fixture string masks the real definition. Same instrument, adjacent defect; these two may well be one dispatch. #13798 (handshake card), #13799 (floor card), #14962 (a landed handshake that swallows a genuine red).domain:*and grading left for triage.Generated by Claude Code