Repository navigation
fix(guard_tree): a passing guard's UNMEASURED / SUMMARY lines reach the log — a bare PASS could not say "not measured here" (PMAT-3651) - #3653
Conversation
…he log — a bare PASS could not say "not measured here" (#3651) Refs #3651 #3567 #3633 guard_tree.sh recorded a passing guard as its label alone and dropped its output. Twelve guards exit 0 on UNMEASURED by design, so `PASS <guard> [run]` meant "measured and passed" or "not measured here" and no log could tell which. Main's guard-tree on intel-clean-room-5 (run 35563537942) and gx10-build (run 35561048727) both show only `PASS scripts/check_fleet_pv_shapes_gate.sh [run]`, so #3567's criterion — the verdict measured inside a runner — was unobservable. - guard_tree.sh: `surface_pass_summary` prints, under a PASS row, every captured line whose FIRST token is UNMEASURED or SUMMARY, indented ` ~ `, capped at 5 plus a `(+N more …)` count. UNMEASURED needs no opt-in; SUMMARY is how a guard puts its measured row into the log. Mid-line words and prefixes (`UNMEASUREDX`) are not markers. - check_fleet_pv_shapes_gate.sh: a measured PASS is re-printed as `SUMMARY PASS verdict=… runner=… pin=… pv=… version=…`; UNMEASURED is surfaced unasked. Self-test row 1b asserts the SUMMARY row; row 5 now also refuses `SUMMARY PASS` on the UNMEASURED path. 11 rows pass. - guard_tree_test.sh rows 22-27: UNMEASURED surfaced with no opt-in; SUMMARY surfaced and nothing else of that guard's output; mid-line and prefix words not surfaced; a silent pass prints only its row; 7 SUMMARY lines -> 5 + (+2 more); and the mutant with the surfacing deleted loses 22 and 23. 29/0. Four more mutants of the awk, each RED: cap removed (26), marker unanchored (24), SUMMARY dropped (23, 26), word boundary dropped (24). Measured while proving it, NOT fixed here: on this box the fleet pv (~/.cargo/bin/pv 0.68.2, pin 0.68.2) returns rc=2 with no JSON on `lint contracts --gate shapes --format json` — it refuses 7 tracked evidence/parity/l0-1{,b}/*.json records as "UNMIGRATED logit-parity record" — while the pv built from HEAD returns verdict=Pass, 2320 focus nodes, pc_shape fired, 3 planted. So a converged runner (pin + fleet pv) will show this guard as ENV, and the surfaced row is what will say so. Reported on #3567. Gates: bashrs-gate PASS, pipe-into-grep-q at ceiling, hardcoded-paths +0, apr pinned, guards-are-wired PASS, no-timing-in-required PASS, roadmap aggregate idempotent + sorted/unique/additive; fmt, deny, aprender-contracts --lib 1666. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
quorum-review (AD-04): three PASS — agreed (auto_merge: checked=true was_armed=false disarmed=false) {
"ticket": "PMAT-3651",
"head": "09ea6b5a36f6a18a40735481f81b4d6d622e4910",
"width": 3,
"executor": "agy",
"agreed": true,
"auto_merge": {
"checked": true,
"was_armed": false,
"disarmed": false,
"note": "auto-merge not armed"
},
"lanes": [
{
"lane": 1,
"verdict": "PASS",
"findings": 0
},
{
"lane": 2,
"verdict": "PASS",
"findings": 3
},
{
"lane": 3,
"verdict": "PASS",
"findings": 2
}
]
} |
Lanes gemini-3.1-pro-high / gemini-3.1-pro-low / gemini-3.6-flash-high; no transcript reads a sibling lane file. Refs #3651 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Cross-inspection of
|
| lane | conversation | status | verdict | findings | refs to sibling lanes / $WORK | duration |
|---|---|---|---|---|---|---|
| lane 1 | 06bee79b |
SUCCESS | PASS (structured_output) | 0 (0 cited, 0 with commands) | 0 | 56 s |
| lane 2 | 37d9288a |
SUCCESS | PASS (structured_output) | 3 (3 cited, 0 with commands) | 0 | 79 s |
| lane 3 | 0b86b8ea |
SUCCESS | PASS (structured_output) | 2 (0 cited, 2 with commands) | 0 | 223 s |
Distinct agy conversation ids: 3/3; no lane references a sibling lane or $WORK. Read from /mnt/nvme-raid0/agent-wt/gt-3651/docs/audits/quorum-PMAT-3651.json.lanes on this box. Note: guard_tree surfaces a passing guard's UNMEASURED/SUMMARY lines; with #3600 it closes #3567's observability gap; no workflow file.
Verdict line: 3/3 PASS, independent. Arming.
|
§13.11 rung 1 — quorum shadow verdict Shadow mode: this records a verdict and merges nothing. A refusal |
|
Disarmed by the cop (07:35Z): this PR is integrated in the 0.69 release batch #3669 (one CI run, one queue slot, |
|
Landed in #3669 (squash |
Closes #3651. Refs #3567 #3633.
guard_tree.shrecorded a passing guard as its label alone and dropped its output. Twelve guards exit 0 on UNMEASURED by design, soPASS <guard> [run]meant "measured and passed" or "not measured here". Main's guard-tree on intel-clean-room-5 (run 35563537942) and gx10-build (run 35561048727) both show onlyPASS scripts/check_fleet_pv_shapes_gate.sh [run]— #3567's criterion (the verdict measured inside a runner) is unobservable in any log.What changes
scripts/guard_tree.shsurface_pass_summary: under a PASS row, every captured line whose first token isUNMEASUREDorSUMMARY, indented~, capped at 5 +(+N more …)guard_tree_test.shrow 27: surfacing deleted → 22, 23 RED; awk mutants: cap removed → 26; unanchored → 24; SUMMARY dropped → 23, 26; word boundary dropped → 24scripts/check_fleet_pv_shapes_gate.shSUMMARY PASS verdict=… runner=… pin=… pv=… version=…; UNMEASURED needs no SUMMARYSUMMARY PASSon the UNMEASURED path (11/11)scripts/tests/guard_tree_test.shFound while proving it — not fixed here
On lambda the fleet pv (
~/.cargo/bin/pv0.68.2, pin 0.68.2) returns rc=2 with no JSON forlint contracts --gate shapes --format json: it refuses 7 trackedevidence/parity/l0-1{,b}/*.jsonrecords as "UNMIGRATED logit-parity record". The pv built from HEAD on the same tree returnsverdict=Pass, 2320 focus nodes,pc_shape=fired, 3 planted. So a converged runner (pin + fleet pv) will show this guard as ENV — and after this PR the log will say so instead of a bare PASS. Reported on #3567.Measured
bashrs-gate PASS · pipe-into-grep-q at ceiling · hardcoded-paths +0 · apr pinned · guards-are-wired PASS · no-timing-in-required PASS · roadmap aggregate idempotent + sorted/unique/additive · fmt · deny advisories ·
aprender-contracts --lib1666 passed.🤖 Generated with Claude Code