Skip to content

Commit 1e3e667

Browse files
authored
docs(pm-dispatch): triage seat becomes a self-timed direct session; tier-gated duties run via transcript-verified subagents (#12744)
1 parent 242eb0a commit 1e3e667

3 files changed

Lines changed: 63 additions & 63 deletions

File tree

‎.claude/skills/pm-dispatch/SKILL.md‎

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -44,17 +44,20 @@ metadata:
4444
| `mode:subagent` \| `mode:cloud` | 派发后端 | 按卡分流:S+M ⇒ `subagent`,`cloud` 只留 L/XL 等保留面(维护者 2026-08-12 裁定) |
4545
| `#12 #34 …` | 显式 issue 清单,整体覆盖标签查询 | — |
4646

47-
无角色参数时按执行姿态运行,车道由座位贴认定。角色参数的意义:座位 Routine 的prompt 收敛
48-
成一行
49-
技能调用,座位行为全部版本化在 git,升级走技能 PR,⛔ 永不靠重建Routine 改行为。**探针先
47+
无角色参数时按执行姿态运行,车道由座位贴认定。角色参数的意义:召唤/自排的 prompt 收敛
48+
成一行技能调用,座位行为全部版本化在 git,升级走技能 PR。**探针先
5049
行(启动
5150
第一动作)**:先发一次最便宜的车道盘点查询(整车道读法);队列空 + 无在飞 + 无待复核 + 决
5251
策箱无新
5352
答复 ⇒ **自退**,不再读任何长文本 ——空转座位的成本上界就是这一次查询。
5453

55-
**座位 Routine 三原则**(细则见 `references/seat-post-protocol.md`):① 维护者在 Routines UI 创建、UI 钉
56-
模型;② 手动 fire 烟测,判据取**GitHub 上的产出**;③ 每 fire 一轮:读座位贴 → 从 labels 重建状
57-
态 → 跑一轮 → 结束,不继承上下文。**开轮互斥读法**(宁少跑,不让两个同座位会话并行写
54+
**分诊席直连自排**(维护者 2026-08-27 裁,原话:「我觉得分诊也和普通项目经理一样走普通
55+
的session,然后需要高级别处理的任务走 fable 子agent,然后自己默认定时1小时,除非人工要
56+
求。」):分诊 = 普通直连会话、整席 `opus`(机械三务至多 opus);达档职责(代裁、条款②/契约
57+
复审)走显式传 `model` 的 fable 子代理,逐份裁决过转录核验采信(细则见
58+
`references/contract-review.md`);自排定时默认**收班时挂、延时 ≤55 分钟**(1 小时 prompt-cache TTL 减
59+
分钟级抖动,整班守一条缓存链;用量超额 TTL 降至 5 分钟收益归零、compaction 轮照旧重写,皆
60+
不改默认),维护者明示可改。**开轮互斥读法**(宁少跑,不让两个同座位会话并行写
5861
标签;维护者 2026-08-27 裁「落协议」:近期窗口只管**未收班**活动):fire 开始、首个写动作之
5962
前读四个读数,未收班活动任一未满一个轮次 ⇒ 自退 —— 最近收班简报;晚于它的最新
6063
「开轮」标记(轮中会话在座位贴上唯一的痕迹);本车道 `pm:dispatched` 卡最新非本 session 的
@@ -145,11 +148,10 @@ seat-post-protocol);维护者明示召唤是仲裁:有简报径直坐席,无简
145148
枚;union 有而回读缺 = 被剥,重挂并报告(对比只察觉、不预防);**承载闸门语义的标签**(如
146149
`needs:contract-review`)挂与清两向同此四步,闸门被剥不是红灯是放行,与「从未挂过」在证据
147150
上不可区分;多席可写面恒读回(防竞态覆盖,不只防 sanitizer);「API 200」≠「落地正确」。
148-
- **PM 写进 GitHub 的文本 ⛔ 不用尖括号路径占位符**,改写成「后跟显式路径」的说法 ——
149-
被 sanitizer 吃掉后剩下的裸命令读起来完整而其实不是(实测:一条派发令就
150-
在「永不用裸形式」之前展示了它要禁的那条裸形式);backtick、围栏块与标题同吃,都不是
151-
护身符。不产生这个构造才是修法,回读只是兜底:必须携带易损片段的评论(派发令与裁
152-
决,不含例行标记)post 后读回。
151+
- **PM 写进 GitHub 的文本 ⛔ 不用尖括号路径占位符**,改写成「后跟显式路径」的说法(被吃
152+
后剩下的裸命令读来完整而其实不是;backtick、围栏与标题同吃都不是护身符,写侧形状见事
153+
实表)。不产生这个构造才是修法,回读只是兜底:携带易损片段的评论(派发令与裁决,例行
154+
标记除外)post 后读回。
153155

154156
## 平台读数纪律
155157

@@ -166,10 +168,9 @@ seat-post-protocol);维护者明示召唤是仲裁:有简报径直坐席,无简
166168
轮 —— 每一枪**以「幂等 —— 动手前先重读状态」开头**,只写关键判
167169
据(「若 X 则 Y」),其余指针化
168170
(座位贴为唯一状态源);⛔ 不写结论、不含未经重读即可执行的祈使句。
169-
- **放行认门禁 job 的结论,不认聚合读数**(承载门禁族的 job 须 `completed: success`,`in_progress`
170-
不算;聚合只作阴性筛查,放行按名定向读单条 job,⛔ 不拉全表);advisory 门禁红着合并进
171-
main 是共享损伤,任何车道发现都立即止血 + 立单(main-red 跳队与锚卡两约定见
172-
landing-operations B);落地两个读数与踢出重投的签名纪律见事实表。
171+
- **放行认门禁 job 的结论,不认聚合读数**(判据 `completed: success`,定向读法见事实表);advisory
172+
门禁红着合并进 main 是共享损伤,任何车道发现都立即止血 + 立单(main-red 跳队与锚卡两约
173+
定见 landing-operations B);落地两个读数与踢出重投的签名纪律见事实表。
173174
- **dev 自己死了 ≠ 维护者中止**:子代理消失(零推送/零分支/无报告)是正常死法,走死认领回
174175
收;「维护者中止」只在有显式信号(原话,或宿主回报 stopped by the user)时成立 —— 判据是
175176
信号不是症状,⛔ 不得据推断立一道没有重启条件的门。
@@ -339,9 +340,9 @@ skills,类似分诊」)—— 贴内指针指向其车道文件,升级走技能
339340
(执行座位 ⛔ 跳过本节动作 —— 读到标签当既成事实。)职责按仓类执行(类别
340341
见「多仓协调」首段):sweep 与首触定级只对多车道仓(单车道仓机械三务自理);发版板(无板仓
341342
跳过)、查重/shadow 检查与代裁通道全仓照跑。**代裁通道保留、档位硬门**(维护者 2026-08-26
342-
裁定,原话:「代裁通道如果是 fable 可以代裁,其他接受你的建议」):仅当运行席**实测服役模
343-
型** = `claude-fable-5`(降档保险丝机器读数,⛔ 永不凭自述)才可代裁;通道只在分诊 Routine(钉
344-
档)或项目总监席上运行,其余执行座位 ⛔ 不代裁;2026-08-12 置信门其余条件全部照旧。
343+
裁定,原话:「代裁通道如果是 fable 可以代裁,其他接受你的建议」):裁决只由**达档者**产出
344+
(⛔ 永不凭自述)—— 分诊席显式传 `model` 的 fable 子代理(逐份过转录核验,2026-08-27 裁;见
345+
`references/contract-review.md`)或达档总监席;其余座位 ⛔ 不代裁;2026-08-12 置信门其余条件照旧。
345346
**工具加载纪律(fire 开局)**:互斥检查/自退判断只按名加载所需工具 —— `ToolSearch` 用
346347
`select:mcp__github__list_issues,mcp__github__issue_read` 形式,判定「本轮有活」之后才加载其余;⛔ 开
347348
局不做泛关键词 ToolSearch(一次注入全家桶 schema —— 分诊席 2026-08-20 自测:空转轮 ~12 万
@@ -367,8 +368,8 @@ fire 跑全仓全量对账并归集日频职责;选层按 fire 时刻 ⛔ 不用
367368
状恰是「带域标签无 pm-state」)、全部 `pm:seat` 贴、`qa-run` 记录(协议载体非工作);存量大时每
368369
轮限量 —— 新入卡①优先最新,半状态治愈积压②③**最老优先、P0 嫌疑先行**,⛔ 优先最新
369370
不适用(细则见 runbook)。**紧急卡直接分诊**
370-
(维护者 2026-08-13):维护者点名或 p0 嫌疑 ⇒ 立即起 `claude-fable-5` 分诊子代理,不等 Routine 班
371-
次;授权面 = 分诊本身(定级/路由/标签/既有评论格式),⛔ 不写码不认领;产出落卡,与 Routine
371+
(维护者 2026-08-13):维护者点名或 p0 嫌疑 ⇒ 立即起 `claude-fable-5` 分诊子代理,不等定时轮
372+
次;授权面 = 分诊本身(定级/路由/标签/既有评论格式),⛔ 不写码不认领;产出落卡,与定时轮
372373
分诊同格式同效力(细则见 `references/dispatch-runbook.md`)。
373374
**跨仓 pin 链的窗口级兜底也在本 sweep**(联动单第一产者仍是接受座位;⛔ 只立单不执行
374375
bump):
@@ -414,7 +415,7 @@ sanitizer 截断的卡不
414415

