Skip to content

Commit 0a6024d

Browse files
docs(pm-dispatch): a maintainer's dispatch posture ends with the session it was given to (#20169)
Fixes #20154 Clause-②: no ## What One rule, three clauses, placed in `.claude/skills/pm-dispatch/references/seat-lifecycle.md`. A maintainer's dispatch posture (serial, `batch` N, 「不开新卡」) given to a seat session ends when that session closes its shift. A new incumbent starts at SKILL.md's `batch` default (3) unless the maintainer restates the posture to the new session. A shift-close brief does not list such a posture as an inherited standing ruling. Net line change 0; no gate or checker added. ## The maintainer's instruction (verbatim) > 「项目经理重开之后,并发应该回到3,不应该沿用之前的记录。这个也应该开 skills 卡。」 In the chat of `domain:spec` seat 2 session `session_01QcAS3qiYYZNezaxZxaUdMV`, 2026-09-27, per the card's Instruction block. The instance the card describes: the handover brief comment 5791507651 on #18549 (2026-09-23) listed 「当前任务处理完,合并后就改为串行派发。」 under "Standing rulings from today (the successor inherits them)". That comment and that card are left untouched. ## Where, and why there - File: `references/seat-lifecycle.md` (the seat's placement). `SKILL.md` is untouched: its `batch` row (:59) is the width-pinned widest table row and the file has 0 line headroom. `seat-post-protocol.md` is untouched: one rule, one file. - Split across two sections because of who reads which one. The file's own line 3 says the 〈开轮互斥〉 section is read at fire start and the other sections before closing a shift. Clause 2 (the successor starts at 3) goes in 〈开轮互斥〉, the section the new incumbent reads at seating. Clauses 1 and 3 (the posture expires; the brief does not carry it) go in 〈座位贴协议〉, the section the outgoing incumbent reads before writing the brief. ## Before / after | line | before | after | |---|---|---| | L17 (〈开轮互斥〉) | `- 滞后标题是进场顺手修的半状态,⛔ 不是阻塞;简报点名的留守尾巴作围栏。` | `` - 坐席从 `batch` 默认 3 起步;前任口径(串行、N、「不开新卡」)维护者对本会话重述才生效。 `` | | L40 (〈座位贴协议〉) | `- 收班 = 状态 flush + 在飞显式安置,不是在飞归零;收班简报是最终一笔。` | `- 收班 = 状态 flush + 在飞显式安置,不是在飞归零;派发口径失效,简报 ⛔ 不列作继承裁决。` | What the deleted text was, and where it still lives (the ratchet is paid by deleting duplicates, not by re-wrapping): - Old L17, both halves, is carried by `seat-post-protocol.md` 〈活性、写侧刷新与收班〉: 「标题滞后是可修半状态,坐席时顺手修,⛔ 不是阻塞。」 (its L37) and 「末尾巴合并 ⇒ 贴上一条尾清注记;继任立即坐席,点名集作围栏。」 (its L39). That file is the one read at the takeover moment. - Old L40's second half 「收班简报是最终一笔」 is carried by the same file's L36: 「收班序列:贴正文与标题刷新在先,简报评论是最终一笔;继任的释放判据 = 简报在。」 ## Premise check at base 84880f9 `grep -nE '口径|posture|串行派发'` over `SKILL.md`, `references/seat-lifecycle.md`, `references/seat-post-protocol.md`: **0 hits** (grep exit 1). The dispatch note said the only hit was `SKILL.md:59`. That line is the `batch` default row and it contains none of the three words. It is found by `grep -n batch`, not by this grep. Control on the same file: `grep -c 收班 references/seat-lifecycle.md` = 8. The gap the card names is real: no session-scope rule for a dispatch posture exists in any of the three files. ## Line budget | file | lines before | lines after | ceiling | prose lines over 120 bytes | |---|---|---|---|---| | `references/seat-lifecycle.md` | 96 | 96 | 96 | 0 (new L17 is 120 B, new L40 is 118 B) | `pnpm check:pm-skill-ratchet` on head 165b46b prints `seat-lifecycle.md is 96 lines (ceiling 96; headroom 0)` and exits 0. Deviation from the dispatch's mechanism note, reported rather than hidden. The note said references prose lines could be lengthened because only table rows are width-pinned. That is false. The ratchet also enforces a 120-byte budget per prose line. My first commit (01d3d30) extended the two lines to 199 B and 226 B, and the gate went red: `has 2 line(s) over the 120-byte budget: L16 (199B), L40 (226B)`. The second commit replaces two duplicated halves instead, as shown above. ## Gates (head 165b46b) `node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack` derived 17 commands. All 17 exit 0, as do three extras: `check:pm-settings-deny-roster` (its roster lives under `.claude`), `check-skills-token-ratchet.mjs` and `check:pm-governed-prose`. `--ran` reconciliation with exit codes recorded: `17 derived famil(ies) accounted for — 17 run, 0 NOT-MEASURED (a DERIVED zero — all 17 recorded an exit code and none of them is 3)`. `check:doc-formula-expressions` first exited 3 (prerequisite: `@objectstack/lint` not built). After building formula and lint under the verify lock it exits 0. Control-byte self-scan of the edited file: no hits. Type-check lanes: NOT MEASURED, no TypeScript touched. ## Changeset None. `.claude/**` ships in no published package's `files[]`, so this PR takes `skip-changeset`. ## Acceptance notes - The dispatch note's premise that references prose lines are width-free is wrong: `check-skill-line-ratchet.mjs` enforces a 120-byte prose-line budget on every covered file. Future dispatch notes that suggest "extend an existing line" should price that budget. - Rule-body wording choice: 「简报 ⛔ 不列作继承裁决」 forbids listing the posture as an inherited ruling. It does not forbid the brief from mentioning the posture as history. That matches the card's Ask. ## 维护者速读(草稿) - **改了什么**:在 `seat-lifecycle.md` 里改写两行(行数不变):新席位坐席时按 `batch` 默认 3 派发;前任会话拿到的派发口径(串行、`batch` N、「不开新卡」)随它收班失效,收班简报不再把这种口径列成继承裁决。 - **为什么改**:维护者原话「项目经理重开之后,并发应该回到3,不应该沿用之前的记录。」;此前继任会话把前任简报里的「改为串行派发」当成继承裁决,跑在 `batch` 1。 - **风险与代价(含回滚)**:删掉的两段文字在 `seat-post-protocol.md` 里原样有同义行,不丢规则;回滚 = revert 本 PR。 - **席位意见**: - **你要做的**:无需操作;席位契约复审 PASS 后由席位落地。 --- _Generated by [Claude Code](https://claude.ai/code/session_0148fenvVvyQV9HYxgVDQ33q)_ --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent e2c4e12 commit 0a6024d

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

