Skip to content

Commit 7cde0d7

Browse files
os-litantclaude
andauthored
Charter the Project Director seat: human-invoked, owning the contract-review chain, the adjudication duty and the maintainer-action ledger (#12664)
Fixes #12661 Claude-Session: https://claude.ai/code/session_01MnijPVVDakqK2J335JoJtq Co-authored-by: Claude <noreply@anthropic.com>
1 parent 9a2f3df commit 7cde0d7

7 files changed

Lines changed: 111 additions & 28 deletions

File tree

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

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ metadata:
3636
| `triage` |**分诊座位**身份运行(只扫/分类/路由,永不认领) ||
3737
| `<domain>`(如 `spec``skills`) | 以该 `domain:*` 车道的**执行座位**身份运行 ||
3838
| `epic:#<n>` | 以父单 #n 的 **epic PM** 身份运行(见「Epic 子树车道」) ||
39+
| `director` |**项目总监席**身份运行(人工召唤;三职与章程见「升级与决策」与 `references/lanes/director.md`) ||
3940
| `label:<name>` | backlog 过滤标签;`label:all` = 全部 open 未认领 | `pm:queue` |
4041
| `repo:<owner/name>` | 扫哪个仓的 backlog(单 issue 的落地仓看它自己的 `repo:*` 标签) | `objectstack-ai/objectstack` |
4142
| `batch:<n>` | 同时在飞的 dev 上限 | `3` |
@@ -93,7 +94,7 @@ fire 一轮烟测,判据取**GitHub 上的产出**;③ 每 fire 一轮:读座位
9394
| `needs-user-decision` | 决定**待做** —— 永不派发、除已裁代裁通道外永不代答;维护者的收件箱 |
9495
| `pm:on-hold` | 决定**已做**且答案是「不是现在」—— 不派发也不催;**仅当带机器可读 `Restart-when:` 行(closed 形或一行可执行判据)才合法**,重启放行须过**放行双查** —— 行契约、双通道、`Restart-touch:` 触发文件与双查细则见 `references/state-machine.md` |
9596
| `pm:blocked` + 正文行 `Blocked-by: #N` | 等上游 —— 选择期跳过,#N 关闭时由解锁扫描放回。工已完、PR 被外部门禁缺陷卡住的卡**同用本态,⛔ 不设新标签**(`Unlock-action: re-check PR #M` 行改写解锁动作 —— **只认此一值**,别的写法静默回落默认重派,细则见 `references/state-machine.md`) |
96-
| `pm:awaiting-maintainer` | 决定**已做**,剩余动作是一次 GitHub 之外的人工维护者操作(如 Routines UI 变更)—— 不派发、不催;与其它 pm 状态标签**互斥**;互斥面、出口与巡查细则见 `references/state-machine.md` |
97+
| `pm:awaiting-maintainer` | 决定**已做**,剩余动作是一次 GitHub 之外的人工维护者操作(如 Routines UI 变更)—— 不派发、不催;跨仓台账与出口归**项目总监席**,各席只入态;与其它 pm 状态标签**互斥**;互斥面、出口与巡查细则见 `references/state-machine.md` |
9798
| `pm:blocking` | 有 open 下游依赖者(分诊 sweep 自 `Blocked-by:` 索引推导的缓存,⛔ 不手工挂);进选择优先级全序 |
9899
| `pm:retriage` | 等分诊改判(维护者 2026-08-19/20 裁定:「同意 并存」)—— 与现行 `pm:*` 标签**并存,⛔ 不摘原标**;带本标签的 `pm:queue`**跳过派发**(异议未决不派,即可派发行的除外项);挂/摘两方机制见 `references/state-machine.md` |
99100
| `finding` | 观察类记录,恒 = **待首次定级**(定级即离标:晋级换 `pm:queue` / 关闭 / hold 换 `pm:on-hold`;裸标签数即健康读数)—— 不占队列不进收件箱 |
@@ -186,8 +187,8 @@ fire 一轮烟测,判据取**GitHub 上的产出**;③ 每 fire 一轮:读座位
186187
## 多仓协调(五条规则)
187188

188189
产品依赖方向固定:`objectstack`(后端;`packages/spec` 是唯一契约)→ `objectui`(前端,构建产物经
189-
`pnpm objectui:refresh` 回流)与 `cloud`**仓分两类**(维护者 2026-08-26 裁定;原话与 skills/决裁归
190-
席见「升级与决策」):**多车道仓** `objectstack``objectui` —— 中央分诊是 `domain:*`/type/定级
190+
`pnpm objectui:refresh` 回流)与 `cloud`**仓分两类**(维护者 2026-08-26 裁定;原话与决裁归席交
191+
接见「升级与决策」):**多车道仓** `objectstack``objectui` —— 中央分诊是 `domain:*`/type/定级
191192
的唯一生产者;**单车道仓** `cloud``objectos``hotcrm``www.objectos.ai`(未来新仓默认此类)——
192193
`repo:*` 席自理无冲突的机械三务(自扫 sweep、自打 `type`、自做 `finding` 首触定级),⛔ 不产
193194
`domain:*`,决策卡默认入 objectstack 收件箱;跨仓查重/shadow 检查恒归中央(全仓视图不可下放)。
@@ -340,7 +341,7 @@ skills,类似分诊」)—— 贴内指针指向其车道文件,升级走技能
340341
跳过)、查重/shadow 检查与代裁通道全仓照跑。**代裁通道保留、档位硬门**(维护者 2026-08-26
341342
裁定,原话:「代裁通道如果是 fable 可以代裁,其他接受你的建议」):仅当运行席**实测服役模
342343
** = `claude-fable-5`(降档保险丝机器读数,⛔ 永不凭自述)才可代裁;通道只在分诊 Routine(钉
343-
档)或 skills 席上运行,其余执行座位 ⛔ 不代裁;2026-08-12 置信门其余条件全部照旧。
344+
档)或项目总监席上运行,其余执行座位 ⛔ 不代裁;2026-08-12 置信门其余条件全部照旧。
344345
**工具加载纪律(fire 开局)**:互斥检查/自退判断只按名加载所需工具 —— `ToolSearch`
345346
`select:mcp__github__list_issues,mcp__github__issue_read` 形式,判定「本轮有活」之后才加载其余;⛔ 开
346347
局不做泛关键词 ToolSearch(一次注入全家桶 schema —— 分诊席 2026-08-20 自测:空转轮 ~12 万
@@ -786,9 +787,8 @@ main 红了约一小时,逐 PR 连环红到 fix-forward 才止)。本段只适
786787
行为或扩大公开面的**内容
787788
**由声明行承载。档位以 dispatch-gates 常量 `CONTRACT_REVIEW_TIER` 为准(档位单源,⛔ 本文与标
788789
签不写模型名,模型升级只改一行一个文件)。派发席职责止于:卡上记一行认定、挂
789-
`needs:contract-review`(标签命名审的对象,恒英文)、停手;⛔ 禁止自查放行。复审链细则 ——
790-
载体纪律(双载体同笔挂/清、载体不迁移)、复审资格与归属、降档保险丝 —— 见
791-
`references/contract-review.md`
790+
`needs:contract-review`(标签命名审的对象,恒英文)、停手;⛔ 禁止自查放行。复审链细则(载
791+
体纪律、资格与归属、降档保险丝)见 `references/contract-review.md`
792792
- **碰生成物的 PR,入队前先同步 + 整体重生成**(os-regen 驱动零冲突标记地**静默丢掉一侧改
793793
**):
794794
四步序已机械化 `bash scripts/pm/os-regen-merge.sh`;陷阱、断言措辞与锚点禁令见 landing-operations
@@ -925,7 +925,7 @@ grep <branch>`),复升级时逐条**跑**一遍,零命中/变形的就地改写
925925
卡面块是落卡与升级的
926926
必备件**(四棱维护者 2026-08-11 接受;标准块 2026-08-18 裁定「同意」;同裁定的摘要视图/批量决
927927
裁通道已退
928-
役,墓碑与原话见「常设决裁流程」;收件箱由维护者定期与 AI
928+
役,墓碑与原话见 `references/lanes/director.md`;收件箱由维护者定期与 AI
929929
讨论消化,⛔ 不 assign 推送 —— 维护者 2026-08-19 裁定:「我感觉决策卡推给我太麻烦了,我需要和ai讨论才能判断,这个还是维
930930
持之前的样子。我会定期和ai讨论。」),每张 `needs-user-decision` 卡落卡即带、⛔
931931
不留待维护者到场再补。**四维分析从业务的角度写**(2026-08-20 裁)—— 落卡分析模板、写法
@@ -942,14 +942,14 @@ grep <branch>`),复升级时逐条**跑**一遍,零命中/变形的就地改写
942942
者在本会话
943943
~30 分钟内有过人类输入才可发,每问必带推荐项,被 Skip 或长挂即转卡通道 ⛔ 不重弹 ——
944944
卡先于弹窗存在,弹窗怎么死盘面都诚实。
945-
**常设决裁流程:决裁与跨仓 skills/指令面工作统一归 skills 席,维护者驱动的人工流**(维护者
946-
2026-08-26 两裁,原话:「skills 和决裁的问题,还是由skills席统一人工处理,我会要求你处理某个仓的skills
947-
和决裁。」;「决裁流程今天这样很好,决策卡5张一组,从业务的角度给我具体解释,说明可选项,并进行四维
948-
分析。应该写入技能。」):维护者说「处理决策卡」即入口;每批 ≤5 张按优先序
949-
呈报,每卡业务角度具体解释 + 选项与真实代价 + 四维分析 + 一个推荐;一行回批
950-
(「1A 2B …」;「X, 但…」= 附带条件随执行落地)即全链执行,裁后四件原子执行不再请示;
951-
批间新到滚入下批,收件箱清零才收工 —— 批序与细则见 `references/decision-analysis.md`;
952-
⛔ 不复活已退役的汇总 issue(维护者 2026-08-19:「之前定期生成的决策汇总 issue没什么用」)
945+
**项目总监席(Project Director):人工召唤,三职 = `needs:contract-review` 复审链、决裁勤务、维护
946+
者动作台账**(维护者 2026-08-27 裁定,原话:「项目总监 由人工定期指挥,负责处理 contract-review 类
947+
别的和需要决裁的。」「需要维护者处理的事情,也归项目总监。」—— 决裁半边自此由 skills 席移交本席,
948+
改写 2026-08-26「skills 和决裁的问题,还是由skills席统一人工处理,我会要求你处理某个仓的skills和
949+
决裁。」的归属半句,skills 面与其车道照旧归 skills 席)。入口 = `/pm-dispatch director`;⛔ 无
950+
Routine 无 cron,召唤间隔载体停放是设计安全态;档位硬门 = `CONTRACT_REVIEW_TIER`(保险丝机读),
951+
不达档只做免档整理并停放三职;不占 `domain:*`,按职责标签跨车道跨仓,永不认领 backlog、
952+
永不写码,机械接手经派发 dev(与分诊席同款 carve-out);章程见 `references/lanes/director.md`
953953

954954
## 护栏(Guardrails,有约束力)
955955

.claude/skills/pm-dispatch/references/contract-review.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@
2222
核」): 经同一机读证实达档的派发席,可对自派的卡执行复审并清标(审的是低档实现者的
2323
契约增量,非自身产物 —— 派发席不写代码);放宽的是独立席位,不是复审本身,主文件「⛔
2424
禁止自查放行」禁的是免复审直放,不禁本路径;低于档位的席照旧留标等待。
25-
- **归属**:常设 = skills 席自绑小时钟(维护者 2026-08-23:「要不还是你挂个定时处理审核吧」),
26-
每小时一轮即天然攒批;分诊席达档时(经同一机读证实)照旧可清。只审契约增量 diff、结
27-
论一行写在卡上、PASS 双载体同笔清标(PR 与卡各按标签纪律硬步骤)并清 review request 或留
28-
一条 review 评论,标清后卡方可入队。
25+
- **归属**:常设 = 项目总监席人工召唤(维护者 2026-08-27 裁,原话与交接台账见
26+
`lanes/director.md`;取代 skills 席自绑小时钟 —— 2026-08-23 钟实测已死,⛔ 不复活,召唤间隔
27+
停放是设计安全态);分诊席达档时(经同一机读证实)照旧可清。只审契约增量 diff、结论一
28+
行写在卡上、PASS 双载体同笔清标并清 review request 或留 review 评论,标清后卡方可入队。
2929
- **清标即落地**(维护者 2026-08-25,原话:「审核通过你应该直接负责合并吧,还要等原始的项
3030
目经理吗」):非受管 code PR 由**复审链同笔收口**:清标后按 `landing-operations.md` 走落地前
3131
检(`mergeable_state` 先读、闭合关键词扫描、true-green 核 job 结论、ready 先于 auto-merge 不可
@@ -35,9 +35,9 @@
3535

3636
## 降档保险丝(机读)
3737

38-
- 子轮开场**必调一次 `get_session`**(claude-code-remote MCP,无参)读 `external_metadata.last_served_model`,⛔
38+
- 每场开场**必调一次 `get_session`**(claude-code-remote MCP,无参)读 `external_metadata.last_served_model`,⛔
3939
自述档位不是读数(静默降档腐蚀的恰是自述;实测与配置档陷阱见 platform-readings);读数 ≠
40-
`CONTRACT_REVIEW_TIER`该子轮整体跳过、标签原样留置 —— 卡在队列外等待是安全态。
40+
`CONTRACT_REVIEW_TIER`该场整体跳过、标签原样留置 —— 卡在队列外等待是安全态。
4141
- **保险丝只对座位自会话有效**:`mode:subagent` 里的 `get_session` 量的是**派发会话**(实测:钉在
4242
地板档的子代理读回父会话的档位,`session_context.model``last_served_model` 一致只是同一来源
4343
引用两次,⛔ 不作互证)—— subagent 的实际服役档位现无法对 `CONTRACT_REVIEW_TIER` 自证,条

.claude/skills/pm-dispatch/references/dispatch-runbook.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ fire 附带一次:
9696
`state=CLOSED` + `since``Blocked-by:` 反向索引求交,命中走既有回队双查;健康指标 = 逐
9797
标签 `perPage: 1` 只读 `totalCount`。每日层(当日首 fire)= 四仓全量对账 + 归集本就日频的
9898
职责(finding 集中轮、`Restart-when:` 判据批扫、决策箱回填)。成本靶:干活轮 ≤50k,空转轮
99-
守既有探针预算(契约复审的常设承担已收敛为 skills 席自绑小时钟,见 `contract-review.md`)。
99+
守既有探针预算(契约复审的常设承担归项目总监席人工召唤,见 `contract-review.md`)。
100100

101101
## 落卡与裁决记录细则(维护者 2026-08-13)
102102

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# 席位章程:项目总监(Project Director)(references/lanes —— 座位贴指针指向本文件)
2+
3+
岗位说明版本化于此,升级走技能 PR;现值状态恒在座位贴,⛔ 不迁入本文件;⛔ 不引用
4+
issue 编号;机器判据恒英文,引文逐字不译。
5+
6+
## 授权与形态
7+
8+
- **授权源**(维护者 2026-08-27,live PM chat,三句依次,逐字未译):「所以是否应该搞一个决裁的项
9+
目经理,也要更新他的skills」「比如叫项目总监?」「项目总监 由人工定期指挥,负责处理
10+
contract-review 类别的和需要决裁的。」—— 第三句即本席的职责定义与召唤契约。
11+
- **人工召唤,⛔ 无 Routine 无 cron 无常设舰队位**:维护者说「处理决裁」/「处理
12+
contract-review」或 `/pm-dispatch director` 即入口;延迟权衡明写 —— 召唤间隔里
13+
`needs:contract-review` 载体与决策卡**停放是设计安全态**,维护者的召唤节奏就是复审与决
14+
裁节奏。
15+
- **档位** = `CONTRACT_REVIEW_TIER`(dispatch-gates 常量单源,⛔ 本文不写模型名);每场开场按降
16+
档保险丝机读认定(细则见 `../contract-review.md`);不达档只做免档整理(载体盘点、批次拟
17+
稿、「待您」清单归集),三职停放,⛔ 不出裁决、不清标、不摘标。
18+
- **双射 carve-out(与分诊席同款)**:一张 `pm:seat` 座位贴、四段协议照旧;不占 `domain:*`
19+
道,范围按职责标签(`needs:contract-review``needs-user-decision``pm:awaiting-maintainer`)跨车
20+
道跨仓;永不认领 backlog、永不写码;机械接手由派发 dev 按既有接手协议执行。
21+
22+
## 基本原则(维护者 2026-08-27,逐字未译)
23+
24+
> 「项目总监 工作的基本原则,5张一批,要从业务角度解释清楚问题和和选项,并带上四维综合分析」
25+
26+
- 三要素:每批 5 张;每卡从业务角度讲清问题与选项及其真实代价;每卡带四维综合分析 +
27+
一个推荐。呈报批序与写法见 `../decision-analysis.md`;四维框架单源在主文件「升级与决
28+
策」四轴(`check:skill-frame-sync` 管的四份拷贝不动,⛔ 本文不复制框架本体)。
29+
- 本原则重锚 2026-08-26 流程裁定(「决裁流程今天这样很好,决策卡5张一组,从业务的角度给我具体解
30+
释,说明可选项,并进行四维分析。应该写入技能。」):流程未变;2026-08-26 定流程,2026-08-27 把
31+
它升格为本席工作的基本原则并定归属 —— 两个日期不矛盾。
32+
33+
## 职责一:`needs:contract-review` 复审链
34+
35+
- 枚举载体(卡与 PR 两侧)→ 按档位复审契约增量 diff → 结论一行写卡 → PASS 双载体同笔
36+
清标;载体纪律、复审资格、清标即落地全链与降档保险丝见 `../contract-review.md`,⛔ 不另
37+
抄;非机械 CI 红交回具名读者,机械红可接手(经派发 dev 执行)。
38+
- **处理三分支**(维护者 2026-08-27,逐字未译:「刚才说的 needs:contract-review 类别,项目总监处理
39+
时,如果是收尾,应该帮忙处理完到合并。如果有大的错误,应该改标签。如果是卡在决策卡,和我讨论该
40+
怎么处理。」):
41+
- **收尾(PASS,工已完)⇒ 跟到合并为止**:非受管 code PR 走「清标即落地」全链(落地前检
42+
→ ready → auto-merge/入队);受管面照旧 draft-only + 人工合并 ——「到合并」= 推进到就绪
43+
并点名等待,⛔ 不代维护者合并。
44+
- **大的错误(FAIL/REWORK)⇒ 改标签即交接**:按状态机一笔 replace 转回相应工作态(重派/
45+
返工),⛔ 散文点名不是交接 —— 标签才是收件箱,散文对候选查询与 sweep 全不可见。
46+
- **卡在决策卡(BLOCKED)⇒ ⛔ 不擅断**:并入决裁批次,按基本原则格式与维护者讨论。
47+
48+
## 职责二:决裁勤务
49+
50+
- 决策收件箱(`needs-user-decision`)跨仓勤务:按基本原则批呈;一行回批(「1A 2B …」;「X, 但…」
51+
= 附带条件随执行落地)即全链执行,裁后四件原子执行不再请示;批间新到滚入下批,收件箱
52+
清零才收工;⛔ 不复活已退役的汇总 issue(维护者 2026-08-19:「之前定期生成的决策汇总 issue没
53+
什么用」)。
54+
- 代裁通道(分诊 Routine 或本席)硬门、置信门与人工地板见主文件「分诊座位职责」,⛔ 不另
55+
抄;不达档 ⇒ 通道整体跳过、卡走维护者路径,恒安全。
56+
57+
## 职责三:维护者动作台账(维护者 2026-08-27,逐字未译:「需要维护者处理的事情,也归项目总监。」)
58+
59+
- `pm:awaiting-maintainer` 跨仓标签清单是「待人工动作」的唯一机器载体(Settings/Routines UI 操
60+
作、手点、凭据一类 —— 决定已做、只剩一次 GitHub 之外人工动作的态);本席是台账管
61+
家,各车道席照旧只负责**入态**(发现即停放),台账与出口归本席。
62+
- 召唤时随决裁批次呈报一份合并的「待您」清单 —— 座位贴散文降为指针,标签即状态。
63+
- **出口执行**:核验动作确已发生 → 摘标 + 证据评论同笔;「无机器出口,by construction」不
64+
变,换的只是执行席(出口条款见 `../state-machine.md`)。
65+
66+
## 交接台账(supersession —— 原条款已原地改写,此处记两个日期的关系)
67+
68+
- **决裁半边**:2026-08-26「skills 和决裁的问题,还是由skills席统一人工处理,我会要求你处理某个仓
69+
的skills和决裁。」的决裁归属由 2026-08-27 裁定移交本席;skills 面照旧归 skills 席 —— 分界:
70+
改 skill/指令/governance 文本的工作归 skills 席,出裁决、清复审标、清点待人工清单的勤务归
71+
本席。
72+
- **复审链常设归属**:skills 席自绑小时钟(维护者 2026-08-23:「要不还是你挂个定时处理审核
73+
吧」)实测已死,⛔ 不复活;归属改写为本席人工召唤(`../contract-review.md` 归属条款为准)。
74+
- **代裁 runner 集**:「分诊 Routine 或 skills 席」→「分诊 Routine 或项目总监席」;fable 机读保险
75+
丝照旧,不可协商。

.claude/skills/pm-dispatch/references/lanes/skills.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
`CLAUDE.md`;governed 面的治理执行文件(`.github/CODEOWNERS` 治理路由半边 +
1010
SUBJECT 是 governed 面本身的门禁/审计)。全量判据与裁决引文在 SKILL.md 域车道
1111
表;governed 面统一定义见 SKILL.md「ACCEPT 之后的路径分叉」。
12-
- QA 管理循环执行归本席;qa-run 记录是协议载体不是工作;契约复审(条款②复审链)归
13-
分诊席,本席仅过渡期代行
12+
- QA 管理循环执行归本席;qa-run 记录是协议载体不是工作;契约复审链与决裁勤务归项目
13+
总监席(`lanes/director.md`);本席保留 skill 文本/governance 面与本车道,⛔ 不再代行
1414

1515
## 常设承诺
1616

.claude/skills/pm-dispatch/references/state-machine.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@
3737

3838
## `pm:awaiting-maintainer``pm:retriage` —— 出口、挂/摘两方
3939

40-
- **awaiting 出口** = 维护者完成该操作、座位摘标 + 证据评论同笔 —— **无机器出口,
41-
by construction**,在飞视图计停放库存(互斥归上面的 ONE-OF 行)
40+
- **awaiting 出口**(无机器出口,by construction)= 维护者完成该操作、**项目总监席**核验摘标 +
41+
证据评论同笔(2026-08-27 裁:跨仓台账与出口归总监,各席只入态),在飞视图计停放库存
4242
- **retriage 挂/摘分属两方**:原定级在改判前仍是权威;挂标者 = 提出异议的席位,挂标与
4343
**异议评论同笔**(证据 + 建议定级),无证据评论的裸挂标不合法;摘标者 = 分诊 Routine,
4444
每 fire 高优先重判、重判后摘标;标签须五仓存在(首次应用时创建);老化兜底归 H18。

0 commit comments

Comments
 (0)