Skip to content

docs(pm-skill): rules-only rewrite of the seven core pm-dispatch references - #15485

Merged
os-zhuang merged 2 commits into
mainfrom
claude/issue-15379-references-rules-only
Sep 5, 2026
Merged

os-zhuang merged 2 commits into
mainfrom
claude/issue-15379-references-rules-only

Conversation

@claude

@claude claude Bot commented Sep 4, 2026 •

Copy link
Copy Markdown
Contributor

Part of #15379
Fixes #14986

Rules-only rewrite of the seven core pm-dispatch references, under the house style the digest set: one rule per line, at most 120 bytes measured with wc -c, plain Chinese with identifiers in backticks, grouped under each file's own sections. Provenance narratives, ruling dates, verbatim quotations, incident post-mortems and rationale tails leave the corpus. Every rule already stated in the rewritten SKILL.md is cut rather than repeated, and each file now opens with a single pointer to the SKILL.md section it details. Precedence and the red lines are not restated anywhere here.

713 to 630 lines across the seven. 57 of those lines are passages removed outright (Table 2); the rest of the shrink is multi-line bullets re-flowed into single rule lines, which is why the rule count barely moves while the file count does.

Angle-bracket placeholders are spelled as bare placeholder words in this body only, because the body sanitizer eats short angle-bracket fragments even inside backticks. The files keep the original spelling.

Patch round (head 6000e270d). The takeover section of dispatch-runbook.md gains the (a)-type check the skills-lane finding asks for: before putting a second dev on a branch another session's dev owns, read the remote branch head, that branch's last push time and the newest os-dev-report on the card; any of the three inside the cloud collection boundary means no second dev — wake the branch's own dev with a comment on its PR, and run the takeover protocol only after a full boundary of silence. A fourth line closes the gap the finding is a counter-example to: a dead PM session is not evidence that the dev it created is dead. Four lines, paid inside the file's re-pinned ceiling by merging four adjacent line pairs — the same-round execution rule, the first-touch grading note, the seat-post downgrade action, and the unlock-scan inversion. No prohibition was dropped and the ratchet row stays 241.

The seven files

  • dispatch-runbook.md — 280 to 241. The dispatch and collection runbook: per-section increments only. Every 出处 header line is gone; the eighteen sections keep their subjects and their order. The cloud-card applicability argument, the read-cost measurements and the seat-post patrol precedent are out; the four cloud lessons, the takeover protocol, the stall-reset gradient, the notification-replay identity triple and the whole dispatch-prompt construction section keep every operative clause, including the verbatim two-sentence forms (file surface, repo-wide pin sweep, same-day churn, the four overlap warnings). The takeover section now opens with the four-line inherited-branch check described above.
  • review-checklist.md — 84 to 77. The per-item review criteria, now grouped under five headings (PR shape and card relations, scope and changeset, test and gate evidence, assertions and benefit, premise/stop-condition/deletion). The three-leg rebuild measurement and the stop-condition incident are out; the criteria they supported stay, including the two required job names this file is pinned on.
  • contract-review.md — 68 to 60. In-seat contract review: carrier discipline, ownership and eligibility, the downgrade fuse. All ruling dates and the parenthetical ruling citations are gone. The Implemented-by:/Reviewed-by: independence pair, the three landing pre-checks with the pair-checker's exit codes, and the transcript tier verification keep their spellings.
  • landing-operations.md — 80 to 69. Sections A to D keep their letters, because SKILL.md points at them by letter. The regen trap, the queue-entry diagnosis order, the Part of close-out action, the post-merge reconciliation, the subscription lifecycle and the two main-red conventions all stay; their rationale tails do not.
  • seat-post-protocol.md — 104 to 91. The four sections plus the ten-step handover checklist, which stays a numbered form. Thirteen lines that only restated SKILL.md's seat-post section are cut (read-side boundary, liveness-from-updated_at, race triad, epic delegation, job-description versioning).
  • state-machine.md — 44 to 42. Per-state line contracts. The six-state set is now spelled out on its own line, and Blocked-by:, Restart-when:, Restart-touch: and Unlock-action: re-check PR #M keep their exact spellings and their line-anchored shape.
  • decision-analysis.md — 53 to 50. Applicability, the standing adjudication-batch process, the filing template's six writing requirements, and the fixed facet-block shape. The facet tie-break order and the long-term weight floor are cut as duplicates of SKILL.md's escalation section. The frame is referred to by section name only; no fingerprint phrase appears.

Ratchet. The seven CEILINGS rows in scripts/pm/check-skill-line-ratchet.mjs are re-pinned down at the landed counts (241, 77, 60, 69, 91, 42, 50), each with a one-line note in the map's own convention. No other row moves and nothing is raised. The seven MAX_TABLE_ROW_BYTES rows stay at 0 — a measurement, not a disabled row: none of these files carries a markdown table, so a new table row would redden the pin. That is the reading taken on the house style's "lookup data stays in tables" clause (Table 4).

Table 1 — every surviving rule line (part A)

471 rule lines across the seven files. stripped names what left that line: date, quotation, narrative, marker, merged, reworded (bold markup and prose compression), rewrapped to one line, or unchanged. Part B continues in the first comment.

