docs(pm-dispatch): three maintainer-ruled standing rules + the Part-of bookkeeping-sentence warning - #13505
Draft
claude[bot] wants to merge 1 commit into
Draft
docs(pm-dispatch): three maintainer-ruled standing rules + the Part-of bookkeeping-sentence warning#13505claude[bot] wants to merge 1 commit into
claude[bot] wants to merge 1 commit into
Conversation
… Part-of trap warning Pull-directed priority order for split four-facet analyses (recommendations only; a split still escalates), startup-stage no-gradualism with its directed director-charter placement, release-reminder discipline beside the manual-release anchor, and the closing-keyword bookkeeping-sentence warning at the Part-of switch point with the safe spelling. All four decision-frame copies carry the pull-first anchor; details live in decision-analysis.md. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXxTW8mvPBhoHxmyPZ63de
This was referenced Aug 30, 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 #12668
#12779 is folded into this PR per the 2026-08-28 triage routing on both cards, and #12779 remains open — it is the evidence card for the measured near-miss; the PM retires it manually after landing. (Deliberately a Part of relationship with no closing keyword next to that number — the exact safe spelling this PR writes into the checklist.)
What lands where
Rule 1 — pull-directed priority order for split four-facet analyses (maintainer 2026-08-27, verbatim 「tong y 4」):
.claude/agents/os-dev.md(line-neutral in-place extension of the binding-sentence lines); the published PM copy and its embedded dev template (minimal generalized anchors, names not numbers).references/decision-analysis.md(+2 lines, now at its ceiling 46/46): ② measured pull ⇒ recommend ① long-term end state; zero pull ⇒ recommend ④ non-proliferation; ③ breaks remaining ties loud/structural; security and hard-to-reverse always human floor; ranks recommendations only, split still escalates, the auto-adjudication face does not widen. The frame's structure (axis count, order, binding sentence) is untouched —check:skill-frame-syncstays green by measurement, not by luck.Rule 2 — startup-stage no-gradualism (maintainer 2026-08-27, verbatim 「6335 和以后这种类似的,都立即退休。项目在创业阶段,用户也很少,短期不考虑渐进。」 and the directed placement 「创业阶段不渐进 应该写入项目总监skills」):
references/lanes/director.md基本原则, quoting the placement directive verbatim.Rule 3 — release-reminder discipline (maintainer 2026-08-27, verbatim 「要发版本我会自己点。除非重要修复要发版本你可以提醒我。」):
#12779 fold — the bookkeeping-sentence trap, placed at the switch point:
references/review-checklist.mdPR-shape bullet at the exact sentence that orders the switch to Part of — not only in the closing-keyword bullet. Substance: the body most likely to write a closing keyword next to a card number is the body explaining why it is NOT closing that card — the who-will-retire-it bookkeeping sentence, negations, and quote/backtick wrappings are all read by the reference parser the same way; nowhere in a PR body may a closing keyword sit adjacent to a card number.Part-of PR must not also close its cardgate is untouched — the gate was right and the red was right.skills/ readings (both mandatory readings, lines and tokens)
skills/objectstack-pm-dispatch/SKILL.md(changed file, lines)skills/objectstack-pm-dispatch/SKILL.md(tokens, gate convention ceil(bytes/4))Declared deviations — two ratchet pins moved, each on its gate's own quoted-ruling path
references/lanes/director.mdceiling 75 → 77 inscripts/pm/check-skill-line-ratchet.mjs. The placement directive 「创业阶段不渐进 应该写入项目总监skills」 lands two lines in a zero-headroom file. Arithmetic: the bullet needs ~230 bytes; total tail slack across the contextually-correct lines of the touched sections measured at most 68 bytes; no losslessly compressible wording found in those sections (the long lines there are verbatim maintainer quotations, which are not mine to compress); re-wrap-as-funding is banned. The gate's header names exactly this path: raise only with a maintainer ruling quoted in the raising PR — quoted above and in the pin comment.scripts/check-skills-token-ratchet.mjs(self-test subtotal bound shifted by the same +152, commented). The 「tong y 4」 ruling directs the split-resolution rule into the decision-frame copies; two of the four enforced copies live in the published file, and the recorded drift lesson for this frame is precisely a semantics change that skipped the published mirror and served a stale frame to third-party installers for two days. Anchors were compressed to minimal form first (from +244 tokens down to +152).Both pins are governed-face content and this PR stays draft for the maintainer's manual merge — the merge is the review record; if either raise is unwanted, the corresponding piece can be dropped to a follow-up without disturbing the rest.
Also declared:
.claude/agents/os-dev.mdis line-neutral (466/466) via in-place extension of the three binding-sentence lines only; the compression inside those touched lines drops the connectives 「同样,」/「返回」 and tightens 「先重试到足以确认不是你的改动」 to 「重试到足以排除你的改动」 — same instruction, fewer bytes. The parked NOT MEASURED passage (lines 198–203) is untouched; git diff shows the frame region only.Line-budget ledger (every touched ratcheted file)
.claude/skills/pm-dispatch/SKILL.md947 → 960 (ceiling 1005, headroom 45).claude/skills/pm-dispatch/references/decision-analysis.md44 → 46 (ceiling 46, headroom 0).claude/skills/pm-dispatch/references/review-checklist.md84 → 84 (net-zero, funded by the dedup described above).claude/skills/pm-dispatch/references/lanes/director.md75 → 77 (ceiling 75 → 77, deviation 1).claude/agents/os-dev.md466 → 466 (line-neutral)Verification (all at commit 04b9d28; working tree clean, 0 dirty paths at union time)
Derived via
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstackfrom the actual diff (7 content paths + 2 gate scripts). Full local union, every exit code captured redirect-then-capture, all 0 at 04b9d28:check:agent-model-declared · check:agent-test-spelling · check:bash32-floor · check:cli-command-ids · check:cross-package-test-inputs · check:doc-authoring · check:doc-formula-expressions (lint pkg; 「22 record-scoped formula example(s) across 426 files / 1451 TS blocks judged clean」) · check:entry-guard · check:nul-bytes · check:parse-guard · check:pm-governed-merges · check:pm-governed-prose · check:pm-skill-id-lint (「23 file(s) clean」) · check:pm-skill-ratchet (all touched files green, quoted below) · check:pnpm-filter-targets · check:required-contexts · check:role-word · check:skill-compatibility · check:skill-frame-sync (「4 copies of the decision frame are structurally isomorphic across 3 files … binding sentence present in all 4; 4 count mention(s) agree」) · check:skill-frame-freshness · check:watch-hint-literal · check:pm-dispatch-gates · check-ci-filter-parity · check-skills-token-ratchet gate + self-test (64 cases) · bare-root-worklist self-test (edited-gate-script convention obligations).
Edited gate scripts' own suites:
check-skill-line-ratchet.mjs --self-test111 cases pass;check-skills-token-ratchet.mjs --self-test64 cases pass.NOT MEASURED locally, CI-owned by their own design:
check-governed-queue-guard(reads the workflow event payload; refuses to run without it — correct), and the Test Core shard jobs that ci.yml path filters trigger for scripts/skills changes (shard attestation and test completeness are properties of the CI run; the localcheck:cross-package-test-inputsequivalent ran green).Reverse verification (both mutation legs proven on disk by marker grep, both restores proven by
git diff HEADempty plusgit hash-objectequal to the HEAD blob; no build step exists for these doc gates — they read sources, stated per the ablation contract):Governed face
Draft PR; human merge only; no ready flip, no queue, no auto-merge, no review submission from any seat. Before the manual merge the base must be updated to current main and the gates re-run.
Generated by Claude Code
Generated by Claude Code