-
Notifications
You must be signed in to change notification settings - Fork 0
An outranked scan fault is discarded with no trace, at two sites #87
Copy link
Copy link
Closed
Labels
area:guardrailsGate scripts, test harnesses, Just recipes, hooks, and CI enforcementGate scripts, test harnesses, Just recipes, hooks, and CI enforcementarea:recordsADR and debt-record conventions, numbering, and record lifecycleADR and debt-record conventions, numbering, and record lifecyclebugSomething isn't workingSomething isn't workingeffort:SSmall; hours, single sittingSmall; hours, single sittingpriority:P3Low priorityLow priorityrisk:night-watchRevertible but not test-decided; may be built unattended, merged by a humanRevertible but not test-decided; may be built unattended, merged by a humanstatus:awaiting-mergegreen + mergeable; human just clicks mergegreen + mergeable; human just clicks merge
Description
Metadata
Metadata
Assignees
Labels
area:guardrailsGate scripts, test harnesses, Just recipes, hooks, and CI enforcementGate scripts, test harnesses, Just recipes, hooks, and CI enforcementarea:recordsADR and debt-record conventions, numbering, and record lifecycleADR and debt-record conventions, numbering, and record lifecyclebugSomething isn't workingSomething isn't workingeffort:SSmall; hours, single sittingSmall; hours, single sittingpriority:P3Low priorityLow priorityrisk:night-watchRevertible but not test-decided; may be built unattended, merged by a humanRevertible but not test-decided; may be built unattended, merged by a humanstatus:awaiting-mergegreen + mergeable; human just clicks mergegreen + mergeable; human just clicks merge
Found by the branch review on #69 (PR pending). #69 briefly fixed one of the two sites and reverted it on the next review pass; see the comment below for why.
Problem
Two functions in
.github/scripts/check-records.shremember a scan fault so that it cannot outrank a positive result, and then discard it when a positive result arrives.gate_existed_at:renumbered_elsewherehas the same shape: a candidate whose index query or base-ref witness could not run is remembered infault_status, and a later candidate whose content matches returns 0 without mentioning it.Remembering rather than returning is correct in both — a witness that genuinely found a gate file, or a candidate that genuinely matches, is not made unreliable by an unrelated probe failing. What neither site does is say that the search reached its answer incompletely. The verdict is right; the fact that part of the search never ran is reported nowhere.
The open question
This is not simply "add two
warn_fullcalls". ADR 0005 governs the file and does not settle this case:E-<RULE>-SCANon the error channel. A warning-severity scan code is a new channel for scan faults, which is a change to that decision rather than an application of it — and ADR 0005 is append-only.So the work is: decide whether an outranked fault is reportable at all and through which channel, record that decision, then apply it at both sites.
Expected
A decision record settling the above, and both sites following it, in
.github/scripts/check-records.shand its byte-identical mirror underskills/tome-of-lore/assets/.If the answer is that it should be reported, each site needs a regression test.
renumbered_elsewherealready has a fixture that reaches the state —renumber_match_outranks_faultincheck-records-test.sh, where one candidate's index query faults and a later one matches.gate_existed_athas none: it needs agitstub that faultsls-treefor one witness path while another resolves for real, in a repo whose protected set is otherwise empty sogate_existed_atis reached at all. Adding an unfalsifiable branch to the gate's own self-protection is what kept this out of #69 — that suite's stated acceptance criterion is that neutralising any single rule turns it red.Notes
just recordscompares the two mirrors byte for byte. Related: #25, #55, #64, #66, #69.