415416
**发现分诊轮(队列的出水口)。** `finding` 恒 = 待首次定级、定级即离标(维护者 2026-08-13 意
416417
见;换标与 hold 评论纪律见状态模型,hold 重验只在 `Restart-when:` 命中时发生 —— closed 形态随
417-
每轮解锁扫描,可执行判据由分诊 Routine 每日一个低频子轮批量执行(十几条一行判据逐小时
418+
每轮解锁扫描,可执行判据由分诊席每日一个低频子轮批量执行(十几条一行判据逐小时
418419
跑是浪费,每日即消化节奏),命中同 closed 命中一个待遇:回队前 ref 重验再回队;⛔ 不设逐卡
419420
豁免评论)。**每 fire 跑到清空**:⛔ 无每轮总量预算,当轮定完全部未定级 finding、优先于旧
420421
卡重验;质量靠**每批 ≤5 张同族卡逐张读**,不靠封顶总量(维护者 2026-08-25,原话不译):
@@ -615,8 +616,8 @@ dev 侧早推分支 —— 远程分支是在飞工作最硬的证据。**死认
615616
游,全仓最贵(条款②闸门见「入队与落地」)。**卡面对条款②的复述仍是条款②**(座位复述
616617
会丢掉原文旁的例外,而被读的正是复述):额度耗尽豁免及其 `needs:contract-review` 补偿一并及
617618
于它;豁免够不到的地板只有维护者裁决能设。**席位档策略(同 2026-08-20 裁决)**:skills 车道外
618-
执行 PM 席默认 `opus` 会话,fable 保留给分诊 Routine(代裁 + 契约复审)、本席与条款②工作 ——
619-
各自档位与 Routine UI pin 归既有条款(本行只记策略)。降档出口两条:**额度耗尽豁免**(维护者
619+
执行 PM 席与分诊席默认 `opus` 会话,fable 保留给裁决/复审子代理、skills 席与条款②工作
620+
—— 各自档位归既有条款(本行只记策略)。降档出口两条:**额度耗尽豁免**(维护者
620621
2026-08-13
621622
原话:「fable 如果用完了,可以用 opus」):仅当 fable 实测不可用(限流/墙杀中途,重派同样可降)
622623
才落 `opus`,⛔ 不再往下;与**主动预降**(余量吃紧可预先降档),两者档位与理由皆记入认领评
@@ -852,9 +853,8 @@ main 红了约一小时,逐 PR 连环红到 fix-forward 才止)。本段只适
852853
出处:维护者 2026-08-11 提问(「首先项目经理能不能查到相关的数据,其次是到达时间窗口工作就会停,
853854
是否应该设置一个1小时的定时以监测时间窗口已经解锁」)。检测读数、盲区与恢复 playbook 细则见 `references/platform-readings.md`;常驻原则:
854855

855-
- **检测**:`ccusage blocks` 只有单容器视野、估成本不估套餐余量(账号级剩余额度无接口可查);
856-
**权威的墙信号是失败本身**——撞墙报文里的重置时刻在那一刻可得、事前查不到,把它
857-
记下来(工具读数与盲区在事实表)。
856+
- **检测**:**权威的墙信号是失败本身**——撞墙报文里的重置时刻在那一刻可得、事前查不
857+
到,把它记下来(`ccusage blocks` 等工具读数与其盲区在事实表)。
858858
- **跨墙定时器**:拿到重置时刻 ⇒ 一发定点(reset + 缓冲)优先;没有 ⇒ 挂每小时 cron Routine,⛔
859859
**不用 send_later 链** —— send_later 是 run-once、fire 后自禁用,投进死窗口那一发是否被重试
860860
未实
Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
# 契约复审链细则(references —— 按需加载)
22

3-
出处:主文件「入队与落地」条款②闸门(原则、双肢定义与 `CONTRACT_REVIEW_TIER` 单源住那
4-
里);本表是 `needs:contract-review` 复审链细则,挂标、复审、清标时查阅;⛔ 不引用 issue 编号。
3+
出处:主文件条款②闸门(原则/双肢与档位单源在彼);本表 = 复审链细则,⛔ 不引 issue 编号。
54

65
## 载体纪律(挂与清)
76

@@ -11,38 +10,39 @@
1110
- **载体不迁移**(维护者 2026-08-18,原话:「中期把闸门迁到 PR review 的 Request Changes 上 我觉得
1211
没必要」): 闸门载体保持本标签,⛔ 不迁 PR review / Request Changes、不为迁移留门;挂与清皆按
1312
标签纪律的 read-modify-write 硬步骤写。
14-
- **重挂前先查裁决**:闸门标签缺失 ⇒ 先 grep 卡片评论找现行复审结论 —— PASS 评论 + 标
15-
签缺失 + PR head 自复审后未动 = **已复审清标**,不是被剥;仅当 head 在结论之后移动、或根
16-
本无结论时才重挂(复审载体是卡上一行结论,`get_reviews` 读空不是「未复审」的证据)。
13+
- **重挂前先查裁决**:闸门标签缺失 ⇒ 先 grep 卡评论找复审结论 —— PASS + 无标 + head 未
14+
动 = 已清标非被剥;head 后移或无结论才重挂(`get_reviews` 读空 ≠ 未复审)。
1715

1816
## 复审资格与归属
1917

20-
- **资格** —— ① 跑在契约复审档位,硬条件,认定只认降档保险丝的机读;② 非该卡派发
21-
席,已从资格条件放宽为路径偏好(维护者 2026-08-21,原话:「你自己就是 Fable,自己就可以审
22-
核」): 经同一机读证实达档的派发席,可对自派的卡执行复审并清标(审的是低档实现者的
23-
契约增量,非自身产物 —— 派发席不写代码);放宽的是独立席位,不是复审本身,主文件「⛔
24-
禁止自查放行」禁的是免复审直放,不禁本路径;低于档位的席照旧留标等待。
25-
- **归属**:常设 = 项目总监席人工召唤(维护者 2026-08-27 裁,原话与交接台账见
26-
`lanes/director.md`;取代 skills 席自绑小时钟 —— 2026-08-23 钟实测已死,⛔ 不复活,召唤间隔
27-
停放是设计安全态);分诊席达档时(经同一机读证实)照旧可清。只审契约增量 diff、结论一
28-
行写在卡上、PASS 双载体同笔清标并清 review request 或留 review 评论,标清后卡方可入队。
18+
- **资格** —— ① 跑在契约复审档位,硬条件,认定只认机读:自会话凭降档保险丝,子代理凭
19+
转录核验(下节);② 非该卡派发席,已从资格放宽为路径偏好(维护者 2026-08-21,原话:「你自
20+
己就是 Fable,自己就可以审核」):机读证实达档的派发席,可对自派的卡执行复审并清
21+
标(审的是低档实现者的契约增量,非自身产物);放宽的是独立席位,不是复审本身,主文件「
22+
⛔ 禁止自查放行」禁的是免复审直放,不禁本路径;低于档位的席照旧留标等待。
23+
- **归属**(维护者 2026-08-27 裁:「契约复审也是很重要的职责,也是需要定时处理的」):常设
24+
唯一 = **分诊席定时轮**,逐载体经转录核验的达档子代理复审,只审契约增量 diff、结论一
25+
行写卡;PASS 双载体同笔清标并清 review request,标清后方可入队;FAIL label-flip 交接;卡在决策
26+
⇒ 只进决策箱,⛔ 永不自裁;轮报设**复审清单**专节(同代裁清单强制审计形状)。总监席
27+
= 召唤兜底,只处理分诊明示停放、核验失败在案或老化超期的载体,加决裁批次内 BLOCKED
28+
分支;⛔ 永不与定时轮并行扫同一载体集。
2929
- **清标即落地**(维护者 2026-08-25,原话:「审核通过你应该直接负责合并吧,还要等原始的项
30-
目经理吗」):非受管 code PR 由**复审链同笔收口**:清标后按 `landing-operations.md` 走落地前
31-
检(`mergeable_state` 先读、闭合关键词扫描、true-green 核 job 结论、ready 先于 auto-merge 不可
32-
反)→ 转 ready → 挂 auto-merge/入队;车道 PM 窗口与 half-states 孤儿巡检退为**兜底**,⛔ 停手即
33-
复现「就绪却无人落地」。**三样不变**:受管面照旧 draft-only + 人工/受托合并、⛔ 链永不
34-
入队;FAIL / REWORK 路径原样;降档保险丝原样 —— 低于档位的席清不了标,故落不了地。
30+
目经理吗」):非受管 code PR 由**复审链同笔收口**:清标后按 `landing-operations.md` 走落地前检
31+
→ 转 ready → 挂 auto-merge/入队;车道 PM 窗口与 half-states 孤儿巡检退为**兜底**,⛔ 停手即复
32+
现「就绪却无人落地」。**三样不变**:受管面照旧 draft-only + 人工/受托合并、⛔ 链永不入
33+
队;FAIL / REWORK 路径原样;降档保险丝原样 —— 低于档位的席清不了标,故落不了地。
3534