file # the rule as it now reads stripped
dispatch-runbook.md 1 级序理由:p0 是显式裁定,blocking 一张挡多张,bug 是已坏的不变量先于增强,卡龄防饿死。 reworded
dispatch-runbook.md 2 pm:blocking 的写入与摘除都在分诊轮 sweep,依赖者全关即摘。 reworded
dispatch-runbook.md 3 手工挂上的按误标处理,sweep 对着索引校正。 reworded
dispatch-runbook.md 4 种子与消费者注记在 scripts/pm/ensure-pm-labels.sh。 reworded
dispatch-runbook.md 5 授权面不含派发:⛔ 不写码、不认领、不派发。 reworded
dispatch-runbook.md 6 单一生产者纪律照旧:分诊座位在班且已在处理同卡即让行。 quotation
dispatch-runbook.md 7 紧急通道改的是节奏,不是生产者数目。 date
dispatch-runbook.md 8 正文自报 P0 或 data-integrity 的命中即走本节紧急通道。 reworded
dispatch-runbook.md 9 机械年龄告警在半状态巡查脚本,细节以脚本头为权威。 reworded
dispatch-runbook.md 10 状态转换机制:定级出 hold ⇒ 同笔 finding → pm:on-hold,域标签保留。 narrative + quotation
dispatch-runbook.md 11 hold 评论照既有纪律带日期、理由与具名重启条件,出处写进评论。 narrative + quotation
dispatch-runbook.md 12 ⛔ 不设第二个标签区分维护者裁与座位定级。 narrative + quotation
dispatch-runbook.md 13 修法是状态转换不是豁免评论;逐卡豁免评论机制已废弃,⛔ 不复活。 narrative + quotation
dispatch-runbook.md 14 首触定级补遗:零定级评论的卡优先;关闭 not planned 附理由并列入轮次报告。 reworded
dispatch-runbook.md 15 立单 dev 只有局部视野,照实立单不压级。 reworded
dispatch-runbook.md 16 每批约定:≤5 张同族卡、同上下文逐张读;常设授权,⛔ 不逐次请示。 date
dispatch-runbook.md 17 sweep 打包晋级五条:同类才打包(全部命中同一判据)。 date
dispatch-runbook.md 18 逐项清单(落点、before、after)是 PR 正文必备件。 date
dispatch-runbook.md 19 N 项之外零改动且 PR 自证;范围外发现照旧单开。 date
dispatch-runbook.md 20 sweep 卡是认领对象,成员单保持标签但不再是可派发候选。 date
dispatch-runbook.md 21 积压告警:连续 COMPLETED 清空 fire 后裸卡仍 >15 ⇒ 入流大于吞吐,报维护者。 reworded
dispatch-runbook.md 22 同一趟派发或定级覆盖多张成员卡时,锚卡承载全量认领或定级评论。 quotation
dispatch-runbook.md 23 全量 = 会话、分支、文件面、交付物、串行约束;成员卡各留一行指针指向锚卡。 reworded
dispatch-runbook.md 24 标签翻转照旧逐卡执行:省的是评论正文写量,不是状态写入。 reworded
dispatch-runbook.md 25 验收与解锁扫描的读侧不变,仍逐卡读。 reworded
dispatch-runbook.md 26 写序:标签翻转只在认领评论写成功之后,两笔不原子。 reworded
dispatch-runbook.md 27 评论失败而标签已翻即制造一记真半状态;顺序反了就带重试义务,重试未成即回滚标签。 reworded
dispatch-runbook.md 28 分诊 Routine 每 fire 附带一次本巡查。 reworded
dispatch-runbook.md 29 扫描面:label:pm:seat 列表页上标题挂 🟢 github-login 的贴。 reworded
dispatch-runbook.md 30 🟢 Routine 座位以调度器读数为准,⛔ 不入本巡查。 reworded
dispatch-runbook.md 31 判据只认在任者自己的产出:自有评论、认领、正文编辑;作者与时间戳是硬读数。 reworded
dispatch-runbook.md 32 ⛔ 不算发给它的跨座位通知:收到消息不是活着的证据。 reworded
dispatch-runbook.md 33 >24h 无自有产出 ⇒ 当场降级:改 ⏳ vacant + 摘 assignee 同笔 + 证据评论(时间戳与链接)。 reworded
dispatch-runbook.md 34 在飞认领照认领协议由原认领者跟完。 reworded
dispatch-runbook.md 35 收班简报索引化,四段模板:首行机器判据、索引表、健康指标、接力清单。 quotation
dispatch-runbook.md 36 首行机器判据是起始标记 分诊轮收尾,逐字不动,互斥守卫靠 grep 它。 quotation
dispatch-runbook.md 37 索引表 = 卡号加一行判决;后两段沿用 SKILL.md 轮次报告节的定义。 merged
dispatch-runbook.md 38 细节禁止复述:逐卡理由已作审计评论落卡,简报只指不拷。 quotation
dispatch-runbook.md 39 硬预算正文 ≤3000 字符,收班自报字符数;连续两轮超限即漂移。 quotation
dispatch-runbook.md 40 互斥最小尾页读法:尾页配方只覆盖座位贴的两个读数。 reworded
dispatch-runbook.md 41 第三读数(车道 pm:dispatched 卡最新非本 session Claim:)出自车道盘点,不在座位贴线程。 reworded
dispatch-runbook.md 42 配方:issue_read get 拿评论总数,按小 perPage(~15)算末页页码只读尾页。 reworded
dispatch-runbook.md 43 尾页缺读数再回翻一页,⛔ 不读整线程。 reworded
dispatch-runbook.md 44 长线程状态读外包:>~15 条的线程派下限档只读子代理返回结构化摘录,尾部优先。 reworded
dispatch-runbook.md 45 状态提取 = 找最新转换评论、抽 Restart-when: 行、确认 claim 或 report 在不在。 reworded
dispatch-runbook.md 46 ⛔ 裁决级阅读(契约复审、放行判定、代裁)不可外包:那是拿放行质量换 token。 reworded
dispatch-runbook.md 47 小时层三读法之一,sweep 析取①②③ = list_issues + since。 reworded
dispatch-runbook.md 48 标签变更会刷新 updated_at,半标注照样入窗。 reworded
dispatch-runbook.md 49 之二,解锁扫描反演 = 逐仓 state=CLOSED + since 与 Blocked-by: 反向索引求交,命中走双查。 reworded
dispatch-runbook.md 50 之三,健康指标 = 逐标签 perPage: 1 只读 totalCount。 reworded
dispatch-runbook.md 51 裸卡数例外:标签缺席无计数可读,取本轮析取①的枚举,⛔ 不另发查询。 reworded
dispatch-runbook.md 52 每日层(当日首 fire)= 四仓全量对账 + 归集本就日频的职责。 reworded
dispatch-runbook.md 53 日频职责 = finding 集中轮、Restart-when: 判据批扫、决策箱回填。 reworded
dispatch-runbook.md 54 成本靶:干活轮 ≤50k token,空转轮守既有探针预算。 reworded
dispatch-runbook.md 55 每条枚举比对返回数与 totalCount;分页只治当次,一个谓词,⛔ 不加第二条代码路径。 reworded
dispatch-runbook.md 56 裁决记录四件补遗:鲜度门可内联声明分歧代替调和正文。 reworded
dispatch-runbook.md 57 对过期正文记录的裁决按过期论;四件本体、记录座位全责、维护者裁与代裁同规。 reworded
dispatch-runbook.md 58 出决策箱须引可取回的裁决 id:转出那一笔的评论须带台账条目或卡上裁决评论 id。 date + narrative
dispatch-runbook.md 59 且该 id 同趟取回过,取这一下就是判据。 date + narrative
dispatch-runbook.md 60 两载体皆合法:存在性归总监席每场台账,卡上评论为详注。 date + narrative
dispatch-runbook.md 61 ⛔ 时间戳加回忆不是引用;带 id 不等于可取回。 date + narrative
dispatch-runbook.md 62 读侧对称:决策复读命中无可取回 id 的出箱按未裁处理,同笔转回、⛔ 不派。 date + narrative
dispatch-runbook.md 63 结论只落可核性,⛔ 不断成因。 date + narrative
dispatch-runbook.md 64 机械两旗 report-only,归半状态巡查;接线是另一张卡的事,⛔ 不随协议文本改脚本。 quotation
dispatch-runbook.md 65 旗一:open 卡标题带决策标记或线程含裁决记录,却仍挂 needs-user-decision。 quotation
dispatch-runbook.md 66 旗二:pm:blocked 卡的 Blocked-by: 目标已关闭。 quotation
dispatch-runbook.md 67 交付了一半的阻塞是判断不是 grep,归四件之③,⛔ 不进机械旗。 quotation
dispatch-runbook.md 68 卡上 re-check 命令两条硬线:① 每条 grep 自带阳性对照。 date + narrative + quotation
dispatch-runbook.md 69 对照取同文件里确定存在、且 ⛔ 绝不是被测词子串的一个词。 date + narrative + quotation
dispatch-runbook.md 70 对照未通过的零记没读到,⛔ 不记不存在。 date + narrative + quotation
dispatch-runbook.md 71 ② 锚点取最短的不折行片段,⛔ 不抄脑中那整句。 date + narrative + quotation
dispatch-runbook.md 72 记录锚在活得下来的对象上:① 重放按能存活的 commit 陈述,即合并 commit 或 base 加 PR 号。 narrative
dispatch-runbook.md 73 ⛔ 永不用 PR head:分支一删 object 即不可达,而块读着仍可重放。 narrative
dispatch-runbook.md 74 PR head 确是主体时明说,并把输入本身(diff 或改动 hunk)记在旁边,使无该 object 也可重建。 narrative
dispatch-runbook.md 75 ② 锚内容不锚位置:行号随文件生长而漂,取症状字符串或独特标识符。 narrative
dispatch-runbook.md 76 行文纪律:出处一行,原话仅限操作性判据;⛔ 实测叙事不进操作文本。 reworded
dispatch-runbook.md 77 结论产生的那一轮就执行它:得出结论而不在同轮完成关闭或换标写入,本身就是半状态。 reworded
dispatch-runbook.md 78 ⛔ 禁止记录后离场;结论表同规,表不是交付物,落账才是。 reworded
dispatch-runbook.md 79 无权执行 ⇒ 点名有权者,并当轮换标把状态搬进对方的收件箱视图或决策箱。 reworded
dispatch-runbook.md 80 ⛔ 不许只留一条评论等人路过:评论不是任何人的收件箱,标签才是。 reworded
dispatch-runbook.md 81 机械半边:旗标由半状态巡查 report-only 浮出,判据以脚本头为权威;当轮执行才是修法。 unchanged
dispatch-runbook.md 82 一、授权面随 source 不随环境:trigger 拉起的会话无仓库授权,只读勘察。 reworded
dispatch-runbook.md 83 create_session 带 source_url 出生即持推送授权。 reworded
dispatch-runbook.md 84 同时带 outcome_branch(= 认领分支)、显式 model(trigger 流不可指模型)、title。 reworded
dispatch-runbook.md 85 title 以车道名开头,⛔ 不叫 os-dev,形如 ⚡ 车道 #单号 短语。 reworded
dispatch-runbook.md 86 二、派发词必带自驱条款:云会话回合一结束即停摆等 poke。 reworded
dispatch-runbook.md 87 ⛔ 不为提问或中期汇报结束回合;开放选择按裁决与评估轴自裁,记入终报 open_questions。 reworded
dispatch-runbook.md 88 合法回合终点只有两个:推送完成加终报,或硬阻塞详报。 reworded
dispatch-runbook.md 89 三、交付通道:dev 自开 draft PR(Fixes #n,正文含验证记录)。 reworded
dispatch-runbook.md 90 终报以 issue 评论交付,带 os-dev-report 标记。 reworded
dispatch-runbook.md 91 未 attach 的姊妹仓够不着,跨仓跟进卡由 PM 代立。 reworded
dispatch-runbook.md 92 trigger 定时会话维持降级通道:推送 outcome branch,终报走最后一条会话消息,PM 代开 draft PR。 reworded
dispatch-runbook.md 93 四、云卡 draft PR 一存在立即 subscribe_pr_activity,这是硬步骤。 reworded
dispatch-runbook.md 94 监控与转向:get_session 读实时状态,IDLE 加分支未推送 = 停摆待 poke。 reworded
dispatch-runbook.md 95 投递消息用绑会话 poke 触发器:create_trigger 带 persistent_session_id 加 fire_trigger,用后删。 reworded
dispatch-runbook.md 96 巡检退为兜底心跳,只补订阅盲区:会话停摆、未开 PR 的分支、姊妹仓动静。 reworded
dispatch-runbook.md 97 roster 不可达与 SendMessage 同裁,ListAgents 同列不到,⛔ 不复测。 reworded
dispatch-runbook.md 98 会话句柄是账号作用域的:三个会话工具对另一账号建的会话一律答 not found。 reworded
dispatch-runbook.md 99 该答案与从不存在不可区分,⛔ 永不读作死亡信号。 quotation
dispatch-runbook.md 100 跨账号接班活性只认 GitHub 产出读数,draft-PR 时点交报正为此存在。 unchanged
dispatch-runbook.md 101 subagent 在 PM 容器内运行,agent 定义与技能文本读本地检出,不是 origin/main。 reworded
dispatch-runbook.md 102 派发 subagent 批之前先快进:git -C repo-root pull --ff-only origin main。 reworded
dispatch-runbook.md 103 检出过期则整批拿到过期定义;用 --ff-only 让脏或分叉的检出大声失败,⛔ 不静默合并。 narrative
dispatch-runbook.md 104 派第二个 dev 上别人的分支前先读三处:远程分支头(git ls-remote)、该分支最后推送时刻。 new — takeover check
dispatch-runbook.md 105 第三处是卡上最新 os-dev-report 的时刻;任一落在云端收集边界内 ⇒ ⛔ 不派第二个 dev。 new — takeover check
dispatch-runbook.md 106 改在该 PR 上留言唤醒它自己的 dev(云端 dev 订阅自己的 PR),满一个边界的静默才走接手。 new — takeover check
dispatch-runbook.md 107 PM 会话已死 ⛔ 不推导其 dev 已死;跨账号活性只认 GitHub 产出读数。 new — takeover check
dispatch-runbook.md 108 死后恢复查三态:远程(git ls-remote)、仅容器磁盘、真没了。 quotation
dispatch-runbook.md 109 中间那态最值钱:worktree 比 agent 活得久、同容器共享,未提交改动通常还在。 quotation
dispatch-runbook.md 110 只查远程会令下一个 dev 从零开始;捡到的工作一律标 UNVERIFIED 交接,不丢弃也不继承。 quotation
dispatch-runbook.md 111 worktree 已存在 ⇒ ⛔ 不要新建,cd 进去接着做,第二个 worktree 会劈开工作。 unchanged
dispatch-runbook.md 112 先读全部既有提交与未提交改动,逐 hunk 决定保留或修正:既不推倒重来也不盲信。 rewrapped to one line
dispatch-runbook.md 113 把死 agent 没跑完的验证完整重跑并报真实输出。 reworded
dispatch-runbook.md 114 assignee、认领评论与分支全部不动:这是既有认领的延续,不是新认领。 reworded
dispatch-runbook.md 115 只覆盖等一周与做十分钟的形状。 quotation
dispatch-runbook.md 116 packages/spec 恒归 spec 座位,本条不豁免:唯一所有者规则更硬。 quotation
dispatch-runbook.md 117 判据是依赖形状:只做被本车道开卡 Blocked-by: 点名的那一个阻塞项。 reworded
dispatch-runbook.md 118 做完即回,⛔ 不顺手接第二张。 reworded
dispatch-runbook.md 119 姿态句全文:前台阻塞同步执行全部步骤,中途不停止、不把构建或测试挂到后台等唤醒。 quotation
dispatch-runbook.md 120 梯度逐级,原样重发同一句不算一次复位。 quotation
dispatch-runbook.md 121 ① 复述执行姿态;② 点名下一个工具调用加明令禁止后台等待。 reworded
dispatch-runbook.md 122 ③ 第三次停摆判 unreliable,按接手协议重派到该分支。 reworded
dispatch-runbook.md 123 自己挂的定时器不会唤醒自己;长验证管线的派发或接力词写明前台姿态。 reworded
dispatch-runbook.md 124 生产侧条款在 os-dev 定义。 reworded
dispatch-runbook.md 125 重放形态可以完全正常、报告完整正确:monitor 按自己的 deadline 触发。 reworded
dispatch-runbook.md 126 身份 = 三元组(issue、分支、PR head sha)加通知自报的守护对象。 reworded
dispatch-runbook.md 127 自报缺席就用三元组自己算;判定重放 ⇒ 台账记重放与首达时间即结束。 quotation
dispatch-runbook.md 128 验收动作:逐文件核对 diff 与认领申报的文件面。 reworded
dispatch-runbook.md 129 对照 origin/main 复核 PR 正文的前提声明与验证叙述,复核清单其余判据不减。 reworded
dispatch-runbook.md 130 抢先翻 ready 会撞上 agent 的收尾推送,故先探活后翻。 quotation
dispatch-runbook.md 131 推分支 → 开 draft PR → 立即交报告的契约住 os-dev 定义,派发令只带增量。 quotation
dispatch-runbook.md 132 三分区各自的 dev 义务:裁决区 dev 执行不重开。 quotation
dispatch-runbook.md 133 机制假设区动手前验证,证伪照实报告并按裁决意图换实现路径,⛔ 不许为顺从假设硬做。 quotation
dispatch-runbook.md 134 建议路线区有更好的就换,⛔ 不得因派发令写了照做。 quotation
dispatch-runbook.md 135 兄弟 dev 报告里的成本或形状估计一律落机制假设区并注明须复测。 quotation
dispatch-runbook.md 136 ⛔ 不得穿裁决的衣服转述:被当事实搬运的估计会把错误方向写死,而天真测试照绿。 quotation
dispatch-runbook.md 137 前提含 spec 有这个槽位 ⇒ 派发前先读安装包内的活性账本对应行。 quotation
dispatch-runbook.md 138 账本路径 node_modules/@objectstack/spec/liveness/域.json;status: 'planned' = 有 carrier、零消费者。 quotation
dispatch-runbook.md 139 该行的 authorHint 就是证词;不读账本的派发让 dev 交出渲染为零的元数据。 quotation
dispatch-runbook.md 140 停条件写法:要证据不要判决,且动作须在本轮内终局。 quotation
dispatch-runbook.md 141 前提与停条件检查要 dev 回报证据面(搜了什么、找到什么),分叉归 PM 判。 quotation
dispatch-runbook.md 142 ⛔ 不写成发现消费者就停下:那把判决权交回被停的一方。 quotation
dispatch-runbook.md 143 可执行性判据:一次性 dev 无中途提问的通道,先问再继续预设了不存在的续接。 quotation
dispatch-runbook.md 144 两种改写都在一轮内闭合:允许做 ⇒ 只做最小编辑,并在报告里单列该判断与回退方式。 quotation
dispatch-runbook.md 145 不许做 ⇒ ⛔ 不要动该文件,让门禁红着并在报告里点名该站点。 quotation
dispatch-runbook.md 146 派发那刻现取、随派发词下发的两份读数,判据同一:PM 已有的读数下发一次。 narrative + quotation
dispatch-runbook.md 147 ⛔ 不让 N 个 dev 各重跑同样贵的 GraphQL 读。 narrative + quotation
dispatch-runbook.md 148 ① 门禁清单单班之内即过期;全 farm 归 CI 跑一次,⛔ 不让 dev 枚举全 farm。 narrative + quotation
dispatch-runbook.md 149 点名单当天现取仍会漏,dev 对实际改动路径重取补跑。 narrative + quotation
dispatch-runbook.md 150 ② 去重或看板读数取一次(查询式加时间戳)整批共用。 narrative + quotation
dispatch-runbook.md 151 派发令写:当既有事实用,只复核其后的增量,⛔ 不重跑;dev 侧对价住 os-dev 定义。 narrative + quotation
dispatch-runbook.md 152 四轴框架整段现取现粘、逐单随派发词下发。 date
dispatch-runbook.md 153 内部 PM 副本 = .claude/skills/pm-dispatch/SKILL.md 升级与决策 节的四轴框架块。 date
dispatch-runbook.md 154 该块自黑体句起、至推荐约束句止,整段逐字粘贴,⛔ 不重打、⛔ 不摘句。 date
dispatch-runbook.md 155 派发那刻现取,把该副本的 commit 与 md5 记进派发词。 date
dispatch-runbook.md 156 ⛔ 仓内任何文件不得另立第三份,check:skill-frame-sync 全树扫;os-dev 定义没带就停下索取。 date
dispatch-runbook.md 157 文件面两句原文照抄:预期落点是 X。 narrative + quotation
dispatch-runbook.md 158 若实测表明真正的生产者在别包,报备后按生产者侧修,落点与理由写进报告和 PR 正文。 quotation
dispatch-runbook.md 159 ⛔ 不在消费者侧打补丁;只写一个路径名,是要求 dev 在守约与修对之间二选一。 narrative + quotation
dispatch-runbook.md 160 跨包常等于跨车道,PM 事后补跨座位声明。 narrative + quotation
dispatch-runbook.md 161 模型标识只禁内容工件:PR 标题与正文、代码注释、文档、changeset、评论。 date
dispatch-runbook.md 162 两条豁免同属规则,⛔ 不再申报为偏差:一是 commit 的 Co-Authored-By 尾注(含 session 链接)。 date
dispatch-runbook.md 163 另一条是 .claude/agents/* frontmatter 的 model:,check:agent-model-declared 要求。 date
dispatch-runbook.md 164 same-day churn 行:派发时 git log origin/main --oneline -20 -- paths 见当天合并即加一行。 quotation
dispatch-runbook.md 165 该行原文:基于合并后的代码工作,issue 引用的片段可能已变,先核对当前 main。 quotation
dispatch-runbook.md 166 在飞重叠每轮拦截:main 新落 PR 与在飞申报文件面求交,相交即发四句警告。 quotation
dispatch-runbook.md 167 四句:合 main 重跑测试矩阵、读对方 diff 重划边界、只补它没覆盖的、被完全覆盖就停下。 quotation
dispatch-runbook.md 168 ⛔ 不硬造 diff。 quotation
dispatch-runbook.md 169 全仓 pin 清扫两句原文:① grep 错误码与错误消息全仓扫同语义 pin,一轮翻完,不只改本包。 quotation
dispatch-runbook.md 170 ② 翻转后的 pin 必须承重:断言新语义的实质(行数、译文、状态码),不是旧断言已删。 quotation
dispatch-runbook.md 171 真正非法形状的拒收断言逐字保留,被守护的面永不缩水。 quotation
dispatch-runbook.md 172 条件性标准条款命中判据才抄,⛔ 不命中就省掉别硬套。 unchanged
dispatch-runbook.md 173 多实现面组件(同一契约 ≥2 个实现面)⇒ 测试放在未来的分叉会被抓住的地方。 quotation
dispatch-runbook.md 174 即进共享一致性覆盖,不是独立测试文件。 quotation
dispatch-runbook.md 175 该组件的不变量形:与 find() 给出相同行集,或以 INVALID_FILTER 拒收。 quotation
dispatch-runbook.md 176 ⛔ 不允许有第三种、更安静的答案。 quotation
dispatch-runbook.md 177 新增或改写拒收类用例 ⇒ 信封断言本体是 os-dev 标准条款,只补边界不回填存量。 quotation
dispatch-runbook.md 178 改过滤或谓词语义 ⇒ 把 compile-surfaces.md 的编译面清单按复核串重验后逐面抄进派发令。 quotation
dispatch-runbook.md 179 ⛔ 不凭记忆;并带一句:每一面都必须在 PR 正文有一个结论。 quotation
dispatch-runbook.md 180 结论三选一:已改、本就合规(证据)、明确不在范围(理由)。 quotation
dispatch-runbook.md 181 ⛔ 静默略过:评审把没提到的面读作漏掉的面。 quotation
dispatch-runbook.md 182 测量先行卡(修复由测量结果有条件授权)⇒ 派发令写明 ⛔ 测量存在之前不写修复。 quotation
dispatch-runbook.md 183 表面半边 ⛔ 不比总数:git diff 基线ref origin/main -- '两插件/src/objects/*.object.ts'。 date + quotation
dispatch-runbook.md 184 过 grep -E '^[+-] [a-z_][a-z0-9_]*: Field\.';零命中 = 成员级同一,必记基线 ref。 date + quotation
review-checklist.md 1 PR 存在、是 draft、目标 main,正文首行引用卡片。 marker + quotation
review-checklist.md 2 Fixes #n 仅当合并应当关卡;只落地了可实施的一半 ⇒ 必须 Part of #n。 marker + quotation
review-checklist.md 3 否则合并静默关掉决策箱里的卡,而收件箱过滤只看 open。 marker + quotation
review-checklist.md 4 切 Part of 的正文最易再武装自动关闭:否定句、记账句、引号包裹,解析器一律照关。 marker + quotation
review-checklist.md 5 安全拼法 = 卡号旁零动词,关闭安排写进评论。 marker + quotation
review-checklist.md 6 闭合关键词两读:翻 ready 前亲核首行、亲扫全正文,⛔ 关键词永不挨另一张 open 卡编号。 reworded
review-checklist.md 7 这是合并前唯一的人工关口,⛔ 不只信报告;合并后那一读见 landing-operations.md。 reworded
review-checklist.md 8 Part of 收口的卡不会自动关,pm:dispatched 必须手工摘,动作要件见落地细则 B。 reworded
review-checklist.md 9 ACCEPT 那一刻记进落地待办,⛔ 不留给下次巡检。 reworded
review-checklist.md 10 取 changed files 核范围,⛔ 不看报告自述。 reworded
review-checklist.md 11 三条判据:无 content/docs/releases/ 改动、用户可见改动有 changeset、无与卡无关的文件。 reworded
review-checklist.md 12 Tests/docs-only 按仓库分流:本仓库走 skip-changeset 标签,⛔ 不走空 changeset。 reworded
review-checklist.md 13 空 changeset 在本仓库滞留发布;含读者可见生成产物时 dev 改选 changeset 亦对。 reworded
review-checklist.md 14 objectui 无此标签,空 frontmatter changeset 即正确形态;⛔ 永不要求或铸出该标签。 reworded
review-checklist.md 15 就地修范围外的邻接缺陷 ⇒ 四条件逐条核:同缺陷类、机械、无他人认领、同门禁族。 reworded
review-checklist.md 16 再核 claim 文件面同轮已修订、PR 正文点名该修并载证据;缺一条即判 REWORK。 reworded
review-checklist.md 17 每个被触及的包,private: false 即已发布 ⇒ 读 package.json 核 changeset 在不在。 quotation
review-checklist.md 18 ⛔ 判据不是改动大小,也不是用户可见的感觉判断;⛔ 缺了不入队。 quotation
review-checklist.md 19 测试证据要有真实命令与通过输出,⛔ 不接受一句 tests pass。 quotation
review-checklist.md 20 测量类交付先看阳性对照:对照本身失败 ⇒ 该读数记 INCONCLUSIVE,⛔ 不入账。 quotation
review-checklist.md 21 引 entry .d.ts 逐字节相同的读数必须同块带阳性对照,它只判名字集。 date + narrative
review-checklist.md 22 对 barrel 已转发符号的形状恒无效:export * 与 export type { X } from 都不复述形状。 date + narrative
review-checklist.md 23 判据是同块点名声明该符号的模块那份移动了的产物,或具名探针;缺则记 INCONCLUSIVE。 date + narrative
review-checklist.md 24 报告证据里有 git 本可回答的 API 读吗:list_issues/search_issues 一类,或重跑去重读数。 reworded
review-checklist.md 25 ⛔ 不因此判 REWORK,ACCEPT 照给,但把这条记进 ACCEPT 评论。 reworded
review-checklist.md 26 CI 收敛读数只属于复核侧:dev 的契约是草稿 PR 时点交报,gate in_progress 是诚实读数。 date + quotation
review-checklist.md 27 翻 ready、挂 auto-merge 或入队前,亲核 Lint & Repo Gates 与 TypeScript Type Check 两个 job。 date + quotation
review-checklist.md 28 两个 job 的 conclusion 都须为 success,门禁族跑在其内;⛔ 不因报告写了本地绿跳过。 date + quotation
review-checklist.md 29 两 job 只是 required 地板,入队资格另要求全部 check 全绿;真绿跑法见 true-green.md。 date + quotation
review-checklist.md 30 收敛期转红走补丁轮续派原 dev,⛔ 不作 REWORK 的理由;重量级卡可在派发令写本单等 CI。 date + quotation
review-checklist.md 31 每个门禁读数先钉到 PR 当前 head:比对 run head_sha 与 head.sha,不一致的双向都不入账。 quotation
review-checklist.md 32 ⛔ 非当前 head 上的 cancelled 零动作、永不重跑:新推送自带全套 run。 quotation
review-checklist.md 33 dev 本地并集同样先钉 head:最后一次提交之后跑,git rev-parse --short HEAD 抄进报告与正文。 reworded
review-checklist.md 34 与 PR 当前 head.sha 比一次,对不上即死树读数、双向都不入账;没抄 ⇒ 按没有读数处理。 reworded

Table 2 — passages left out, by class

file duplicate-of-SKILL.md provenance narrative rationale total
dispatch-runbook.md 10 5 5 7 27
review-checklist.md 1 0 0 1 2
contract-review.md 0 1 0 0 1
landing-operations.md 0 1 3 5 9
seat-post-protocol.md 4 1 0 1 6
state-machine.md 2 1 0 0 3
decision-analysis.md 2 3 1 3 9
total 19 12 9 17 57

duplicate-of-SKILL.md = the rule is stated in the rewritten SKILL.md and is not repeated here (the rate-limit read, the sweep-INCOMPLETE rule, the six-state ONE-OF replace, the three-day queue horizon, the read-side boundary, the facet tie-break order, the long-term weight floor, epic delegation, the archive obligation as a principle). provenance = the 出处 header lines and per-section ruling citations. narrative = incident and measurement stories. rationale = "why this rule exists" tails whose rule survives on its own line.

Nothing else was dropped: an identifier sweep over every backticked token in the old seven confirms each one is either present in the new text or present in the rewritten SKILL.md. Two operative spellings that the first pass had lost were restored before the commit — the patrol's per-fire cadence in dispatch-runbook.md, and the six-state set in state-machine.md.

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

kept verbatim file gate
Lint & Repo Gates, TypeScript Type Check review-checklist.md scripts/check-required-contexts.mjs — INSTRUCTION_SURFACES mustName for this file
absence of the retired context name ESLint review-checklist.md same gate, budget 0 for this file
Blocked-by: state-machine.md scripts/pm/check-half-states.mjs reverse index
Restart-when: state-machine.md, dispatch-runbook.md scripts/pm/check-half-states.mjs unlock scan
Restart-touch: state-machine.md scripts/pm/check-half-states.mjs H17 trigger-file index
pm:{queue,dispatched,blocked,on-hold,awaiting-maintainer} state-machine.md scripts/pm/check-half-states.mjs H29/H30/H31
Unlock-action: re-check PR #M (line-anchored) state-machine.md check-skill-line-ratchet.mjs anchored exemption class names the spelling
Claim: dispatch-runbook.md scripts/pm/check-half-states.mjs, scripts/pm/check-clause2-carriers.mjs
Implemented-by: / Reviewed-by: / SELF-REVIEW contract-review.md scripts/pm/check-clause2-carriers.mjs AUTHORSHIP_KEYS
node scripts/pm/check-clause2-carriers.mjs --pair PR-NUMBER and its 0/4/3 exits contract-review.md that gate's own exit contract
needs:contract-review contract-review.md, state-machine.md scripts/pm/check-clause2-carriers.mjs, check-label-desc-cap.mjs
os-dev-report dispatch-runbook.md scripts/pm/check-half-states.mjs report marker
pm:seat seat-post-protocol.md, dispatch-runbook.md scripts/pm/ensure-pm-labels.sh, check-half-states.mjs
node scripts/pm/check-governed-merges.mjs --test landing-operations.md, state-machine.md the governed predicate itself
check:agent-model-declared as the frontmatter-model: exemption's authority dispatch-runbook.md scripts/check-agent-model-declared.mjs
no # followed by three or more digits anywhere in the seven all seven scripts/pm/check-skill-id-lint.mjs
no frame fingerprint phrase anywhere in the seven all seven scripts/check-skill-frame-sync.mjs FINGERPRINTS
no markdown table row anywhere in the seven all seven check-skill-line-ratchet.mjs MAX_TABLE_ROW_BYTES pin 0

Three protocol spellings are kept verbatim with no gate behind them, so they are rules held by reading alone: the shift-brief first-line marker in dispatch-runbook.md, os-decision-facets in decision-analysis.md, and the accepted-for-GA comment in seat-post-protocol.md.

Table 4 — conflicts found, and the reading taken

conflict reading taken
House style says lookup data stays in tables; the ratchet pins the widest table row in each of these seven at 0, so any new table row is red Stricter statement wins: none of the seven carries lookup data today, and all seven stay table-free. Their pins are left at 0 rather than raised
Old references named model identifiers (two subagent kinds) while SKILL.md rules that tier values are single-sourced in dispatch-gates and the corpus writes no model name SKILL.md wins: both sites now speak in tiers (contract-review tier, floor tier). This also clears the model-name hygiene grep
SKILL.md: a wrong Clause-②: no is an auditable false declaration. contract-review.md: a declaration overturned by tier review is the mechanism working as designed Different subjects, both kept. contract-review.md is narrowed to the provisional half (the declaration only sets the conservative dispatch tier) and no longer speaks to the audit
needs:contract-review dual-carrier discipline appeared in both state-machine.md and contract-review.md contract-review.md owns the attach/clear discipline; state-machine.md keeps only the half-state judgement (card-side-first is a legal intermediate state), which is the half check-half-states.mjs cites
Two spellings of the clause-2 declaration existed: with and without spaces around the pipe Took SKILL.md's spelling, the one its rule line and its claim-comment form both use
dispatch-runbook.md carried a shell command quoted with double quotes, against the no-straight-quote hygiene rule Rewrote to single quotes — identical shell semantics, and the corpus now has zero straight quotes
SKILL.md spells the compile-surface reference with its references/ prefix; sibling files inside references/ spell siblings bare Kept the bare sibling spelling inside references/, which is what the old files already did for every sibling
The archive obligation is stated as a principle in SKILL.md and as a step in seat-post-protocol.md and as rationale in the runbook Principle stays in SKILL.md; seat-post-protocol.md keeps the handover step (who does it, when); the runbook's rationale block is cut

Gate verdicts

Every exit code captured by redirect before any pipe. Union run after the rewrite commit at 19c3714a2; the four named gates re-run after the patch commit at 6000e270d.

dispatch-gates --commands (--repo objectstack-ai/objectstack): 32 command(s) derived from the 8-path change set
dispatch-gates --ran: 32 derived famil(ies) accounted for — 32 run, 0 NOT-MEASURED  (exit 0)
32 of 32 derived gate commands exited 0
check-skill-line-ratchet: dispatch-runbook.md is 241 lines (ceiling 241; headroom 0)   [re-run at 6000e270d]
check-skill-line-ratchet: review-checklist.md is 77 lines (ceiling 77; headroom 0)
check-skill-line-ratchet: contract-review.md is 60 lines (ceiling 60; headroom 0)
check-skill-line-ratchet: landing-operations.md is 69 lines (ceiling 69; headroom 0)
check-skill-line-ratchet: seat-post-protocol.md is 91 lines (ceiling 91; headroom 0)
check-skill-line-ratchet: state-machine.md is 42 lines (ceiling 42; headroom 0)
check-skill-line-ratchet: decision-analysis.md is 50 lines (ceiling 50; headroom 0)
   …each also: widest table row is 0 bytes (pin 0; headroom 0)
check-skill-line-ratchet: SKILL.md 1005, core-rules.md 150 — untouched by this PR   (exit 0)
check-skill-line-ratchet self-test: 155 cases pass   (exit 0)
check-skill-frame-sync: 2 copies structurally isomorphic across 2 files; 5 count mentions agree;
   73 markdown files scanned for undeclared copies   (exit 0, re-run at 6000e270d)
check-skill-id-lint: 24 file(s) clean (pattern /#[0-9]{3,}/g)   (exit 0, re-run at 6000e270d)
check-nul-bytes: OK (7489 text files; no raw ASCII control bytes)   (exit 0, re-run at 6000e270d)
pnpm lint (whole repo, eslint . --no-inline-config) through os-verify-lock:
   VERDICT command-exit 0 · held the lock 73s · waited 0s
check-governed-merges --test (8 paths): GOVERNED — .claude/** ×7; one path not on the register
   (scripts/pm/check-skill-line-ratchet.mjs)   (exit 3, as required)
hygiene greps over the seven: dates 0 · corner quotes 0 · straight quotes 0 · issue ids 0 ·
   ⚠ 0 · ⭐ 0 · fingerprint phrases 0 · first-person seat voice 0 · model names 0 · table rows 0
   ⛔ count 148, every one on a prohibition (re-run at 6000e270d over the seven)
per-line byte check (wc -c equivalent): 0 lines over 120 bytes in any of the seven

Two gates in the union needed a prerequisite before they measured anything, and both are recorded here rather than counted as passes on the first attempt: check-required-contexts --verify-required-set answered NOT VERIFIED (exit 2) until re-run with the session proxy enabled, then exit 0; check:doc-formula-expressions answered PREREQUISITE NOT MET (exit 3) until @objectstack/formula and @objectstack/lint were built, then exit 0. Neither is related to this change set.

Landing regime: governed, so this stays a draft. No seat flips it ready, enqueues it, or arms auto-merge.

🤖 Generated with Claude Code

https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox


Generated by Claude Code

…rences

Rewrite `dispatch-runbook.md`, `review-checklist.md`, `contract-review.md`,
`landing-operations.md`, `seat-post-protocol.md`, `state-machine.md` and
`decision-analysis.md` in place under the rules-only house style: one rule per
line, at most 120 bytes, plain Chinese with identifiers in backticks, grouped
under each file's own sections. Provenance narratives, ruling dates, verbatim
quotations, incident post-mortems and rationale tails leave the corpus; every
rule already stated in the rewritten SKILL.md is cut, and each file opens with a
single pointer to the SKILL.md section it details.

713 lines to 630 across the seven. The seven CEILINGS rows in
scripts/pm/check-skill-line-ratchet.mjs are re-pinned down at the landed counts;
the seven MAX_TABLE_ROW_BYTES rows stay at 0, which is what keeps these files
table-free. No other row moves.

Part of #15379

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 — every surviving rule line (part B)

Continues the inventory in the PR body. Same columns; stripped names what left each line. Refreshed at head 6000e270d.

file # the rule as it now reads stripped
review-checklist.md 35 复核后又推提交而 HEAD 未动 ⇒ 补跑并集(至少棘轮族)再更新报告。 reworded
review-checklist.md 36 收益穿过必经边界之后还在吗:价值主张依赖下游如实转发时,至少端到端验一次。 reworded
review-checklist.md 37 必经边界含 HTTP 错误信封、序列化、日志汇聚、跨进程传输;⛔ 不是每单都做。 reworded
review-checklist.md 38 裁决实施 PR:grep 消费层(REST 信封测试、objectql、runtime)确认旧立场零拷贝。 reworded
review-checklist.md 39 且真正非法形状的拒收断言仍逐字在,这是派发侧两句的对账。 reworded
review-checklist.md 40 拒收类用例的绿是不是它抛了的绿:判据是验收点含应当被拒收。 quotation
review-checklist.md 41 抽查 diff 里的拒收用例有没有断言 code 与 status(ADR-0112 信封)。 quotation
review-checklist.md 42 只写 toThrow() 或 rejects.toThrow() 的用例在未修实现本就抛裸 Error 的那族上恒绿。 quotation
review-checklist.md 43 缺 code/status 断言判 REWORK 补齐,⛔ 不接受绿色输出。 quotation
review-checklist.md 44 N 个包全绿要问清方向与时序,否则不算清扫证据;判据是含跨包签名收窄或契约收紧。 quotation
review-checklist.md 45 问一:filter 用的是前缀 '...pkg'(下游消费者)还是后缀 'pkg...'(上游依赖)。 quotation
review-checklist.md 46 问二:typecheck 之前建过依赖闭包吗;没建则读的是陈旧 dist/*.d.ts,绿可能是假绿。 quotation
review-checklist.md 47 两问都没答案 ⇒ 以全仓门禁结论为准,或判 REWORK 要证据。 quotation
review-checklist.md 48 dev 验证过 issue 的前提吗:premise_still_valid: false 是再分诊输入不是失败。 reworded
review-checklist.md 49 dev 纠正 PM 要当众认:更正落在 PR 或 issue 评论,错前提的正文另立跟进卡。 reworded
review-checklist.md 50 报告清掉了它被要求停下的停条件 ⇒ 亲核证据再 ACCEPT。 narrative
review-checklist.md 51 判据是它报的证据面(搜了什么、找到什么)加 PM 自己在 origin/main 上的复核。 narrative
review-checklist.md 52 ⛔ 不接受结论散文:绕过去的报告与守约的长得一样。 narrative
review-checklist.md 53 验收判据本身也可被证伪:dev 用测量推翻字面判据、换上更强的不变量门禁照 ACCEPT。 narrative
review-checklist.md 54 但推翻过程必须写在 PR 正文并附 main 语料上的实测信噪比,否则按 REWORK 要证据。 reworded
review-checklist.md 55 +0/-0 不是空文件的证明:NUL 字节让 git 当二进制渲染,还让文件对 grep 隐身。 reworded
review-checklist.md 56 先疑 NUL,以 blob 定论 git show sha:path | wc -l,要求源侧写转义序列。 reworded
review-checklist.md 57 以死代码或不可达为由的删除,PM 在 origin/main 上用带引号精确名自己核一次引用面。 quotation
review-checklist.md 58 核过再 ACCEPT:这是断言不是 diff 里的事实,而这一查只花十秒。 quotation
review-checklist.md 59 卡的交付物含系统性 sweep 时,ACCEPT 评论把范围外产出成组列出并写明 sweep 判据。 reworded
contract-review.md 1 内容肢及于 published skills/**:作可证伪的算子或契约语义主张的改动挂标走本复核。 date + quotation
contract-review.md 2 ⛔ 判据不是提到契约:纯算子清单、拼写、格式不触发。 date + quotation
contract-review.md 3 受管面人工合并 ⛔ 不替代复核,两道保障叠加。 date + quotation
contract-review.md 4 Clause-②: yes | no 按设计临时:只定派发档位的保守方向,⛔ 非终审。 date
contract-review.md 5 真闸门在 PR 或报告时点的档位复核;声明被档位推翻 ⛔ 不作席位过失。 date
contract-review.md 6 机械地板 claim 时可查树:新导出符号或已发布载荷上的新键恒 yes,直接锁契约复审档。 reworded
contract-review.md 7 conformance 类 ⛔ 不机械化:填充已声明字段、在两个已发布码之间重选输入类都需判断。 reworded
contract-review.md 8 claim 拿不准 ⇒ 按 yes 派契约复审档;⛔ 不建全量分类学与 claim 时决策程序。 reworded
contract-review.md 9 PR 与卡双载体同笔挂:PR 一存在即挂;报告先于 PR 到达则先挂卡侧,ACCEPT 时补齐 PR 侧。 date + quotation
contract-review.md 10 同笔在卡上记一行条款②认定;停靠只防误入队,⛔ 无等外部席位的无限期状态。 date + quotation
contract-review.md 11 前瞻的条款②事实住卡上裁决与分诊评论、Clause-② 申报和 --tier 输出。 date
contract-review.md 12 开着的载体恒 = 真实待审。 date
contract-review.md 13 载体不迁移:⛔ 不迁 PR review 或 Request Changes,⛔ 不为迁移留门。 date
contract-review.md 14 重挂前先查裁决:闸门标签缺失 ⇒ 先 grep 卡评论找复审结论。 reworded
contract-review.md 15 PASS + 无标 + head 未动 = 已清标不是被剥;head 后移或无结论才重挂。 reworded
contract-review.md 16 get_reviews 读空 ≠ 未复审。 reworded
contract-review.md 17 归属该卡派发席,交付后收集复核当轮席内完成。 date + quotation
contract-review.md 18 审的是低档实现者的契约增量,非自身产物。 date + quotation
contract-review.md 19 契约判断清单逐项落卡或 PR 评论,⛔ 不是散文自述。 reworded
contract-review.md 20 ① derived judgments 逐项:diff 引出的接受集与公开面变化逐条点名判对错。 reworded
contract-review.md 21 ② semver 定级:变更级别与 changeset 声明一致。 reworded
contract-review.md 22 ③ 边界旗处置:dev 挂旗与 open_questions 逐旗答复或升级。 reworded
contract-review.md 23 独立性件:契约判断真分叉、或 dev 挂旗待裁 ⇒ 起上下文隔离的复核子代理出第二意见。 reworded
contract-review.md 24 只喂卡片、既有裁决与 PR 本体,⛔ 不喂派发令与派发席自己的结论;简报写成对抗性。 reworded
contract-review.md 25 未达档席 ⛔ 不凭自述复核,恒走本路径;子代理裁决按转录核验采信。 reworded
contract-review.md 26 裁决载独立性对(机读):产出 diff 的身份写 Implemented-by:,出裁决的席位写 Reviewed-by:。 date
contract-review.md 27 mode:subagent dev 记其分支 claude/issue-…(子代理无自有 session);mode:remote dev 记 session id。 date
contract-review.md 28 两者同 session ⇒ 报 SELF-REVIEW,⛔ 不作独立复核;两行皆无的历史裁决恒静默。 date
contract-review.md 29 放行 = 清标即落地:PASS ⇒ 同席同笔剥双载体,清标同笔留 provenance 评论引该 PASS。 date
contract-review.md 30 随后按 landing-operations.md 走落地前检 → 转 ready → 挂 auto-merge 或入队。 date
contract-review.md 31 轮次报告设复审清单专节,形状与代裁清单同为强制审计。 date
contract-review.md 32 落地前检三条:① 席内契约档 PASS 在案,即卡上的达档裁决评论。 date
contract-review.md 33 ② 双载体已清,逐对机读 node scripts/pm/check-clause2-carriers.mjs --pair PR-NUMBER。 date
contract-review.md 34 该命令 0 = 双肢可读且一致,4 = 不一致,3 = 环境答不了;⛔ 3 不作干净。 date
contract-review.md 35 ③ PR 全部 check 全绿,⛔ 非 required 子集;受管面不适用,draft-only 终局不变。 date
contract-review.md 36 外部评审链是可选事后审计:分诊定时轮与总监席召唤 ⛔ 不是放行必要条件。 date
contract-review.md 37 审计 FAIL 按状态机 label-flip 交回派发席补丁轮。 date
contract-review.md 38 ⛔ 不与席内复核抢同一载体的放行动作;资格与档位硬门对审计者同样成立。 date
contract-review.md 39 席内复核与审计每场前必读一次服役档,读法与陷阱见 platform-readings.md。 reworded
contract-review.md 40 ⛔ 自述档位不是读数;读数 ≠ CONTRACT_REVIEW_TIER ⇒ 该席 ⛔ 不自判清标。 reworded
contract-review.md 41 改走转录核验的复核子代理;标签在复核完成前原样留置,卡在队列外等待是安全态。 reworded
contract-review.md 42 保险丝只测座位自会话:mode:subagent 里 get_session 量的是派发会话,⛔ 不作互证。 narrative
contract-review.md 43 传参只是配置 ⛔ 不作达档读数;条款②的 mode:subagent 派发恒保留标至席内复核完成。 narrative
contract-review.md 44 转录档位核验:采信或清标前 grep 子代理 transcript 中 harness 逐消息盖章的 model 字段。 date + quotation
contract-review.md 45 产出裁决的每轮都须读到契约复审档位,见回退证据 ⇒ 裁决整体作废。 date + quotation
contract-review.md 46 父会话只有两个合法动作:逐字采纳,或整体作废(核验失败、越范围、格式不完整)。 date + quotation
contract-review.md 47 ⛔ 永不改写、删节或润色子代理裁决。 date + quotation
contract-review.md 48 契约复核 ⛔ 不适用额度耗尽豁免降档:豁免对象是派发,复核正为补偿低档派发而存在。 unchanged
landing-operations.md 1 merge=os-regen 路径清单当场读 grep os-regen .gitattributes,那是唯一权威清单。 reworded
landing-operations.md 2 ⛔ 不把该清单抄进派发令当常量;文档产物同在清单、同样会被吞。 reworded
landing-operations.md 3 四步序已机械化 bash scripts/pm/os-regen-merge.sh,步骤以脚本为权威;⛔ 禁 rebase 与 force-push。 reworded
landing-operations.md 4 ⛔ 永不在 MERGE 状态下跑 gen:schema:锚点会静默倒退回旧分叉点且全部门禁放行。 narrative + quotation
landing-operations.md 5 重生成后断言所有兄弟单的条目都还在。 reworded
landing-operations.md 6 更硬的旁证是查上一单的实现体完好:git grep 带引号精确名对 origin/main 与实现文件。 reworded
landing-operations.md 7 锚点断言的正确措辞:断言 pnpm --filter @objectstack/spec check:authorable-surface 绿即可。 reworded
landing-operations.md 8 baseRev 允许滞后,是一行提示不是错误;⛔ 禁为凑相等手改锚点。 quotation
landing-operations.md 9 ⛔ 不得要求 baseRev == merge-base。 quotation
landing-operations.md 10 车道 PM 的权责三件:验收(复核清单)、首次入队、确认 MERGED。 reworded
landing-operations.md 11 首次入队:ACCEPT 后挂 6–9 分钟 flip 定点,到点核门禁 job 结论。 reworded
landing-operations.md 12 绿即转 ready + 挂 auto-merge;未绿按阶梯重挂定点。 reworded
landing-operations.md 13 CI success webhook 不可靠:⛔ 不坐等,也 ⛔ 不忙轮询;定点文本照定时器写法纪律。 reworded
landing-operations.md 14 确认 MERGED 要两个读数:每轮同时读队列分支与 origin/main。 reworded
landing-operations.md 15 契约复核 PASS 落地的 PR 到窗口时已 ready 且 auto-merge 在挂,见 contract-review.md。 reworded
landing-operations.md 16 窗口自身权责不变:跟到 MERGED、踢出处置、落地后对账。 reworded
landing-operations.md 17 转 ready 或挂 auto-merge 前先判受管面:node scripts/pm/check-governed-merges.mjs --test 加变更路径。 reworded
landing-operations.md 18 一条命中 ⇒ 整 PR 改走人工合并道:复核照写 + 留 draft + 向授权批准人请审 + 状态评论。 reworded
landing-operations.md 19 ⛔ 不翻 ready、不入队;清标即落地同受此闸,漏判会被队列守卫在 merge group 里拒收。 narrative
landing-operations.md 20 再读 mergeable_state:dirty ⇒ 先 merge origin/main 再挂;生成物在面上按 A 的固定序。 reworded
landing-operations.md 21 ready + 全绿 ≠ 已入队:队列从不主动拉 PR,入队是显式动作。 reworded
landing-operations.md 22 零 enqueued 事件按序查三条:① mergeable_state 是否 dirty。 reworded
landing-operations.md 23 ② enable-auto-merge 调用根本没落地,重发与效果验证序列见 platform-readings.md。 reworded
landing-operations.md 24 ③ PR 碰 .github/workflows/** 而 token 缺 workflows 权限。 reworded
landing-operations.md 25 确认 MERGED 的同一动作里给 Part of 卡收口,Fixes 卡代关但标也须摘。 reworded
landing-operations.md 26 Part of 卡开着不摘 pm:dispatched,无在飞物的卡就永远算进 label:pm:dispatched is:open。 reworded
landing-operations.md 27 摘标换回 pm:queue 或按剩余物定级,加一条写清交付了什么、剩下归谁的评论。 merged
landing-operations.md 28 摘标与 MERGED 确认是一个动作,⛔ 不拆到下轮巡检。 reworded
landing-operations.md 29 同刻读相关卡 closed_by_pull_requests,确认没有卡被正文闭合关键词误关。 reworded
landing-operations.md 30 每次合并后重拉一次车道盘点与预期状态对账,⛔ 不留给下轮巡检。 reworded
landing-operations.md 31 取 open 卡清单对照预期 diff:预期之外从 open 消失的,就是被闭合关键词静默误关的卡。 quotation
landing-operations.md 32 落地后再核一次落地判据本身:队列的合并同样走 os-regen,A 的静默吞并一样能发生。 reworded
landing-operations.md 33 MERGED 不是终点:发版后义务见 release-aftercare.md。 reworded
landing-operations.md 34 落地窗口给关键 PR 挂 subscribe_pr_activity,会话型座位专用;Routine 座位维持轮询。 reworded
landing-operations.md 35 ⛔ 不订阅 dev 交报告前的 PR;订阅是感知补充,⛔ 不替代 flip 定点。 reworded
landing-operations.md 36 MERGED 或关闭即退订,同刻把 mode:cloud 派的会话 archive_session。 reworded
landing-operations.md 37 触发条件是卡终局且报告已收复核;⛔ 合并前不归档,误归档可 unarchive 但容器现场已失。 reworded
landing-operations.md 38 暂停或交接时把在挂订阅清点进座位贴,⛔ 不留孤儿订阅。 reworded
landing-operations.md 39 main-red 约定①:p0 fix-forward 允许跳队,限 p0、机械、根因已核实的止血 PR。 date + narrative
landing-operations.md 40 也可按既有 governed 例外由维护者人工直合一行修复;仅限 main-red 修复。 narrative
landing-operations.md 41 ⛔ 不放宽其它任何 PR 的 queue-only 落地。 reworded
landing-operations.md 42 main-red 约定②:一个失败 check 只锚一张卡,先立者赢,后见者评论到锚卡,⛔ 不另立。 date
landing-operations.md 43 这种 PR 停在 draft,正文写精确的预期红清单:逐条失败测试名 + 报错签名。 reworded
landing-operations.md 44 正文同写解除条件:点名所依赖的那张 PR 合入。 merged
landing-operations.md 45 每个 CI-failure 事件与清单比对:签名匹配静默跳过,新签名才是真问题。 quotation
landing-operations.md 46 依赖合入后:最后一轮同步 → 红清零 → 转 ready → 入队。 reworded
landing-operations.md 47 每一棒都是一整圈:merge main + A 的四步 + 全套验证 + 兄弟单断言复核。 reworded
landing-operations.md 48 然后 PM 复核回报 → 转 ready → 挂 auto-merge 或入队;每棒都重走。 reworded
landing-operations.md 49 auto-merge 由 PM 挂,dev 永不碰。 reworded
landing-operations.md 50 相邻两棒同碰一个文件时,交接的是语义不是文本。 quotation
landing-operations.md 51 前棒在回报里写明它对共享文件改动的性质:改名、提取变量、增补断言,还是纯追加。 quotation
landing-operations.md 52 PM 原样转告下一棒,并要求两个 PR 的意图叠加,⛔ 禁止机械取一边。 quotation
landing-operations.md 53 两棒散文互锁时分工由 PM 指派,允许前棒留占位交接。 reworded
landing-operations.md 54 PM 必须在两侧接力指令里写明谁动、谁不动。 reworded
seat-post-protocol.md 1 四段的现值由在任座位在写侧刷新时收缩;⛔ 岗位说明 PR 不代改贴正文。 quotation
seat-post-protocol.md 2 标题即状态板,固定格式 [PM seat] 座位名 — 状态。 quotation
seat-post-protocol.md 3 状态词表:🟢 github-login 在任、🟢 Routine、⏳ vacant、⏸️ paused。 quotation
seat-post-protocol.md 4 label:pm:seat 的列表页因此就是全舰队状态板。 quotation
seat-post-protocol.md 5 assignee = 在任 PM 的 GitHub 账号,退场或回收时摘除;无 assignee = 空缺,与标题互为校验。 reworded
seat-post-protocol.md 6 例外:Routine 座位的 bot 身份通常不可被 assign,以标题为准。 reworded
seat-post-protocol.md 7 当前 PM 段登记三元:GitHub 账号(get_me 自查)、会话 ID 或 Routine ID、上任时刻。 quotation
seat-post-protocol.md 8 审计与认领评论的作者字段是平台盖章的硬读数,接管仲裁与活性判定优先用它对账正文。 quotation
seat-post-protocol.md 9 班次叙事 ⛔ 不进贴正文:逐卡状态在卡与 PR 上必填,轮次合计走轮次报告。 reworded
seat-post-protocol.md 10 接管压缩:接任 PM 把交接的有效内容按四段模板重述为新正文,编辑历史即存档。 reworded
seat-post-protocol.md 11 旧账留在上一版 body revision,审计评论带版本指针(哪一版、何时)。 reworded
seat-post-protocol.md 12 超大贴由半状态巡查的 report-only 项浮出,⛔ 不等读取失败。 reworded
seat-post-protocol.md 13 热文件串行队是跨轮跨班次的常设事实:文件 → 有序卡片清单 → 每张卡认领的区域。 reworded
seat-post-protocol.md 14 新增座位贴(拆域)先查 pm:seat 索引再立贴。 reworded
seat-post-protocol.md 15 活性惰性半边在接管冲突时评估一次:Routine 座位查调度器 last_fired 与 next_run。 narrative + quotation
seat-post-protocol.md 16 会话座位查最近一条产出评论的时间戳;回收 = 改正文 + 审计评论。 narrative + quotation
seat-post-protocol.md 17 常设半边是分诊轮的座位贴活性巡查,同一判据,细则见 dispatch-runbook.md。 narrative + quotation
seat-post-protocol.md 18 可跑读法:本车道 pm:dispatched 卡按 updated_at 降序一搜,或读最近一条认领评论。 narrative + quotation
seat-post-protocol.md 19 写侧刷新点的三个时刻:派发时、收班时、暂停或交接前。 quotation
seat-post-protocol.md 20 协议升级迁移状态、或巡检发现正文不符时,当场改正文 + 审计评论。 quotation
seat-post-protocol.md 21 Routine 座位的收尾简报也落自己的座位贴,它是下一轮自退守卫的读数。 quotation
seat-post-protocol.md 22 安置默认离任留守;留不了才热移交:在飞卡落收单注记 + 点名看护者。 date
seat-post-protocol.md 23 收单注记写评审判据、落地步骤与当前状态;看护只守落地,⛔ 评审判断不可外包。 date
seat-post-protocol.md 24 看护者默认下任座位;在跑云会话经 poke 触发器投递,⛔ 非 SendMessage 直投。 date
seat-post-protocol.md 25 收班序列:贴正文与标题刷新在先,简报评论是最终一笔;继任的释放判据 = 简报在。 date
seat-post-protocol.md 26 标题滞后是可修半状态,坐席时顺手修,⛔ 不是阻塞。 date
seat-post-protocol.md 27 留守写面恰为简报点名的项:已 ACCEPT 待队列 PR、落地中的评审链载体;残余定时器同界。 date + quotation
seat-post-protocol.md 28 末尾巴合并 ⇒ 贴上一条尾清注记;继任立即坐席,点名集作围栏。 date + quotation
seat-post-protocol.md 29 标题词表不扩,收班座位恒 ⏳ vacant;留守登记(谁、哪些尾巴)= 说明段一行。 date + quotation
seat-post-protocol.md 30 立即停止新派发。 quotation
seat-post-protocol.md 31 在手工件逐件处置:能收则收,收不完留守或热移交;⛔ 不为清零而等。 quotation
seat-post-protocol.md 32 全量枚举本车道队列、决策箱与 findings,形成接任台账。 quotation
seat-post-protocol.md 33 贴正文改 ⏳ vacant + 台账:前任会话 ID、注销时间、队列快照、串行队、跨车道备忘。 quotation
seat-post-protocol.md 34 收班简报与审计评论存档;接任指引 = /pm-dispatch 接手 + 先读座位贴。 quotation
seat-post-protocol.md 35 list_triggers 清点本会话全部自设定时器,逐个清理或随移交物转交。 quotation
seat-post-protocol.md 36 移交中 PR 的定时器随 PR 走;留守保留的定时器只触点名项。 quotation
seat-post-protocol.md 37 本座位派出的 dev 会话由离任 PM 自己逐个 archive_session,归档义务 ⛔ 不可移交。 quotation
seat-post-protocol.md 38 确须留跑的会话在座位贴里点名,写明归档不随交接转移,⛔ 不留作接任者的欠账。 quotation
seat-post-protocol.md 39 向维护者交最终报告。 quotation
seat-post-protocol.md 40 会话句柄是账号作用域的,细则见 dispatch-runbook.md。 quotation
seat-post-protocol.md 41 由维护者在 claude.ai 的 Routines UI 创建,凭据随 Routine 所挂 repo sources 走。 date + narrative
seat-post-protocol.md 42 Routines UI 并无 GitHub 连接器入口。 date + narrative
seat-post-protocol.md 43 会话内 create_trigger 的 fresh-session Routine 不挂 repo sources,拿不到 GitHub 工具。 date + narrative
seat-post-protocol.md 44 表现为静默零产出;⛔ 不要在会话里 create_trigger 出一个座位 Routine 就当它在跑。 date + narrative
seat-post-protocol.md 45 模型不能经 API 钉住,同样在 UI 钉;Routine 继承环境默认模型,环境默认变了它跟着变。 date + narrative
seat-post-protocol.md 46 创建后先手动 fire 一轮烟测,判据取 GitHub 上的产出:标签写入、审计评论、座位贴编辑。 quotation
seat-post-protocol.md 47 ⛔ 不取会话看起来起来了;零产出即技术性失败。 quotation
seat-post-protocol.md 48 回滚 = delete_trigger + 清空座位登记 + 失败注记。 quotation
seat-post-protocol.md 49 档位按职责挑,⛔ 不按重要性挑;档位与 cron 是维护者在 UI 上的可调项。 rewrapped to one line
seat-post-protocol.md 50 协议文本 ⛔ 不复制其当前值,座位贴才是现状。 rewrapped to one line
seat-post-protocol.md 51 收尾四步一组,缺一步就是过夜半状态。 rewrapped to one line
seat-post-protocol.md 52 最后一个 sub-issue 关闭 → 父单留总结评论 → 关父单并摘 pm:epic → 领地段标注收官。 rewrapped to one line
seat-post-protocol.md 53 僵尸判据:父单正文有登记,但整棵子树 ~48h 无任何认领、分支或 PR 动静。 reworded
seat-post-protocol.md 54 命中 ⇒ 分诊座位在父单评论询问,再静默一窗后摘 pm:epic 收回子树。 reworded
seat-post-protocol.md 55 子树内仍在飞的认领按认领协议由原认领者跟完。 reworded
seat-post-protocol.md 56 领地防撞是声明式的,不是机械保证;撞上由合并队列兜底。 rewrapped to one line
seat-post-protocol.md 57 领地声明越窄越诚实,越宽越要在父单正文里说明为什么。 rewrapped to one line
seat-post-protocol.md 58 生产者:主仓归分诊座位,objectui 与 cloud 归各自整仓座位。 date
seat-post-protocol.md 59 其余座位不打不摘,误判走上报;⛔ 三个生产者各扫各的 backlog。 date
seat-post-protocol.md 60 消费者:维护者的发版清单 = 三仓三条查询 label:target:major is:open。 quotation
seat-post-protocol.md 61 等价的 org 级搜索仅是备用写法;归零 = 可发版指三张板都空,单看主仓归零不是。 quotation
seat-post-protocol.md 62 ⛔ 不用姊妹仓命中即误标的旧读法:它教读者销毁真实阻塞的唯一证据。 quotation
seat-post-protocol.md 63 鲜度:每 ~5 轮对板上 open 项做过时前提检查,已修或不成立的摘牌 + 一句评论。 rewrapped to one line
seat-post-protocol.md 64 发版时刻 = 清板不是重扫,板上每条三选一:修掉、摘牌、明示接受带病发布。 quotation
seat-post-protocol.md 65 明示接受 = 摘标签 + accepted-for-GA 评论留痕,并进 release notes 的 known issues。 quotation
seat-post-protocol.md 66 三仓各自执行、读数回贴;⛔ 不因前端仓或独立部署整批默认接受。 quotation
seat-post-protocol.md 67 发版前置:清板动手之前先取一次 pin 读数,⛔ 一次即止不是重扫。 date + quotation
seat-post-protocol.md 68 pin 滞后 ⇒ console bump 单必须已存在且已上板,或按标准形态明示接受。 date + quotation
seat-post-protocol.md 69 两者都不成立 ⇒ ⛔ 不 cut。 date + quotation
state-machine.md 1 六态 = pm:{queue,dispatched,blocked,on-hold,awaiting-maintainer} 加 needs-user-decision。 reworded
state-machine.md 2 六态 ONE-OF 的成因恒是半写的转换;判定以 check-half-states.mjs 的 H29/H30/H31 为权威。 reworded
state-machine.md 3 生成物不分叉:skills/** 生成器产物跑 check-governed-merges.mjs --test,⛔ 不按路径手判。 unchanged
state-machine.md 4 needs:contract-review 卡侧先挂而 PR 尚不存在是合法中间态,⛔ 不读作半写。 reworded
state-machine.md 5 交接即标签:只写交接评论而不同笔挂标 = 空交接,收件箱只认标签。 reworded
state-machine.md 6 合法性:正文或评论带 Restart-when: closed owner/repo#N,由 Blocked-by: 同遍解锁扫描点火。 reworded
state-machine.md 7 或带 Restart-when: 一行可执行判据;两种拼写之外的 hold ⛔ 不合法。 reworded
state-machine.md 8 hold 评论写明日期、理由与出处(维护者裁或座位定级),⛔ 不设第二个标签区分两者。 reworded
state-machine.md 9 机会主义重启的触发文件走 Restart-touch: 仓内相对路径,一行一路径,值须为 tracked 文件。 reworded
state-machine.md 10 该行大小写敏感、行锚定,与另两行同双通道,喂 H17 触发文件索引;存量 hold ⛔ 不迁移。 reworded
state-machine.md 11 放行双查两查皆机械零判断:① 只放最近一次 pm:on-hold/pm:blocked 转换评论的条件。 reworded
state-machine.md 12 ② 该评论之后卡上有更新的 merged PR ⇒ 拒绝放行;⛔ 永不对更早的 blocker 放行。 reworded
state-machine.md 13 正典标记 = 行首 Blocked-by: #N(跨仓 owner/repo#N)、无装饰;指令是行,句中提及是散文。 quotation
state-machine.md 14 句中提及刻意拒收;等 PR 合并或等发布且 pin 覆盖的卡同理,指一张在该刻关闭的卡。 quotation
state-machine.md 15 ⛔ 不扩词表;等发布的目标 = pin-bump 杂事卡,Part of 型 PR 的跟踪卡 ⛔ 不可用作目标。 quotation
state-machine.md 16 工已完、PR 被外部门禁缺陷卡住者同用本态,⛔ 不设新标签;Blocked-by: 指向那张门禁卡。 quotation
state-machine.md 17 正文加机器可读行 Unlock-action: re-check PR #M,把解锁出口改为重查该 PR 落地。 quotation
state-machine.md 18 只认此一值,别的拼写静默回落重派,散文另起行;停放的 PR 正文须点名那张门禁卡。 quotation
state-machine.md 19 ⛔ 永不给完工卡重派 dev。 quotation
state-machine.md 20 上游已关 ⇒ 先重新推导是否有新阻塞并改写该行,⛔ 不反射式放行。 reworded
state-machine.md 21 正文是正典家:新 blocker 停在评论、正文留已关旧目标 ⇒ 巡查报 stale 并要求迁回正文。 reworded
state-machine.md 22 awaiting 无机器出口:维护者完成该操作后,由项目总监席核验摘标 + 证据评论同笔。 date
state-machine.md 23 awaiting 卡在在飞视图里计停放库存。 date
state-machine.md 24 retriage 挂/摘分属两方:原定级在改判前仍是权威。 reworded
state-machine.md 25 挂标者 = 提出异议的席位,挂标与异议评论(证据 + 建议定级)同笔;⛔ 裸挂标不合法。 reworded
state-machine.md 26 摘标者 = 分诊 Routine,每 fire 高优先重判、重判后摘标;老化兜底归巡查 H18。 reworded
state-machine.md 27 标签须五仓存在,首次应用时创建。 reworded
decision-analysis.md 1 只约束 needs-user-decision 卡与决策箱讨论的四维分析。 quotation
decision-analysis.md 2 内部工具卡(dev 派发用)的四维照旧,⛔ 不强加行业类比。 quotation
decision-analysis.md 3 只适用新记录,存量分析 ⛔ 不回改。 narrative
decision-analysis.md 4 每批恰好 5 张,末批不足照呈;呈完即停等回批,⛔ 永不一条消息投多批。 date + quotation
decision-analysis.md 5 批序:在飞被阻塞 > 运营阻塞 > 用户可见 > 结构性;每卡 = 六项写法 + 四棱块。 date + quotation
decision-analysis.md 6 回批一行式逐卡对应字母选项;带的附加条件随执行落地,⛔ 不为它另起请示轮。 merged
decision-analysis.md 7 裁后四件原子执行不再请示,一口气跑完;批间新入箱的卡滚入下一批。 date + quotation
decision-analysis.md 8 收件箱读数为零才收工。 date + quotation
decision-analysis.md 9 呈递用的详细解释 = 逐卡散文:业务问题 + 每选项真实代价 + 四维 + 一个推荐。 quotation
decision-analysis.md 10 ⛔ 表格行、一行判词、变与未变栅格不构成详解;压缩批次是违规不是摘要。 quotation
decision-analysis.md 11 重分析轮同纪律;适用面 = 任何席位向维护者呈递需其裁决的决策项。 quotation
decision-analysis.md 12 ⛔ 不及结果陈述:轮次报告的表格照旧。 quotation
decision-analysis.md 13 一句话问题:开头一句话说清冲突是什么,⛔ 不带实现名词,写客户看得见的症状。 quotation
decision-analysis.md 14 选项 × 真实代价表:每选项一行,做什么 + 客户可感知的后果;有实测的注明实测。 quotation
decision-analysis.md 15 业务含义直译:每选项配一句业务上等于什么,允许行业类比。 quotation
decision-analysis.md 16 四轴从业务立场论证:论据是客户、产品或事故后果,机制名词只作括号补充。 quotation
decision-analysis.md 17 防 AI 犯错轴写清出错时谁看到什么:响亮拒绝,还是静默泄露。 narrative + quotation
decision-analysis.md 18 推荐 + 回退 + 置信缺口:荐一项、给回退项、明说本分析看不见什么。 reworded
decision-analysis.md 19 裁后执行段:写明裁定之后怎么执行,让维护者只裁方向不背执行。 quotation
decision-analysis.md 20 落卡即带,⛔ 不留待维护者到场再补;四棱各一行,用中文写。 reworded
decision-analysis.md 21 语言例外见 SKILL.md 〈全体座位的不变量〉。 reworded
decision-analysis.md 22 首行机器可寻标记 os-decision-facets:纯文本单行与其 HTML 注释形等价,任一即满足。 reworded
decision-analysis.md 23 写后回读,提取按字面 grep;⛔ 注释形读不到永不读作无四棱块。 date + narrative
decision-analysis.md 24 ① 项目长远合理性:本方案缩小还是扩大特例与契约增生。 reworded
decision-analysis.md 25 ② 实际业务拉动:今天谁撞上;零拉动默认 defer 或 remove。 reworded
decision-analysis.md 26 ③ 防 AI 犯错:闭合枚举优于自由结构,响亮拒绝优于静默容忍。 reworded
decision-analysis.md 27 ④ 创业阶段不扩散:remove 优于 declare-and-maintain,每个已声明的键都是永久义务。 reworded
decision-analysis.md 28 末尾一行推荐 + 字母选项(A/B/…),再加一行强制置信缺口:本分析看不见什么。 quotation
decision-analysis.md 29 四棱行同受六项写法约束:论据从业务立场写,机制名词只作括号补充。 reworded
decision-analysis.md 30 阻塞源是平台缺陷 ⇒ 恒荐等待;⛔ 不荐绕行(形状容错、复刻平台规则)、不荐劈半落地。 reworded

🤖 Generated with Claude Code


Generated by Claude Code

… dev

The takeover section of `references/dispatch-runbook.md` gains the (a)-type
check: before putting a second dev on a branch another session's dev owns, read
the remote branch head, that branch's last push time and the newest
`os-dev-report` on the card. Any of the three inside the cloud collection
boundary means no second dev — wake the branch's own dev with a comment on its
PR, and run the takeover protocol only after a full boundary of silence. A dead
PM session is not evidence that the dev it created is dead; cross-account
liveness is read from GitHub output only.

Four lines paid inside the file's re-pinned ceiling by merging adjacent lines
(the same-round execution rule, the first-touch grading note, the seat-post
downgrade action, and the unlock-scan inversion). No prohibition dropped, the
file stays 241 lines and the ratchet row stays 241.

Part of #15379
Fixes #14986

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox
@os-zhuang
os-zhuang marked this pull request as ready for review September 5, 2026 01:29
@os-zhuang
os-zhuang enabled auto-merge September 5, 2026 01:29
@os-zhuang
os-zhuang added this pull request to the merge queue Sep 5, 2026
Merged via the queue into main with commit 2a7feb9 Sep 5, 2026
35 checks passed
@os-zhuang
os-zhuang deleted the claude/issue-15379-references-rules-only branch September 5, 2026 02:16
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

2 participants