docs(pm-dispatch): sweep of 7 measured SKILL corrections — os-regen list drift, the unlock sweep's three duties, verification blindness, the auto-merge signature - #6720
Merged
Conversation
…ist drift, unlock-sweep triple duty, verification blindness, auto-merge signature, metadata seat's term Fixes #6492 Fixes #6490 Fixes #6465 Fixes #6371 Fixes #6218 Fixes #6207 Part of #6644 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F8q5J1MQyocgtNspb15fSn
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
os-project-manager
marked this pull request as ready for review
August 8, 2026 13:33
os-project-manager
enabled auto-merge
August 8, 2026 13:34
This was referenced Aug 8, 2026
This was referenced Aug 8, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #6492
Fixes #6490
Fixes #6465
Fixes #6371
Fixes #6218
Fixes #6207
Part of #6644
One sweep, one file (
.claude/skills/pm-dispatch/SKILL.md), seven member cards. These could not land in parallel — they all edit the same sections — and the anchor card's own body argued for exactly this shape on 2026-08-06 (「四单合并实施或严格串行」).Per-item checklist
Walk this against the diff; every row corresponds to a hunk, and
git diff --statis 1 file, +166 / -27 with nothing outside these rows..gitattributesroutes 10. The copy also omittedpackages/spec/authorable-defaults/**, and a positional reference (「最后那条是 #5107 加的」) pointed at the wrong entry once the list drifted.grep os-regen .gitattributes) named as the sole authority, plus a paragraph recording the 8/9/10 drift as the reason a second copy is not allowed. The.counts.mddistinction is kept but addressed by path, not by position. The second site (rule 2) drops its 「那八条」 and points at the same command.Blocked-by:reverse index and spends it three ways: (a) selection priority gains unlock fan-out ≥ 2 betweenpriority:p0and thetarget:board, with the #5702 / #6428 worked example and an explicit "ordering, not exemption" + "do not invent apm:blockinglabel" caveat; (b) an unblocked card's file face is re-verified at the merged ref, with #6413/#6385's 15-minute-stale line anchors as the specimen; (c) the PM's narrowing judgment ships as a "PM assumption, falsifiable" block, with #6190/#6478 as the measured refutation.'pkg^...'), consumption-radius scans use the prefix'...pkg', and cross-package type changes owe a reverse-verification. The narrative names them as one family with asymmetric tells — timing (#6371: false-red burns time, false-green reads as a swept radius and proves nothing; #5962/#6210/#6203 in one day, #6212 as the positive sample) and direction (#6218: #6210's "25 packages green" via the suffix, then CI red on@objectstack/dogfood). Step 7 gains the reviewer's counterpart: on any "N packages green", ask which direction and whether the closure was built.enable_pr_auto_mergedegradation on already-clean PRs had no reader — every new PM session re-derived it.blocked-state control group (#6086/#6067/#6107) so the note is not misread as "the tool is broken".Fixes, so a half-landing PR would silently close a card sitting in the maintainer's decision inbox — which only filters open issues.Part ofwhen only half landed; the checklist asks whether merging should close the card; ACCEPT gains "verify the first line before flipping ready", with PR #6600's caught-at-reviewFixesas the specimen.protocol.tscarrying five cards in one term as the evidence, and the section added to the handover ledger so it survives the seat change.Dropped member, with evidence
#5925 (the anchor) is not in the
Fixeslist — its premise has expired. Its items 1-6 were implemented and merged by PR #6029 ("Part of #5925(第 1-6 条)", merged 2026-08-06T23:55:44Z), which is why the file grew from the 1571 lines the card cites to 2297. Verified in the current file, all six present:list_issuesOR,labelswhole-set) and note 3 (REST core exhausts, resets on the hour)priority:p0— step 3, 「P0 插队」Its only surviving item is item 7 (extracting case narratives into
references/incidents.md), which its own card marks 「⛔ 不与前 6 条同 PR」 and which the maintainer approved as a separate pure-move PR. So it is deliberately excluded here, and #5925 must stay open. Closing it via this PR would have discarded item 7 — which is, precisely, the failure mode #6644 L1 (in this same diff) exists to prevent.Escalated, not written in
#6644 lesson 2 — "report at draft-PR time, do not wait for CI" — is NOT in this diff. It is a behavioural change to the dispatch contract, not a documentation correction, and it contradicts two things currently in force: this file's own step 7 line (「os-dev 定义侧已要求『PR 开出后等 CI 收敛再交报告』,本条是它在复核侧的对账」) and the standing
os-devagent definition. Writing it in would leave two files instructing devs in opposite directions and would silently drop the review-side reconciliation that caught #5584's red merge. That is a maintainer ruling with a real trade-off (up to 2 h of idle dev time per the cli seat's #6024, against the CI-convergence guarantee), so it is raised in the dispatch report rather than guessed at here. This is why the card isPart of, notFixes.Verification
Docs-only,
.claude/internal agent tooling — publishes nothing, soskip-changesetrather than a changeset.Gates enumerated from
.github/workflows/lint.ymland run individually (the skill-frame family reads this exact file):check:nul-bytes— OK, 6239 tracked text files, no raw ASCII control bytescheck:doc-authoring— OK, 365 files cleancheck:role-word— OK, 44 baselined files, no new occurrencescheck:skill-frame-sync— OK, 4 isomorphic copies across 3 files, 40 markdown files scannedcheck:skill-frame-freshness— OK, frame current withorigin/maincheck:skill-compatibility— OK, 11 SKILL.md files reconciled against 77 workspace packagesSanitizer-hostile shapes: this file documents the traps it contains, so the additions were scanned explicitly. Control-byte scan (
grep -naPover the 0x00-0x1f / 0x7f class) is clean, fence count is balanced at 14 before and after, and the "left-angle-bracket + letter" occurrence count is 60 before and 60 after — zero introduced. The single such sequence inside my hunks is the pre-existingtarget:placeholder (angle-bracketed "major") on a line I rewrote around — spelled without the brackets here so this body survives its own sanitizer.Generated by Claude Code