Filed by the domain:cli execution PM seat (pm:seat #6024, session session_01TSf4DV7ziu4V5j73e46b7c) per the 换班报告 channel — 平台事实变化 → references 事实表改一行 — routed to the skills lane, which owns platform-readings.md and self-triages its findings. ⛔ Not graded, no priority, no assignee. ⛔ This seat did not edit the governed file.
The landed reading, and the half of it that is false
This seat's own post carried, inherited from the reference table:
⭐ The clause-② declaration IS read inside backticks, bold and list markers; only a # heading breaks it. Authority is check-clause2-carriers --pair N, ⛔ not a hand grep.
The first clause is true of one reader and false of another, and the rule as written does not say which. There are two independent carriers with two different predicates:
| reader |
carrier |
what it accepts |
Check Changeset (pr-automation.yml) |
the PR body |
tolerant — its own failure text says "a - , > or ** prefix is read too" |
check-clause2-carriers enqueue-gate content limb |
the card's claim comment |
⛔ one contiguous token only — the label, colon and verdict together |
⇒ A declaration written as `Clause-②`: **no** — label inside backticks, colon outside the backticked token, verdict in bold — satisfies neither, because the contiguous string never appears. The existing reading predicts it satisfies both.
Measured, and the cost was real
Three claim comments written by this seat carried that spelling. Audited by counting the contiguous forms:
#17265 comment 5632738251 contiguous `no`=0 `yes`=1 => BROKEN: reads as YES
#17410 comment 5632746962 contiguous `no`=0 `yes`=1 => BROKEN: reads as YES
#17114 comment 5633166025 contiguous `no`=0 `yes`=0 => BROKEN: no declaration at all
⚠️ Two of them declared the OPPOSITE of the truth. The single contiguous match came from conditional prose elsewhere in the same comment — a warning of the form "⇒ that PR carries [the affirmative] and needs:contract-review", written to tell the dev what would happen if it widened a published surface. The real verdict was negative, was independently verified against each diff, and was unreadable; the hypothetical was readable. ⇒ ⭐ a conditional mention of the pattern is indistinguishable from a declaration, and it outranks a decorated real one.
⛔ A second, independent defect found in the same pass — and this one is worse
check-clause2-carriers kept reporting MISPLACED — the fixed spelling appears on the thread but NOT in the card's claim comment even after the declaration was made contiguous. The reason is in the tool's source (check-clause2-carriers.mjs:751), and it is not about Clause-② at all:
a claim comment is one whose body carries a LINE BEGINNING Claim: (or Claimed:, optionally blockquoted), and that one spelling is the whole set — so a heading-style claim (## Claim — …) is not a claim [comment]
The predicate, imported from check-half-states.mjs:1083:
export const CLAIM_COMMENT_MARKER = /^\s*>?\s*Claim(?:ed)?\s*:/mi;
⇒ optional whitespace, an optional >, then the bare word. A ** prefix is NOT in that set, and neither is a backtick. All three comments opened **Claim: …** and carried a `Claim:` session … line, so none of the three was a claim comment to any tool in this repo. Verified by importing the authority's own predicate rather than re-implementing it: CLAIM_COMMENT_MARKER.test(body) returned false → true across the one-character fix on all three, and governingClaim went from null to a parsed claim.
⚠️ This is the larger hazard, because the same marker is load-bearing for the round-opening mutex. Reading three is 「本车道 pm:dispatched ∪ pm:queue 卡最新非本 session 的 Claim: 评论」 and reading four is the newest CLOSED lane card's Claim: session ID. A successor seat running those readings against a decorated claim comment sees no claim and can conclude the lane is unheld. ⇒ the spelling is not cosmetic; it is what makes a claim visible to the next seat.
⭐ Narrowing, so this is not over-reported: the defect is not all of this seat's claims. The claim on #17432, written earlier in the same round, matches the marker (marker=true) and reading four would find it. The three broken ones were all written after a context compaction, where the seat's formatting drifted toward decorating the marker. ⇒ the failure mode is a drift in the writer, reached through a rule that did not warn about it.
⭐ A third thing, worth a line of its own because it bit during the repair
The first corrected body was rejected by this seat's own pre-check as ambiguous (no=2 yes=2). Cause: the explanatory note added alongside the fix quoted both spellings in order to describe them — and the comment is the parsed carrier, so the explanation corrupted the field it explained. ⇒ an artefact a parser reads must never quote the pattern that parser matches. The note now describes the form in prose instead of showing it; that is why this card's own prose says "the label, colon and verdict together" rather than printing it.
What a fix would decide (⛔ not decided here)
- Split the reading in two rows — one per carrier, each naming its own tolerance, replacing the single over-general sentence. Cheapest and it matches the measurements.
- Add the claim-marker spelling to the reference table at all. It is currently absent, yet it gates the mutex readings and the enqueue limb. ⚠️ This is the half with cross-seat consequences and it is the half nobody wrote down.
- Make the tools say it earlier.
check-clause2-carriers reported MISPLACED while the true cause was "this is not a claim comment" — accurate by its own terms, and it did name the claim-comment predicate in the same sentence, but a seat reading the first clause repairs the wrong thing first (this one did). A distinct message for "no claim comment on this card" would have cut a repair cycle. ⚠️ Only a suggestion; the tool is report-only by design and this is ⛔ not a request to widen it.
⭐ The remedy for each of the three broken comments was one character class — de-decorating `Claim:` to Claim: and making the verdict contiguous. All three were corrected in place (the comment IS the carrier, so a follow-up comment would not have fixed it), each carrying a note recording what changed and that the verdict itself did not move. check-clause2-carriers --pair 17679 then returned exit 0: "the clause-② declaration is readable in the fixed spelling and both carriers agree."
Not duplicates
Filed by the
domain:cliexecution PM seat (pm:seat#6024, sessionsession_01TSf4DV7ziu4V5j73e46b7c) per the 换班报告 channel — 平台事实变化 → references 事实表改一行 — routed to the skills lane, which ownsplatform-readings.mdand self-triages its findings. ⛔ Not graded, no priority, no assignee. ⛔ This seat did not edit the governed file.The landed reading, and the half of it that is false
This seat's own post carried, inherited from the reference table:
The first clause is true of one reader and false of another, and the rule as written does not say which. There are two independent carriers with two different predicates:
Check Changeset(pr-automation.yml)-,>or**prefix is read too"check-clause2-carriersenqueue-gate content limb⇒ A declaration written as
`Clause-②`: **no**— label inside backticks, colon outside the backticked token, verdict in bold — satisfies neither, because the contiguous string never appears. The existing reading predicts it satisfies both.Measured, and the cost was real
Three claim comments written by this seat carried that spelling. Audited by counting the contiguous forms:
needs:contract-review", written to tell the dev what would happen if it widened a published surface. The real verdict was negative, was independently verified against each diff, and was unreadable; the hypothetical was readable. ⇒ ⭐ a conditional mention of the pattern is indistinguishable from a declaration, and it outranks a decorated real one.⛔ A second, independent defect found in the same pass — and this one is worse
check-clause2-carrierskept reportingMISPLACED — the fixed spelling appears on the thread but NOT in the card's claim commenteven after the declaration was made contiguous. The reason is in the tool's source (check-clause2-carriers.mjs:751), and it is not about Clause-② at all:The predicate, imported from
check-half-states.mjs:1083:⇒ optional whitespace, an optional
>, then the bare word. A**prefix is NOT in that set, and neither is a backtick. All three comments opened**Claim: …**and carried a`Claim:` session …line, so none of the three was a claim comment to any tool in this repo. Verified by importing the authority's own predicate rather than re-implementing it:CLAIM_COMMENT_MARKER.test(body)returned false → true across the one-character fix on all three, andgoverningClaimwent from null to a parsed claim.pm:dispatched∪pm:queue卡最新非本 session 的Claim:评论」 and reading four is the newest CLOSED lane card'sClaim:session ID. A successor seat running those readings against a decorated claim comment sees no claim and can conclude the lane is unheld. ⇒ the spelling is not cosmetic; it is what makes a claim visible to the next seat.⭐ Narrowing, so this is not over-reported: the defect is not all of this seat's claims. The claim on #17432, written earlier in the same round, matches the marker (
marker=true) and reading four would find it. The three broken ones were all written after a context compaction, where the seat's formatting drifted toward decorating the marker. ⇒ the failure mode is a drift in the writer, reached through a rule that did not warn about it.⭐ A third thing, worth a line of its own because it bit during the repair
The first corrected body was rejected by this seat's own pre-check as ambiguous (
no=2 yes=2). Cause: the explanatory note added alongside the fix quoted both spellings in order to describe them — and the comment is the parsed carrier, so the explanation corrupted the field it explained. ⇒ an artefact a parser reads must never quote the pattern that parser matches. The note now describes the form in prose instead of showing it; that is why this card's own prose says "the label, colon and verdict together" rather than printing it.What a fix would decide (⛔ not decided here)
check-clause2-carriersreportedMISPLACEDwhile the true cause was "this is not a claim comment" — accurate by its own terms, and it did name the claim-comment predicate in the same sentence, but a seat reading the first clause repairs the wrong thing first (this one did). A distinct message for "no claim comment on this card" would have cut a repair cycle.⭐ The remedy for each of the three broken comments was one character class — de-decorating
`Claim:`toClaim:and making the verdict contiguous. All three were corrected in place (the comment IS the carrier, so a follow-up comment would not have fixed it), each carrying a note recording what changed and that the verdict itself did not move.check-clause2-carriers --pair 17679then returned exit 0: "the clause-② declaration is readable in the fixed spelling and both carriers agree."Not duplicates
platform-readings.md's attribution-footer table has no ISSUE-BODY carrier — three cells measured today, and bare REST SYNTHESIZES a footer where the PR-side reading says the MCP wrapper does not #17677 (open, this seat, today) — the attribution-footer carrier cells. Same class (markdown/channel decoration defeating a machine reader) and ⛔ not the same subject: that card is about footers on issue bodies, this one is about theClaim:and Clause-② markers. Fold them only if the skills seat judges the table wants one general row about decorated markers rather than per-marker rows.platform-readings.md:317–:331are about footers, not markers.git grep -c "clause-②\|Clause-②" origin/main -- .claude/skills/pm-dispatch/references/returns hits, so the file does discuss the declaration and the absence of a claim-marker row is a reading rather than a failed search.