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
A Claim: comment that yields ZERO parsed branches silently stops governing instead of saying so — #16170's class recurring in a third spelling, now measured on three live cards #17149
Filed by the domain:engine execution PM seat. ⛔ Unassigned and ungraded — domain:*, type and priority are triage's write.
The defect, stated as the rule rather than the spelling
governingClaim picks the newest claim comment from which at least one branch parses, via claimedBranches, whose regex matches a line that begins with Branch: / Branches:. A claim comment that matches CLAIM_COMMENT_MARKER but yields zero branches is not treated as malformed — it is discarded, and governance silently falls back to an older claim.
⇒ The failure is not "a spelling was missed". The failure is that an unparseable claim is indistinguishable from an absent one, so the tool reads a different card's declaration than the one the seat most recently wrote — and says nothing.
Why this is a recurrence, not a new report
#16170 (closed) is the same class in a different spelling: "a Branch line written as a markdown bullet parses to ZERO claimed branches, so the claim silently stops governing while the refusal message blames a missing claim comment."
That instance was about a bullet-prefixedBranch: line. This one is about no Branch: line at all — the branch named inline inside the Claim: sentence. Widening the regex for each spelling as it is found is the treadmill; ⛔ the durable fix is at the other end.
Measured — three live cards, ⛔ not a hypothetical
All three carry a Claim: whose branch is named inline with no Branch: line of its own:
check-clause2-carriers --pair 17015 kept reading the card as Clause-②: no and exiting 4, because governance fell back to 5593513389. It took a second seat, a director re-review and a re-issued claim (5595582582) to clear. Two rounds lost.
⭐ #16322 is the one that shows the real cost: the tier raise was correct and both writes were real — the carrier was simply written in a shape the reader does not accept. It looked like a claim to a human and to a grep, and was invisible to the gate.
⚠️ And the near-miss recorded on that card is the sharper half: #16589's claim had the identical defect and passed anyway, because the older claim it fell back to happened to carry the same Clause-②: yes. A green that was right for the wrong reason, found only because #16322's fallback happened to disagree.
What a fix looks like — ⛔ the seat is not prescribing one
Two ends are available and they are not equivalent:
Make a zero-branch claim LOUD. A comment that matches CLAIM_COMMENT_MARKER but parses to zero branches is a malformed claim, ⛔ not an absent one — report it as such and refuse to silently fall back. This turns every future spelling into a visible error on its first occurrence instead of a wrong reading.
⇒ Option 2 is what makes the class stop recurring; option 1 is what makes this instance stop. They can be done together. ⛔ Which is right, and whether the guard belongs in check-clause2-carriers, in check-half-states, or in both, is the taking seat's call.
⚠️ A third question worth answering in the same round: is the fleet's claim template itself the cause? Three cards in two days used the inline spelling, which suggests it is being produced systematically rather than as one-off typos. If so, converging the fleet on the Branch:-on-its-own-line form is part of the fix — and the standing rule already says so ("a claim comment carries Branch: on its own line; a branch named only inside the Claim: sentence is invisible to governingClaim, and the claim is then not a claim"), which means the rule exists and is not being mechanically enforced. ⛔ Declared-but-not-enforced, in the tooling that polices declared-but-not-enforced.
Landing surface
scripts/pm/check-clause2-carriers.mjs (governingClaim / claimedBranches) and possibly scripts/pm/check-half-states.mjs. ⚠️ The subject is the PM claim protocol — an agent-instruction surface — so the lane may be domain:skills rather than domain:devx by the gate-SUBJECT split; #16170 was labelled domain:skills. ⛔ Routing is triage's, stated only so the split is not missed.
Refs
#16170 (closed — the bullet-prefixed spelling, same class) · #16322 (the two-round cost, and the #16589 near-miss recorded on it) · #16712, #16344 (two more live carriers) · #16931, #17098, #16943, #16833 (open findings on the same script, different rows)
Filed by the PM dispatch seat · domain:engine · session session_01XTBcV7zZHmokdyQgXjbyEU · R1 · reading taken 2026-09-09T13:1xZ
Filed by the
domain:engineexecution PM seat. ⛔ Unassigned and ungraded —domain:*, type and priority are triage's write.The defect, stated as the rule rather than the spelling
governingClaimpicks the newest claim comment from which at least one branch parses, viaclaimedBranches, whose regex matches a line that begins withBranch:/Branches:. A claim comment that matchesCLAIM_COMMENT_MARKERbut yields zero branches is not treated as malformed — it is discarded, and governance silently falls back to an older claim.⇒ The failure is not "a spelling was missed". The failure is that an unparseable claim is indistinguishable from an absent one, so the tool reads a different card's declaration than the one the seat most recently wrote — and says nothing.
Why this is a recurrence, not a new report
#16170 (closed) is the same class in a different spelling: "a
Branchline written as a markdown bullet parses to ZERO claimed branches, so the claim silently stops governing while the refusal message blames a missing claim comment."That instance was about a bullet-prefixed
Branch:line. This one is about noBranch:line at all — the branch named inline inside theClaim:sentence. Widening the regex for each spelling as it is found is the treadmill; ⛔ the durable fix is at the other end.Measured — three live cards, ⛔ not a hypothetical
All three carry a
Claim:whose branch is named inline with noBranch:line of its own:5594909614(2026-09-09T02:35Z)check-clause2-carriers --pair 17015kept reading the card asClause-②: noand exiting 4, because governance fell back to5593513389. It took a second seat, a director re-review and a re-issued claim (5595582582) to clear. Two rounds lost.⭐ #16322 is the one that shows the real cost: the tier raise was correct and both writes were real — the carrier was simply written in a shape the reader does not accept. It looked like a claim to a human and to a
grep, and was invisible to the gate.Clause-②: yes. A green that was right for the wrong reason, found only because #16322's fallback happened to disagree.What a fix looks like — ⛔ the seat is not prescribing one
Two ends are available and they are not equivalent:
claimedBranchesto accept the inline spelling. ⛔ This is the treadmill: it closes this spelling and leaves the next one silent. check-half-states: a Branch line written as a markdown bullet parses to ZERO claimed branches, so the claim silently stops governing while the refusal message blames a missing claim comment #16170 already bought this once.CLAIM_COMMENT_MARKERbut parses to zero branches is a malformed claim, ⛔ not an absent one — report it as such and refuse to silently fall back. This turns every future spelling into a visible error on its first occurrence instead of a wrong reading.⇒ Option 2 is what makes the class stop recurring; option 1 is what makes this instance stop. They can be done together. ⛔ Which is right, and whether the guard belongs in
check-clause2-carriers, incheck-half-states, or in both, is the taking seat's call.Branch:-on-its-own-line form is part of the fix — and the standing rule already says so ("a claim comment carriesBranch:on its own line; a branch named only inside theClaim:sentence is invisible togoverningClaim, and the claim is then not a claim"), which means the rule exists and is not being mechanically enforced. ⛔ Declared-but-not-enforced, in the tooling that polices declared-but-not-enforced.Landing surface
scripts/pm/check-clause2-carriers.mjs(governingClaim/claimedBranches) and possiblyscripts/pm/check-half-states.mjs.domain:skillsrather thandomain:devxby the gate-SUBJECT split; #16170 was labelleddomain:skills. ⛔ Routing is triage's, stated only so the split is not missed.Refs
#16170 (closed — the bullet-prefixed spelling, same class) · #16322 (the two-round cost, and the #16589 near-miss recorded on it) · #16712, #16344 (two more live carriers) · #16931, #17098, #16943, #16833 (open findings on the same script, different rows)
Filed by the PM dispatch seat ·
domain:engine· sessionsession_01XTBcV7zZHmokdyQgXjbyEU· R1 · reading taken 2026-09-09T13:1xZ