Found while running the landing-hazard check on two round-1 PRs (domain:cli seat, 2026-08-08). Filed unassigned; recording only, no fix committed.
Fact (measured, not recalled)
.claude/skills/pm-dispatch/SKILL.md, section "入队与落地 A", introduces the list with:
.gitattributes 把这八条路径路由到 merge=os-regen(⛔ 别只记住前五条 —— 后三条是文档产物,同样会被静默吞)
Three different counts are in play:
| Source |
Count |
| The SKILL's prose |
8 |
| The SKILL's own code block |
9 |
.gitattributes on origin/main |
10 |
grep os-regen .gitattributes (the SKILL's own stated authority) returns ten routed paths. The one absent from the SKILL's block is:
packages/spec/authorable-defaults/** merge=os-regen
The other nine match verbatim.
Why it is worth recording rather than shrugging at
The SKILL already inoculates itself — 「权威清单是 .gitattributes 本身(grep os-regen .gitattributes),不是这份拷贝 —— 它增删过,以文件为准」 — so a reader who follows that instruction is safe, and this is not an active incident. Two things still make it worth a card:
- The failure it guards is silent. The
os-regen merge driver exits 0 with no conflict markers and drops one side's changes; only a full regeneration exposes it. A dispatch prompt that enumerates "these eight paths" and omits authorable-defaults/** gives a dev a checklist that reads complete and is not — and the SKILL's own framing (「别只记住前五条」) shows the intended reading is "here is the whole set", which is exactly the reading the drift breaks.
- The prose/block mismatch is its own hazard. "八条" over a nine-item block invites a reader to stop early, independent of the missing tenth. Whichever way it is fixed, the number and the block should stop disagreeing.
Suggested shape (for triage, not a commitment)
Either drop the count from the prose and let the block be the list, or — stronger, and in the spirit of the SKILL's own anti-rot devices elsewhere (the Record<CanonicalOnlyKey, …> pattern #6322 just landed) — stop copying the list into prose at all and have the section instruct grep os-regen .gitattributes, which is already named as authoritative. A copy that can drift is exactly what the compile-error-on-drift patterns elsewhere in this repo exist to avoid; prose cannot be type-checked, so the only rot-proof version is the one that does not duplicate.
Same class as the compile-face inventory clause the SKILL added after #5905, where an incomplete-but-plausible inventory was the defect: 「『inventory』这个词本身就是本条款的缺席证明:那次派发确实有一份清单,只是它不完整,而没有任何机制要求它完整」.
Dedup
Searched open issues for os-regen + gitattributes (0 results) and authorable-defaults (2 results, both unrelated — #5067 number formatting, #6488 a spec X/XParsed sweep). No duplicate.
Lands in .claude/skills/pm-dispatch/SKILL.md. No domain:* label applied here — routing labels are the triage seat's single-producer territory.
Found while running the landing-hazard check on two round-1 PRs (
domain:cliseat, 2026-08-08). Filed unassigned; recording only, no fix committed.Fact (measured, not recalled)
.claude/skills/pm-dispatch/SKILL.md, section "入队与落地 A", introduces the list with:Three different counts are in play:
.gitattributesonorigin/maingrep os-regen .gitattributes(the SKILL's own stated authority) returns ten routed paths. The one absent from the SKILL's block is:The other nine match verbatim.
Why it is worth recording rather than shrugging at
The SKILL already inoculates itself — 「权威清单是
.gitattributes本身(grep os-regen .gitattributes),不是这份拷贝 —— 它增删过,以文件为准」 — so a reader who follows that instruction is safe, and this is not an active incident. Two things still make it worth a card:os-regenmerge driver exits 0 with no conflict markers and drops one side's changes; only a full regeneration exposes it. A dispatch prompt that enumerates "these eight paths" and omitsauthorable-defaults/**gives a dev a checklist that reads complete and is not — and the SKILL's own framing (「别只记住前五条」) shows the intended reading is "here is the whole set", which is exactly the reading the drift breaks.Suggested shape (for triage, not a commitment)
Either drop the count from the prose and let the block be the list, or — stronger, and in the spirit of the SKILL's own anti-rot devices elsewhere (the
Record<CanonicalOnlyKey, …>pattern #6322 just landed) — stop copying the list into prose at all and have the section instructgrep os-regen .gitattributes, which is already named as authoritative. A copy that can drift is exactly what the compile-error-on-drift patterns elsewhere in this repo exist to avoid; prose cannot be type-checked, so the only rot-proof version is the one that does not duplicate.Same class as the compile-face inventory clause the SKILL added after #5905, where an incomplete-but-plausible inventory was the defect: 「『inventory』这个词本身就是本条款的缺席证明:那次派发确实有一份清单,只是它不完整,而没有任何机制要求它完整」.
Dedup
Searched open issues for
os-regen+gitattributes(0 results) andauthorable-defaults(2 results, both unrelated — #5067 number formatting, #6488 a specX/XParsedsweep). No duplicate.Lands in
.claude/skills/pm-dispatch/SKILL.md. Nodomain:*label applied here — routing labels are the triage seat's single-producer territory.