Skip to content

skills(pm-dispatch): wave-2 consolidated hardening — Part-of closure, changeset test, gate lists as leads, stale rulings, negation trap, commit-first reverse verification [ADR-class, human merge] - #8028

Merged
os-zhuang merged 1 commit into
mainfrom
claude/issue-8000-pm-skill-wave2
Aug 12, 2026

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

Fixes#8000
Fixes#7949
Fixes#7863

ADR-class (skills root + agent definition): draft PR, human review, human merge. No auto-merge, no merge queue.

Wave-2 consolidated skills batch. All deltas applied against the current post-rewrite texts; the cards' pre-rewrite locations were relocated semantically. SKILL.md ratchet: 686 before, 686 after (headroom 0 preserved) — the 4 added principle lines are funded by 4 content-free rewraps that join an orphan trailing punctuation line into its previous line (复核 x1, 轮次报告 x1, 标签纪律 x1, 平台读数纪律 x1; the last two sit outside the sections this PR touches content-wise, but the joins delete zero content — stated here rather than hidden).

Per-member checklist

#8000 — four measured gaps

  1. Part-of label leak — ADOPTED. Principle line in SKILL.md 复核 PR-形态 bullet (fit the ratchet). Fuller rule near-verbatim from the card in references/review-checklist.md (new bullet), MERGED-same-action step in references/landing-operations.md section B.
  2. Changeset private: false test — ADOPTED. Card-specific dispatch clause in references/dispatch-runbook.md 条件性标准条款; ACCEPT-checklist bullet in references/review-checklist.md.
  3. PM gate lists are leads — ADOPTED with one ADAPTATION. Kept 「取数的是 PM 不是 dev」 in SKILL.md and the runbook copy; added the dev-side O(1) re-derive-and-report duty to .claude/agents/os-dev.md (Local verification scope, new item ④) with the PM-side pointers updated to match. Adaptation: the card proposed a raw grep over workflow ymls; the landed rule instead re-runs node scripts/pm/dispatch-gates.mjs over the dev's actual changed paths — the same mechanized source of truth the PM derives from (checks live in several workflow files beyond the lint one, so the script is the more accurate O(1) probe, and it also catches scope drift between predicted and actual paths).
  4. Stale-premise check covers rulings — ADOPTED (compressed). SKILL.md 候选 premise sentence extended: a ruling is a judgment against a repo state; before dispatching a ruling-implementation card, verify on origin/main that the ruled action has not already shipped.

Lower-confidence extras — both included as one-bullet additions that fit naturally, zero SKILL.md lines: measurement-first cards → references/dispatch-runbook.md; positive-control line → references/review-checklist.md (appended to the test-evidence bullet).

#7949 — negated closing keywords

  • Fact table (keyword list, negation ignored, body-vs-commit parsed separately, safe phrasings, why no mechanical guard covers it) → references/platform-readings.md, new section 闭合关键词解析. ADOPTED, adapted to placeholder numbers per id-lint.
  • Dev-side PR-body writing rule → .claude/agents/os-dev.md Definition-of-done draft-PR bullet (where devs write PR bodies).
  • PM-side post-merge closed_by_pull_requests sweep → references/review-checklist.md bullet + one line in landing-operations B.
  • The optional mechanical gate is not in scope — prose rule only, per the card's own restraint and the triage endorsement.

#7863 — WIP-destroying restore recipe

  • SKILL.md copy (old line 2120): absorbed by the 2026-08-12 principles-only rewrite — verified zero occurrences of the recipe in the current SKILL.md; no edit.
  • .claude/agents/os-dev.md (found at 167-174, was 172 pre-batch): context-verified as the WIP-restore half, replaced. The stash-alternatives list now leads with temp-commit and patch-file; a new clause carries the commit-then-revert rule copied from this repo's AGENTS.md landed wording (not re-derived), plus the byte-identity point (matching --stat insertion counts are not identity; prove with a saved patch or git hash-object) — placed in the agent definition where a recovering agent looks.
  • .claude/hooks/guard-shared-stash.sh (header comment + block-message heredoc): "clean re-read" alternative replaced with the commit-first form and an explicit uncommitted-edit warning. Heredoc kept free of backtick/command substitution. Self-test re-run: 32 passed, 0 failed (it asserts verdicts, not comment text).
  • Repo-wide sweep (quoted exact string, per the card's instruction that its list is a lower bound): 9 files contain the string. 2 fixed (above); AGENTS.md already carries the correct warning-form usage; references/landing-operations.md and scripts/pm/os-regen-merge.sh are the fenced-off legitimate merge-state generated-artifacts uses — untouched; 4 test files (rest x1, runtime x2, spec-scripts x1) contain it only inside historical reverse-verification measurement records / trap documentation, not as operating instructions — untouched, out of card scope.

Verification

All named gates green locally on the final tree: check:pm-skill-ratchet (686/686), check:pm-skill-id-lint (9 files clean), check:skill-frame-sync (4 copies isomorphic), check:doc-authoring (375 files clean), check:nul-bytes (7326 files OK), check:agent-model-declared (os-dev → opus), guard-shared-stash.selftest.sh (32/32). Docs/hook-comment-only change: no changeset, skip-changeset label applied.

Note on this very body: card numbers other than the three closing lines above are written without closing keywords — the trap this PR documents applies to its own PR body.

Generated by Claude Code


Generated by Claude Code

…osure, published-package changeset test, gate lists as leads, stale rulings, negated closing keywords, commit-first reverse verification
Fixes#8000Fixes#7949Fixes#7863
Four measured pm-dispatch gaps, the closing-keyword negation trap, and the
WIP-destroying restore recipe's two surviving copies, landed references-first
under the SKILL.md ratchet (686 -> 686, additions funded by content-free
orphan-punctuation joins).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012Gg6rMAti8ZaueWb6BRsDn
@vercel

vercelBot commented Aug 12, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
ProjectDeploymentActionsUpdated (UTC)
objectstackIgnoredIgnoredAug 12, 2026 12:08pm

Request Review

@github-actionsgithub-actionsBot added size/m documentation Improvements or additions to documentation labels Aug 12, 2026
@os-zhuangos-zhuang added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Aug 12, 2026 — with Claude
@os-zhuang

Copy link
Copy Markdown
ContributorAuthor

同意合并

@os-zhuang
os-zhuang marked this pull request as ready for review August 12, 2026 13:52
@os-zhuang
os-zhuang added this pull request to the merge queueAug 12, 2026
Merged via the queue into main with commit b6ff173Aug 12, 2026
24 checks passed
@os-zhuang
os-zhuang deleted the claude/issue-8000-pm-skill-wave2 branch August 12, 2026 14:14
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment