Skip to content

docs(pm): rules-only rewrite of the pm-dispatch SKILL.md — 红线 first, one rule per line, templates last - #15460

Draft
claude[bot] wants to merge 4 commits into
mainfrom
claude/issue-15379-skill-md-rules-only
Draft

docs(pm): rules-only rewrite of the pm-dispatch SKILL.md — 红线 first, one rule per line, templates last#15460
claude[bot] wants to merge 4 commits into
mainfrom
claude/issue-15379-skill-md-rules-only

Conversation

@claude

@claude claude Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Fixes #15412
Part of #15379
Fixes #15364
Part of #14965
Part of #15146

.claude/skills/pm-dispatch/SKILL.md is now a rules-only file: a 红线 section of 15 absolute prohibitions and a five-line 优先级 section lead it, then the file's own sections in their existing order, each a list of one-rule-per-line entries (≤120 bytes, identifiers in backticks), with the lookup tables kept in place and the claim-comment form kept in a final 模板与表 section. Provenance narratives, ruling dates, verbatim quotations, incident post-mortems and rationale tails are gone; the decision-frame block is byte-identical to its watched copy. The digest references/core-rules.md moves its 护栏 section to the top as 红线 at the same 150 lines, and scripts/pm/check-skill-line-ratchet.mjs re-pins the SKILL.md ceiling 1005 → 811 and its widest-table-row pin 642 → 342 (both down, no other row moves). Every gate that pins a literal in this file was read first and each literal is kept verbatim (Table 3).

Legend for Table 1 notes: D date stripped · Q quotation stripped · N narrative / rationale tail dropped · S split out of a multi-rule sentence · P detail replaced by a pointer to a reference file · T table row kept · F form kept · U unchanged · M(old Lx–y) absorbed from those lines of the previous file · NEW new placement or definition. Angle-bracket placeholders inside quoted lines are shown with 〈 〉 so the platform sanitizer does not eat them.

Added on 15364 / 14965 (third patch round). Seven rule lines for the deploy-on-merge card, in the card's final shape (the maintainer's arc ended at a verification layer, not a human click): six in 入队与落地 — on a repository whose default-branch push triggers an outward-facing deploy the lane merges only if a verification layer exists (deploy gated on CI, the live surface probed after every deploy, a failed deploy rolled back automatically and filed as a card); there the landing criterion is published-and-probed, ⛔ not MERGED, followed to the publish; post-merge workflows sit on no PR check list so every PR-check-reading rule is blind to them and the deploy workflow is registered as its own check class; a human gate that cannot answer "will it break" buys delay, ⛔ not safety — and one in 座位贴协议: the seat post registers per repository whether a merge publishes and what its verification layer is, a missing entry reading as unverified. The digest carries the same rule in one line under 执行座位职责, paid for by merging its two adjacent state-on-GitHub bullets (still 150). The ceiling row moves to the landed 811 (base 1005; the table-row pin stays 342, no table changed). For the carrier card's template half: the claim form's Clause-② row is already the bare Clause-②: yes | no line (the em-dash-and-rationale shape was dropped in the rewrite) and the criterion already sits as two rule lines in 认领; probing the carrier checker's cardDeclaration() directly reads that line as declared, and its --self-test passes — no further template change was needed, and no other form in 模板与表 carries the old shape.