‎.claude/skills/pm-dispatch/references/seat-lifecycle.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
- 总监席多场并行、无在任者:读数一、二与自退对它不成立;`domain:*` 席互斥照旧。
1515
- 同 session 的 subagent dev 认领不触发自退,甄别靠分支。
1616
- 收班简报是前任不再写的显式声明,是释放标记不是锁:简报即最新事件 ⇒ 立即坐席。
17-
- 滞后标题是进场顺手修的半状态,⛔ 不是阻塞;简报点名的留守尾巴作围栏。
17+
- 坐席从 `batch` 默认 3 起步;前任口径(串行、N、「不开新卡」)维护者对本会话重述才生效。
1818
- 维护者明示召唤是仲裁:有简报径直坐席;无简报才走保守确认,确认终止即坐席。
1919
- 互斥清 ⇒ fetch 后 SKILL.md、阶段 references、本席章程的最新触碰 sha 走 `git-history.mjs touch`。
2020
- 异于上一开轮标记即先重读;留开轮标记(session ID + fire 时刻 + 该触碰,注明重读)再跑轮。
@@ -37,7 +37,7 @@
3737
- 无心跳,活性惰性判定:超过一天无自有产出即可降级回收。
3838
- ⛔ 永不从贴的 `updated_at` 或标题推死活;活性只认在任者自己的产出。
3939
- 竞态三招:动手前重 fetch 正文、审计评论时间戳先到先得、写后回读。
40-
- 收班 = 状态 flush + 在飞显式安置,不是在飞归零;收班简报是最终一笔。
40+
- 收班 = 状态 flush + 在飞显式安置,不是在飞归零;派发口径失效,简报 ⛔ 不列作继承裁决。
4141
- 离任留守只写简报点名的项,⛔ 不读队列、不新派发、不碰未点名卡。
4242
- 换班报告默认零建议,只收三类:原则错/缺、可机械化项、平台事实变化。
4343
- 原则错/缺 → skills 席专题;可机械化项 → 门禁/脚本卡,⛔ 不是散文。

0 commit comments

Comments
 (0)