Skip to content

Commit c16e71e

Browse files
docs(pm-dispatch): forbid the seat post's updated_at as a liveness proxy and give the liveness clause a runnable reading (#9801)
The seat post refreshes at round boundaries by design, so a mid-round seat is stale-by-design on the post — the busiest seat looks deadest. Ban inferring liveness or death from the post's updated_at/title and spell out the runnable reading: the seat's latest platform-stamped output (lane pm:dispatched cards sorted by updated_at desc, or the latest claim/ACCEPT/audit comment timestamp). Ratchet payment (file is 101/101): true-dedup cuts whose surviving copies are named in the PR body. Claude-Session: https://claude.ai/code/session_01WswfK2yNYT9hNnMH6TzAwL Co-authored-by: Claude <noreply@anthropic.com>
1 parent e57524c commit c16e71e

1 file changed

Lines changed: 14 additions & 14 deletions

File tree

.claude/skills/pm-dispatch/references/seat-post-protocol.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
# 座位贴协议细则(references —— 按需加载)
22

3-
出处:主文件「座位贴协议」。原则(一座位一贴、单写手、正文为权威)住在主文件;本
4-
表是接管/移交/回收那一刻要查的**协议细则**。多写手共编一个 body 机制上防不住互
5-
吞,所以架构是每个座位一张登记贴(维护者 2026-08-06 拍板)。
3+
出处:主文件「座位贴协议」。原则(一座位一贴、单写手、正文为权威)与 2026-08-06
4+
拍板出处住在主文件;本表是接管/移交/回收那一刻要查的**协议细则**
65

76
- **贴 = 座位**,标签 `pm:seat`,正文固定六段:**范围 | 当前 PM | 继承台账 | 热文
87
件串行队 | 常设承诺 | 说明** —— 仅此六段,段段皆**现值**,没有一段随时间增长
@@ -30,13 +29,15 @@
3029
**恒不降级**;新增座位贴(拆域)同样先查 `pm:seat` 索引再立贴。
3130
- **无心跳,活性判定两条路**:惰性半边在**接管冲突**时评估一次 —— Routine 座位查
3231
调度器(`last_fired` / `next_run`),会话座位查最近一条产出评论的时间戳,
33-
**>24h 无产出即可回收**(改贴正文 + 审计评论);常设半边是分诊 Routine 每 fire
34-
附带的座位贴活性巡查,同一 >24h 判据(细则见 `dispatch-runbook.md`)。子树/批次
35-
里在飞的认领仍由原认领者跟完。
32+
**>24h 无产出即可回收**(改贴正文 + 审计评论);常设半边是分诊轮的座位贴活性巡
33+
查,同一判据(细则见 `dispatch-runbook.md`)。**⛔ 永不从贴的 `updated_at`/标题
34+
推死活**:写侧只在轮次边界刷(下条),轮中陈旧是设计 —— 越忙的座位贴越显死(实
35+
测:贴陈旧 18h 被报「疑似下班」的座位,15 张卡在飞、产出新鲜到分钟级)。可跑读
36+
法:本车道 `pm:dispatched` 卡按 `updated_at` 降序一搜,或最近一条认领/ACCEPT/审
37+
计评论的时间戳 —— 分钟级即活,贴怎么说都不算。
3638
- **写侧刷新点 = 轮次边界**:派发时、收班时、暂停/交接前 —— 接管场景是贴存在的理
37-
由,边界刷足以覆盖;中途状态由卡上 claim/ACCEPT 评论承载(本就是 state of
38-
record),⛔ 不逐事件回写贴正文。协议/结构升级迁移状态、或巡检发现正文不符时,当
39-
场改正文 + 审计评论。Routine 座位的收尾简报也落自己的座位贴(它是下一轮自退守卫的读数)。
39+
由,边界刷足以覆盖;中途状态的承载见上「班次叙事」条(原话在主文件)。协议/结构
40+
升级迁移状态、或巡检发现正文不符时,当场改正文 + 审计评论。Routine 座位的收尾简报也落自己的座位贴(它是下一轮自退守卫的读数)。
4041
- **收班 = 状态 flush + 看护显式移交,⛔ 不等于在飞归零**(维护者 2026-08-13 拍板;
4142
实测:云卡本就设计为活过 PM 会话,等它归零曾挂住座位数小时)。在飞归零对子代理
4243
dev 是对的(随会话死);对云卡与合并队列尾巴是错的 —— 那些是持久的、GitHub 锚
@@ -52,11 +53,10 @@
5253
任会话 ID、注销时间、队列快照、**热文件串行队**、跨车道备忘);⑤ 审计评论存档
5354
(接任指引:`/pm-dispatch 接手` + 先读座位贴);⑥ `list_triggers` 清点本会话全
5455
部自设定时器,逐个清理**或随移交物转交**(绑着移交中 PR 的定时器随 PR 转交,不
55-
清);⑥ʹ 本座位派出的 dev 会话由**离任 PM 自己**逐个 `archive_session` —— 会话
56-
句柄是账号作用域的,换账号的接任者对它们一律 `not found`(细则见
57-
`dispatch-runbook.md`),归档义务**不可移交**;确须留跑的会话在座位贴里点名、写
58-
明「归档不随交接转移」,⛔ 不把它留在接任者的欠账清单上 —— 那是一条接任者做不到
59-
的待办;⑦ 向维护者交最终报告 —— 零建议是好班次,三类上报纪律在主文件。
56+
清);⑥ʹ 本座位派出的 dev 会话由**离任 PM 自己**逐个 `archive_session`,归档
57+
义务**不可移交**(会话句柄是账号作用域的,细则见 `dispatch-runbook.md`);确须
58+
留跑的会话在座位贴里点名、写明「归档不随交接转移」,⛔ 不留作接任者的欠账 ——
59+
那是一条它做不到的待办;⑦ 向维护者交最终报告(零建议与三类上报纪律在主文件)。
6060
- **epic 委托不入座位贴体系**(父单正文自带会话与领地,`label:pm:epic` 即全量索
6161
引);座位贴只记常设座位,一件事只记一处。`packages/spec` 恒归 spec 座位。
6262

0 commit comments

Comments
 (0)