Skip to content

docs(pm-dispatch): the batch #62 skill folds — file-surface batch independence, priority in the selection order, the readings-ledger ceiling exception, the suite-event head re-read, the director carve-out - #16486

Merged
os-zhuang merged 3 commits into
mainfrom
claude/issue-16386-skill-batch-62
Sep 7, 2026

Conversation

@claude

@claude claude Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Fixes #16386
Fixes #15803
Fixes #16352
Fixes #16372
Fixes #16343
Refs #15647

Five governed cards of decision batch #62 (plus one rider from batch #65), folded into one rules-only PR on .claude/skills/pm-dispatch/. Every line pin is unchanged — SKILL.md 811/811, references/core-rules.md 150/150, references/seat-post-protocol.md 91/91 — and every added line is paid by a same-file fold that deletes a superseded, dead or duplicated line (never a re-wrap of two distinct rules). No issue numbers or comment ids in the corpus text; the rulings are cited here.

Rulings executed (quoted, not paraphrased — the maintainer's word on every batch #62 item is 「同意」):

Folds, per card (old line → new line → the fold that paid)

Line numbers are origin/main at 245c6a23cd (the flight's base).

1 · #16386 乙 — the human-floor exception (SKILL.md)

Added after 391 (the third human-floor line):

- 唯一例外:`platform-readings.md` 增量抬上限到落地行数,免决策卡,记 `ruledRaises` 引常设裁决。
- 条件:席位验收评论逐条核实、去重计数(候选/落地/已有/拒收)、一事一行、不计重排。

"Every other file's floor is unchanged" is carried by 唯一例外 (the one exception) rather than by a third line. platform-readings.md is the bare spelling SKILL.md already uses at 621.

Paid by two deletions:

  • 551 - \premise_still_valid: false` + 无 PR 是合法且常常有价值的交付。— a duplicate of 776 (报告契约:- `premise_still_valid: false` + `pr: null` 是合法终报,当再分诊输入复核,永不当失败派发。`), which is the fuller statement; 597 keeps the dev-corrects-PM half.
  • 75 + 76 (- 分诊席跑普通直连会话、默认判断档。 / - 代裁与契约复审等达档职责改派显式传 \model` 的契约复审档子代理。) → one line - 分诊席跑普通直连会话、默认判断档;达档职责改派显式传 `model` 的契约复审档子代理。` — one rule, exactly as core-rules.md line 18 already digests the pair into one line.

core-rules.md line 97 (the digest's 「门禁削弱」 category) is left as is: the exception is a one-file 细则 and the digest's category still holds; no ≤120-byte spelling of 97 fits the exception, and the ruling scopes the write to "SKILL.md's human-floor row". Flagged in the report as an open question for the seat.

2 · #15803 §A (c) — batch independence by file surface (SKILL.md, core-rules.md)

  • 434 - 并行度以 \batch` 封顶,同批按构造文件面不相交;`priority:p0` 插队可超 `batch`。- 并行度以 `batch` 封顶;同批独立性按文件面不相交判,⛔ 不按包;`priority:p0` 可超 `batch`。`
  • 435 - 批次独立性:一批内任两单不得可能碰同一个包/registry/barrel/spec schema;拿不准就串行。deleted (the package criterion is superseded by 434; 「拿不准就串行」 moves to the ① discipline line).
  • 444 - 维护者明示豁免同文件串行时,替代纪律四条:① 文件面申报到区域级。- 并行纪律四条(常规,非豁免):① 认领申报文件面到区域级,拿不准就串行。 (445, the ②③④ line, unchanged).
  • 446 - 豁免不外溢。 → dead under the ruling (the exemption IS the rule); its line carries the CI sentence: - 文件面不相交只保证文本可合并;跨文件语义耦合由队列 CI 逮住,⛔ 不读作不可能冲突。
  • 478 - 文件面对跨域例外单必填、普通单建议;分支名必须带 issue 号。- 文件面申报到区域级,每单必填;分支名必须带 issue 号。
  • core-rules 106 - 一批内任两单不得碰同一个包、注册表、barrel 或 spec schema;同文件的单跨轮硬串行。- 同批独立性按文件面不相交判,⛔ 不按包;同文件硬串行,冲突交合并队列仲裁 ⛔ 不手排。 (the two merge-main steps stay in SKILL.md 445; the digest carries the criterion, the serial rule and the arbiter).
  • 216 (linked / same-parent cards never share a batch), 259–262 (the cross-domain path already reads file surfaces) and 439 (the family-fold gate 「同包/区域」) state no package criterion and stay; family dispatch stays a recommendation.

Net: +1 (CI sentence) −1 (435) in SKILL.md; core-rules in place.

3 · #16352 — priority in the selection order (SKILL.md, core-rules.md)

  • 454 - 取卡全序:\priority:p0` 插队 > `pm:blocking` > `target:` 板上项 > type `Bug` > 其余;同级按卡龄。- 取卡全序:`priority:p0` > `pm:blocking` > `target:` 板上项 > p1 > p2 > p3 > 无级;同级先 `Bug` 再卡龄。(119 bytes; the ruled sentence verbatim is 153 bytes, so 插队 — already stated at 434 and in the state table'spriority:p0row — and the wordtype` are the only drops).
  • 456 - 全序每级取既有信号现读/现算,零逐卡维护;优先是排序不是豁免。… ;无级卡轮报记分诊缺口。 (the card's "ungraded is named in the round report as a triage gap"; 120 bytes exactly).
  • core-rules 109 - 取卡全序:插队卡、有下游依赖者的卡、发版板上项、缺陷卡、其余,同级按卡龄。- 取卡全序:插队卡、有下游依赖者的卡、板上项、p1、p2、p3、无级;同级缺陷卡先再卡龄。

Line-neutral, no fold needed. references/dispatch-runbook.md line 7 (the level rationale, which names p0 / blocking / bug / age and states no order) is outside this flight's declared file surface and is untouched — noted in the report.

4 · #16372 — re-read the PR head before trusting a suite event (SKILL.md)

Added after 659 (the subscription line in 入队与落地):

- 信任 suite/check 事件前先重读 PR 对象取 head:检查读数绑定该 head,⛔ 不绑事件带的 SHA。

Paid by folding 656 + 657 (- 合并后工作流不在任何 PR 的检查清单上,读 PR 检查的规则对它全盲。 / - 该类仓的部署工作流按独立检查类登记,与 PR 检查分开读。) — one fact and its own restatement — into - 合并后工作流不在 PR 检查清单上,读 PR 检查的规则对它全盲;按独立检查类登记分开读。

5 · #16343 — the director carve-out (SKILL.md, core-rules.md, seat-post-protocol.md, ratchet map comment)

  • SKILL.md, added after 84 in 〈入口与角色〉: - 总监席多场并行、无在任者:读数一、二与自退对它不成立;\domain:*` 席互斥照旧。` — paid by the 75+76 fold above (the four SKILL.md inserts are paid by 435, 551, 75+76 and 656+657 as a set; 446 is in-place).
  • core-rules 20 - 未收班活动任一未满一个轮次即自退;有收班简报可直接坐席,坐席后先写开轮标记。- 未收班活动任一未满一轮即自退,总监席除外;有收班简报即坐席,坐席后先写开轮标记。 (the digest of the same rule, changed in step per SKILL.md 优先级 line 44).
  • seat-post-protocol.md: added after 12 - 多场席(总监):\🟢` 后写召唤账号,状态块逐场一行(会话 ID + 锚);无在任者、无接管。 — paid by folding 8 + 10 (- 标题即状态板,固定格式 …/- `label:pm:seat` 的列表页因此就是全舰队状态板。) into - 标题即状态板,固定格式 `[PM seat] <座位名> — <状态>`;`label:pm:seat` 列表页即舰队状态板。The status-word form deliberately reuses the existing🟢 〈github-login〉word with the summoning account, rather than adding a fifth word:check-half-statesH5 reads any🟢 WORDas a login that must be an assignee (onlyRoutineis special-cased) and reports any other glyph asunrecognized status word, so a new word would create a phantom H5 finding on the director post; and the live post (#12708, 🟢 os-zhuang(第 15 场 …)`) already carries exactly this form with the per-summon detail in the body. Line 9's vocabulary and line 38's 「标题词表不扩」 therefore stay as written. (Angle brackets are spelled full-width 〈〉 in this body; the file uses ASCII.)
  • scripts/pm/check-skill-line-ratchet.mjs director row comment: it claimed the charter file carried the 2026-08-27 authorization sentence "verbatim in the file" and called the seat "owning the contract-review chain"; the charter now carries the ruling as a rule line (授权面 = 人工定期召唤 …) and holds the after-audit, not the chain. The comment keeps the maintainer's quotation, says the file carries it as a rule line, and names the four duties and the concurrent-summons shape. Comment only; no ceiling moves.
  • The card's "eight lane files" reading lived only in the ratchet's self-test roster label, which PR tooling(pm): derive the line ratchet's lane roster from the lanes/ directory #16437 replaced with a directory-derived roster (landed as 32e57e5abe, merged into this branch); no map comment says "eight", so nothing else to refresh.

6 · #15647 §2 item 1 (rider) — quote, never paraphrase (SKILL.md)

Added after 526 (the 「派发词只带增量」 pointer) in the dispatch-brief rules:

- 派发词引卡片的精确断言(schema 臂、判据、原文)一律逐字,⛔ 不释义转述。

Paid by folding 524 + 525 (- 派发词 ⛔ 默认不整段粘贴 issue 正文:让 dev 自己读 GitHub 全文与全部评论。 / - 派发词必须要求 dev 自查正文完整性。) — one rule, as core-rules.md line 114 already digests them — into - 派发词 ⛔ 默认不整段粘贴 issue 正文:让 dev 自己读全文与全部评论并自查正文完整性。

Serial

Verification (final head 93907021e7)

  • Derived families: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack (change set derived from git: 4 paths vs merge base a9d25d842) → 38 commands, each run with its exit captured to its own log before any pipe: 38/38 exit 0 on 93907021e7. The same 38 ran green on 1c069352bd; on 95765ceea6 the doc-formula gate first answered exit 3 PREREQUISITE NOT MET (@objectstack/formula / @objectstack/lint unbuilt — NOT MEASURED, not a finding) and went green after turbo run build --filter=@objectstack/formula --filter=@objectstack/lint under the verify lock. Reconciliation verdict line: 「✓ dispatch-gates --ran: 38 derived famil(ies) accounted for — 38 run, 0 NOT-MEASURED.」
  • Ratchet: check-skill-line-ratchet.mjs --self-test 「✓ check-skill-line-ratchet self-test: 157 cases pass.」 (T's directory-derived lane roster); live run exit 0 — 「SKILL.md is 811 lines (ceiling 811; headroom 0)」 · 「core-rules.md is 150 lines (ceiling 150; headroom 0)」 · 「seat-post-protocol.md is 91 lines (ceiling 91; headroom 0)」; every edited line ≤ 120 bytes (widest new line: 120 B, SKILL.md 456).
  • check:skill-frame-sync exit 0 (binding sentence present in all 2 copies, 75 markdown files scanned for undeclared copies) · check-clause2-carriers.mjs --self-test 「190 cases pass」 exit 0 · check:pm-skill-id-lint 「26 file(s) clean」 exit 0 · check:pm-governed-prose exit 0 · check:nul-bytes exit 0, plus an unpiped control-byte grep over the four files (grep exit 1 = zero hits).
  • check-governed-merges.mjs --test on the four paths: exit 3 — 「⛔ GOVERNED — a human merge is the review record for this PR」, 3 of 4 paths on the register (.claude/** ×3; the ratchet script is not on it).
  • Whole-repo pnpm lint (eslint . --no-inline-config) through bash scripts/pm/os-verify-lock.sh -c 'pnpm lint', slot issue-16386, one acquisition per run: 「VERDICT command-exit 0 · held the lock 137s」 on 93907021e7 (exit 0 on 1c069352bd and 95765ceea6 as well; shared-box seconds, not idle-box figures).
  • Merge-tree: git merge-tree --write-tree 2c9c1a5282 HEAD clean twice on 1c069352bd (exit 0, identical tree 4aebcdfb9b… both runs) before T landed; after merging origin/main, git merge-tree --write-tree origin/main HEAD exit 0 at origin/main 00d54940eb.
  • Nothing here publishes (.claude/**, scripts/pm/**): no changeset; skip-changeset is applied through the additive labels endpoint with a comparison read-back (recorded in the report comment).

维护者速读(草稿)

事情:五张已裁的 skills 卡合成一个 PR,全是规则行改写:批次独立性改按「文件面」判、取卡全序读 p1/p2/p3、平台读数账本抬上限的唯一例外写进人工地板、信 suite 事件前先重读 PR head、总监席不入开轮互斥;外加一条「派发词逐字引用卡片断言」。三份文件行数钉死不变,每加一行删一行。
为什么:五条都是您在决裁批 #62 / #65 答「同意」的裁决,本 PR 只是把裁决落到文本。
风险:文字面改动,零代码;与 devx 席在途 PR #16271 同段落相交,后合者重折。
要您做什么:受管面,人工合并;席位意见另附。


Generated by Claude Code

…e selection order, the readings-ledger ceiling exception, the suite-event head re-read, the director carve-out

Five rules-only folds under unchanged line pins (SKILL.md 811, core-rules.md 150,
seat-post-protocol.md 91); every addition is paid by a same-file fold that deletes
a superseded, dead or duplicated line. The ratchet map's director-charter comment
no longer claims a quotation the charter file stopped carrying.

Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox
Co-authored-by: Claude <noreply@anthropic.com>
…batim

One more rules-only line in the dispatch-brief rules, paid by folding the
two brief lines that state one rule (the dev reads the whole card and
self-checks its completeness), as the core-rules digest already holds them.
SKILL.md stays at its pin.

Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox
Co-authored-by: Claude <noreply@anthropic.com>
@claude

claude Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor Author

Verdict: ACCEPT (governed — to the approvers)

Implemented-by: os-dev flight Z (fable), branch claude/issue-16386-skill-batch-62, head 93907021e7 (origin/main merged in after T landed)
Reviewed-by: pm-dispatch skills seat (contract-tier read in a detached compare worktree at 93907021e7)

What was checked

Rulings

  • Open question 1 (core-rules line 97's human-floor digest does not carry the 乙 exception; no ≤120-byte spelling fits): A — the digest's category still holds and the one-file 细则 lives in SKILL.md's row, which is what the ruling named.
  • Open question 2 (two line-neutral riders in references/dispatch-runbook.md, outside this flight's surface: the level rationale on line 7 names no p1–p3; the sweep-batch line should read as the finding threshold): A — a separate XS flight; card filed by the seat, blocked behind this PR's merge.
  • Out-of-scope reading (git merge-base --is-ancestor reads a squash-merged PR as not landed; a path-scoped git log is the landing reading): noted for the sixth readings increment, not filed.

Landing

Governed surface: reviewers os-zhuang and hotlong requested, needs-user-decision added, the final 维护者速读 follows this comment. Human merge. On merge the seat strips pm:dispatched and clears the assignee on #16386, #15803, #16352, #16372, #16343; #15647 closes with its item 2 in the platform-readings flight. Devx's PR #16271 (dirty) owes the re-fold against this PR's 候选与批次 region as recorded on it.


Generated by Claude Code

@claude
claude Bot requested review from hotlong and os-zhuang September 7, 2026 04:21
@claude

claude Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor Author

维护者速读(skills 席,2026-09-07T04:1xZ)

事情:导演席批 #62 / #65 的五条裁决(您已「同意」)折进 SKILL.md、core-rules、seat-post-protocol 三个受管文件,+28/−25,行数钉子 811 / 150 / 91 一个不动:① 账本 platform-readings.md 的常设例外(增量凭席位验收评论直接抬上限,不再逐次立决策卡);② 同批独立性按「文件面」判,不按「包」,豁免条款升为常规纪律,冲突交合并队列仲裁;③ 取卡顺序读 p1 > p2 > p3 > 无级;④ 信 CI 事件前先重读 PR 头;⑤ 总监席多场并行、无在任者(互斥例外 + 座席帖多召唤格式);⑥ 派发简报逐字引卡、不转述。

为什么:五条都是您批过的裁决,之前只存在于评论里;写进规则文本后席位不再各读各的。

风险:低——只改规则文本,门禁(棘轮、frame-sync、clause-② 载体、id-lint)全绿。devx 席的 PR #16271 与本 PR 在「候选与批次」区域重叠,它已是 dirty,按备注由它重折叠。

要您做什么:合并或退回一个决定。审批人 os-zhuang / hotlong 已被请求复审。

席位意见:建议合并。它同时解锁下一批:第六批读数增量(8 张停车卡)可按新例外直接出手。


Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment