Skip to content

docs(pm-dispatch): the runbook level rationale covers p1–p3, and the sweep line routes by the finding threshold - #16603

Merged
os-zhuang merged 1 commit into
mainfrom
claude/issue-16490-runbook-level-rationale-and-threshold
Sep 7, 2026
Merged

docs(pm-dispatch): the runbook level rationale covers p1–p3, and the sweep line routes by the finding threshold#16603
os-zhuang merged 1 commit into
mainfrom
claude/issue-16490-runbook-level-rationale-and-threshold

Conversation

@os-musk

@os-musk os-musk commented Sep 7, 2026

Copy link
Copy Markdown
Collaborator

Fixes #16490

Two line-neutral riders on .claude/skills/pm-dispatch/references/dispatch-runbook.md, recorded at
flight Z's ACCEPT (PR #16486) and outside that flight's declared file surface. One file, one commit,
241 lines before and after, every line at or under 120 bytes.

Rider 1 — the level rationale had no level half

The rationale line explained p0 / pm:blocking / Bug / card age and stopped there, while the
selection order in SKILL.md also ranks p1 > p2 > p3 > 无级. A reader had the order without its
reason, and the tempting reading of the tail — "无级 is simply the lowest priority" — is the wrong
one: it is a card triage never ruled on at all. Added, directly under the existing rationale:

- 级别半边:p1–p3 是分诊已裁的显式排序;无级末位是分诊缺口,不是一个已裁的低优先级。

It matches SKILL.md's own tail (无级卡轮报记分诊缺口) and adds no order restatement — the order
itself stays where it lives, in SKILL.md.

Rider 2 — the sweep line read as "every out-of-scope finding gets a card"

Before:

- N 项之外零改动且 PR 自证;范围外发现照旧单开。

After:

- N 项之外零改动且 PR 自证;范围外发现按立卡三类门槛分流,三类外进验收备注、不单开。

照旧单开 is unconditional, and read as written it contradicts the finding admission threshold
(SKILL.md lines 347–348, core-rules.md line 88): three classes get a card, everything else goes
to the PR's ## 验收备注. The rewrite points at that threshold and names where the rest goes; the
three classes are not restated here — they already live in the two files above. The sweep block
still enumerates five items, and PR #16557's line two rows below is untouched.

The fold that pays for the added line

Deleted, same file, from ## 紧急卡直接分诊:

- 紧急通道改的是节奏,不是生产者数目。

Where its content survives: the "not the number of producers" half is the line immediately above it,
which states the discipline and its operative test — - 单一生产者纪律照旧:分诊座位在班且已在处理同卡即让行。
(now line 15) — and the "changes the cadence" half is carried by the section heading plus its trigger
line - 正文自报 P0 或 data-integrity 的命中即走本节紧急通道。. The folded line names no object, no
action and no test; it only summarised the two lines above it. Nothing operative left the file.

The currency is a deletion, not a re-wrap: no two lines were merged to buy the row.

Why a fold rather than a tighter rewrite of line 7 — the four axes

  • Real business need. Measured, not guessed: the rationale line is 115 bytes against a 120-byte
    cap, and the level clause is at least 39 bytes, so it fits only by deleting an operative clause.
    The candidate for compression was bug 是已坏的不变量先于增强, which is the reason Bug outranks an
    enhancement — a test the triage seat actually applies each round. The folded line is a summary no
    seat applies as a test. Deleting the unused summary beats shortening the used rule.
  • Long-term soundness. A same-file deletion keeps the ratchet honest; re-wrapping two lines into
    one would have bought the row without removing anything, which the line-ratchet currency rule
    forbids outright.
  • AI-authoring safety. Both riders remove a reading that produces wrong work. 无级 read as a
    ruled low priority invites a seat to treat an untriaged card as deliberately deprioritised;
    照旧单开 read literally makes a dev file a card for every passing observation, which is the exact
    over-filing the threshold exists to stop.
  • Startup scope discipline. No new surface, no new label, no new mechanism — two sentences and
    one deletion, and the file stays pinned at its ceiling.

Verification — all at 4d6cd158c, the final commit

Gate list derived mechanically, never hand-listed:
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack → 14 commands, all
run, exit code captured by redirect before any pipe. Reconciliation with --ran:

✓ dispatch-gates --ran: 14 derived famil(ies) accounted for — 14 run, 0 NOT-MEASURED.

Verdict lines the gates printed themselves:

✓ check-skill-line-ratchet: .claude/skills/pm-dispatch/references/dispatch-runbook.md is 241 lines (ceiling 241; headroom 0).
✓ check-skill-id-lint: 26 file(s) clean (pattern /#[0-9]{3,}/g).
✓ check-skill-frame-sync: 2 copies of the decision frame are structurally isomorphic across 2 files
check-nul-bytes: OK (scanned 8173 text file(s) ... no raw ASCII control bytes).

One gate first returned exit 3check:doc-formula-expressions, PREREQUISITE NOT MET
(@objectstack/lint not built). That is NOT MEASURED, not a red: after
pnpm exec turbo run build --filter=@objectstack/formula --filter=@objectstack/lint under the shared
verify lock it re-ran at EXIT=0. The other 13 were green first time.

Beyond the derived set:

skip-changeset: nothing is published from any package — the diff is one internal agent playbook
under .claude/, which ships to no consumer.

验收备注

noted, not filed — below the admission threshold, no card:

  • The sweep block's 五条 are spread across three rows, with rows 3–5 sharing one line, so the count
    is not readable off the layout. Not a defect and not a contract violation; it costs a reader one
    extra pass. Whoever next edits ## 发现分诊轮细则 picks it up — the file is at its ceiling, so any
    re-layout has to pay for itself the same way this PR did.

维护者速读(草稿)

  • 改了什么 —— dispatch-runbook.md 一个文件,两句改写、一句删除,行数 241 → 241 不变。
    ① 取卡级序的理由行原本只解释 p0 / blocking / bug / 卡龄,现补一行说明 p1–p3 为什么依次相先、
    以及末位的「无级」是分诊缺口而不是一个已裁的低优先级。② sweep 打包晋级那条里的「范围外发现照旧
    单开」改为按立卡三类门槛分流、三类外进验收备注。③ 为付第①条新增的那一行,删掉紧急卡一节里的一句
    纯复述(「紧急通道改的是节奏,不是生产者数目」),其内容在它上一行与本节标题里原样幸存。
  • 为什么改 —— 两处都是会让人做错事的读法,不是措辞抛光。「无级」被读成已裁的最低优先级,会让
    席位把根本没分诊过的卡当成有意压后;「照旧单开」按字面读是「范围外发现一律立卡」,与立卡三类门槛
    正好相反,是当前过度立卡的直接出处。
  • 风险与代价(含回滚) —— 代价是删掉了一句摘要式复述,读者要从上一行自己得出同一结论;这是行数
    棘轮零余量下唯一合法的付账方式(re-wrap 不算)。风险极低:纯规则文本,无脚本、无契约、无发布面。
    回滚 = git revert 这一个提交,一个文件三行,不牵动任何其他文件或门禁基线。
  • 席位意见 ——(留空,待席位在 ACCEPT 时填)
  • 你要做的 —— 这是受管面(.claude/**),按 Prime Directive feat: Comprehensive CRM example demonstrating all ObjectStack protocol features #14 由维护者人工合并。请确认两处新
    措辞与你心里的裁决一致:①「无级 = 分诊缺口」而非「最低优先级」;②「范围外发现按门槛分流」而非
    「一律单开」。确认后人工合并即可,无需 seat 审批、不入队、不挂 auto-merge。

Generated by Claude Code

…es by the finding threshold

Two line-neutral riders on `references/dispatch-runbook.md`, recorded at
flight Z's ACCEPT and outside that flight's declared file surface.

1. The level rationale explained only p0 / blocking / bug / age; the
   selection order also ranks p1 > p2 > p3 > 无级, so the rationale gains
   the level half: a ruled level is an explicit ordering, 无级 is a triage
   gap rather than a ruled low priority.
2. 「范围外发现照旧单开」 read as "every out-of-scope finding gets a card",
   contradicting the finding admission threshold; it now routes by that
   threshold and names where the rest goes.

The added line is paid by folding a same-file restatement — the emergency
section's summary sentence, whose content survives on the line above it.
File stays at 241 lines, every line ≤ 120 bytes.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018dxq7YqsLDMeZDZ5AzsgJX
@os-musk os-musk added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Sep 7, 2026 — with Claude
@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Sep 7, 2026
@os-musk
os-musk requested review from hotlong and os-zhuang September 7, 2026 12:14

os-musk commented Sep 7, 2026

Copy link
Copy Markdown
Collaborator Author

维护者速读(终稿 · skills 席,2026-09-07T12:1xZ)

  • 改了什么:dispatch-runbook.md 一个文件、两句改写一句删除,241 → 241 行不变。① 取卡级序的理由行下面补一行:p1–p3 是分诊已裁的显式排序,末位的「无级」是分诊缺口、不是一个已裁的低优先级。② sweep 打包晋级那条的「范围外发现照旧单开」改成「按立卡三类门槛分流,三类外进验收备注、不单开」。③ 为付①那一行,删掉紧急卡一节里的一句纯复述(「紧急通道改的是节奏,不是生产者数目」),其内容在它上一行的「单一生产者纪律照旧…」与本节的触发行里原样幸存。
  • 为什么改:两处都是会让人做错事的读法:「无级」被读成已裁的最低优先级,席位会把没分诊过的卡当成有意压后;「照旧单开」按字面是「范围外发现一律立卡」,与你 skills(pm-dispatch, os-dev): five measured refinements to the finding admission threshold — the acceptance-notes fallback was empty 6/6, and the highest-value fix is an operational guard, not a criterion #16551 刚落地的立卡三类门槛正好相反,是过度立卡的直接出处。
  • 风险与代价(含回滚):纯规则文本,零脚本、零契约、零发布(skip-changeset);代价是删了一句摘要式复述。回滚 = revert 一个 commit。
  • 席位意见:席位逐行读了 4 行 diff,在 head 上重数 241 行、最宽 120 字节、零 issue 编号,被删那句的两个半句分别在第 15 行与本节触发行幸存,PR skills(pm-dispatch, os-dev): five measured refinements to the finding admission threshold #16557 加的抽样行(第 33 行)未动,对 origin/main ac9376a7 的 merge-tree 干净。新句措辞与 SKILL.md 的取卡全序尾句(「无级卡轮报记分诊缺口」)同口径,不复述顺序本身。CI 28 项 12:14Z 无红,五项在跑。建议直接合并。
  • 你要做的:确认两处口径(「无级 = 分诊缺口」;「范围外发现按门槛分流」),然后人工合并本 draft PR(受管面不进合并队列)。

Generated by Claude Code

@os-zhuang
os-zhuang marked this pull request as ready for review September 7, 2026 12:33
@os-zhuang
os-zhuang enabled auto-merge September 7, 2026 12:33
@os-zhuang
os-zhuang added this pull request to the merge queue Sep 7, 2026
Merged via the queue into main with commit fc7c11d Sep 7, 2026
35 checks passed
@os-zhuang
os-zhuang deleted the claude/issue-16490-runbook-level-rationale-and-threshold branch September 7, 2026 13:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation needs-user-decision size/xs skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

3 participants