3635
## 降档保险丝(机读)
3736

3837
- 每场开场**必调一次 `get_session`**(claude-code-remote MCP,无参)读 `external_metadata.last_served_model`,⛔
3938
自述档位不是读数(静默降档腐蚀的恰是自述;实测与配置档陷阱见 platform-readings);读数 ≠
4039
`CONTRACT_REVIEW_TIER` ⇒ 该场整体跳过、标签原样留置 —— 卡在队列外等待是安全态。
41-
- **保险丝只对座位自会话有效**:`mode:subagent` 里的 `get_session` 量的是**派发会话**(实测:钉在
42-
地板档的子代理读回父会话的档位,`session_context.model` 与 `last_served_model` 一致只是同一来源
43-
引用两次,⛔ 不作互证)—— subagent 的实际服役档位现无法对 `CONTRACT_REVIEW_TIER` 自证,条
44-
款②的 `mode:subagent` 派发因此恒保留 `needs:contract-review` 走复审链,「派发已在地板」的免审
45-
跳过仅座位自会话成立。 **⛔ 反模式:派更高档位子 agent 去执行契约复审** —— 看似满足
46-
档位,实为构造上不可测量(多次实测:子代理读回父会话档位并拒绝出裁决)。
47-
- 契约复审 ⛔ 不适用额度耗尽豁免降档(豁免的对象是派发;复审的存在意义就是补偿一次
48-
低于地板的派发)。
40+
- **保险丝只测座位自会话**:`mode:subagent` 里的 `get_session` 量的是**派发会话**(实测:钉在地板
41+
档的子代理读回父档,⛔ 不作互证),传参只是配置 ⛔ 不作达档读数;条款②的 `mode:subagent`
42+
派发照旧恒保留 `needs:contract-review`,免审跳过仅座位自会话成立。
43+
- **转录档位核验**(维护者 2026-08-27 裁)——「派更高档位子代理复审」曾构造上不可测
44+
量,今仅核验通过才合法:采信/清标前 grep 子代理 transcript 中 harness 逐消息盖章的 `model` 字
45+
段,产出裁决的每轮都须读到契约复审档位,见回退证据 ⇒ 裁决整体作废(重做或维护者路
46+
径);父会话对裁决仅两个合法动作 —— **逐字采纳或整体作废**(理由仅机械三种:核验失
47+
败/越范围/格式不完整),⛔ 永不改写/删节/润色,采信 = 证据清单核对,非实质重判。
48+
- 契约复审 ⛔ 不适用额度耗尽豁免降档(豁免对象是派发;复审正为补偿低档派发而存在)。

0 commit comments

Comments
 (0)