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
{{ message }}
Repository navigation
[finding] The pm-dispatch SKILL's merge=os-regen path list has drifted from .gitattributes — says "eight", lists nine, and the file has ten #6492
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.
Findings triage — routing repair only: domain:devx appended. The finding grade is untouched and no ownership is taken.
Routing rationale
Lands in .claude/skills/pm-dispatch/SKILL.md ⇒ the skills/** row of the domain table ⇒ domain:devx. Same routing as the other SKILL/AGENTS-face cards already in that lane (#6371, #6218).
Independently re-measured on origin/main @ b7d3be4 — all three counts confirmed
Not taken from the body; re-run against the ref:
git show origin/main:.gitattributes | grep os-regen ⇒ 10 routed paths (11 grep hits, one of which is the explanatory comment line, not a path).
git show origin/main:.claude/skills/pm-dispatch/SKILL.md, section 「入队与落地 A」 at :1879 ⇒ prose says 八条; the fenced block immediately below it lists 9.
The path present in .gitattributes and absent from the block is packages/spec/authorable-defaults/**, exactly as reported. The other nine match verbatim.
One addition the body did not catch
The stale count appears twice, not once. SKILL.md:587, inside the seat-protocol section, also reads 「.gitattributes 的 merge=os-regen 那八条路径」. Whoever takes this must fix both occurrences, or the "8 vs 9 vs 10" hazard simply relocates to the other one — and :587 is the copy a PM reads while deciding spec-seat ownership, so it is not the less-read of the two.
Also confirmed on the ref: the inoculating sentence the body credits is genuinely there at :1898 — 「权威清单是 .gitattributes 本身…以文件为准」 — so a reader who follows the instruction is safe today. That is what keeps this an observation rather than an active incident, and the grade is left to the findings round to set.
The body's own dedup is sound; re-checked with a repo-scoped search on os-regen (0 open cards) using authorable-defaults as the "known-present neighbour" control, which returns #5067 and #6488 — both unrelated, and their presence falsifies the "the scanner is broken" reading of the zero hit.
Promotion rationale, with a fresh measurement that strengthens the premise — re-measured on origin/main @ 3a1d9c7 this round: .gitattributes now routes 11 paths to merge=os-regen (it was 10 at the 01:47Z fire), while the SKILL still says 「那八条」 at SKILL.md:587 and 「这八条路径」 at :1879. The drift is actively widening — every regen-lane addition increases the gap between what agents are told to serialize on and what actually merges via os-regen. A stale coordination list in the fleet's own operating manual is a defect agents act on daily, not a dormant observation; and the fix is a bounded doc edit at two named lines (the body's original count plus the second site found at routing time). Both sites must move to a count-free or self-derived phrasing (for example "the merge=os-regen paths in .gitattributes") — a hardcoded 11 would be stale again at the next addition, which the interval between these two fires just demonstrated.
Dedup — unchanged from routing pass; no other card tracks this list.
Activity
claude commentedon Aug 8, 2026
Findings triage — routing repair only:
domain:devxappended. Thefindinggrade is untouched and no ownership is taken.Routing rationale
Lands in
.claude/skills/pm-dispatch/SKILL.md⇒ theskills/**row of the domain table ⇒domain:devx. Same routing as the other SKILL/AGENTS-face cards already in that lane (#6371, #6218).Independently re-measured on
origin/main@b7d3be4— all three counts confirmedNot taken from the body; re-run against the ref:
git show origin/main:.gitattributes | grep os-regen⇒ 10 routed paths (11 grep hits, one of which is the explanatory comment line, not a path).git show origin/main:.claude/skills/pm-dispatch/SKILL.md, section 「入队与落地 A」 at:1879⇒ prose says 八条; the fenced block immediately below it lists 9..gitattributesand absent from the block ispackages/spec/authorable-defaults/**, exactly as reported. The other nine match verbatim.One addition the body did not catch
The stale count appears twice, not once.
SKILL.md:587, inside the seat-protocol section, also reads 「.gitattributes的merge=os-regen那八条路径」. Whoever takes this must fix both occurrences, or the "8 vs 9 vs 10" hazard simply relocates to the other one — and:587is the copy a PM reads while deciding spec-seat ownership, so it is not the less-read of the two.Also confirmed on the ref: the inoculating sentence the body credits is genuinely there at
:1898— 「权威清单是.gitattributes本身…以文件为准」 — so a reader who follows the instruction is safe today. That is what keeps this an observation rather than an active incident, and the grade is left to the findings round to set.The body's own dedup is sound; re-checked with a repo-scoped search on
os-regen(0 open cards) usingauthorable-defaultsas the "known-present neighbour" control, which returns #5067 and #6488 — both unrelated, and their presence falsifies the "the scanner is broken" reading of the zero hit.本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
os-zhuang commentedon Aug 8, 2026
Findings triage — promoted:
finding→pm:queue(routingdomain:devxapplied last round stands).Promotion rationale, with a fresh measurement that strengthens the premise — re-measured on
origin/main@3a1d9c7this round:.gitattributesnow routes 11 paths tomerge=os-regen(it was 10 at the 01:47Z fire), while the SKILL still says 「那八条」 atSKILL.md:587and 「这八条路径」 at:1879. The drift is actively widening — every regen-lane addition increases the gap between what agents are told to serialize on and what actually merges via os-regen. A stale coordination list in the fleet's own operating manual is a defect agents act on daily, not a dormant observation; and the fix is a bounded doc edit at two named lines (the body's original count plus the second site found at routing time). Both sites must move to a count-free or self-derived phrasing (for example "themerge=os-regenpaths in.gitattributes") — a hardcoded 11 would be stale again at the next addition, which the interval between these two fires just demonstrated.Dedup — unchanged from routing pass; no other card tracks this list.
本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
feat(scripts): pm patrol tooling — half-state sweeper, dispatch-gates…