Commit a33b4d3
pm(patrol): add the seat-idle and blind-claim predicates, and make UNJUDGED survive the trim (#12088)
Three cards, one hot file, one surface (`scripts/pm/check-half-states.mjs`
plus its `--self-test`). Report-only throughout: a completed sweep still
exits 0 and no row writes a label.
H32 — a HELD seat idle over a non-empty lane queue. The first predicate here
that watches the SEAT rather than a card: the patrol could see a card nobody
moved and could not see a lane whose seat had stopped moving it. Threshold
derived the H30 way from the measured inter-claim distribution (n=169 over six
active lanes: p50 7 min, p90 324, p95 731); 480 min sits above every measured
within-shift interval, and all 12 gaps past it span a shift boundary. Legitimate
waits are excluded structurally, not by clock — a marker naming a live blocker
exempts regardless of elapsed time.
H33 — a `pm:dispatched` card whose latest `Claim:` predates a triage ruling on
the same thread, i.e. work in flight under an order that cannot carry the ruling
now standing. Ruling anchors are a closed, measured set. Low-yield by
construction: 0 on today's board, 4 of 107 over the closed window.
H19 — the cross-repo half that can actually land. A genuine cross-repo READ
needs a credential the patrol does not hold and by standing ruling will not be
given, so the work is making UNJUDGED honest instead: one `GET /repos/<o>/<n>`
per distinct sibling repo turns an ambiguous target 404 into a measured cause,
per target. And the summary's "never dropped" promise about unresolved targets
was measurably FALSE — the 2026-08-25T02:08Z sweep trimmed 199 rows and rendered
no unresolved target at all — so unjudged rows now sort above the size trim.
Also fixes a wiring regression found while editing the same object:
`dispatchRefTargets`/`dispatchRefRead` were computed and never forwarded into
`counts`, so the dispatch-liveness clause rendered `read on 0 of 0` on every
live sweep. The forwarding is now an enumerated contract the self-test pins.
Self-test 1193 -> 1336 cases, all passing.
Claude-Session: https://claude.ai/code/session_01RMTpSRF5CjMmQBFfPtPCwJ
Co-authored-by: Claude <noreply@anthropic.com>1 parent de98599 commit a33b4d3
1 file changed
Lines changed: 1123 additions & 29 deletions
0 commit comments