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
Follow-up from #1371, split out rather than widening PR #1401. Found during the adversarial review recorded in docs/dev/reviews/review-1371-split-and-enforce.md, and re-derived independently before filing.
The gap
#1401 enforces relevance — a named capability must own at least one file the change touched — but only for Refactors:. Implements: names a requirement, and nothing checks that the requirement's covering capabilities own anything the change touched.
Measured over the last 400 commits, production-touching only:
Refactors: 22
Implements: only 51 <- never relevance-checked
Of the 51, 29 name a requirement whose covered_by capabilities own none of the touched files.
The systematic instance
Five repeater commits carry Implements: REQ-FUN-11, which reads "Support signed transfer manifests" and is covered by CAP-03 (manifest.rs) and CAP-71 (filexfer). The repeater crate is CAP-47.
commit
subject
touched (example)
59784df1
fix(repeater): identify while idle, under its own key
openpulse-daemon/src/server.rs
42369e60
fix(repeater): recover from a panic without handing back a keyed rig
openpulse-daemon/src/lib.rs
4d268836
fix(repeater): hand the repeater back so a stopped one can restart
openpulse-daemon/src/lib.rs
ceaa3d4f
fix(repeater): listen to rig_b's band before keying it
openpulse-config/src/lib.rs
fcbb8594
fix(repeater): hear what the daemon hears, and be startable
openpulse-config/src/lib.rs
That is the same copy-paste shape #1371 was filed for, in the half of the trailers nobody is checking — and it is the larger half.
Why it is not simply "apply the same rule"
Implements: is a requirement→capability→file join, not a direct one, so the rule has a choice the Refactors: case does not:
Require the requirement's covered_by capabilities to own a touched file. Direct analogue. But it inherits every narrowness in covered_by: 29 of 51 flag today, and an unknown share of those are map gaps rather than mislabels — the same 09048b84 shape that made me briefly adopt the wrong predicate in feat(trace): enforce trailer relevance, on the path that actually guards main (#1371) #1401.
Report-only for Implements: until the flagged 29 are triaged.
Triage the 29 first, then enforce — the ordering the 2026-09-15 decision used for code:, which worked.
Option 3 looks right by precedent, but the triage is the work and it is not clerical: telling a mislabel from a narrow covered_by needs reading each commit.
Prerequisite
The 29 need adjudicating before any of this is a gate, exactly as the 8 Refactors: failures were adjudicated in review-1371-capability-ownership.md (7 true mislabels, 1 map gap). Until then the honest statement is that half the trailers on main carry an unchecked claim.
Related: #1371, #1283 (give requirements a verification: field).
Follow-up from #1371, split out rather than widening PR #1401. Found during the adversarial review recorded in
docs/dev/reviews/review-1371-split-and-enforce.md, and re-derived independently before filing.The gap
#1401 enforces relevance — a named capability must own at least one file the change touched — but only for
Refactors:.Implements:names a requirement, and nothing checks that the requirement's covering capabilities own anything the change touched.Measured over the last 400 commits, production-touching only:
Of the 51, 29 name a requirement whose
covered_bycapabilities own none of the touched files.The systematic instance
Five repeater commits carry
Implements: REQ-FUN-11, which reads "Support signed transfer manifests" and is covered by CAP-03 (manifest.rs) and CAP-71 (filexfer). The repeater crate is CAP-47.59784df1openpulse-daemon/src/server.rs42369e60openpulse-daemon/src/lib.rs4d268836openpulse-daemon/src/lib.rsceaa3d4fopenpulse-config/src/lib.rsfcbb8594openpulse-config/src/lib.rsThat is the same copy-paste shape #1371 was filed for, in the half of the trailers nobody is checking — and it is the larger half.
Why it is not simply "apply the same rule"
Implements:is a requirement→capability→file join, not a direct one, so the rule has a choice theRefactors:case does not:covered_bycapabilities to own a touched file. Direct analogue. But it inherits every narrowness incovered_by: 29 of 51 flag today, and an unknown share of those are map gaps rather than mislabels — the same09048b84shape that made me briefly adopt the wrong predicate in feat(trace): enforce trailer relevance, on the path that actually guards main (#1371) #1401.Implements:until the flagged 29 are triaged.code:, which worked.Option 3 looks right by precedent, but the triage is the work and it is not clerical: telling a mislabel from a narrow
covered_byneeds reading each commit.Prerequisite
The 29 need adjudicating before any of this is a gate, exactly as the 8
Refactors:failures were adjudicated inreview-1371-capability-ownership.md(7 true mislabels, 1 map gap). Until then the honest statement is that half the trailers onmaincarry an unchecked claim.Related: #1371, #1283 (give requirements a
verification:field).🤖 Generated with Claude Code
https://claude.ai/code/session_0188ATCj6DZ9aRVQ2vSirua6