Skip to content

[skill] pm-dispatch:spec 车道 08-05/06 任期沉淀的 7 条 SKILL 更新建议(34 单 MERGED / 0 返工 / 一次交接全程即兴) #5925

Description

@os-zhuang

来源:spec 车道前任 PM 会话 session_018fxLGQdatPbBUvCgiVxg6D 的任期复盘(2026-08-05~06,34 单 MERGED / 0 返工 / 两次 P0 插队闭环 / 一次完整交接),维护者 2026-08-06 指令立单(「创建 issue 更新这个 skills」)。目标文件:.claude/skills/pm-dispatch/SKILL.md

⚠️ 同文件族协调:#5741(三条 operational note)、#5845(队列管家座位协议)、#5885(services 车道 10 条)同改此文件。四单合并实施或严格串行,分开并行合会互相冲掉(SKILL.md 不在 os-regen 驱动清单里,吞并形态是普通文本冲突,但四单同段落追加几乎必然相交)。与 #5885 的重叠已剔除:配额纪律成章归 #5885 第 3 条,本单第 3 条只补它没有的三个具体陷阱。

高优先级(本任期内已实际付出代价或全靠即兴)

1. 交接协议缺失 —— 座位退场清单入册

现状:座位表协议只有一句「接管/移交 = 改行 + 审计评论」,没有退场序列。2026-08-06 维护者下交接令后,整套收尾是前任现场即兴的,下一次交接会再即兴一遍,漏任何一步都给接任者留残缺现场。

建议:在「座位表协议」下加一节「交接收尾」,固化实测过的序列:

  1. ⛔ 立即停止新派发(交接令生效即冻结);
  2. 在手工件清零(在飞 dev 收单、已 ACCEPT 的 PR 跟到 MERGED 或明确移交);
  3. 全量枚举本车道队列 + 决策箱 + findings,形成接任台账;
  4. [PM] 分片分工登记表 — 谁在管哪个仓库的队列 #4604 座位行改写为「⏳ 待认领」+ 完整台账(前任会话 ID、注销时间、账面、队列快照、跨车道备忘);
  5. 审计评论存档(session ID + 接任指引:/pm-dispatch 接手 + 先读座位行);
  6. list_triggers 清理本会话全部自设定时器(不再重挂,守夜随座位移交);
  7. 向维护者交最终报告。

2. #4604 正文编辑是「整体替换」—— 并发整写互相吞行,协议没写这个陷阱

现状:协议说「就地编辑你那一行」,但 issue body 更新是全文覆盖:从过期 fetch 出发编辑 = 静默回滚其它座位的行。08-06 当日实测多次并发整写互相冲掉(identity 席补人、队列管家席新增,都曾被别的座位的旧快照覆盖)。与 os-regen 静默吞并同形:操作成功、零冲突标记、丢一侧改动。

建议:座位表协议加硬规则:「每次编辑前必重新 fetch body;只重写自己那一行,其余行逐字保留;写后回读核对自己行与相邻行」。(#5885 第 9 条的「发出后回读校验」是它的姊妹条,可同段落落地。)

3. 三个 API 层硬陷阱入 Operational notes(均为本任期实测)

  • MCP list_issues 的多标签过滤是 OR 不是 AND:查 domain:spec+pm:queue 拿到的是并集,队列读数直接错;必须手工求交集或走 REST search(label:a label:b 才是 AND)。notes 6「命令没在回答你以为的问题」家族的新样本。
  • issue_writelabels 参数是整组替换不是追加:不先取现值合并再写,会静默剥掉 priority:p0 / domain:*。与 label discipline「标签即状态机」直接冲突,值得单列一行。
  • REST core 配额在共享身份下同样会打满(notes 3 只写了 GraphQL),且恢复是整点重置:重试应对齐 :00,不是指数退避(实测一次盲退避白等半窗口)。配额纪律的成章归 [skill] pm-dispatch:services 车道 08-05/06 班次交接沉淀的 10 条 SKILL 更新建议(28 PR / 两次 CI 红 / 三次前提证伪) #5885 第 3 条,此处只补这一句判据。

中优先级(发生过、协议零覆盖)

4. P0 插队(priority:p0)零文档

本任期两次插队(#5701#5248)均闭环,但协议通篇没有 priority:p0,违反其自身的「a label exists iff something reads it」。建议 step 3 补三句:P0 可超 batch 上限、可打破轮次节奏立即派发;不豁免同文件串行;不豁免认领协议全套。

5. 「Stop conditions」与常设座位模型矛盾 —— 补「待命姿态」

协议写「queue 空 → 停循环并报告」,但双射座位制下队列清空≠退场。建议加一段:队列空 = 巡检间隔放宽到 60-70 分钟(与探活五条的待命节奏一致),待命职责五项 —— findings 分诊、pm:blocked 解锁扫描、在飞/已入队 PR 跟到 MERGED、决策箱提醒(仅轮报中列出,不 nag)、跨车道备忘跟进。

6. PM 工具 PR 的流程自相矛盾

Guardrails 说 PM「never its own PRs」,ACCEPT 节说「PM 工具 PR 留给维护者」,但 #5597#5872 实际均为维护者授权后由 PM 自行挂队合入。建议把例外写明:「维护者明示授权的 .claude/ 工具 PR,PM 可自行走队;授权记录须在 PR 正文引用」。

结构性(维护者拍板,建议单独 PR)

7. 文件已 1571 行 / ~43k tokens,逼近每轮加载成本临界

每个座位会话、每次 Routine fire 都要整读。可把 Operational notes 与「入队与落地」的长案例叙述抽到 references/incidents.md(skill 支持按需加载),主文件每条留「规则 + 一行案例锚点」。代价是「规则与教训同屏」的教学效果打折 —— 纯取舍。注意:#5741/#5845/#5885 与本单前 6 条全部落地后体量还会再涨,这条的紧迫度只增不减;但动静大,⛔ 不与前 6 条同 PR。

处置

Activity

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions