From 780cbb5818764bce8de6aa784a05b764968bf582 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 19 Aug 2026 00:11:10 +0000 Subject: [PATCH] docs(pm-dispatch): forbid the seat post's updated_at as a liveness proxy and give the liveness clause a runnable reading MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01WswfK2yNYT9hNnMH6TzAwL --- .../references/seat-post-protocol.md | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/.claude/skills/pm-dispatch/references/seat-post-protocol.md b/.claude/skills/pm-dispatch/references/seat-post-protocol.md index 86051f6c06..6d6df93ced 100644 --- a/.claude/skills/pm-dispatch/references/seat-post-protocol.md +++ b/.claude/skills/pm-dispatch/references/seat-post-protocol.md @@ -1,8 +1,7 @@ # 座位贴协议细则(references —— 按需加载) -出处:主文件「座位贴协议」。原则(一座位一贴、单写手、正文为权威)住在主文件;本 -表是接管/移交/回收那一刻要查的**协议细则**。多写手共编一个 body 机制上防不住互 -吞,所以架构是每个座位一张登记贴(维护者 2026-08-06 拍板)。 +出处:主文件「座位贴协议」。原则(一座位一贴、单写手、正文为权威)与 2026-08-06 +拍板出处住在主文件;本表是接管/移交/回收那一刻要查的**协议细则**。 - **贴 = 座位**,标签 `pm:seat`,正文固定六段:**范围 | 当前 PM | 继承台账 | 热文 件串行队 | 常设承诺 | 说明** —— 仅此六段,段段皆**现值**,没有一段随时间增长 @@ -30,13 +29,15 @@ **恒不降级**;新增座位贴(拆域)同样先查 `pm:seat` 索引再立贴。 - **无心跳,活性判定两条路**:惰性半边在**接管冲突**时评估一次 —— Routine 座位查 调度器(`last_fired` / `next_run`),会话座位查最近一条产出评论的时间戳, - **>24h 无产出即可回收**(改贴正文 + 审计评论);常设半边是分诊 Routine 每 fire - 附带的座位贴活性巡查,同一 >24h 判据(细则见 `dispatch-runbook.md`)。子树/批次 - 里在飞的认领仍由原认领者跟完。 + **>24h 无产出即可回收**(改贴正文 + 审计评论);常设半边是分诊轮的座位贴活性巡 + 查,同一判据(细则见 `dispatch-runbook.md`)。**⛔ 永不从贴的 `updated_at`/标题 + 推死活**:写侧只在轮次边界刷(下条),轮中陈旧是设计 —— 越忙的座位贴越显死(实 + 测:贴陈旧 18h 被报「疑似下班」的座位,15 张卡在飞、产出新鲜到分钟级)。可跑读 + 法:本车道 `pm:dispatched` 卡按 `updated_at` 降序一搜,或最近一条认领/ACCEPT/审 + 计评论的时间戳 —— 分钟级即活,贴怎么说都不算。 - **写侧刷新点 = 轮次边界**:派发时、收班时、暂停/交接前 —— 接管场景是贴存在的理 - 由,边界刷足以覆盖;中途状态由卡上 claim/ACCEPT 评论承载(本就是 state of - record),⛔ 不逐事件回写贴正文。协议/结构升级迁移状态、或巡检发现正文不符时,当 - 场改正文 + 审计评论。Routine 座位的收尾简报也落自己的座位贴(它是下一轮自退守卫的读数)。 + 由,边界刷足以覆盖;中途状态的承载见上「班次叙事」条(原话在主文件)。协议/结构 + 升级迁移状态、或巡检发现正文不符时,当场改正文 + 审计评论。Routine 座位的收尾简报也落自己的座位贴(它是下一轮自退守卫的读数)。 - **收班 = 状态 flush + 看护显式移交,⛔ 不等于在飞归零**(维护者 2026-08-13 拍板; 实测:云卡本就设计为活过 PM 会话,等它归零曾挂住座位数小时)。在飞归零对子代理 dev 是对的(随会话死);对云卡与合并队列尾巴是错的 —— 那些是持久的、GitHub 锚 @@ -52,11 +53,10 @@ 任会话 ID、注销时间、队列快照、**热文件串行队**、跨车道备忘);⑤ 审计评论存档 (接任指引:`/pm-dispatch 接手` + 先读座位贴);⑥ `list_triggers` 清点本会话全 部自设定时器,逐个清理**或随移交物转交**(绑着移交中 PR 的定时器随 PR 转交,不 - 清);⑥ʹ 本座位派出的 dev 会话由**离任 PM 自己**逐个 `archive_session` —— 会话 - 句柄是账号作用域的,换账号的接任者对它们一律 `not found`(细则见 - `dispatch-runbook.md`),归档义务**不可移交**;确须留跑的会话在座位贴里点名、写 - 明「归档不随交接转移」,⛔ 不把它留在接任者的欠账清单上 —— 那是一条接任者做不到 - 的待办;⑦ 向维护者交最终报告 —— 零建议是好班次,三类上报纪律在主文件。 + 清);⑥ʹ 本座位派出的 dev 会话由**离任 PM 自己**逐个 `archive_session`,归档 + 义务**不可移交**(会话句柄是账号作用域的,细则见 `dispatch-runbook.md`);确须 + 留跑的会话在座位贴里点名、写明「归档不随交接转移」,⛔ 不留作接任者的欠账 —— + 那是一条它做不到的待办;⑦ 向维护者交最终报告(零建议与三类上报纪律在主文件)。 - **epic 委托不入座位贴体系**(父单正文自带会话与领地,`label:pm:epic` 即全量索 引);座位贴只记常设座位,一件事只记一处。`packages/spec` 恒归 spec 座位。