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 / PR #1401. This is the one remaining failure in the relevance corpus that is not a mislabel.
The case
09048b84 — "fix(daemon): let an OTA-enabled daemon receive uncoded non-ladder traffic" — carries Refactors: CAP-33 CAP-38. Its body describes the change as "without feeding the rate controller or keying an ACK", and it names on_rx_frame(RxOutcome::Failed) and ota_rate_decision_events. CAP-33 "Over-the-air receiver-led rate control" is semantically the right capability.
— and the commit touched the OTA arm in openpulse-modem/src/engine.rs and openpulse-daemon/src/server.rs. CAP-33 owns neither. The rate controller's policy is in core; the OTA arm that drives it lives in the engine and the daemon, and the map does not say so.
It is a map gap, not a rule error, and the 2026-09-15 maintainer decision already names curation as the remedy for exactly this. It briefly caused a worse mistake: I proposed relaxing the lint's predicate (fail only when every named capability is irrelevant) to absorb this one case. Review rejected that — it would have been a silent second relaxation on top of the gap, with a measured bypass (CAP-66 owns a touched file in 49 % of production commits). The predicate stayed strict and this case stayed failing, deliberately.
Enforcement is not retroactive, so 09048b84 blocks nothing; a future commit to the OTA arm naming CAP-33 would be refused, which is the live cost.
The decision this needs
Widening CAP-33 to engine.rs is not free:
engine.rs is 1 335 mutants and already has 6 owners; server.rs is 218 with 6.
code: feeds trace.py scope → req-mutation.sh, so a capability's size is its mutation cost.
It also makes engine.rs a 7-owner hub, and hub ownership is what makes the relevance rule weak where commits concentrate (already 9 of 22 pass only weakly).
So the options are roughly:
Widen CAP-33 to the OTA arm files. Fixes the case; grows a hub and a mutation scope.
Narrow the commit's trailer convention — accept that a change spanning policy and its driver names the capability that owns the files it touched (CAP-38 here), and let CAP-33 describe policy only.
Follow-up from #1371 / PR #1401. This is the one remaining failure in the relevance corpus that is not a mislabel.
The case
09048b84— "fix(daemon): let an OTA-enabled daemon receive uncoded non-ladder traffic" — carriesRefactors: CAP-33 CAP-38. Its body describes the change as "without feeding the rate controller or keying an ACK", and it nameson_rx_frame(RxOutcome::Failed)andota_rate_decision_events. CAP-33 "Over-the-air receiver-led rate control" is semantically the right capability.It fails the lint because CAP-33's
code:is:— and the commit touched the OTA arm in
openpulse-modem/src/engine.rsandopenpulse-daemon/src/server.rs. CAP-33 owns neither. The rate controller's policy is in core; the OTA arm that drives it lives in the engine and the daemon, and the map does not say so.Why it was not fixed in #1401
It is a map gap, not a rule error, and the 2026-09-15 maintainer decision already names curation as the remedy for exactly this. It briefly caused a worse mistake: I proposed relaxing the lint's predicate (fail only when every named capability is irrelevant) to absorb this one case. Review rejected that — it would have been a silent second relaxation on top of the gap, with a measured bypass (CAP-66 owns a touched file in 49 % of production commits). The predicate stayed strict and this case stayed failing, deliberately.
Enforcement is not retroactive, so
09048b84blocks nothing; a future commit to the OTA arm naming CAP-33 would be refused, which is the live cost.The decision this needs
Widening CAP-33 to
engine.rsis not free:engine.rsis 1 335 mutants and already has 6 owners;server.rsis 218 with 6.code:feedstrace.py scope→req-mutation.sh, so a capability's size is its mutation cost.engine.rsa 7-owner hub, and hub ownership is what makes the relevance rule weak where commits concentrate (already 9 of 22 pass only weakly).So the options are roughly:
code:(-F-style scoping) so a capability can own the OTA arm functions inengine.rswithout owning all 1 335 mutants. Biggest change; also the one that would help scripts/req-mutation.sh is the only tier-2 verification instrument and runs in no workflow #1279's cost problem.Option 3 is the one that generalises, and it is the same lever the #1279 cadence work wants. Worth deciding together rather than separately.
Related: #1371, #1279, #1401.
🤖 Generated with Claude Code
https://claude.ai/code/session_0188ATCj6DZ9aRVQ2vSirua6