Repository navigation
Commit a7a135d
pm: the handover checklist names release, the decision inbox and carded obligations; two local handover checks (#23417)
Fixes #23396
Clause-②: no
Implements ruling `6162084315` (letter A) on #23396 under the claim
`6162205633`: the handover checklist gains its three missing steps, the
filing gate gains the carrier sentence, and two local, read-only script
checks land beside them. One PR, as the claim set out: `.claude/**` is
in the diff, so the PR is governed whole (Tier S) and stays a draft.
## The ruling's clauses, mapped to the diff
| Ruling clause | Where it landed |
|:--|:--|
| Every ledger obligation carries a card; a conditional one is
`pm:blocked` + `Blocked-by:` (time-triggered: `Restart-when:`); the
vacant body holds pointers only | `seat-post-protocol.md` step 4 (new) |
| Every card this seat claimed is landed or released in one write
(`Release:` + assignee cleared) and moved to its real state |
`seat-post-protocol.md` step 2 (rewritten) |
| Every card awaiting the maintainer carries `needs-user-decision` and
nothing else | `seat-post-protocol.md` step 3 (amended) |
| The step naming the pre-handover check gives the command and requires
exit 0 before the vacant body | `seat-post-protocol.md` step 5 (new) |
| "The next PR that touches X" is not a carrier; a follow-up a landed
work item owes is filed, outside the noise clause | `filing-gate.md`
line 22 (new) |
| 2(a) `post-stamped.mjs --body` refuses a vacant body whose ledger
holds an obligation line without `#N` | `scripts/pm/post-stamped.mjs`
(pure core + 27-case battery) |
| 2(b) pre-handover check: unreleased claim / decision outside the inbox
| `scripts/pm/check-handover.mjs` (new, 30-case self-test) |
| No twin moves | `SKILL.md` has no checklist twin (grep `收班` / `交接` /
`释放`: only pointers to this file); `references/core-rules.md` does not
exist |
## Charter lines, before → after
`seat-post-protocol.md`, 交接收尾清单 (91 → 91 lines, every line ≤ 120 bytes):
```text
before
2. 在手工件逐件处置:能收则收,收不完留守或热移交;⛔ 不为清零而等。
3. 全量枚举本车道队列、决策箱与 findings,形成接任台账。
4. 贴正文改 `⏳ vacant` + 台账:前任会话 ID、注销时间、队列快照、串行队、跨车道备忘。
5. 收班简报与审计评论存档;接任指引 = `/pm-dispatch 接手` + 先读座位贴。
6. `list_triggers` 清点本会话定时器:删入座 Routine,一次性的逐个清理或随移交物转交。
7. 移交中 PR 的定时器随 PR 走;留守保留的定时器只触点名项。
8. 本座位派出的 dev 会话由离任 PM 自己逐个 `archive_session`,归档义务 ⛔ 不可移交。
9. 在飞 dev 卡与留跑会话在贴里点名(卡号 + 派发会话 ID);跟完与归档 ⛔ 不随交接转移。
after
2. 在手工件逐件处置:本席认领的卡落地,或 `Release:` 与清 assignee 同笔释放,转成真实状态。
3. 全量枚举本车道队列、决策箱与 findings,形成接任台账;等裁决的卡只挂 `needs-user-decision`。
4. 台账义务逐条带卡号(条件型开 `pm:blocked`+`Blocked-by:`,定时型 `Restart-when:`),正文只放指针。
5. 第 2、3 步由 `node scripts/pm/check-handover.mjs --session=ID --account=LOGIN` 核,退出 0 才写空座正文。
6. 贴正文改 `⏳ vacant` + 台账:前任会话 ID、注销时间、队列快照、串行队、跨车道备忘。
7. 收班简报与审计评论存档;接任指引 = `/pm-dispatch 接手` + 先读座位贴。
8. `list_triggers` 清点本会话定时器:删入座 Routine,一次性的逐个清理或随移交物转交。
9. 在飞卡与留跑会话贴里点名(卡号+派发会话 ID);派出的会话离任 PM 自己 `archive_session`。
```
Steps 1 and 10 are unchanged. Old 4–6 are new 6–8 verbatim.
`filing-gate.md` (58 → 58 lines):
```text
added after line 21
- 「搭下个碰 X 的 PR」不算 `carrier:`;已落地工作欠的后续照立卡,⛔ 不按「不是卡」压下。
before (lines 30–31)
- 分诊席的存量清理仍走维护者确认的十张一组,⛔ 不因本门改批量。
- 十张一组只备下一组:当前组未经维护者确认 ⛔ 不预备再下一组、不提前展开全部批次。
after (line 31)
- 分诊席的存量清理仍走维护者确认的十张一组、只备下一组,⛔ 不因本门改批量。
```
"防噪条款" appears nowhere in the skill, so the sentence names what it means
in this file: the gate's `⛔ 不是卡` exclusions.
### How the net-zero lines were paid
No ceiling moved. Each freed line comes from deleted text, never a pure
re-wrap: every fold below joins lines whose bytes sum to more than 120,
so it could not fit without deleting bytes, and what it deletes is
restated elsewhere.
- **Old step 7 deleted.** "移交中 PR 的定时器随 PR 走" restates step 6's
"随移交物转交"; "留守保留的定时器只触点名项" restates line 38's "残余定时器同界".
- **Old steps 8 + 9 fold** (223 B → 117 B). "归档义务 ⛔ 不可移交" restates "由离任
PM 自己". "跟完 … ⛔ 不随交接转移" restates `seat-lifecycle.md:30`: replies,
liveness probes and re-dispatch stay only in the dispatching session.
- **Old step 2 becomes clause B.** "收不完留守或热移交" restates line 33. "⛔
不为清零而等" restates `seat-lifecycle.md:41` ("不是在飞归零").
- **Clause C is appended to step 3**, inside its own 120-byte budget.
Step 3 already enumerates the decision box.
- **filing-gate.md lines 30–31 fold.** Line 31's "当前组未经维护者确认 ⛔
不预备再下一组、不提前展开全部批次" restates "只备下一组" within a group of ten the maintainer
confirms. 1 parent be50633 commit a7a135d
4 files changed
Lines changed: 988 additions & 10 deletions
File tree
- .claude/skills/pm-dispatch/references
- scripts/pm
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| 22 | + | |
22 | 23 | | |
23 | 24 | | |
24 | 25 | | |
| |||
27 | 28 | | |
28 | 29 | | |
29 | 30 | | |
30 | | - | |
31 | | - | |
| 31 | + | |
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
42 | 42 | | |
43 | 43 | | |
44 | 44 | | |
45 | | - | |
46 | | - | |
47 | | - | |
48 | | - | |
49 | | - | |
50 | | - | |
51 | | - | |
52 | | - | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
53 | 53 | | |
54 | 54 | | |
55 | 55 | | |
| |||
0 commit comments