Added on 15146 (fourth patch round). One PM-side detection rule in 收集, right after the stall-signal rule: a dev report whose last line is an intention rather than a result marks a stalled dev, not a completed one — the seat resumes it at once with SendMessage, ⛔ never reading it as a delivery or as death (the dev-side rule lands on the agent definition's own PR). Paid for at the same 811 lines by merging the two adjacent notification-reading rules (重放 ⛔ 不重新验收、不重复 ACCEPT + 通知到达不读作还活着,不到达也不读作已死 → one line, prohibition kept). Digest untouched at 150.

Table 1 — one row per rule line of the new SKILL.md (part A; part B follows in the first PR comment)

# line note
18 你是 PM 座位。PM 永不写代码,代码全由 os-dev 开发 agent 完成,一单一 agent 一 worktree。 charter, M(old L18-26): D,Q (the 2026-08-12 charter sentence dropped)
19 PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报告 → 下一批。 charter, M(old L18-26): D,Q (the 2026-08-12 charter sentence dropped)
20 维护者只在两点进入循环:轮次报告,与 needs-user-decision 决策卡。 charter, M(old L18-26): D,Q (the 2026-08-12 charter sentence dropped)
红线
24 - ⛔ PM 永不写代码、不写文件;唯一例外是维护者逐 PR 明示授权的 .claude/ 内部工具 PR。 红线 NEW placement, M(old L922, L79): 4th copy collapsed to one
25 - ⛔ 该例外的 PR 不得自审自合:授权原话引在正文,复核由另一座位或维护者做。 红线, M(old L80): U
26 - ⛔ 永不以任一账号对受管面 PR 提交批准 review,永不合并受管面 PR。 红线, M(old L933-938): D×3,Q (three-ruling chain), N
27 - ⛔ 受管面 PR 无授权批准时永不翻 ready、永不入队、永不挂 auto-merge。 红线, M(old L731): U
28 - ⛔ 永不合自己的 PR,永不合红的或未复核的 PR,永不绕过合并队列。 红线, M(old L922-924): U
29 - ⛔ 永不派发 assignee 是别人的卡;⛔ 永不派发带 needs-user-decisionpm:retriage 的卡。 红线, M(old L941, L91, L99): dedup
30 - ⛔ 永不代维护者答产品或架构问题;唯一例外是已裁的代裁通道,不得宽于其置信门。 红线, M(old L939-941): S
31 - ⛔ 永不编辑共享检出,一任务一 worktree;⛔ 永不 git stash 红线 NEW (ruled list; worktree-first / stash)
32 - ⛔ 永不在代码 PR 里改 content/docs/releases/ 红线 NEW (ruled list; releases path)
33 - ⛔ GitHub 之外永不维护任何跟踪状态;org Project 只是视图,权威层是 issue 正文 + REST。 红线, M(old L76-78, L237-238): dedup
34 - ⛔ 永不跑版本发布、不合并 Version Packages PR;发布动作的完整清单以 AGENTS.md 为权威。 红线, M(old L925-927): D,P
35 - ⛔ 未经人工的发布痕迹按事故立案,不代跑补救性发布;机械通道存在不构成授权。 红线, M(old L927-928): U
36 - ⛔ 分诊席永不认领卡、派发 dev 飞或写代码;执行席只在本车道认领,永不改 domain:* 红线, M(old L943-945, L228): dedup; patch round: names what it forbids (a card, a dev flight), leaving graded duties to the subagent of line 76
37 - ⛔ 报告缺席永不读作成功,永不虚构未回报 agent 的结果。 红线, M(old L665-666): S
38 - ⛔ 永不整席等维护者答复;需裁事项落卡进决策箱,队列其余照常消化。 红线, M(old L909-910): S
优先级
42 - 优先序:维护者裁决 〉 AGENTS.md 〉 红线 〉 核心条款 〉 细则 〉 座位判断。 优先级 NEW section (ruled option A)
43 - 核心条款住 references/core-rules.md,是本文的子集;细则是本文其余各节与其它 references。 优先级 NEW section (ruled option A)
44 - 一条规则在本文与核心条款一处改动,另一处同 PR 同改。 优先级 NEW section (ruled option A)
45 - 红线与各节的禁止行都在四轴权衡之外,⛔ 不因更合理的理由被推翻。 优先级 NEW section (ruled option A)
46 - 两条细则冲突 ⇒ 按更严的一条行动并立卡;⛔ 不当场改文本了结。 优先级 NEW section (ruled option A)
入口与角色
50 /pm-dispatch [args],自由组合,全部可选: M(old L30): U
52 | arg | 含义 | 默认 | T: args table kept; director/epic cross-refs de-quoted; mode row D
53 |---|---|---| T: args table kept; director/epic cross-refs de-quoted; mode row D
54 | triage | 以分诊座位身份运行(只扫/分类/路由,永不认领) | — | T: args table kept; director/epic cross-refs de-quoted; mode row D
55 | 〈domain〉(如 specskills) | 以该 domain:* 车道的执行座位身份运行 | — | T: args table kept; director/epic cross-refs de-quoted; mode row D
56 | epic:#〈n〉 | 以父单 #n 的 epic PM 身份运行(见 Epic 子树车道 节) | — | T: args table kept; director/epic cross-refs de-quoted; mode row D
57 | director | 以项目总监席身份运行(人工召唤;四职见 升级与决策 节与 references/lanes/director.md) | — | T: args table kept; director/epic cross-refs de-quoted; mode row D
58 | label:〈name〉 | backlog 过滤标签;label:all = 全部 open 未认领 | pm:queue | T: args table kept; director/epic cross-refs de-quoted; mode row D
59 | repo:〈owner/name〉 | 扫哪个仓的 backlog(单 issue 的落地仓看它自己的 repo:* 标签) | objectstack-ai/objectstack | T: args table kept; director/epic cross-refs de-quoted; mode row D
60 | batch:〈n〉 | 同时在飞的 dev 上限 | 3 | T: args table kept; director/epic cross-refs de-quoted; mode row D
61 | rounds:〈n〉 | 跑 N 轮后停 | 队列清空为止 | T: args table kept; director/epic cross-refs de-quoted; mode row D
62 | mode:subagent | mode:cloud | 派发后端 | 按卡分流:S+M ⇒ subagent,cloud 只留 L/XL 等保留面 | T: args table kept; director/epic cross-refs de-quoted; mode row D
63 | #12 #34 … | 显式 issue 清单,整体覆盖标签查询 | — | T: args table kept; director/epic cross-refs de-quoted; mode row D
65 - 无角色参数按执行姿态运行,车道由座位贴认定;角色参数令召唤词收敛为一行调用。 M(old L45-47): N (升级走技能 PR rationale)
66 - 一轮 = 从 fire 醒来,到队列清空或用量窗口耗尽为止。 NEW definition 轮 (closes the vocabulary card; digest line)
67 - 轮次报告是轮末给维护者的汇报,⛔ 不是停止信号。 NEW definition 轮 (closes the vocabulary card; digest line)
68 - fire = 一次唤醒;fire 到达时上一轮未清空的接续处理,⛔ 不重开、不重排。 NEW definition fire, M(old L405-406): D
69 - 批 = 一个上下文里读完的 ≤5 张同族卡,是质量单位,⛔ 不是预算。 NEW definition 批, M(old L358, L402): D
70 - 班 = 一个会话的任期,只以交接或惰性回收结束。 NEW definition 班
71 - 自设定时器只定下一次唤醒,⛔ 不定本轮长度。 M(old L56-58): D,Q,N (cache-TTL and overage rationale)
72 - 定时器默认在轮末挂、延时 ≤55 分钟;维护者明示可改。 M(old L56-58): D,Q,N (cache-TTL and overage rationale); patch round: 收班时挂 → 轮末挂 (班 is a whole tenure)
73 - 探针先行:fire 的第一动作是一次最便宜的车道盘点查询,⛔ 在它之前不读任何长文本。 M(old L47-49): S
74 - 队列空 + 无在飞 + 无待复核 + 决策箱无新答复 ⇒ 自退。 M(old L47-49): S
75 - 分诊席跑普通直连会话、默认判断档。 M(old L51-55): D,Q (2026-08-27 quotation), model alias → tier name
76 - 代裁与契约复审等达档职责改派显式传 model 的契约复审档子代理。 M(old L51-55): D,Q (2026-08-27 quotation), model alias → tier name
77 - 子代理裁决逐份过转录核验采信,细则见 references/contract-review.md M(old L51-55): D,Q (2026-08-27 quotation), model alias → tier name
78 - 开轮互斥:fire 开始、首个写动作之前读四个读数,未收班活动任一未满一轮 ⇒ 自退。 M(old L58-72): D,N (16-minute incident, safety-direction rationale), S
79 - 读数一、二:最近的收班简报,与晚于它的最新开轮标记。 M(old L58-72): D,N (16-minute incident, safety-direction rationale), S
80 - 开轮标记是轮中会话在座位贴上的唯一痕迹;标记可漏写,认领不可省。 M(old L58-72): D,N (16-minute incident, safety-direction rationale), S
81 - 读数三:本车道 pm:dispatched 卡最新非本 session 的 Claim: 评论,只计认领本车道派发的。 M(old L58-72): D,N (16-minute incident, safety-direction rationale), S
82 - 读数四:本车道 state=CLOSEDupdated_at 降序第一张卡的 Claim: session ID。 M(old L58-72): D,N (16-minute incident, safety-direction rationale), S
83 - 评审链与总监席落在车道卡上的笔迹是跨席作业,不算占席。 M(old L58-72): D,N (16-minute incident, safety-direction rationale), S
84 - 读数三、四只增加自退、永不清座位。 M(old L58-72): D,N (16-minute incident, safety-direction rationale), S
85 - 同 session 的 subagent dev 认领不触发自退,甄别靠分支。 M(old L58-72): D,N (16-minute incident, safety-direction rationale), S
86 - 收班简报是前任不再写的显式声明,是释放标记不是锁:简报即最新事件 ⇒ 立即坐席。 M(old L58-72): D,N (16-minute incident, safety-direction rationale), S
87 - 滞后标题是进场顺手修的半状态,⛔ 不是阻塞;简报点名的留守尾巴作围栏。 M(old L58-72): D,N (16-minute incident, safety-direction rationale), S
88 - 维护者明示召唤是仲裁:有简报径直坐席;无简报才走保守确认,确认终止即坐席。 M(old L58-72): D,N (16-minute incident, safety-direction rationale), S
89 - 互斥清 ⇒ 先在座位贴留一行开轮标记(session ID + fire 时刻)再跑轮。 M(old L58-72): D,N (16-minute incident, safety-direction rationale), S
全体座位的不变量
93 - 所有状态在 GitHub:只经 issue 标签、assignee、正文行与 pm:seat 座位贴读写。 M(old L76-85): D×2,S
94 - 循环必须能从全新会话恢复。 M(old L76-85): D×2,S
95 - PM 不写文件、不写代码;唯一例外及其全部条件见红线。 M(old L76-85): D×2,S
96 - GitHub 上一切新内容用英文。 M(old L76-85): D×2,S
97 - 中文只留三通道:轮次报告、派发令里的裁决引文、决策四维分析(评论与四棱块)。 M(old L76-85): D×2,S
98 - 裁决引文照抄不译;四维中文只管新记录,存量英文块 ⛔ 不迁移;存量中文 ⛔ 不追溯改写。 M(old L76-85): D×2,S
99 - 先认领后动工;assignee 不是你 ⇒ 已被认领,永不碰。 M(old L76-85): D×2,S
100 - 一座位一车道双射:域 X 谁管、PM Y 管什么,各恰好一个答案。 M(old L76-85): D×2,S
101 - 与 AGENTS.md 冲突时,AGENTS.md 胜。 M(old L76-85): D×2,S
状态模型
105 | issue 上的信号 | 含义 | T: state table kept; per-row D (08-19/08-20), in-cell rationale → P (state-machine.md)
106 |---|---| T: state table kept; per-row D (08-19/08-20), in-cell rationale → P (state-machine.md)
107 | open + 队列标签 + 无 assignee | 可派发(同卡带 pm:retriage 的除外) | T: state table kept; per-row D (08-19/08-20), in-cell rationale → P (state-machine.md)
108 | assignee 已设 | 已认领/在飞,不是你的就永不碰 | T: state table kept; per-row D (08-19/08-20), in-cell rationale → P (state-machine.md)
109 | pm:dispatched | 已派发(派发评论记轮次);与摘 pm:queue 同一次标签写入成对落地 | T: state table kept; per-row D (08-19/08-20), in-cell rationale → P (state-machine.md)
110 | needs-user-decision | 决定待做:永不派发、除代裁通道外永不代答;维护者的收件箱 | T: state table kept; per-row D (08-19/08-20), in-cell rationale → P (state-machine.md)
111 | pm:on-hold | 决定已做且答案是暂不做:不派发不催;仅当带机器可读 Restart-when: 行才合法 | T: state table kept; per-row D (08-19/08-20), in-cell rationale → P (state-machine.md)
112 | pm:blocked + 正文行 Blocked-by: #N | 等上游:选择期跳过,#N 关闭时由解锁扫描放回;工已完、PR 被外部门禁卡住的同用本态 | T: state table kept; per-row D (08-19/08-20), in-cell rationale → P (state-machine.md)
113 | pm:awaiting-maintainer | 决定已做,只剩一次 GitHub 之外的人工动作:不派发不催;与其它 pm 状态标签互斥 | T: state table kept; per-row D (08-19/08-20), in-cell rationale → P (state-machine.md)
114 | pm:blocking | 有 open 下游依赖者(自 Blocked-by: 索引推导的缓存,⛔ 不手工挂);进选择全序 | T: state table kept; per-row D (08-19/08-20), in-cell rationale → P (state-machine.md)
115 | pm:retriage | 等分诊改判:与现行 pm:* 并存、⛔ 不摘原标;带本标签的 pm:queue 卡跳过派发 | T: state table kept; per-row D (08-19/08-20), in-cell rationale → P (state-machine.md)
116 | finding | 观察类记录,恒 = 待首次定级;定级即离标;不占队列不进收件箱 | T: state table kept; per-row D (08-19/08-20), in-cell rationale → P (state-machine.md)
117 | target:〈major〉 | 发版阻塞:每个 backlog 恰好一个生产者 | T: state table kept; per-row D (08-19/08-20), in-cell rationale → P (state-machine.md)
118 | pm:epic(父单) | 子树已委托 epic PM;其它 PM 不把其 sub-issue 当候选 | T: state table kept; per-row D (08-19/08-20), in-cell rationale → P (state-machine.md)
119 | pm:seat | 座位登记贴:协议载体,不是待分诊的工作 | T: state table kept; per-row D (08-19/08-20), in-cell rationale → P (state-machine.md)
120 | priority:p0 | 插队:可超 batch、破轮次立即派发;⛔ 不豁免同文件串行与认领协议 | T: state table kept; per-row D (08-19/08-20), in-cell rationale → P (state-machine.md)
121 | open PR 引用该单 | 已实现,复核中 | T: state table kept; per-row D (08-19/08-20), in-cell rationale → P (state-machine.md)
122 | merged PR 带 Fixes #n | 完成(GitHub 关单) | M(state-machine.md 通则; digest L33): NEW home in SKILL.md
124 - 五个 pm 状态标签加 needs-user-decision 共六态互斥,转换恒一笔 replace ⛔ 不 add。 M(old L95-97): P
125 - pm:queue 卡逾三天欠一次显式转换(派发/转箱/停放/撤单/改前提),⛔ 不是排期。 M(state-machine.md 放行双查; digest L26): NEW home
126 - hold/blocked 的行契约、双通道与 Restart-touch: 触发文件细则见 references/state-machine.md M(old L96): S
127 - hold 放行须双查:只放最近一次转换评论的条件,其后卡上有更新的 merged PR 即拒。 M(old L110-114): D,Q,N
128 - Unlock-action: re-check PR #M 行改写完工卡的解锁动作,只认此一值,别的拼写静默回落。 M(old L110-114): D,Q,N
129 - needs-user-decision 是决定待做,pm:on-hold 是决定已做;manual — 〈理由〉 ⛔ 不是合法出口。 M(old L110-114): D,Q,N
130 - 没有机制能唤醒的卡 ⛔ 不 hold:关 not planned,理由与出处写进关单评论。 M(old L114-117): S
131 - 关 not planned 的卡重开免费,维护者可否决。 M(old L114-117): S
132 - 缺陷卡 ⛔ 不藏进 hold 也不自行关闭:可复现且用户可达 ⇒ 回 pm:queue M(old L117-120): D,S
133 - declared≠enforced 观察类 ⇒ 转 enforce-or-remove 通道;真 won't-fix 候选 ⇒ 逐卡进决策箱。 M(old L117-120): D,S
134 - 机会主义重启条件必须点名触发文件。 M(old L117-120): D,S
135 - 派发与折叠检查时读半状态巡查锚的 H17 触发文件索引,与本次派发文件面求交。 M(old L121): U
136 - 相交 ⇒ 按该 hold 评论的 rider/restart 条款处置:点名该单,顺手活列为申报过的增项。 NEW (Phase-3 rider: close-reason discipline)
137 - 关闭即在同一笔摘掉 pm:* 状态标;domain:* 与类型标签留下,归属不是状态。 M(old L122-126): S,N (runbook provenance pointer dropped)
138 - state_reason 与关闭理由一致:撤单/不做 ⇒ not_planned,重复 ⇒ duplicate + duplicate_of M(old L122-126): S,N (runbook provenance pointer dropped)
139 - Blocked-by: 行是机器可 grep 的反向索引,一遍读喂三个职责,⛔ 只做第一件。 M(old L122-126): S,N (runbook provenance pointer dropped)
140 - 三职责:上游关单放回解锁卡;按解锁扇出排序;在合并后的 ref 上重验回队卡文件面。 M(old L127-133): S
141 - 一个标签存在当且仅当有具名读者;pm:blocking 即其推导缓存,读者以词表脚本注为权威。 M(old L127-133): S
142 - 跨仓解锁判据是消费方可安装,⛔ 不是上游已合并。 M(old L127-133): S
143 - 以发布包消费上游的仓,解锁放回前先验修复已进可安装的发行版。 M(old L127-133): S
144 - 安装面探针:装上的包是否接受新键/新行为。 M(old L127-133): S
145 - 未发版 ⇒ 转 pm:on-hold + Restart-when: 加消费方安装面判据,⛔ 不回 pm:queue M(old L134-136): S
146 - 该 hold 评论预写唤醒后的派发形状。 M(old L134-136): S
147 - pin 消费的仓不适用本条:pin 移动即可安装,照旧走 pin 滞后读数。 M(old L136-138): D
148 - 状态变更不过夜:标签无评论、assignee 无认领评论、结论只在 chat,都是半状态。 M(old L138-140): N
149 - 半状态在结束会话(含限流悬挂)前补齐成对或回滚半边;report-only 巡查见守卫索引。 M(old L141-147): D,N,S
150 - 等待他座位也是状态,写在卡上才存在(等谁、自何时),⛔ 不留在会话记忆。 M(old L141-147): D,N,S
151 - P0 嫌疑的等待走紧急直接分诊通道,是义务不是选项。 M(old L141-147): D,N,S
152 - 代执行他人指令的关闭、摘标、回收认领,评论带出处三件:谁的指令、原话、在哪说。 M(old L141-147): D,N,S
153 - 标签写恒四步:取现集 → 只增删目标 → 写合并集 → 回读 diff 对 union(现集, 增删)。 M(old L148-151): N
154 - union 有而回读缺 = 被并发剥掉,重挂并报告;闸门标签被剥不是红灯是放行。 M(old L148-151): N
155 - 承载闸门语义的标签(如 needs:contract-review)挂与清两向同此四步。 M(old L145-147): S
156 - 多席可写面恒读回;API 200 不等于落地正确。 M(old L147): U
157 - PM 写进 GitHub 的文本 ⛔ 不用尖括号路径占位符,改写成后跟显式路径的说法。 M(old L148-151): N
158 - 携带易损片段的评论(派发令与裁决)post 后读回;写侧形状见 references/platform-readings.md M(old L148-151): N
平台读数纪律
162 - 判据取命令输出,⛔ 不取 API 字段字面值、不取本地工作树、不取看着相邻的日志。 M(old L155-157): S
163 - GitHub API 与工具行为的实测事实表在 references/platform-readings.md,做对应操作的那一刻查阅。 M(old L155-157): S
164 - 核验 main 用 origin/main:先 fetch,再 git grep PAT origin/main -- PATHSgit show origin/main:PATH M(old L159-160): S
165 - ⛔ 不用共享检出的工作树核验 main,它的 HEAD 由别的 agent 摆布。 M(old L159-160): S
166 - 零命中必须用确定存在的邻近词反查,否则零命中不成立。 M(old L161-163): S
167 - 仓不可达 ⛔ 不当查过了干净:在 issue 上贴出给对应座位的现成命令,等读数回贴再派。 M(old L161-163): S
168 - 板面/树/队列读数恒带 UTC 取数时刻;认领、派发令、复核、轮报与座位贴皆同。 M(old L164-167): D,Q (2026-09-02), example timestamp de-dated
169 - 时间戳形如 YYYY-MM-DDThh:mmZ,树读数另带 ref 或 tip。 M(old L164-167): D,Q (2026-09-02), example timestamp de-dated
170 - 无时间戳的读数是格式错误不是现值,读者按未取处理。 M(old L164-167): D,Q (2026-09-02), example timestamp de-dated
171 - 失效修法按序取:先删容许出错的构造,再让正确形态成唯一拼写,最后才加检查。 M(old L167-169): N
172 - 自设定时器的文本以先重读状态开头,只写关键判据(若 X 则 Y),其余指针化。 M(old L170-173): S
173 - 定时器文本 ⛔ 不写结论、不含未经重读即可执行的祈使句。 M(old L170-173): S
174 - 放行认门禁 job 的结论(completed: success),⛔ 不认聚合读数。 M(old L174): U
175 - advisory 门禁红着进 main 是共享损伤,任何车道发现都立即止血并立单。 M(old L174-176): S,P
176 - main-red 的跳队例外与事故锚卡约定见 references/landing-operations.md B 节。 M(old L174-176): S,P
177 - dev 自己死了不等于维护者中止:子代理消失是正常死法,走死认领回收。 M(old L177-179): S
178 - 维护者中止只在有显式信号时成立:原话,或宿主回报 stopped by the user。 M(old L177-179): S
179 - ⛔ 不据推断立一道没有重启条件的门;判据是信号不是症状。 M(old L177-179): S
180 - 立单前查重:关键词、CVE/公告号、包名、报错串各搜一遍;空结果须有控制词背书。 M(old L180-183): S
181 - 共享基础设施修复入队前按症状复查 main,不按 issue 号。 M(old L180-183): S
182 - 真撞上重复,先比数值与作用域再决定关哪个。 M(old L180-183): S
183 - sweep 晋级与立卡的前提要对此刻的 main;dev 带证据的零实现停手是好产出,不当返工计。 M(old L184-185): U
184 - 裁决明令的动作实施中测出对向事实 ⇒ 照字面执行,被打断行为的 pin 反转为拒绝 pin。 M(old L185-187): S
185 - 对向事实下 ⛔ 同 PR 不做任何 promote/回退;pin 是反转不是删除。 M(old L185-187): S
186 - 冲突立成 needs-user-decision 卡,该 PR 不挂 auto-merge 留异议窗口。 M(old L185-187): S
187 - 读序 git、payload、REST、MCP;REST 可达性逐会话探一次;通道对照见 references/rest-channel.md M(rest-channel.md / runbook 读数成本; digest L47): NEW home
188 - 派发前读一次 rate_limit,余量装不下整批就减批,⛔ 不靠撞墙发现。 M(rest-channel.md / runbook 读数成本; digest L47): NEW home
多仓协调
192 - 产品依赖方向固定:objectstack(后端,packages/spec 是唯一契约)→ objectui(前端)与 cloud M(old L191-192): S
193 - objectui 构建产物经 pnpm objectui:refresh 回流。 M(old L191-192): S
194 - 多车道仓 objectstackobjectui:中央分诊是 domain:*/type/定级的唯一生产者。 M(old L193-200): D,S; objectos per-repo facts dropped (Table-5 K16 DEM)
195 - 单车道仓 cloudobjectoshotcrmwww.objectos.ai;未来新仓默认此类。 M(old L193-200): D,S; objectos per-repo facts dropped (Table-5 K16 DEM)
196 - 单车道仓 repo:* 席自理机械三务,⛔ 不产 domain:*;决策卡默认入 objectstack 收件箱。 M(old L193-200): D,S; objectos per-repo facts dropped (Table-5 K16 DEM)
197 - 机械三务 = 自扫 sweep、自打 type、自做 finding 首触定级。 M(old L193-200): D,S; objectos per-repo facts dropped (Table-5 K16 DEM)
198 - 跨仓查重/shadow 检查恒归中央,全仓视图 ⛔ 不下放。 M(old L193-200): D,S; objectos per-repo facts dropped (Table-5 K16 DEM)
199 - 新仓登记是一张清单:座位贴、标签、类别归属、门禁盘点。 M(old L193-200): D,S; objectos per-repo facts dropped (Table-5 K16 DEM)
200 - 新仓准入判据一句:这个仓真的需要常设席位吗。 M(old L201-204): D,S
201 - hotcrm 收卡判据与宪章见 references/lanes/hotcrm.md M(old L201-204): D,S
202 - objectui 卡按修复落点分流三流,domain:ui 是唯一新增标签。 M(old L201-204): D,S
203 - domain:devx(工程面)与 domain:spec(契约面)跨仓归各自车道。 M(old L201-204): D,S
204 - 其余(发布库与 apps)归 domain:ui 执行席;症状位置不改流向,docs 随所记录的面走。 M(old L204-206): S
205 - 落点不明留分诊首触,⛔ 不猜。 M(old L204-206): S
206 - 车道可按仓分席(域×仓):忙时一个 domain 车道开多个按仓席位,闲时收归一席。 M(old L204-206): S
207 - 分席各有独立座位贴与 claim 互斥;分席是名册状态,不改协议文本。 M(old L206-208): S
208 - 拆分触发预登记:单轮逼近 fire 周期,或某仓在全序下持续断粮 ⇒ 按仓拆回多席。 M(old L206-208): S
209 - seam 卡单一归属:归修复落地仓的席,双仓皆动 objectstack 侧主导。 M(old L210-216): D×2,S
210 - scripts/pm/** 等住 objectstack 的全板工具链单写手恒为 objectstack 侧席,他侧上游立卡回链。 M(old L210-216): D×2,S
211 - 规则 1:issue 住在修复落地的仓,分诊时按判据严格执行。 M(old L210-216): D×2,S
212 - 判据:正文抽掉 objectstack 还成立 ⇒ 当场转仓(console/UI 缺陷即转 objectui);不成立才是缝卡。 M(old L210-216): D×2,S
213 - transfer 不可用时重建:出处头 + 裸 #N 改全名 + 关源单为 moved。 M(old L210-216): D×2,S
214 - 缝卡收窄为真协调卡:留 objectstack 带 repo:*,正文点名读者(哪个座位、哪一步)。 M(old L217-222): S
215 - 维护者收件箱恒为 objectstack;在飞卡 ⛔ 不中途转仓。 M(old L217-222): S
216 - 规则 2:跨仓 feature 永不是一次派发:父单 + 每仓一 sub-issue,spec/后端先行。 M(old L217-222): S
217 - 下游带 Blocked-by: 〈owner/repo〉#〈n〉;Blocked-by 未关闭/未合并的不派发,对 GitHub 现验。 M(old L217-222): S
218 - 被链接或同父的两单永不同批。 M(old L217-222): S
219 - pin 滞后是盲区:本仓 pin 是否已覆盖该 commit 是第二读数,派发前用 REST compare 核祖先。 M(old L217-222): S
220 - 本地 merge-base 在浅检出上给假非祖先;未覆盖 ⇒ 派发令要求 PR 正文留档分叉窗口。 M(old L223-224): S
221 - ⛔ pin bump 不做 rider:走专用 bump 脚本连带 override 与 lockfile。 M(old L223-224): S
222 - 规则 3:联动杂事立单,不靠记忆。 M(old L225-236): D×3,S; 借调 tombstone rewritten as the standing rule
223 - 已验收 PR 的产物流向另一仓,接受该 PR 的执行席立即在消费仓立后续单,带 Blocked-by: M(old L225-236): D×3,S; 借调 tombstone rewritten as the standing rule
224 - 规则 4:纵向拆分,一个分诊 PM + N 个执行 PM,一人一车道双射。 M(old L225-236): D×3,S; 借调 tombstone rewritten as the standing rule
225 - 分诊座位唯一:定级/路由/type 由它一座生产,只扫/分类/打标/拆分/查重/转仓。 M(old L225-236): D×3,S; 借调 tombstone rewritten as the standing rule
226 - 执行座位信任标签,只在本车道认领;误标 ⛔ 不自行改,挂 pm:retriage + 异议评论同笔。 M(old L225-236): D×3,S; 借调 tombstone rewritten as the standing rule
227 - 单车道仓 repo:* 席 = 执行座位 + 机械三务自理;skills 车道 finding 自分诊例外照旧。 M(old L225-236): D×3,S; 借调 tombstone rewritten as the standing rule
228 - 突发积压调频率或 batch,持续积压按仓拆席走 PR;⛔ 不跨车道借调。 M(old L225-236): D×3,S; 借调 tombstone rewritten as the standing rule
229 - 维护者直派通道:当面指挥的 PM 会话直接路由,只对明示指挥的卡成立。 M(old L225-236): D×3,S; 借调 tombstone rewritten as the standing rule
230 - 直派的审计评论逐字引用授权指令。 M(old L225-236): D×3,S; 借调 tombstone rewritten as the standing rule
231 - 多车道仓分诊空缺时,会话型执行 PM 可代扫:只做分诊动作,不跨车道认领,贴上注明。 M(old L237-238): U
232 - 代扫在分诊座位有主时立即停止。 M(old L240-250): S,N
233 - 规则 5:一块板不设第二跟踪器:pm 标签就是状态机,org Project 只是维护者的聚合视图。 M(old L240-250): S,N
234 - 跨座位转移:工作跨座位线,PM 永不跨(唯一豁免:简单阻塞项直接接手)。 M(old L240-250): S,N
235 - 转移落对方队列:目标仓立单带 pm:queue、出处行与一行可执行判据,依赖用 Blocked-by: M(old L240-250): S,N
236 - 凡触 packages/spec 一律转 domain:spec 座位,不论谁需要它。 M(old L240-250): S,N
237 - 任何跨座位请求都是工作(要读数、要开卡、要授权):一律立卡进目标车道队列。 M(old L240-250): S,N
238 - ⛔ 座位贴敲门或裁决评论永不作跨座位请求的唯一载体;评论是加速器不是记录。 M(old L240-250): S,N
239 - 等待方同一笔把自卡翻 pm:blocked + Blocked-by: 指向请求卡;⛔ 不设新标签新 sweep。 M(old L240-250): S,N
240 - 目标仓不可达时按缝卡规则落 objectstack 带 repo:* + 具名读者。 M(old L240-250): S,N
域车道
244 - 锚定规则:每个包恰好属于一个域;issue 的 domain:* = 修复落地的那个包所属的域。 M(old L254-257): blockquote → rules, S
245 - 域由分诊读代码判定,⛔ 绝不从 issue 标题的词汇猜域。 M(old L254-257): blockquote → rules, S
246 - 说不出修复碰哪个文件就还没分诊完,不可标。 M(old L254-257): blockquote → rules, S
248 | 标签 | 包家族 | T: domain table kept; retired-label tombstones compressed, D×4, pointer texts shortened
249 |:--|:--| T: guard index kept; ratchet row D×2,Q×2; frame-sync row 四份 → 两份 (correction)
250 | domain:engine | packages/objectqlpackages/corepackages/formula(CEL / matches-filter / RLS 谓词求值)、plugin-pinyin-search;packages/metadata*packages/platform-objects;packages/drivers/driver-*;退役标签 domain:engine-core / domain:metadata / domain:drivers 只退出流通,GitHub 标签对象保留 | T: domain table kept; retired-label tombstones compressed, D×4, pointer texts shortened
251 | domain:services | packages/services/*packages/connectors/*packages/triggers/*plugin-approvalsplugin-webhooksplugin-emailplugin-reportsembedder-openaiknowledge-*;plugin-authplugin-securityplugin-sharingplugin-audit;退役标签 domain:identity 同上只退流通 | T: domain table kept; retired-label tombstones compressed, D×4, pointer texts shortened
252 | domain:devx | packages/lintpackages/sdui-parsercontent/docs/**apps/docsscripts/(门禁类;与 domain:skills 的分界按门禁的 SUBJECT:治理 agent 指令面/governed 面的归 skills,治理代码/文档质量的归本域);与 domain:spec 相交的面按是否围着 spec 契约转切分 | T: domain table kept; retired-label tombstones compressed, D×4, pointer texts shortened
253 | domain:skills | .claude/skills/**(含本文件)+ skills/**;根 AGENTS.md + 根 CLAUDE.md;governed 面的治理执行文件:.github/CODEOWNERS + SUBJECT 是 governed 面本身的门禁/审计(现为 scripts/pm/check-governed-merges.mjs) | T: domain table kept; retired-label tombstones compressed, D×4, pointer texts shortened
254 | domain:spec | packages/spec 整包:schema 形状、contracts/**、退役行为半边、strictness 台账;describe/JSDoc/墓碑散文/错误 guidance 与 alias 表;packages/spec/scripts/**packages/spec/docs/** 及围着 spec 契约转的工具链;一般开发工具面留 devx;席内分派见 references/lanes/spec.md | T: domain table kept; retired-label tombstones compressed, D×4, pointer texts shortened
255 | domain:cli | packages/cliruntimeverifyqatypespackages/restpackages/mcppackages/observabilitypackages/client*cloud-connectioncreate-objectstackpackages/adapters/*plugin-hono-serverplugin-dev | T: domain table kept; retired-label tombstones compressed, D×4, pointer texts shortened
256 | (无固定归属,按落点分诊) | packages/apps/*packages/console(dist 由脚本生成 ⛔ 不手改;UI 缺陷走 repo:objectui)、examples/*(归它演练的子系统) | T: domain table kept; retired-label tombstones compressed, D×4, pointer texts shortened
258 - 表未覆盖的包首次分诊时归类并走 PR 更新本表;新增或退役 domain:* 必须同批改本表。 M(old L269-274): S
259 - 座位在编情况以 label:pm:seat 索引为准,每个 domain:*repo:* 恰一张座位贴。 M(old L269-274): S
260 - domain:* 只由分诊席产出;打标签不等于认领,未打标签的 issue ⛔ 任何人不得认领。 M(old L269-274): S
261 - 跨域例外路径:拆不动的跨域单 PR 由分诊席指定一个车道 PM 认领,认领评论申报文件面。 M(old L276-284): S
262 - 只在跨域例外路径上跑定向在飞检查,范围 = 该单文件面触及的那几个域的在飞单。 M(old L276-284): S
263 - 定向在飞检查读各在飞单认领评论的文件面申报,要求不相交,相交即让行。 M(old L276-284): S
264 - 日常同域批次选择不跑全局在飞检查,同域独立性由本域批次选择保证。 M(old L276-284): S
265 - 跨域相交只从两条越界通道进来:跨域例外路径,与简单阻塞项直接接手。 M(old L276-284): S
266 - 合并队列是共享串行资源:车道买到的是并行编写,不是并行落地。 M(old L276-284): S
267 - 谁发现 flake 谁修或立单,⛔ 不绕行。 M(old L283-284): S
座位贴协议
271 - 贴 = 座位(标签 pm:seat),正文固定四段现值:当前 PM / 继承台账 / 热文件串行队 / 说明。 M(old L288-304): D×3,N (手抄接力 rationale),S
272 - 正文只由在任座位 PM 编辑且为权威;标题与 assignee 是派生视图,三者同笔更新。 M(old L288-304): D×3,N (手抄接力 rationale),S
273 - 标题只放慢状态,快状态留在说明段。 M(old L288-304): D×3,N (手抄接力 rationale),S
274 - 接管/移交 = 改正文 + 审计评论(评论只作审计不承载状态),接管压缩是标准步骤。 M(old L288-304): D×3,N (手抄接力 rationale),S
275 - 范围与常设承诺是岗位说明不是状态,版本化在 references/lanes/〈lane〉.md M(old L288-304): D×3,N (手抄接力 rationale),S
276 - 贴内只放指向车道文件的指针,升级走技能 PR,⛔ 不手抄接力。 M(old L288-304): D×3,N (手抄接力 rationale),S
277 - 写侧刷新点 = 轮次边界;中途状态由卡上 claim/ACCEPT 评论承载。 M(old L288-304): D×3,N (手抄接力 rationale),S
278 - 读侧只读贴正文 + 晚于正文最后编辑的评论。 M(old L288-304): D×3,N (手抄接力 rationale),S
279 - 热文件串行队是正文具名段:区域写不清就只能整文件串行。 M(old L288-304): D×3,N (手抄接力 rationale),S
280 - 座位贴每仓登记合并是否对外发布及其验证层;登记缺失视为未验证。 NEW (deploy-on-merge card): seat post registers per repo whether a merge publishes and its verification layer
281 - 无心跳,活性惰性判定:超过一天无自有产出即可降级回收。 M(old L288-304): D×3,N (手抄接力 rationale),S
282 - ⛔ 永不从贴的 updated_at 或标题推死活;活性只认在任者自己的产出。 M(old L288-304): D×3,N (手抄接力 rationale),S
283 - 竞态三招:动手前重 fetch 正文、审计评论时间戳先到先得、写后回读。 M(old L288-304): D×3,N (手抄接力 rationale),S
284 - 收班 = 状态 flush + 在飞显式安置,不是在飞归零;收班简报是最终一笔。 M(old L288-304): D×3,N (手抄接力 rationale),S
285 - 离任留守只写简报点名的项,⛔ 不读队列、不新派发、不碰未点名卡。 M(old L288-304): D×3,N (手抄接力 rationale),S
286 - 换班报告默认零建议,只收三类:原则错/缺、可机械化项、平台事实变化。 M(old L288-304): D×3,N (手抄接力 rationale),S
287 - 原则错/缺 → skills 席专题;可机械化项 → 门禁/脚本卡,⛔ 不是散文。 M(old L288-304): D×3,N (手抄接力 rationale),S
288 - 平台事实变化 → references 事实表改一行。 M(seat-post-protocol.md; digest L70, L73): NEW home
289 - 三类以 finding 入 skills 车道由该席分诊;三类之外默认关 not planned。 M(seat-post-protocol.md; digest L70, L73): NEW home
290 - 经验教训散文不再入技能文本。 M(seat-post-protocol.md; digest L70, L73): NEW home
291 - 交接按收尾清单逐步走完,并 list_triggers 清点自设定时器。 M(old L303-304): P
292 - 归档自己派出的会话是不可移交的义务。 M(old L303-304): P
293 - 四段模板、状态词表、接管/退场收尾清单细则见 references/seat-post-protocol.md M(old L303-304): P
294 - epic 委托不入座位贴体系;packages/spec 恒归 spec 座位。 M(old L303-304): P
Epic 子树车道
298 - 大开发(父单 + sub-issue 树)整体委托一个专职 PM 会话:/pm-dispatch epic:#〈n〉 M(old L308-317): S
299 - 队列 = 子树 open 未认领 sub-issue,每轮重读不缓存。 M(old L308-317): S
300 - 委托信号成对落地:父单打 pm:epic + 正文写会话 ID 与声明的文件领地。 M(old L308-317): S
301 - 其它 PM 的候选获取跳过整棵子树。 M(old L308-317): S
302 - 域座位批次选择时读一次 label:pm:epic 索引,避开领地相交。 M(old L308-317): S
303 - epic PM 不同时持有 domain:* 座位;认领纪律全套照做。 M(old L308-317): S
304 - 触 packages/spec 的 sub-issue 照旧转 spec 座位。 M(old L308-317): S
305 - 衍生问题三分法,判据:不修它,epic 验收过不过得去。 M(old L308-317): S
306 - in-scope ⇒ 挂父单 sub-issue 下轮自动入队。 M(old L308-317): S
307 - 触 spec/公共契约 ⇒ 转 spec 座位队列,epic 侧写 Blocked-by: M(old L308-317): S
308 - 顺带发现 ⇒ 独立立单进修复落地仓 backlog,查重先行。 M(old L308-317): S
309 - ⛔ 不借 sub-issue 通道把未分诊的卡塞进池子。 M(old L308-317): S
310 - 每次分流留一行审计评论;父单维护 checklist 汇总评论,决策仍锚在具体 sub-issue。 M(old L308-317): S
311 - 收尾四步、僵尸回收与领地防撞细则见 references/seat-post-protocol.md M(old L308-317): S
分诊座位职责
315 - 执行座位 ⛔ 跳过本节动作,读到标签当既成事实。 M(old L321-327): D×3,Q (代裁通道 quotation), model alias → tier
316 - sweep 与首触定级只对多车道仓,单车道仓机械三务自理。 M(old L321-327): D×3,Q (代裁通道 quotation), model alias → tier
317 - 发版板(无板仓跳过)、查重/shadow 检查与代裁通道全仓照跑。 M(old L321-327): D×3,Q (代裁通道 quotation), model alias → tier
318 - 代裁只由达档者产出,⛔ 永不凭自述。 M(old L321-327): D×3,Q (代裁通道 quotation), model alias → tier
319 - 达档者 = 显式传 model 的契约复审档子代理(逐份过转录核验),或达档总监席。 M(old L328-332): D,N (self-test token figures)
320 - 其余座位 ⛔ 不代裁;置信门其余条件照旧。 M(old L328-332): D,N (self-test token figures)
321 - fire 开局只按名加载互斥检查所需工具,ToolSearchselect: 形式。 M(old L328-332): D,N (self-test token figures)
322 - 判定本轮有活之后才加载其余工具。 M(old L334-340 + runbook totalCount rule; digest L76): D,N,S
323 - ⛔ 分诊 fresh session 开局不做泛关键词 ToolSearch;可验判据:空转轮 ~4 万 token 以内。 M(old L334-340 + runbook totalCount rule; digest L76): D,N,S
324 - 工具加载纪律只约束分诊 fresh session 的开局;执行座位与 dev 不受约束。 M(old L334-340 + runbook totalCount rule; digest L76): D,N,S
325 - 两级盘点:小时轮以 since 窗口读增量,锚 = 座位贴上一份收班简报的时间戳。 M(old L334-340 + runbook totalCount rule; digest L76): D,N,S
326 - 每日一 fire 跑全仓全量对账并归集日频职责。 M(old L334-340 + runbook totalCount rule; digest L76): D,N,S
327 - 选层按 fire 时刻,⛔ 不用计数器;简报写明本轮跑的层。 M(old L334-340 + runbook totalCount rule; digest L76): D,N,S
328 - 从不更新的卡不入窗;老化欠账归半状态巡查不归小时轮。 M(old L342-350): N,S
329 - 每条枚举比对返回数与 totalCount,不等 ⇒ 报 sweep INCOMPLETE 点名缺口,⛔ 永不报干净。 M(old L342-350): N,S
330 - since 读法与成本对价见 references/dispatch-runbook.md M(old L342-350): N,S
331 - Backlog sweep 是常设职责,每 fire 扫任一析取命中的卡。 M(old L342-350): N,S
332 - 析取 ①:全裸(无 pm:*、无 needs-user-decision、无 domain:*)。 M(old L342-350): N,S
333 - 析取 ②:有 pm:queuedomain:*(仅多车道仓);析取 ③:有 domain:* 无 pm-state。 M(old L342-350): N,S
334 - ②③ 只取 updated_at 早于 ~2 分钟的卡。 M(old L342-350): N,S
335 - 排除 trackingstatus:parked、全部 pm:seat 贴、qa-run 记录。 M(old L351-361 + L401-406): run-to-empty encoded once; N (threshold rationale, 40-minute incident)
336 - 半状态治愈积压 ②③ 最老优先、P0 嫌疑先行,⛔ 优先最新不适用。 M(old L351-361 + L401-406): run-to-empty encoded once; N (threshold rationale, 40-minute incident)
337 - 首触定级与三析取 sweep 每 fire 跑到清空:⛔ 无每轮总量预算,清得动就多清。 M(old L351-361 + L401-406): run-to-empty encoded once; N (threshold rationale, 40-minute incident)
338 - 窗口耗尽未跑完的,下一 fire 从标签状态断点续跑。 M(old L351-361 + L401-406): run-to-empty encoded once; N (threshold rationale, 40-minute incident)
339 - 单轮数小时是可接受形态,⛔ 不是封顶总量的理由。 M(old L351-361 + L401-406): run-to-empty encoded once; N (threshold rationale, 40-minute incident)
340 - 排序:队列每轮清空时最新优先;清不空的那一刻起改最老优先。 M(old L351-361 + L401-406): run-to-empty encoded once; N (threshold rationale, 40-minute incident)
341 - 裸卡数 〉15 ⇒ 下一 fire 整轮改域分批集中模式,每批 ≤5 张同族卡,照样跑到清空。 M(old L351-361 + L401-406): run-to-empty encoded once; N (threshold rationale, 40-minute incident)
342 - 阈值与跑到清空成对生效,⛔ 不可互相替代。 M(old L362-364): D,S
343 - 紧急卡直接分诊:维护者点名或 p0 嫌疑 ⇒ 立即起契约复审档分诊子代理,不等定时轮。 M(old L362-364): D,S
344 - 紧急分诊的授权面 = 分诊本身,⛔ 不写码不认领;产出落卡,与定时轮分诊同格式同效力。 M(old L365-368): S
345 - 跨仓 pin 链的窗口级兜底也在 sweep,⛔ 只立单不执行 bump。 M(old L365-368): S
346 - objectui pin 落后且其队列已空 ⇒ 在本仓立/刷新 console bump 单。 M(old L365-368): S
347 - 见新 tag 族发布 ⇒ 在 cloud 立 .objectstack-sha bump 单。 M(old L365-368): S
348 - bump 单单张封顶:先查同题 open 单,已有就追评刷新;工具链新形态只提请不扩面。 M(old L370-378): S
349 - 分类动作每张三选一,外加一个修复通道。 M(old L370-378): S
350 - pm:queue = 有具名落点或复现的具体缺陷,或范围明确的工具/门禁修复,无可问之事。 M(old L370-378): S
351 - pm:queue 也收恢复不变量的 finding 与 test-only pin。 M(old L370-378): S
352 - needs-user-decision = 设计卡、feature/契约形状提案、需要 appetite 的多周程序。 M(old L370-378): S
353 - 碰存量数据迁移形状或删除已发布能力的卡也进决策箱。 M(old L370-378): S
354 - 决策卡落卡必带四棱卡面块,⛔ 不留待有人接手再补。 M(old L380-386): D,N (「读者三个」)
355 - finding = 观察类(死代码、未演练漂移、抛光;真实但今天没有用户撞上),待首次定级。 M(old L380-386): D,N (「读者三个」)
356 - 先修复:正文被 sanitizer 截断的卡不可派发,评论修复指令后跳过。 M(old L380-386): D,N (「读者三个」)
357 - 停摆指令判据必须比其它分类更硬(双读取),事后证伪同处公开作废。 M(old L380-386): D,N (「读者三个」)
358 - 决策箱勤务:落卡入箱时校验/补全标准四棱卡面块;存量卡低频子轮回填,语言按不变量。 M(old L388-395): S
359 - 原生 issue 类型 Bug/Feature/Task 是分诊的固定产出。 M(old L388-395): S
360 - 分诊席是 type 字段的唯一权威生产者;立单者可预填,分诊校正。 M(old L388-395): S
361 - 判据:违背已声明契约 ⇒ Bug,扩大接受集/公开面 ⇒ Feature,其余 ⇒ Task M(old L388-395): S
362 - Bug 无具名落点或复现路径不入 pm:queue(标记补复现)。 M(old L388-395): S
363 - ⛔ 不回填存量 backlog 的 type;新卡即时打、存量卡下次碰到补。 M(old L388-395): S
364 - 路由是分诊的技术判断,⛔ 永不升级哪个仓的问题。 M(old L397-410): D×3,N,S
365 - 读全仓代码定落点;跨仓按 contract-first 拆分。 M(old L397-410): D×3,N,S
366 - 父单已有子结构的:父单队列标签即可,分诊逐个展开路由、补 Blocked-by: 排序。 M(old L397-410): D×3,N,S
367 - 父单是协调节点,永不派发。 M(old L397-410): D×3,N,S
368 - 每张留一条英文审计评论(Triage: lands in …; rationale: …),可选带 Size/model suggestion: 行。 M(old L397-410): D×3,N,S
369 - 跨仓查重(shadow 检查):跟跨仓引用 + 关键词搜各姊妹仓。 M(old L397-410): D×3,N,S
370 - shadow 命中在飞 ⇒ Blocked-by: 不派;open 未认领 ⇒ 先收敛成一个派发入口。 M(old L411-412): S
371 - shadow 命中已完成 ⇒ 卡可能过期。 M(old L411-412): S
372 - 生产者在哪是常设分诊问题:declared ≠ enforced 形状的卡先问谁在写这个字段。 M(old L414-419): S
373 - 派发前按生产者的答案改卡的范围与域标签。 M(old L414-419): S
374 - 发现分诊轮:finding 恒 = 待首次定级、定级即离标;hold 重验只在 Restart-when: 命中时发生。 M(old L414-419): S
375 - closed 形态随每轮解锁扫描;可执行判据由分诊席每日一个低频子轮批量执行。 M(old L414-419): S
376 - Restart-when: 命中同 closed 命中待遇:回队前 ref 重验再回队。 M(old L414-419): S
377 - ⛔ 不设逐卡豁免评论;每 fire 定完全部未定级 finding,优先于旧卡重验。 M(old L414-419): S
378 - 每批先过时前提检查再三选一:晋级 / 关闭 not planned(维护者可否决重开,PM 不等批准)/ hold。 M(old L421-437): D,Q (charter quote),S
379 - 判级发生在发现分诊轮,不在立单时;车道座位可附证据/前提重验,⛔ 不定级不改标。 M(old L421-437): D,Q (charter quote),S
380 - 唯一例外:skills 车道 finding 由该席自分诊,全仓轮跳过。 M(old L421-437): D,Q (charter quote),S
381 - 域分批与 sweep 打包晋级五条照用;每批约定与积压告警见 references/dispatch-runbook.md M(old L421-437): D,Q (charter quote),S
382 - pm:retriage 重判每 fire 高优先处理:按异议评论的证据与建议定级重裁。 M(old L421-437): D,Q (charter quote),S
383 - retriage 维持或改判皆由分诊席同笔摘标;挂标归异议席。 M(old L421-437): D,Q (charter quote),S
384 - 发版板 target:〈major〉:判据二元,⛔ 不做优先级渐变:不修它,当前 RC 能不能发。 M(old L421-437): D,Q (charter quote),S
385 - 判阻塞四类:① 用户今天就撞的已发布面缺陷;② 公开契约 declared≠enforced。 M(old L421-437): D,Q (charter quote),S
386 - ③ 存量数据/迁移形状(发布后修不回);④ 发布说明里要为它道歉的。 M(old L421-437): D,Q (charter quote),S
387 - 拆分/分票时 target:* 随工作走,对每一半重跑二元判据,默认继承,不继承按四类写明理由。 M(old L421-437): D,Q (charter quote),S
388 - 每张板恰好一个生产者。 M(old L421-437): D,Q (charter quote),S
389 - 鲜度节奏、清板三选一、pin 前置细则见 references/seat-post-protocol.md M(old L421-437): D,Q (charter quote),S
390 - 代裁人工地板(恒交维护者):功能新增;ADR;协议/公开契约变化;破坏性或难回滚动作。 M(old L421-437): D,Q (charter quote),S
391 - 人工地板同含:安全/权限边界;门禁削弱(降阈值、删必查项、抬 ratchet 上限、跳过测试)。 M(old L421-437): D,Q (charter quote),S
392 - 人工地板同含:花费/配额/舰队形态/默认模型档位;新增运行时第三方依赖。 M(old L421-437): D,Q (charter quote),S
393 - 代裁车道只覆盖代码整理(行为不变的重构)与 bug 修复。 M(old L421-437): D,Q (charter quote),S
394 - 机械边界测试:改动扩大接受集或公开面 ⇒ 人工;拉回已声明契约 ⇒ 代裁车道。 M(old L421-437): D,Q (charter quote),S
395 - 置信门五条全立才可代裁:① 四棱同向;② 不在人工地板;③ 不推翻既有维护者裁决。 M(old L421-437): D,Q (charter quote),S
396 - ④ 执行是否决窗口不是许可门;⑤ 档位硬门达标。 M(old L421-437): D,Q (charter quote),S
397 - 档位未达 ⇒ 本 fire 代裁整体跳过,卡原样留在决策箱走维护者路径。 M(old L421-437): D,Q (charter quote),S
398 - 代裁动作:裁定 → 一次标签写入换 needs-user-decision 为工作态。 M(old L421-437): D,Q (charter quote),S
399 - 随后卡上贴四棱块 + 结论 + auto-adjudicated 标记,轮次报告设代裁清单专节。 M(old L421-437): D,Q (charter quote),S
400 - 一类自裁门:召唤中总监席可免呈自裁一张决策卡,当且仅当三判据全立。 M(old L438-451): D,S
401 - ① 既有裁定/在案类规则/成文纪律机械决定方向,裁决评论点名所用权威。 M(old L438-451): D,S
402 - ② 失败方向响亮(拒绝/诊断/红门禁)且一次 revert 可回。 M(old L438-451): D,S
403 - ③ 四类地板零移动:安全/权限边界、已发布契约语义、产品能力取舍、门禁强度。 M(old L438-451): D,S
404 - 任一地板触碰 ⇒ 照常现场呈报;地板是排除项不是权重。 M(old L438-451): D,S
405 - 一类自裁逐卡记录:裁决评论引本通道与 ①的权威,录裁 + 转 pm:queue,⛔ 裁不派。 M(old L438-451): D,S
406 - 每场召唤收尾呈摘要表(卡、权威、方向)供维护者追认;被推翻的行按新裁决执行。 M(old L438-451): D,S
407 - 二类(带一个可报点)与三类(地板)照旧现场呈报,走常设决裁批流程。 M(old L438-451): D,S
408 - 回翻条款:代裁卡实施中发现契约终究要动 ⇒ dev 停手,卡回决策箱,⛔ 永不静默重裁。 M(old L438-451): D,S
409 - 请示纪律:方向性授权覆盖整条执行链一并做完,⛔ 不逐项回问。 M(old L452-457): D,S
410 - 需裁事项攒批(≤5 项/批,每项一行带推荐),一句同意即全链执行。 M(old L452-457): D,S
411 - 中间状态与限流/重试类运维细节只进座位贴和触发器,⛔ 不弹给维护者。 M(old L452-457): D,S
412 - 汇报只在里程碑、真阻塞、被问到时。 M(old L452-457): D,S
413 - 可逆且有推荐默认的事项按否决窗口:声明即执行,异议再回滚。 M(old L452-457): D,S
414 - 人工地板项(发版、天花板、契约扩大)仍需明确字句,但攒批不逐项弹。 M(old L452-457): D,S
执行座位职责
418 - 每轮巡检第一判据:先读半状态巡查锚(half-state-patrol.yml 置顶 issue)。 M(old L461-462): S
419 - 锚上点名本道卡/PR/座位贴的 H 行逐行处置,再做其余判据;锚行未处置 ⛔ 不开新派发。 M(old L461-462): S
候选与批次
423 - 整车道一次读全,本地求交:list_issueslabels: [domain:X] + 最小字段拿回全车道 open 集。 M(old L466-487): D,N (盲区 rationale, 三项卡 incident),S
424 - 候选 = open、未 assign、无 needs-user-decision、无 pm:retriage M(old L466-487): D,N (盲区 rationale, 三项卡 incident),S
425 - 已排队父单的 open sub-issue 自动是候选,pm:epic 父单的子树除外。 M(old L466-487): D,N (盲区 rationale, 三项卡 incident),S
426 - 每张候选读全文 + 全部评论,写派发词前做决策复读:评论读到最后一页。 M(old L466-487): D,N (盲区 rationale, 三项卡 incident),S
427 - 维护者裁决逐字引入派发词裁决分区作约束,无则写明无裁决。 M(old L466-487): D,N (盲区 rationale, 三项卡 incident),S
428 - 派发前做前提过时检查,裁决同罪,三面都查:动作面、卡引用面、工作项面。 M(old L466-487): D,N (盲区 rationale, 三项卡 incident),S
429 - 动作面:git log --oneline -20 -- 〈paths〉 M(old L466-487): D,N (盲区 rationale, 三项卡 incident),S
430 - 裁决实施卡的动作面再核被点名的动作在 origin/main 上还没被做掉。 M(old L466-487): D,N (盲区 rationale, 三项卡 incident),S
431 - 卡引用面:裁决/卡片点名的每张 issue 逐个读当前 open/closed/assignee。 M(old L466-487): D,N (盲区 rationale, 三项卡 incident),S
432 - 引用读到的现状,⛔ 不引用裁决写作时的描述。 M(old L466-487): D,N (盲区 rationale, 三项卡 incident),S
433 - 工作项面:卡片与分诊评论列的每条工作项逐条对树核验是否仍未完成,⛔ 不对卡核验。 M(old L466-487): D,N (盲区 rationale, 三项卡 incident),S
434 - 每条工作项写进派发令时都是 dev 首先证伪的前提。 M(old L466-487): D,N (盲区 rationale, 三项卡 incident),S
435 - 并行度以 batch 封顶,同批按构造文件面不相交;priority:p0 插队可超 batch M(old L40, L942; digest L146): NEW home
436 - 批次独立性:一批内任两单不得可能碰同一个包/registry/barrel/spec schema;拿不准就串行。 M(old L489): U
437 - 同文件单跨轮硬串行;延后不是搁置,被延后那一刻就把已知的坑记到该 issue 上。 M(old L490-501): D,N (翻倍付账),S
438 - 家族派发是范围澄清不是豁免:一个 dev 有意覆盖 N 张同区域已裁卡,可折叠为一次派发。 M(old L490-501): D,N (翻倍付账),S
439 - 折叠准入五门全过才可折:① 同缺陷形态同修法(⛔ 不是同关键词/同子系统)。 M(old L490-501): D,N (翻倍付账),S
440 - ② 同包/区域(一 worktree、一 changeset、一队列位)。 M(old L490-501): D,N (翻倍付账),S
441 - ③ 每张成员都已裁/已定级,⛔ 决策箱内一张不许;④ 每成员独立可核(一个具名判据)。 M(old L490-501): D,N (翻倍付账),S
442 - ⑤ 派发令点名排除清单:长得像家族而不是的成员及理由。 M(old L490-501): D,N (翻倍付账),S
443 - fold-or-serial 必答:≥2 张排队卡共享热文件时,必须以五门为判据显式答折叠或串行。 M(old L490-501): D,N (翻倍付账),S
444 - 答题处是串行队条目和/或链首认领;不答而默认串行是漏答。 M(old L490-501): D,N (翻倍付账),S
445 - 维护者明示豁免同文件串行时,替代纪律四条:① 文件面申报到区域级。 M(old L490-501): D,N (翻倍付账),S
446 - ② 开 PR 前合一次 main;③ 兄弟卡落地后再合一次;④ 冲突交合并队列仲裁,⛔ 不手动排序。 M(old L490-501): D,N (翻倍付账),S
447 - 豁免不外溢。 M(old L502-504): S
448 - 阻塞解除后给延后单重新定价:派发前一单时带必答项。 M(old L502-504): S
449 - 必答项:你的改动让 #X 变简单、变难、变得不必要还是无影响。 M(old L502-504): S
450 - 派发后一单前用该回答重读它的选项与成本,⛔ 不沿用立单时那份。 M(old L504-507): S
451 - 跨车道简单阻塞项直接接手:本车道卡被他车道卡挡住,且阻塞项机械、规格清楚、S 级。 M(old L504-507): S
452 - 命中即被挡座位直接接手做掉,⛔ 不持续等待。 M(old L507-510): D,S
453 - 接手在他车道卡上走完整认领、尊重其热文件串行队、完工留收单注记。 M(old L507-510): D,S
454 - 带设计判断/语义权衡的仍归属地车道;接手细则见 references/dispatch-runbook.md M(old L507-510): D,S
455 - 取卡全序:priority:p0 插队 〉 pm:blockingtarget: 板上项 〉 type Bug 〉 其余;同级按卡龄。 M(old L507-510): D,S
456 - pm:blocking 级内先按解锁扇出(从 Blocked-by: 反向索引现算,⛔ 扇出数不落标签)。 M(old L512-519): D×3,N (P1–P5 tombstone),S
457 - 全序每级取既有信号现读/现算,零逐卡维护;优先是排序不是豁免。 M(old L512-519): D×3,N (P1–P5 tombstone),S
458 - 解锁那一刻 PM 自己的判断最不可信:裁决收窄或关掉了那张卡是假设不是前提。 M(old L512-519): D×3,N (P1–P5 tombstone),S
459 - 该假设以机制假设身份进派发令,被证伪就在同一张卡公开更正。 M(old L512-519): D×3,N (P1–P5 tombstone),S
认领(先认领后动工)
463 - 同账号多会话共享 GitHub 身份:assignee 只回答有 agent 认领了,认领评论承载身份。 M(old L523-529): S
464 - assignee 字段归 PM:原子对 step 1 设,dev 席恒不写它;跨账号 assignee 不是你 ⇒ 永不碰。 M(old L523-529): S
465 - 选中的单派发前按序执行一个原子对。 M(old L523-529): S
466 - ① Assign @me,并把 pm:dispatched 与摘 pm:queue 放进同一次标签写入。 M(old L523-529): S
467 - step ① 之后获得 assignee 的直接弃出本批。 M(old L530-533): D
468 - ② 认领评论(英文),固定形状见 模板与表 节;首行以字面 Claim: 开头是机器判据。 M(old L530-533): D
469 - 巡查谓词只认 Claim: 这一个拼写且保持严格,修法是全舰队向它收敛,⛔ 不放宽谓词。 M(old L530-544): template explanations → rules, S
470 - session ID 不可省;mode:subagent 的 dev 与 PM 同会话同 ID,甄别身份是分支。 M(old L530-544): template explanations → rules, S
471 - Clause-②: yes | no 是条款②内容肢的强制申报,恒英文机器判据,恰这两种拼写。 M(old L530-544): template explanations → rules, S
472 - Clause-② 判据:本卡改变契约接受/拒绝行为或扩大公开面吗;yes 绑定入队闸门。 M(old L530-544): template explanations → rules, S
473 - Container & model 行的档位引当次 node scripts/pm/dispatch-gates.mjs --tier 〈paths〉 输出,⛔ 不凭记忆。 M(old L530-544): template explanations → rules, S
474 - 末行 Serial constraints cleared 是落在评论里的读数,同包在飞单不点名等于没查。 M(old L545-550): S
475 - 末行点名同包/同文件的前驱 PR 与在飞认领,及本卡 pin 断言的兄弟卡;无则 none。 M(old L545-550): S
476 - 本卡 pin 断言兄弟卡在改的行为 ⇒ 派发令注明,并在用例内预登记翻转触发词,⛔ 不修绿。 M(old L545-550): S
477 - 文件面对跨域例外单必填、普通单建议;分支名必须带 issue 号。 M(old L545-550): S
478 - 家族派发的折叠认领:共享分支按链首卡命名;每张成员卡各留认领评论并点名该分支。 M(old L550-554): S
479 - 折叠的一 PR 正文多行 Fixes #〈n〉 每成员一行、逐卡 commit;完整串行约束检查落链首认领。 M(old L550-554): S
480 - 限流不拆原子对:发不出评论就撤 assign 或不开始;配额尽则整对排队,永不留半个。 M(old L550-554): S
481 - ③ 竞态复读:认领评论上墙后重读全线程;认领评论时间戳是唯一仲裁。 M(old L555-559): S
482 - 更早的评论带不同 session ID/分支 ⇒ 你输了,回 already claimed — yielding 另选。 M(old L555-559): S
483 - 让行是交接不是退场:连同让行评论交出已诊断的一切与已取的板面读数,赢家不必重扫。 M(old L555-559): S
484 - dev 侧早推分支,远程分支是在飞工作最硬的证据。 M(old L561-573): N (Refs/closes-list and zero-commit rationale),S
485 - 死认领回收:认领 〉~24h ⇒ 疑死;判死主腿 = 搜引用本卡的 PR、读其 merged/merged_at M(old L561-573): N (Refs/closes-list and zero-commit rationale),S
486 - ⛔ 判死不读 closes-list;承诺分支缺席与提交扫描失效只能支持判死、永不单独确立。 M(old L561-573): N (Refs/closes-list and zero-commit rationale),S
487 - 零引用 PR ⇒ 停下发问,⛔ 不判什么都没落地。 M(old L561-573): N (Refs/closes-list and zero-commit rationale),S
488 - 回收前先救工作树:向任何派发 worktree 提交前先过存活/所有权检查。 M(old L561-573): N (Refs/closes-list and zero-commit rationale),S
489 - 或对树最新 mtime 过明确年龄阈值;⛔ 不凭 GitHub 侧静默动手。 M(old L561-573): N (Refs/closes-list and zero-commit rationale),S
490 - 过栏后,派发 worktree 的未提交改动先 WIP commit 到派发分支并 push,sha 记进回收评论。 M(old L561-573): N (Refs/closes-list and zero-commit rationale),S
491 - WIP commit 标 INCOMPLETE AND UNREVIEWED;续派者 diff 它,⛔ 不无审续建。 M(old L561-573): N (Refs/closes-list and zero-commit rationale),S
492 - WIP 信息只写观察到的(脏路径/行数/sha),⛔ 不写席位行为的现在时断言。 M(old L561-573): N (Refs/closes-list and zero-commit rationale),S
493 - 再评论询问,静默一窗后摘 assignee(注明原因)回队;有带提交活分支的认领永不回收。 M(old L561-573): N (Refs/closes-list and zero-commit rationale),S
494 - 误伤活席位 ⇒ 令其追加式更正,落 PR 正文不落分支历史。 M(old L561-573): N (Refs/closes-list and zero-commit rationale),S
派发

Table 2 — passages left out, by class (old file be2594e6, 971 lines)

class old lines (approx.) examples
provenance: ruling dates and date-pointers ((YYYY-MM-DD 裁定), 维护者 YYYY-MM-DD) 87 lines carried a date (97 dates) every 裁决 tag; the 2026-08-12 charter sentence; the request-review, governed-merge and 代裁 provenance chains
verbatim maintainer quotations (「…」) 111 lines carried quote marks (124 quotes) 代裁通道 charter, 「tong y 4」, 「四维分析中…至少50%」, 「明显的问题直接修…」 → each rewritten as its rule; the frame block's own quotes kept (ruled exception)
incident narratives and 实测: tails 22 lines 16-minute seat misread, 40-minute triage dump, 三项卡 burnt round, 截断数据 fence, 三者皆无 claim, main-red hour, sanitizer indistinguishability
rationale / justification tails (Table-5 DEM class) ≈83 lines cache-TTL reasoning, 「读者三个」, 「零逐卡维护」, 探针代价, send_later reasoning, threshold-and-drain reasoning, 「防错归门禁,判断归档位」
duplicates of a rule already stated elsewhere in the file or in a reference (Table-5 DUP class) ≈83 lines the 护栏 section's 2nd–4th copies (15), 复核 glosses re-summarising the checklist (6), 入队与落地 restatements of contract-review / landing-operations (12), claim-template explanations, 派发词 clauses verbatim in the runbook
retired constructs and tombstones (Table-5 DEL class) 6 lines 借调 tombstone (rule kept as 按仓拆席), P1–P5 rejection, superseded 2026-08-10 cloud default, retired summary-view / batch-adjudication channel, superseded 2026-08-26 director ruling
first-person seat voice / self-tests 4 lines 本会话, 分诊席自测 token figures (the ≤4万 criterion survives)
model aliases in operational text 19 lines tier ladder and claim template now speak in 下限档 / 默认判断档 / 契约复审档 (CONTRACT_REVIEW_TIER)

Net: 971 → 811 lines (−160); 59 rule bullets → 631 (the old file packed several rules per 120-byte line); table lines 51 → 51; fence lines 0 → 11 (the claim template); dates 97 → 2 (frame block only); quote marks 124 → 3 (frame block only); ⛔ 142 → 172 (one per prohibition line, every one on a prohibition).

Table 3 — literal sentences and spellings kept because a gate or a predicate pins them

literal (kept verbatim) pinned by
**ACCEPT 之后的路径分叉 (start anchor) and 本段只适用本循环派发的 dev PR (end anchor), with the five governed globs as code spans between them and no other **-shaped span scripts/pm/check-governed-prose.mjs (PROSE_SURFACES)
the whole decision-frame block from **每个方案必须沿四条固定评估轴分析… through 推荐意见必须基于这四条轴给出理由;四轴冲突时如实呈现权衡, — byte-identical, md5 b9a0de17880c39e412055e656a953222 scripts/check-skill-frame-sync.mjs (COPIES anchors, axis map, count mentions, anti-dormancy fingerprints) and check:skill-frame-freshness
Claim: as the first word of the claim comment scripts/pm/check-half-states.mjs claim predicate (H2 / H34)
Clause-②: yes / Clause-②: no check-half-states.mjs, scripts/pm/check-clause2-carriers.mjs
Blocked-by:, Restart-when:, Restart-touch:, Unlock-action: re-check PR #M check-half-states.mjs line-anchored directives (the ratchet's anchored exemption class names the same spellings)
os-dev-report marker (plain-text first line; HTML-comment form read as equivalent) collection predicate in this file and .claude/agents/os-dev.md
GOVERNED_APPROVERS, os-zhuang, hotlong scripts/pm/check-governed-queue-guard.mjs
CONTRACT_REVIEW_TIER scripts/pm/dispatch-gates.mjs tier constant
needs:contract-review, auto-adjudicated, awaiting a human merge, UNRECOGNISED / NOT APPLICABLE, sweep INCOMPLETE, already claimed — yielding, INCOMPLETE AND UNREVIEWED, Triage: lands in …; rationale: …, Size/model suggestion: protocol spellings read by sibling seats and patrols
docs/adr/** · .claude/** · skills/** · AGENTS.md · CLAUDE.md inside the ACCEPT-fork region check-governed-prose containment (must equal GOVERNED_SURFACES)

Table 4 — conflicts found and the reading taken (not resolved by editing any other file)

conflict reading taken
「⛔ 本文与标签不写模型名」 (old L763) vs. the tier ladder, seat-tier policy and claim template naming three model aliases (old L541, L580–583, L598–603) the stricter statement: zero model names in the file; tiers are spelled 下限档 / 默认判断档 / 契约复审档 with the value single-sourced in dispatch-gates (--tier output); the claim template's model: value becomes a placeholder pointing at that output
run-to-empty stated per 轮 in the sweep section and per fire in the finding section (old L351–361 vs. L401–406), while 轮 was undefined 轮 / fire / 批 / 班 defined once in 入口与角色; run-to-empty encoded once, per fire, resuming from label state; 收工点 / 收工存档 / 波次 moved under the executing seat
护栏 「PM 不写任何文件」 stated without its exception vs. 不变量's .claude/ exception one 红线 line carries the rule and the exception together (the exception is the ruled one)
single-lane seat grading: this file says the repo:* seat of a single-lane repo does the three mechanical duties itself (incl. finding first-touch grading); lane files differ SKILL.md's own text kept (lane files are member 3's surface)
director's contract-review duty: this file lists it as optional post-hoc audit while the lane file's wording differs SKILL.md's own text kept (needs:contract-review 事后审计, optional; release stays in-seat)
guard-index row says frame-sync watches 「四份拷贝」; the gate watches two corrected to 两份 (factual, gate-verified)
「Version Packages PR 默认永不催」 sat in 护栏 but is conditional kept as a ⛔ line under 轮次报告与节奏, not in 红线
digest 优先级 lines: ruled to be added 「only if they fit by merging adjacent lines」 measured: no two adjacent digest bullets merge within 120 bytes (shortest pair sums above 118), so the digest stays at its 150 lines with the 护栏→红线 move only; 优先级 lives in SKILL.md

Two Phase-3 riders recorded on the audit anchor are folded in as single lines and are flagged here for the seat's strike-or-keep: the clause-② pointer now names 适用面 among the topics routed to references/contract-review.md (line 646); the close-reason discipline (state_reason ⇔ recorded reason) is line 136. The Epic 子树车道 section is kept as its own section in its current position (it is one of the file's own sections even though the ruling's section list omitted it).

Gate verdicts (run on the pushed head ca431ec1b; exit codes captured before any pipe)

  • Fourth patch round (head 66338b6a0, +1 −1 lines in SKILL.md, 811 unchanged): node scripts/pm/check-skill-line-ratchet.mjs → exit 0 (SKILL.md is 811 lines (ceiling 811; headroom 0), widest table row is 342 bytes (pin 342; headroom 0), core-rules.md is 150 lines (ceiling 150; headroom 0)); pnpm check:skill-frame-sync → exit 0 (2 copies … isomorphic across 2 files; 4 count mention(s) agree); pnpm check:pm-skill-id-lint → exit 0 (24 file(s) clean); pnpm check:pm-governed-prose → exit 0 (name all 5 registered governed surfaces … and claim no others); pnpm check:nul-bytes → exit 0; hygiene greps on both files all 0 outside the front matter and the frame block.

  • Third patch round (head 4f4c05a14, +7 lines in SKILL.md, digest merge + 1 line, ceiling row → 811): node scripts/pm/check-skill-line-ratchet.mjs → exit 0 (SKILL.md is 811 lines (ceiling 811; headroom 0), widest table row is 342 bytes (pin 342; headroom 0), core-rules.md is 150 lines (ceiling 150; headroom 0)); --self-test 155 cases pass; pnpm check:skill-frame-sync → exit 0 (2 copies … isomorphic across 2 files; 4 count mention(s) agree); pnpm check:pm-skill-id-lint → exit 0 (24 file(s) clean); pnpm check:pm-governed-prose → exit 0 (name all 5 registered governed surfaces … and claim no others); pnpm check:nul-bytes → exit 0; node scripts/pm/check-clause2-carriers.mjs --self-test → exit 0 (150 cases pass); hygiene greps on both files all 0 outside the front matter and the frame block (dates, quotes, card numbers, markers, fingerprints, seat voice, model aliases, and the withdrawn phrase 人工确认).

  • Patch round (head 366f97cc4, two in-place rewrites, 804 lines unchanged): node scripts/pm/check-skill-line-ratchet.mjs → exit 0 (SKILL.md is 804 lines (ceiling 804; headroom 0), core-rules.md is 150 lines (ceiling 150; headroom 0)); pnpm check:skill-frame-sync → exit 0 (2 copies … isomorphic across 2 files; 4 count mention(s) agree); pnpm check:pm-skill-id-lint → exit 0 (24 file(s) clean); pnpm check:pm-governed-prose → exit 0 (name all 5 registered governed surfaces … and claim no others); pnpm check:nul-bytes → exit 0; hygiene greps on both files all 0 outside the front matter and the frame block.

  • pnpm check:pm-skill-ratchet → exit 0 — ✓ .claude/skills/pm-dispatch/SKILL.md is 804 lines (ceiling 804; headroom 0) · widest table row is 342 bytes (pin 342; headroom 0) · references/core-rules.md is 150 lines (ceiling 150; headroom 0); --self-test155 cases pass.

  • pnpm check:skill-frame-sync → exit 0 — 2 copies … structurally isomorphic across 2 files; 4 axes; binding sentence present in all 2; 4 count mention(s) agree; 73 markdown files scanned for undeclared copies; --self-test 13 + 5 + 3 cases pass; check:skill-frame-freshness → exit 0 (the frame itself is unchanged).

  • pnpm check:pm-skill-id-lint → exit 0 — 24 file(s) clean (pattern /#[0-9]{3,}/g).

  • pnpm check:pm-governed-prose → exit 0 — 2 instruction surface(s) name all 5 registered governed surfaces … and claim no others; --self-test 28 cases pass.

  • pnpm check:nul-bytes → exit 0; pnpm check:pm-governed-merges → exit 0 (263 assertions).

  • node scripts/pm/check-governed-merges.mjs --test on the three paths → exit 3 (GOVERNED: .claude/** ×2; the ratchet script is not on the register) — this PR stays a draft for a human merge.

  • Derived union: node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --commands (32 commands, identical whether derived from the three paths or from the merge base); every command run and recorded; --ran → exit 0 — ✓ dispatch-gates --ran: 32 derived famil(ies) accounted for — 32 run, 0 NOT-MEASURED. pnpm check:pm-dispatch-gates ran detached as its header requires: ✓ dispatch-gates self-test: 1402 cases pass. check:doc-formula-expressions needed the @objectstack/formula and @objectstack/lint builds first (both through the lock, VERDICT command-exit 0) and then reported ✓ … 22 record-scoped formula example(s) … judged clean.

  • Whole-repo lint through the lock: OS_VERIFY_LOCK_SLOT=issue-15379-1b bash scripts/pm/os-verify-lock.sh -c 'pnpm lint'VERDICT command-exit 0 · held the lock 76s · waited 0s.

  • Hygiene greps on both files, outside the front matter and the frame block: dates 0 · 「」 0 · straight double quotes 0 · #NNN 0 · ⚠/⭐ 0 · fingerprint phrases 0 · 本席/上一席 0 · model aliases 0; every ⛔ in both files marks a prohibition.

🤖 Generated with Claude Code

https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox


Generated by Claude Code

…one rule per line, templates last

The PM operating protocol keeps every binding rule, every lookup table and every form, and drops the provenance narratives, ruling dates, verbatim quotations and incident post-mortems. A 红线 section of 15 absolute prohibitions and a five-line precedence section lead the file; the sections keep their order; the decision-frame block is byte-identical. The digest moves its guardrails to the top under the same name, and the line ratchet re-pins the SKILL.md ceiling (1005 → 804) and its widest-table-row pin (642 → 342) at the landed counts.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox
@claude claude Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Sep 4, 2026
@claude

claude Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor Author

Table 1 — part B (continuation of the PR body's Table 1; same legend; re-rendered after the fourth patch round)

# line note
498 - 一单一次 Agent 调用,subagent_typeos-dev,后台并行。 M(old L577): straight quotes removed
499 - 模型分档是 PM 的逐卡显式决定;档位值单源在 dispatch-gates 常量,⛔ 本文不写模型名。 M(old L579-583): D,Q; model aliases → tier names
500 - 下限档给机械卡(正确性由门禁农场机械判定)。 M(old L579-583): D,Q; model aliases → tier names
501 - 默认判断档给 M/L、裁决实施与任何带设计判断的卡;拿不准就升一档。 M(old L579-583): D,Q; model aliases → tier names
502 - 上限 = 契约复审档(CONTRACT_REVIEW_TIER),给最重协议/流程/编排卡,按卡取用非新默认。 M(old L579-583): D,Q; model aliases → tier names
503 - 强制条款①:凡改协议语义面的卡一律契约复审档。 M(old L583-589): D,N (审计师 rationale),S
504 - 协议语义面 = 本 SKILL.md 主文件、决策框架拷贝所在文件与 .claude/agents/os-dev.md M(old L583-589): D,N (审计师 rationale),S
505 - 仅 references/** 面、或治理面上一行级机械文本改动的卡,降为默认判断档施工。 M(old L583-589): D,N (审计师 rationale),S
506 - 纯机械一行 PM 酌定可至下限档;降档施工的补偿控制 = 复核席跑契约复审档。 M(old L583-589): D,N (审计师 rationale),S
507 - 降档施工只经契约复审档复核到达维护者,⛔ 不新增标签不新增链。 M(old L583-589): D,N (审计师 rationale),S
508 - 强制条款②:凡改变契约接受/拒绝行为或扩大公开面的卡一律契约复审档。 M(old L590-593): D,S
509 - 条款②判据即代裁的机械边界测试与 references/lanes/spec.md 席内分派判据,⛔ 不另抄。 M(old L590-593): D,S
510 - 负边界:运行时权限/安全行为变更不是条款②,归人工地板安全/权限边界类。 M(old L593-598): D,N (两独立席位 rationale),S
511 - 条款②只指已发布契约面。 M(old L593-598): D,N (两独立席位 rationale),S
512 - 卡面对条款②的复述仍是条款②;额度耗尽豁免及其 needs:contract-review 补偿一并及于它。 M(old L593-598): D,N (两独立席位 rationale),S
513 - 豁免够不到的地板只有维护者裁决能设。 M(old L593-598): D,N (两独立席位 rationale),S
514 - 席位档策略:skills 车道外的执行席与分诊席默认判断档会话。 M(old L598-600): D; aliases → tiers
515 - 契约复审档留给裁决/复审子代理、skills 席与条款②工作。 M(old L598-600): D; aliases → tiers
516 - 降档出口两条:额度耗尽豁免,与主动预降(余量吃紧可预先降档)。 M(old L600-603): D; aliases → tiers
517 - 额度耗尽豁免仅当契约复审档实测不可用才落默认判断档,⛔ 不再往下。 M(old L600-603): D; aliases → tiers
518 - 降档的档位与理由记入认领评论 Container & model 行。 M(old L600-603): D; aliases → tiers
519 - 档位逐次派发显式传参,永不省略。 M(old L604-606): S
520 - 解析顺序、pin 语义与允许名单回退陷阱以 os-dev 定义 frontmatter 注释为权威。 M(old L604-606): S
521 - 分诊 suggestion 行是输入不是决定,不采纳给理由。 M(old L604-606): S
522 - 派发词 ⛔ 默认不整段粘贴 issue 正文:让 dev 自己读 GitHub 全文与全部评论。 M(old L608-611): S
523 - 派发词必须要求 dev 自查正文完整性。 M(old L608-611): S
524 - 派发词只带增量,构造细则与条款原文见 references/dispatch-runbook.md M(old L608-611): S
525 - 三分区:裁决(不可重裁)/ PM 机制假设(须实测,鼓励证伪)/ PM 建议的路线(可选,实测优先)。 M(old L612-614): S
526 - 凡我觉得可以这样的一律降到第三区;⛔ 不把假设写成裁决。 M(old L612-614): S
527 - 标准非协商条款 ⛔ 不抄进派发词:hook 已机械强制段与 os-dev.md 已载通用段砍掉。 M(old L615-618): S
528 - ⛔ 不砍卡类特有约束:ADR 类 draft-only、tier 推导引用、棘轮实况、释义纪律。 M(old L615-618): S
529 - 无条件条款只住角色文件,冲突时它胜、错了修那里,⛔ 不靠派发词临时覆盖。 M(old L615-618): S
530 - 终报要求随派发词带一句:只收机器可核字段,⛔ 复述 PR body 叙事。 M(old L619): S
531 - 机器可核字段 = gates / line_budget / deviations / files_changed。 M(old L619): S
532 - 清单、路径、行号在派发那一刻从树上取,⛔ 不从卡片/上次派发/记忆抄。 M(old L619-622): S
533 - 门禁清单用 node scripts/pm/dispatch-gates.mjs 现取,取数的是 PM。 M(old L619-622): S
534 - 点名单是线索不是规格,dev 对实际改动重取补跑;行级断言转述前必须自己重验。 M(old L619-622): S
535 - 派发令里关于代码的危害断言必须有读数(点名 call site / 路径 / 迁移)。 M(old L623-628): N (截断数据 incident)
536 - PM 测不了的危害 ⇒ 写成给 dev 的问题,⛔ 不写成栅栏;人工地板栅栏关于流程,免测量。 M(old L623-628): N (截断数据 incident)
537 - 派发令必须要求 dev 留自己的认领评论(其本身的 session ID + 分支,在 PM 那条之外)。 M(old L629-632): N (三者皆无 incident)
538 - 已认领、别动 assignee 收窄到 assignee 字段本身;认领协议已满足是另一句话且可能是假的。 M(old L629-632): N (三者皆无 incident)
539 - 触 skills/** 的卡,派发词必带 PM 定的净增行数预算(按 feature 大小定,小功能给小数)。 M(old L633-636): D,S
540 - dev 装不下预算 ⇒ 停手回报,⛔ 不自行扩写、不自行抬预算。 M(old L633-636): D,S
541 - 对外发布的技能包是平台最大的对外价值,评估恒整包整体。 M(old L633-636): D,S
542 - 文件面写两句:预期落点;生产者在别包时报备后按生产者侧修,⛔ 不在消费者侧打补丁。 M(old L637-639): S
543 - same-day churn 行:当天合并 ⇒ 先核对当前 main;在飞重叠每轮求交,相交即发四句警告。 M(old L637-639): S
544 - 被在飞重叠完全覆盖就停下回报,⛔ 不硬造 diff。 M(old L637-639): S
545 - 翻转公开语义的裁决随卡带全仓 pin 清扫,两句缺一不可,原文见 runbook。 M(old L640-642): S
546 - 条件性标准条款命中判据才抄:多实现面 ⇒ 共享一致性覆盖。 M(old L640-642): S
547 - 拒收用例 ⇒ code+status 最低断言。 M(old L640-642): S
548 - 过滤/谓词语义 ⇒ 编译面清单逐面申报,⛔ 静默略过。 M(old L643-644): S
549 - 前提先行写明:issue 正文是线索不是规格。 M(old L643-644): S
550 - premise_still_valid: false + 无 PR 是合法且常常有价值的交付。 M(old L646-651): D×2,N (superseded-ruling tombstone),S
551 - 资源与后端:S 级机械 + M ⇒ mode:subagent;S 级但不机械(判断面在设计不在门禁)按 M 待遇。 M(old L646-651): D×2,N (superseded-ruling tombstone),S
552 - mode:cloud 只保留给 L/XL、必须活过 PM 会话的工作、浏览器/dogfood 验证。 M(old L646-651): D×2,N (superseded-ruling tombstone),S
553 - build 重的 M 卡逐卡判断是否上云。 M(old L653-656): D×2,S
554 - 归档义务只落在云卡;OOM 死的单独重派;判定连同档位写进认领评论。 M(old L653-656): D×2,S
555 - 一次性云卡用 create_session,⛔ 不用 create_trigger+fire;trigger 流只留给定时/重复型。 M(old L653-656): D×2,S
556 - 云会话 SendMessage not-reachable 是设计非故障,⛔ 不复测。 M(old L653-656): D×2,S
557 - 接手中断的 dev:先试 SendMessage 复活,不可用才走接手协议,⛔ 不重跑原派发词。 M(old L653-656): D×2,S
558 - 云卡四课与接手协议增量见 references/dispatch-runbook.md M(old L653-656): P
收集
562 - 报告通道统一:GitHub 是两种模式共用的真相源;dev 终报先落 issue 评论、再作返回消息。 M(old L660-666): N (sanitizer rationale),S
563 - 收集先扫 GitHub,标记评论在 = 报告完整;两处皆无才进探活/判死。 M(old L660-666): N (sanitizer rationale),S
564 - 标记两种拼写等效:HTML 注释形与首行纯文本 os-dev-report M(old L660-666): N (sanitizer rationale),S
565 - ⛔ 仅凭 HTML 注释形式缺失永不读作报告未达;⛔ 永不把没收到失败通知读作还在跑。 M(old L660-666): N (sanitizer rationale),S
566 - 探活是每轮巡检的固定动作;完成通知不可靠,缺席什么都不证明。 M(old L668-674): S
567 - ① 定时器重挂是每次巡检的第一动作,先挂后查,链条对中断免疫。 M(old L668-674): S
568 - ② 在飞期间主巡检间隔 ≤45 分钟,待命期 60–70。 M(old L668-674): S
569 - ③ 已派发未回报的 dev 逐个发状态询问;派发后 ~45 分钟无远程产出即到门槛。 M(old L668-674): S
570 - 已有远程分支/PR 不豁免探针。 M(old L668-674): S
571 - ④ 活着 ⇒ 进度与阻塞点;回 no active task; resumed from transcript ⇒ 生前已死,询问即复活。 M(old L668-674): S
572 - ⑤ 判据永远取正向证据:分支、PR、报告、探活回包。 M(old L676-680): N (探针代价 rationale),S
573 - 45 分钟是发探针的门槛,⛔ 不是判死的门槛。 M(old L676-680): N (探针代价 rationale),S
574 - 判死只有三类依据:探针回包表明已死;宿主明确回报 stopped;超过本车道基线且连续静默。 M(old L676-680): N (探针代价 rationale),S
575 - 基线 = 本车道实录派发 → 推分支/开 PR 的端到端耗时,三五单即可用,⛔ 非本文任何常数。 M(old L676-680): N (探针代价 rationale),S
576 - mode:cloud 的 ~2h 静默是本轮收集边界(记 blocked 移步下轮),也不是判死。 M(old L682-692): S,P
577 - 停摆永不自愈:携带任务中途状态的完成通知本身就是停摆信号。 M(old L682-692): S,P
578 - 报告末句是意图不是结果 = 停摆非完成:当刻 SendMessage 续派,⛔ 不读作交付、不判死。 NEW (dev-parks-on-Monitor card): PM-side detection — an intention as the last line is a stall, not a delivery
579 - 停摆 ⇒ 立刻 SendMessage 附前台执行姿态句,⛔ 不等任何静默阈值(阈值是给没有回答的)。 M(old L682-692): S,P
580 - 复位走梯度,每次比上一次更具体;第三次停摆判 unreliable,按接手协议重派。 M(old L682-692): S,P
581 - 通知重放先算身份再读内容:与已验收那份同身份 ⇒ 记重放即结束。 M(old L682-692): S,P
582 - 重放 ⛔ 不重新验收、不重复 ACCEPT;通知到达不读作还活着,不到达也不读作已死。 M(old L688-689): S; fourth round: merged with the adjacent notification-arrival rule to hold 811 (⛔ kept)
583 - 直接验收兜底:(a) draft PR 在且 CI 全绿 + (b) 探活确认已死或 ≥2h 无推送 + (c) 报告未达。 M(old L690-692): S,P
584 - 三条件全立 ⇒ 直接按 PR 验收,复核判据不减;先探活后翻 ready。 M(old L690-692): S,P
585 - 舰队级死因(全账号断粮)下取 (a)+(c) 照常收口,PR body 就是报告。 M(old L690-692): S,P
586 - 失报与停摆细则(梯度、身份三元组、验收动作)见 references/dispatch-runbook.md M(old L690-692): S,P
复核
590 - 你是记录在案的复核人:对 GitHub 核验,⛔ 不对报告的自述核验。 M(old L696-709): checklist glosses → P
591 - 逐项判据展开在 references/review-checklist.md,每份报告对着它过。 M(old L696-709): checklist glosses → P
592 - PR 形态与范围:draft、目标 mainFixes/Part of 首行判据,翻 ready 前亲核。 M(old L696-709): checklist glosses → P
593 - Part of 卡 MERGED 时点收口;changed files 范围与 changeset/skip-changeset 分流;测试证据。 M(old L696-709): checklist glosses → P
594 - 报告在草稿 PR 时点到达,CI 收敛读数只属于复核侧:gate in_progress 是诚实读数。 M(old L696-709): checklist glosses → P
595 - 放行前亲核判据;收敛期补丁轮与本单等 CI 例外见 checklist。 M(old L696-709): checklist glosses → P
596 - 绿色输出≠ 该绿证明了被测风险:拒收断言、全绿方向与时序、pin 翻转、边界后收益。 M(old L696-709): checklist glosses → P
597 - 证伪是好运行:premise_still_valid: false 是再分诊输入;dev 纠正 PM 当众认。 M(old L696-709): checklist glosses → P
598 - 判据被测量推翻照 ACCEPT,证据要件在 checklist。 M(old L696-709): checklist glosses → P
599 - 删除与二进制:死代码删除亲核引用面;+0/-0 先疑 NUL;sweep 范围外产出成组列出。 M(old L696-709): checklist glosses → P
600 - 触 skills/** 的 PR 加问整包价值密度:从整包加载的客户 agent 的座位上读。 M(old L710-713): S
601 - ⛔ 不从功能作者的座位读价值密度。 M(old L710-713): S
602 - 超派发预算或小功能大扩写 ⇒ REWORK,⛔ 不因已经写好了放行。 M(old L710-713): S
603 - 判决 ACCEPT:issue 英文短评论,核对清单结论 + 抽查读数 + 偏差,链接 PR,⛔ 不复述其叙事。 M(old L715-718): S
604 - 判决 REWORK:逐项反馈,同认领重派;补丁轮优先 SendMessage 续派原 dev;最多 2 轮,第三次升级。 M(old L715-718): S
605 - 判决 ESCALATE:见 升级与决策 节。 M(old L715-718): S
606 - ACCEPT 之后的路径分叉:翻 ready / 挂 auto-merge / 入队前先取一次 PR 的路径面。 M(old L720-752): D×5,Q×3,N (main-red incident),S; governed globs kept verbatim
607 - 路径面用 get_files 取,⛔ 不看报告自述;动手之前先分,不是事后对照。 M(old L720-752): D×5,Q×3,N (main-red incident),S; governed globs kept verbatim
608 - governed 面统一定义:docs/adr/** + .claude/**(全量,含 agents/hooks/settings)+ skills/** M(old L720-752): D×5,Q×3,N (main-red incident),S; governed globs kept verbatim
609 - governed 面同含 AGENTS.md + CLAUDE.md;agent 指令文件跨仓同判,仓集读 GOVERNED_REPOS,此处不列。 M(old L720-752): D×5,Q×3,N (main-red incident),S; governed globs kept verbatim
610 - 路径面一条命中 ⇒ ACCEPT 换终局四件套。 M(old L720-752): D×5,Q×3,N (main-red incident),S; governed globs kept verbatim
611 - ① 复核结论照常写在 issue 上;技能面 PR 的复核席须跑在契约复审档位。 M(old L720-752): D×5,Q×3,N (main-red incident),S; governed globs kept verbatim
612 - ② PR 留给维护者看得见地悬着;终局两条:人工直合即审核记录;授权批准 ⇒ 队列放行。 M(old L720-752): D×5,Q×3,N (main-red incident),S; governed globs kept verbatim
613 - 批准判定单源 = 队列守卫常量 GOVERNED_APPROVERS:授权账户 APPROVED 即算,⛔ 不卡 commit_id M(old L720-752): D×5,Q×3,N (main-red incident),S; governed globs kept verbatim
614 - 批准后再推提交也不过期;无批准 ⛔ 不翻 ready、不入队、不挂 auto-merge。 M(old L720-752): D×5,Q×3,N (main-red incident),S; governed globs kept verbatim
615 - ③ 在 draft PR 上向两个授权批准账户 os-zhuanghotlong 都 request review,主动推。 M(old L720-752): D×5,Q×3,N (main-red incident),S; governed globs kept verbatim
616 - 等人合清单从此活在 GitHub 的 Review-requested 队列,合并自动消项。 M(old L720-752): D×5,Q×3,N (main-red incident),S; governed globs kept verbatim
617 - PR 作者身份即两账户之一的席位时,对该账户请审必失败(author-identity 422)。 M(old L720-752): D×5,Q×3,N (main-red incident),S; governed globs kept verbatim
618 - 该账户改为把 PR assign 给它替代通知,另一账户照常请审;轮次报告点名说明走了兜底。 M(old L720-752): D×5,Q×3,N (main-red incident),S; governed globs kept verbatim
619 - 请审走免碰 draft 位的专用 REST 端点,MCP 兜底显式带 draft: true;端点事实住 platform-readings。 M(old L720-752): D×5,Q×3,N (main-red incident),S; governed globs kept verbatim
620 - ④ 轮次报告单列 awaiting a human merge。 M(old L720-752): D×5,Q×3,N (main-red incident),S; governed globs kept verbatim
621 - 混合 diff 一条命中就分叉,⛔ 不按比例判;要拆就让 dev 单独开 PR。 M(old L720-752): D×5,Q×3,N (main-red incident),S; governed globs kept verbatim
622 - 已入队才读到本条 ⇒ 转 draft 与 disable 都做;出队以阳性探针答,ref 缺席只旁证。 M(old L720-752): D×5,Q×3,N (main-red incident),S; governed globs kept verbatim
623 - skills 车道自有 PR 再按 diff 内容分流:diff 含任一 .md 文件 ⇒ 终局四件套照旧。 M(old L720-752): D×5,Q×3,N (main-red incident),S; governed globs kept verbatim
624 - 纯代码面(scripts/pm/ 工具、.claude/ hooks/workflows/settings、非 md 产物)⇒ skills 席自审。 M(old L720-752): D×5,Q×3,N (main-red incident),S; governed globs kept verbatim
625 - skills 席自审按契约复审档、清单不减,然后直接落地(ready → 入队),⛔ 不推维护者。 M(old L720-752): D×5,Q×3,N (main-red incident),S; governed globs kept verbatim
626 - 分流只及 skills 车道自有 PR,其它车道 governed 面照旧。 M(old L720-752): D×5,Q×3,N (main-red incident),S; governed globs kept verbatim
627 - 路径面干净的才转 ready → 入队;队列是唯一被认可的落地路径,⛔ 永不队列外合并。 M(old L720-752): D×5,Q×3,N (main-red incident),S; governed globs kept verbatim
628 - 入队资格 = PR 上每一个 check 全绿,⛔ 不是 required 子集;required 集是队列强制的地板。 M(old L720-752): D×5,Q×3,N (main-red incident),S; governed globs kept verbatim
629 - 非必查门的红要么是真缺陷要么是坏门,两者都归 PM 入队前处置。 M(old L720-752): D×5,Q×3,N (main-red incident),S; governed globs kept verbatim
630 - 本段只适用本循环派发的 dev PR;PM 自己的工具 PR 留维护者。 M(old L748-752): N,S
入队与落地
634 - 细则见 references/landing-operations.md,落地窗口查阅。 M(old L756-763): D×2,N,S
635 - 条款②入队闸门:翻 ready / 入队前先取 PR 实际 diff;diff 是事实,卡片语义是预测。 M(old L756-763): D×2,N,S
636 - --tier 嫌疑行是提示不是裁定。 M(old L756-763): D×2,N,S
637 - 双肢命中任一且派发档位低于契约复审档位 ⇒ ⛔ 禁止入队。 M(old L756-763): D×2,N,S
638 - 路径肢 = diff 触及契约面 packages/spec/src/**,含 error-code-ledger 与 *.zod.ts 契约 schema。 M(old L756-763): D×2,N,S
639 - 声明肢 = 认领评论声明 Clause-②: yes,与路径无关;错误的 no 是可审计的假申报。 M(old L756-763): D×2,N,S
640 - ⛔ 永不把路径触发读作条款②的完整覆盖:它只盖路径肢,内容肢由声明行承载。 M(old L756-763): D×2,N,S
641 - 档位以 dispatch-gates 常量 CONTRACT_REVIEW_TIER 为准,模型升级只改一行一个文件。 M(old L756-763): D×2,N,S
642 - 交付后复核由派发席在席内完成:达档 PM 自审,或派契约复审档复核子任务。 M(old L756-763): D×2,N,S
643 - PASS ⇒ 同席剥标、ready、auto-merge;FAIL ⇒ 补丁轮;⛔ 免复核不放行。 M(old L764-769): D×2,S
644 - 真正设计分叉照旧进决策箱,席内复核 ⛔ 不替代维护者裁定。 M(old L764-769): D×2,S
645 - 外部评审链降为可选事后审计,非放行前提。 M(old L764-769): D×2,S
646 - needs:contract-review(恒英文)由 PR 创建者随可复审契约增量同笔挂:draft PR,或先到的报告。 M(old L764-769): D×2,S
647 - 挂标后复核完成前短暂停靠;⛔ 不前瞻预挂。 M(old L769) + Phase-3 rider: applicability topic added to the pointer
648 - 席内复核的适用面、载体纪律、资格与归属、降档保险丝见 references/contract-review.md M(old L770-772): S
649 - 碰生成物的 PR 入队前先同步 + 整体重生成:四步序 bash scripts/pm/os-regen-merge.sh M(old L770-772): S
650 - os-regen 的陷阱与锚点禁令见 landing-operations A。 M(old L773-776): S,P
651 - 跟到 MERGED 为止,入队后的看护归车道 PM 的落地窗口:每轮同时读队列分支与 origin/main M(old L773-776): S,P
652 - 默认分支 push 即触发对外部署的仓,只在验证层存在时才合并;无验证层 ⛔ 不合并。 NEW (deploy-on-merge card): rule (a) — no verification layer, no merge
653 - 验证层 = 部署以 CI 为闸、发布后探测线上面、失败自动回滚并立卡。 NEW (deploy-on-merge card): rule (a) — what the verification layer is
654 - 该类仓的落地判据是已发布且探测通过,⛔ 不是 MERGED;跟到发布为止。 NEW (deploy-on-merge card): rule (b) — landing criterion is published-and-probed
655 - 合并后工作流不在任何 PR 的检查清单上,读 PR 检查的规则对它全盲。 NEW (deploy-on-merge card): rule (c) — post-merge workflows are invisible to PR-check rules
656 - 该类仓的部署工作流按独立检查类登记,与 PR 检查分开读。 NEW (deploy-on-merge card): rule (c) — deploy workflow registered as its own check class
657 - 人闸不是验证层的替代:答不了会不会坏的人闸只买延迟,⛔ 不以人闸代替探测。 NEW (deploy-on-merge card): rule (d) — a human gate is not a substitute for a probe
658 - 首次入队 flip 定点、MERGED 两读数、关键 PR 订阅与退订/归档细则见 landing-operations B。 M(old L773-776): S,P
659 - 落地记账:座位贴落地清单即账本,逐轮即时记;确需全仓核对时首选 head:claude/ 精确过滤。 M(old L777-783): S
660 - 红/踢出处置在同一落地窗口内做:机器输入是 merge-queue triage workflow 的分诊评论。 M(old L777-783): S
661 - 判据唯一来源是签名台账(锚点 issue),优先于现场判断;只有人工能升级台账。 M(old L777-783): S
662 - 疑似新 flaky 只留提请,⛔ 不自行加表;纯计数不追记,只有改变修法作用域时才记。 M(old L777-783): S
663 - 四分支:已知 flaky ⇒ 原样重投;已修签名再现 ⇒ ⛔ 不重投,判新问题重新诊断。 M(old L777-783): S
664 - 基上缺已合修复 ⇒ merge main 推新提交,重跑无效。 M(old L777-783): S
665 - 新签名 ⇒ ⛔ 不重投,在 PR 与其 Fixes 卡各留完整签名与初判。 M(old L777-783): S
666 - 每次处置留审计评论,重投写签名与台账依据。 M(old L784-786): S,P
667 - 依赖前棒才能转绿的 PR:draft 停放 + 签名级预期红清单 + 解除条件,见 landing-operations C。 M(old L784-786): S,P
668 - 多个已实现 PR 全碰生成物 ⇒ 串行接力一次只放行一个,每棒一整圈,见 landing-operations D。 M(old L785-786): P
轮次报告与节奏
672 - 每轮向维护者打中文轮次报告(chat 通道):issue → 判决 → PR 链接 → 备注的表。 M(old L790-802): S
673 - 报告加升级项、代裁清单(分诊)、awaiting a human merge 项、governed 合并审计清单。 M(old L790-802): S
674 - 审计清单实跑 node scripts/pm/check-governed-merges.mjs --since 〈上轮〉,⛔ 不凭记忆汇总。 M(old L790-802): S
675 - 车道审计是早警;权威合并窗口与认定/回滚处置归总监席,见 references/lanes/director.md M(old L790-802): S
676 - 报告含 UNRECOGNISED 行:对本轮门禁日志 grep UNRECOGNISED 逐行照录,NOT APPLICABLE 行也在内。 M(old L790-802): S
677 - 健康指标五个:可派发库存(open pm:queue 未认领及趋势);决策箱(待维护者数)。 M(old L790-802): S
678 - 决策箱指标还要点名带开放下游依赖的决策卡,从 Blocked-by: 反向索引现算。 M(old L790-802): S
679 - finding 数与中位年龄:裸标签数即未定级数,hold 已换标不在内。 M(old L790-802): S
680 - 裸卡数与中位年龄:sweep 析取①,老化 = 首触欠账。 M(old L790-802): S
681 - 发版阻塞 = 三仓 target:〈major〉 之和,归零 = 三张板都空;总 open 数刻意不在指标内。 M(old 护栏 L929-932): D; conditional prohibition kept in-section
682 - Version Packages PR 默认永不催,挂着的发布 PR 是常态,⛔ 不进维护者摘要。 M(old 护栏 L929-932): D; conditional prohibition kept in-section
683 - 唯一例外 = 重要修复已合 main 在等发布;提醒必须点名该修复与不发版的用户可见后果。 M(old L804-808): D,N (/compact rationale)
684 - 波次收工点(执行席):① 收工点 = 会话内在飞归零,⛔ 不在复核中途压缩;云卡不挡。 M(old L804-808): D,N (/compact rationale)
685 - ② 收工存档 = 上下文里的判断 flush 到 GitHub,随后立即派下一波,⛔ 不等人闸。 M(old L804-808): D,N (/compact rationale)
686 - /compact 由维护者在终端会话择机执行,永远不是派发前提。 M(old L807): N
停止条件与待命
690 - 停:队列空或 rounds 用尽(仅一次性调用适用);一轮 ≥ 半数派发失败或升级;维护者打断。 M(old L812-817): S
691 - 常设座位队列清空不等于退场,是切换待命姿态:巡检间隔按收集节②。 M(old L812-817): S
692 - 待命五项各以其主节为准,⛔ 此处不另抄:findings 配合;pm:blocked/pm:on-hold 解锁扫描。 M(old L812-817): S
693 - 在飞/已入队 PR 跟到 MERGED;决策箱仅在报告中列出 ⛔ 不 nag;跨车道备忘跟进。 M(old L812-817): S
694 - 退场只有两个入口:维护者交接令(走交接收尾清单),或被惰性回收。 M(old L812-817): S
断粮与跨墙恢复(5 小时用量墙)
698 - 检测读数、盲区与恢复 playbook 细则见 references/platform-readings.md M(old L821-831): D,N (send_later rationale),S
699 - 权威的墙信号是失败本身:撞墙报文里的重置时刻在那一刻可得、事前查不到,记下来。 M(old L821-831): D,N (send_later rationale),S
700 - 跨墙定时器:拿到重置时刻 ⇒ 一发定点(reset + 缓冲)优先。 M(old L821-831): D,N (send_later rationale),S
701 - 没有重置时刻 ⇒ 挂每小时 cron Routine,⛔ 不用 send_later 链。 M(old L821-831): D,N (send_later rationale),S
702 - 第一枪成功的 fire 跑恢复后删除 cron。 M(old L821-831): D,N (send_later rationale),S
703 - fired 文本照定时器写法纪律。 M(old L821-831): D,N (send_later rationale),S
704 - 恢复 playbook 链的是既有规则:逐个探在飞云卡 → 直接验收兜底或 transcript 复活。 M(old L821-831): D,N (send_later rationale),S
705 - 随后重挂常规巡检 → 照常跑轮。 M(old L830-831): N
升级与决策
709 - 先过升级门槛:明显的问题直接修,大多数感觉像决定的不是决定。 M(old L835-868): Q (「明显的问题直接修…」→ rule), D×3,S
710 - 只在至少一条成立时升级:选项在产品语义或公开契约形状上真实分歧且既有规范定不了。 M(old L835-868): Q (「明显的问题直接修…」→ rule), D×3,S
711 - 或者:修复需要破坏性/难回滚动作。 M(old L835-868): Q (「明显的问题直接修…」→ rule), D×3,S
712 - 其余都是 PM 的裁量:裁定、派发、给维护者否决窗口而非许可门。 M(old L835-868): Q (「明显的问题直接修…」→ rule), D×3,S
713 - 具名不升级类(立即行动):恢复不变量的修复;技术任务间的顺序与依赖;验证策略。 M(old L835-868): Q (「明显的问题直接修…」→ rule), D×3,S
714 - dev 的 needs_decision 经 PM 复核落进不升级类的,PM 直接答复不上传。 M(old L835-868): Q (「明显的问题直接修…」→ rule), D×3,S
715 - 第三档:带前提的裁决,三件套缺一不可:① 裁决(选定路线)。 M(old L835-868): Q (「明显的问题直接修…」→ rule), D×3,S
716 - ② 把裁决挂在具名、可证伪的前提上,派发令要求 dev 先验前提再动手。 M(old L835-868): Q (「明显的问题直接修…」→ rule), D×3,S
717 - ③ 显式禁令:前提不成立就报 fork,⛔ 不许硬做,也不许悄悄退回另一个选项。 M(old L835-868): Q (「明显的问题直接修…」→ rule), D×3,S
718 - 两条元判据,同族近似单默认不进决策箱。 M(old L835-868): Q (「明显的问题直接修…」→ rule), D×3,S
719 - ① 静默丢弃的声明并入既有拒收集;新支复用母单裁决直接入队,真实语义差异才重开。 M(old L835-868): Q (「明显的问题直接修…」→ rule), D×3,S
720 - 继承的是裁决连同理由;母单理由被实测为分支特有时本条不适用。 M(old L835-868): Q (「明显的问题直接修…」→ rule), D×3,S
721 - ② 一个操作两个实现且行为不一致 ⇒ 带治理的一侧(权限闸、同意、去重、审计)胜出。 M(old L835-868): Q (「明显的问题直接修…」→ rule), D×3,S
722 - 另一侧改绑并删除,不是对齐也不是双写;反向裁只在产品语义明确要求时成立。 M(old L835-868): Q (「明显的问题直接修…」→ rule), D×3,S
723 - 落卡/升级流程 ①:先刷新卡片前提,隔夜没动的卡默认按前提未经验证处理。 M(old L835-868): Q (「明显的问题直接修…」→ rule), D×3,S
724 - 卡上每条前提行自带一条 re-check 命令,复升级时逐条跑,零命中/变形的就地改写或撤卡。 M(old L835-868): Q (「明显的问题直接修…」→ rule), D×3,S
725 - ②:决策默认锚在所属 issue(分析发评论,中文;挂 needs-user-decision、退出活动队列)。 M(old L835-868): Q (「明显的问题直接修…」→ rule), D×3,S
726 - 无自然锚才单开 [Decision] 〈一句话〉 卡;分析模板见 references/decision-analysis.md M(old L835-868): Q (「明显的问题直接修…」→ rule), D×3,S
727 - ③:答复/代裁到手,裁决记录四件同笔。 M(old L835-868): Q (「明显的问题直接修…」→ rule), D×3,S
728 - 四件 = 鲜度门 / 状态转换同笔 / Blocked-by: 活性现验 / 条件已判即判。 M(old L835-868): Q (「明显的问题直接修…」→ rule), D×3,S
729 - 鲜度门 = 录前重读晚于正文最后编辑的评论;案例与机械两旗见 references/dispatch-runbook.md M(old L835-868): Q (「明显的问题直接修…」→ rule), D×3,S
730 - 一条裁决已记录的权威载体 = 总监席每场收工的摘要台账(卡、权威、方向、状态转移)。 M(old L835-868): Q (「明显的问题直接修…」→ rule), D×3,S
731 - 卡上裁决评论是详注,仍是执行与复核的第一落点。 M(runbook 出决策箱; digest L133): NEW home
732 - 出决策箱须引一个同趟取回过的裁决 id,⛔ 时间戳加回忆不算引用。 M(runbook 出决策箱; digest L133): NEW home
733 每个方案必须沿四条固定评估轴分析,这是决策分析的核心原则,不是可选项: frame block: byte-identical (ruled exception; md5 b9a0de17880c39e412055e656a953222)
735 - 实际业务需求 — 它服务的是真实存在的业务场景, frame block: byte-identical (ruled exception; md5 b9a0de17880c39e412055e656a953222)
736 还是投机性能力面?判据要求实测(谁在写这个键、谁在读、 frame block: byte-identical (ruled exception; md5 b9a0de17880c39e412055e656a953222)
737 示例应用与真实部署的用法),「读起来像有用」不作数。这条轴会改变结论,不是陪衬。 frame block: byte-identical (ruled exception; md5 b9a0de17880c39e412055e656a953222)
738 - 项目长远合理性 — 哪个方案符合北极星方向与可持续架构(no workarounds、 frame block: byte-identical (ruled exception; md5 b9a0de17880c39e412055e656a953222)
739 contract-first),临时补丁式选项要明说长期代价。 frame block: byte-identical (ruled exception; md5 b9a0de17880c39e412055e656a953222)
740 - 防 AI 写代码犯错,尤其是防 AI 写元数据 app 犯错 — 哪个方案让 AI 在结构上更难写错: frame block: byte-identical (ruled exception; md5 b9a0de17880c39e412055e656a953222)
741 契约收紧(严格 schema、publish 时响亮拒绝)优于消费端宽容(?? 回退、静默容错)—— frame block: byte-identical (ruled exception; md5 b9a0de17880c39e412055e656a953222)
742 宽容恰是 AI 批量犯错被掩盖的温床;声明即强制,绝不让 AI 声明一个运行时不兑现的能力。 frame block: byte-identical (ruled exception; md5 b9a0de17880c39e412055e656a953222)
743 - 创业阶段不扩散需求创业阶段聚焦原则(维护者 2026-08-04 指示: frame block: byte-identical (ruled exception; md5 b9a0de17880c39e412055e656a953222)
744 「我们是一个创业项目,应该先专注于核心能力」):能力扩张默认从紧, frame block: byte-identical (ruled exception; md5 b9a0de17880c39e412055e656a953222)
745 无拉动的声明面按 implementation-first 处置,已发布零消费的能力不因沉没成本获得豁免。 frame block: byte-identical (ruled exception; md5 b9a0de17880c39e412055e656a953222)
746 过渡也从紧 —— 创业阶段不渐进(维护者 2026-08-27 裁,逐字:「项目在创业阶段, frame block: byte-identical (ruled exception; md5 b9a0de17880c39e412055e656a953222)
747 用户也很少,短期不考虑渐进。」):废弃别名/拼写与能力退役默认立即退休, frame block: byte-identical (ruled exception; md5 b9a0de17880c39e412055e656a953222)
748 不设分阶段窗口、不留双拼写宽限;staged 选项仅凭具名外部用户证据才可呈报为推荐。 frame block: byte-identical (ruled exception; md5 b9a0de17880c39e412055e656a953222)
750 推荐意见必须基于这四条轴给出理由;四轴冲突时如实呈现权衡, frame block: byte-identical (ruled exception; md5 b9a0de17880c39e412055e656a953222)
751 交维护者拍板。 M(old L887-891): Q (「tong y 4」),D,S
752 - 分歧推荐序按拉动定向:有实测拉动 ⇒ 荐长远形态一次付清;零拉动 ⇒ 荐不扩散。 M(old L887-891): Q (「tong y 4」),D,S
753 - 防错轴破余下平局向响亮/结构性;安全/权限边界与破坏性难逆动作恒在人工地板。 M(old L887-891): Q (「tong y 4」),D,S
754 - ⛔ 此序只排推荐:分歧块照旧升级,四棱同向置信门与代裁面不变。 M(old L887-891): Q (「tong y 4」),D,S
755 - 长远合理性权重恒 ≥50%:推荐以长远的读数领起,四轴冲突时其余各轴合起来投不翻它。 M(old L887-891): Q (「tong y 4」),D,S
756 - 权重按缩小而非扩大特例与契约增生读,⛔ 不据它为投机扩张背书。 M(old L892-897): Q,D,S
757 - 权重是推荐规则不是授权规则:50% 不把人工地板的事变成可派发的事。 M(old L892-897): Q,D,S
758 - 标准四棱卡面块是落卡与升级的必备件,每张 needs-user-decision 卡落卡即带。 M(old L892-897): Q,D,S
759 - 收件箱由维护者定期消化,⛔ 不 assign 推送。 M(old L898-905): D×4,N (retired summary-view tombstone),S
760 - 四维分析从业务的角度写;写法六项与四棱块固定形状见 references/decision-analysis.md M(old L898-905): D×4,N (retired summary-view tombstone),S
761 - 推荐是输入,永不是放行,人工地板不变。 M(old L898-905): D×4,N (retired summary-view tombstone),S
762 - 四棱是四轴的卡面序列化,一一对应,也是分诊代裁置信门的输入。 M(old L898-905): D×4,N (retired summary-view tombstone),S
763 - 决策通道优先序,卡先于弹窗:凡需维护者裁决,第一动作是落 needs-user-decision 卡。 M(old L898-905): D×4,N (retired summary-view tombstone),S
764 - 决策卡带选项、推荐、证据与四棱块;被阻塞的执行卡同笔挂 pm:blocked + Blocked-by: M(old L907-911): D,S
765 - AskUserQuestion 只是在场加速器:仅当维护者在本会话 ~30 分钟内有过人类输入才可发。 M(old L907-911): D,S
766 - 每问必带推荐项,被 Skip 或长挂即转卡通道,⛔ 不重弹。 M(old L907-911): D,S
767 - 项目总监席:人工召唤,入口 /pm-dispatch director;⛔ 无 Routine 无 cron。 M(old L907-911): D,S
768 - 四职 = needs:contract-review 事后审计、决裁勤务、维护者动作台账、governed 合并审计。 M(old L912-918): D×2,N (supersession chain),S
769 - 总监席档位硬门 = CONTRACT_REVIEW_TIER,不达档只做免档整理并停放四职。 M(old L912-918): D×2,N (supersession chain),S
770 - 总监席不占 domain:*,永不认领 backlog、永不写码;章程见 references/lanes/director.md M(old L912-918): D×2,N (supersession chain),S
报告契约
774 - 终报 JSON 的权威形状住 .claude/agents/os-dev.md 终报消息节,字段与拼写以那里为准。 M(old L949-956): S
775 - ⛔ 本文不抄终报形状的第二份。 M(old L949-956): S
776 - premise_still_valid: false + pr: null 是合法终报,当再分诊输入复核,永不当失败派发。 M(old L949-956): S
777 - status: needs_decisionopen_questions 必须非空。 M(old L949-956): S
778 - out_of_scope_findings 应已由 dev 立成无 assignee 的卡:查重先行、归挂判据、立在修复落地仓。 M(old L949-956): S
779 - 范围外发现的标签按种分:观察类打 finding,具体缺陷不打标留分诊。 M(old L949-956): S
780 - PM 核验它们存在,并把同轮并行报告互相对读:两个 dev 同一小时审相邻代码会立出孪生卡。 M(old L949-956): S
机械守卫索引
784 | 守卫 | 一句话 | T: guard index kept; ratchet row D×2,Q×2; frame-sync row 四份 → 两份 (correction)
785 |:--|:--| T: guard index kept; ratchet row D×2,Q×2; frame-sync row 四份 → 两份 (correction)
786 | scripts/pm/check-skill-line-ratchet.mjs | 本文件行数只降不升(pnpm check:pm-skill-ratchet);抬上限需维护者裁决引用在 PR 正文;⛔ re-wrap 不得用作筹行,新增以删减付账;不买内容的密度修复允许 | T: guard index kept; ratchet row D×2,Q×2; frame-sync row 四份 → 两份 (correction)
787 | scripts/pm/check-skill-id-lint.mjs | 本技能与 os-dev 定义的操作文本 ⛔ 不引用 issue 编号(pnpm check:pm-skill-id-lint) | T: guard index kept; ratchet row D×2,Q×2; frame-sync row 四份 → 两份 (correction)
788 | scripts/pm/check-half-states.mjs | label/assignee/PR 半状态的 report-only 巡查(含已复核就绪却无人落地的孤儿 PR 检测) | T: guard index kept; ratchet row D×2,Q×2; frame-sync row 四份 → 两份 (correction)
789 | scripts/pm/check-governed-merges.mjs | governed 面合并清单的 report-only 审计(事后防线;轮报载体,本地枚举零 API,仅归因走查询) | T: guard index kept; ratchet row D×2,Q×2; frame-sync row 四份 → 两份 (correction)
790 | scripts/pm/dispatch-gates.mjs | 文件面 → 该跑的门禁族(派发令取数) | T: guard index kept; ratchet row D×2,Q×2; frame-sync row 四份 → 两份 (correction)
791 | scripts/pm/git-history.mjs | 窗口化 commit 计数:回答或 REFUSE(浅 clone 对窗口化 git log/rev-list 以 exit 0 无警告答错);historyHorizon() 是只读谓词 | T: guard index kept; ratchet row D×2,Q×2; frame-sync row 四份 → 两份 (correction)
792 | scripts/pm/os-regen-merge.sh | 碰生成物 PR 的 merge 四步序(防静默吞并与锚点倒退) | T: guard index kept; ratchet row D×2,Q×2; frame-sync row 四份 → 两份 (correction)
793 | scripts/pm/ensure-pm-labels.sh | pm 标签词表的幂等一次性创建;退役车道刻意不在 ⛔ 不加回,对象清理以脚本头为权威 | T: guard index kept; ratchet row D×2,Q×2; frame-sync row 四份 → 两份 (correction)
794 | check:skill-frame-sync / -freshness | 四维决策框架两份拷贝的同构与新鲜度 | T: guard index kept; ratchet row D×2,Q×2; frame-sync row 四份 → 两份 (correction)
795 | guard-main-checkout / guard-shared-stash hooks | worktree-first 与 stash 禁令的机械面 | T: guard index kept; ratchet row D×2,Q×2; frame-sync row 四份 → 两份 (correction)
模板与表
799 认领评论(英文,固定形状;首行字面 Claim:): F: template intro
802 Claim: PM loop round N F: claim template kept (fenced; > prefix removed; explanations moved to 认领 rules; model: value de-aliased; straight-quoted none → none)
803 Session: session_〈id〉 F: claim template kept (fenced; > prefix removed; explanations moved to 认领 rules; model: value de-aliased; straight-quoted none → none)
804 Branch: claude/issue-〈n〉-〈slug〉 F: claim template kept (fenced; > prefix removed; explanations moved to 认领 rules; model: value de-aliased; straight-quoted none → none)
805 Worktree: 〈repo〉-issue-〈n〉 F: claim template kept (fenced; > prefix removed; explanations moved to 认领 rules; model: value de-aliased; straight-quoted none → none)
806 Domain: domain:〈x〉 F: claim template kept (fenced; > prefix removed; explanations moved to 认领 rules; model: value de-aliased; straight-quoted none → none)
807 File surface: 〈预期触碰的目录〉 (stop on breach; explain in the report) F: claim template kept (fenced; > prefix removed; explanations moved to 认领 rules; model: value de-aliased; straight-quoted none → none)
808 Container & model: 〈S 级机械卡 / M / L〉, mode:subagent | mode:cloud, model: 〈档位,引当次 --tier 输出〉 F: claim template kept (fenced; > prefix removed; explanations moved to 认领 rules; model: value de-aliased; straight-quoted none → none)
809 Clause-②: yes | no F: claim template kept (fenced; > prefix removed; explanations moved to 认领 rules; model: value de-aliased; straight-quoted none → none)
810 Serial constraints cleared: 〈点名同文件/同包的前驱 PR 与在飞认领,及分诊点名的任意车道在飞兄弟卡中本卡 pin 断言其行为者;无则 none〉 F: claim template kept (fenced; > prefix removed; explanations moved to 认领 rules; model: value de-aliased; straight-quoted none → none)

Generated by Claude Code

@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Sep 4, 2026
…ine names what it forbids

Two in-place rewrites in SKILL.md, no line added or removed: the self-timer default now says 轮末 (班 is a whole tenure, so 收班时挂 read as arming only at handover), and the triage red line now says the seat never claims a card and never dispatches a dev flight, leaving its graded duties to the contract-review-tier subagent named four lines later.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox
…d a verification layer; the claim form's Clause-② row stays bare

Six rules in 入队与落地 and one in 座位贴协议: on a repository whose default-branch push triggers an outward-facing deploy the lane merges only if a verification layer exists (deploy gated on CI, the live surface probed after every deploy, a failed deploy rolled back and filed), the landing criterion there is published-and-probed rather than MERGED, post-merge workflows are registered as their own check class because no PR check list shows them, and a human click is not a substitute for a probe; the seat post records per repository whether a merge publishes and what its verification layer is. The digest carries the same rule in one line, paid by merging its two adjacent state-on-GitHub bullets, staying at 150. The claim-comment form keeps its bare Clause-② line, which the carrier checker reads as declared. The SKILL.md ceiling moves to the landed 811, still below the base 1005.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox
…ention is a stall, not a delivery

One PM-side detection rule in 收集: a report that ends on an intention rather than a result marks a stalled dev, not a completed one — the seat resumes it at once with SendMessage and never reads it as a delivery or as death. Paid for at the same 811 lines by merging the two adjacent notification-reading rules (replay never re-accepts; arrival proves neither life nor death), with their prohibition kept.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/xl skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

1 participant