Repository navigation
pm-dispatch SKILL:spec 车道串行接力一夜(10 PR)沉淀的六条缺口 —— 接力模式、锚点措辞、裁决传播扫描、停摆纠偏、飞行中重叠、预期红停放 #5441
Description
2026-08-04/05 夜 spec 车道以串行接力连落 10 个 PR(#5304→#5306→#5308→#5318→#5319→#5321→#5314→#5312→#5323→#5365),全程按 pm-dispatch SKILL 执行。现行 SKILL 的合并队列判读、os-regen 四步、跟到 MERGED、限流规程等条目全部命中、无需改;但以下六个情形是 SKILL 没有覆盖、本夜靠现场即兴的,各有实付学费,建议按序补进(每条已注明落点章节)。查重:与 #5095(域表)、#5130(决策轴)不重叠。
1. 串行接力模式(新小节,平行于「入队与落地」)
现行 batch 模型假设同批 file-disjoint 并行;而「多个已实现 PR 全碰 packages/spec 生成物」的形态只能串行接力:一次只放行一个,每合并一个即向下一棒发接力指令(merge main + §9 重建 + 全套验证 + 兄弟断言复核 → PM 复核回报 → 转 ready + 挂 auto-merge)。要点:
- auto-merge 由 PM 挂,dev 永不碰(现行 ACCEPT 条目只写了单 PR 流程);ready → enable auto-merge 的顺序不可反(draft 转换清空 auto-merge,notes 1 已有,但接力循环里每棒都要走一次);
- 相邻棒同文件的语义合并交接:前棒在回报里写明对共享文件的改动性质(改名/提取变量/增补断言,非纯追加),PM 原样转告下一棒,要求「两 PR 意图叠加,禁止机械取边」。实例:fix(spec): app 表单摘掉八个已退役的墓碑键输入,#3786 对账门改判「真实可授权面」(#5280) #5318→feat(spec)!: ViewItemSchema 拆成授权门 + wire 变体,并让 wire 的开放递归生效 (#5074) #5319 同动
metadata-form-zod-reconciliation.test.ts,feat(spec)!: ViewItemSchema 拆成授权门 + wire 变体,并让 wire 的开放递归生效 (#5074) #5319 逐行号验证了 fix(spec): app 表单摘掉八个已退役的墓碑键输入,#3786 对账门改判「真实可授权面」(#5280) #5318 的十项元素并实测两者交互(无它的 preprocess 修复,fix(spec): app 表单摘掉八个已退役的墓碑键输入,#3786 对账门改判「真实可授权面」(#5280) #5318 的新断言在 view 上空转); - 两棒散文互锁:允许前棒给后棒留「本段由 #N 在其同步轮翻正/删除」的占位交接(实例:fix(driver-mongodb): 空
$and/$or/$not归约成布尔单位元,非 filter 节点先响亮拒收 (#5239) #5323 的族 1 段落 ↔ fix(service-analytics): 空 $and/$or 按布尔单位元归约,两个编译器对齐五后端,四条进一致性表 (#5322) #5365;fix(service-analytics)!: 作者的where也 NULL-safe ——$not下推守卫、{$not:{}}为零行、{}析取项吸收$or(#5325) #5335 的「空组合子在同仓有两个对立答案:五个后端归约成布尔单位元,service-analytics 的两个编译器 fail-closed 抛错 —— #5239 的一致性表四条因此进不了表 #5322 is its own ruling」pin 块),PM 负责在两侧接力指令里写明分工,防止双方都动或都不动。
2. authorable-surface 锚点断言的正确措辞(补进「入队与落地 A」)
#5304 落地树内基线锚点后,接力模板曾用错误断言「baseRev == merge-base」派发,后棒实测证伪并修正。正确措辞(本夜后八棒全部沿用,零误报):
断言
check:authorable-surface绿即可——锚点 authenticity 的定义是 baseRev 是 origin/main 的祖先 且其 keys 与该 commit 的 surface 逐行一致;baseRev 允许滞后,gen:schema仅在 keys 漂移时才推进它;⛔ 禁止为凑相等手改锚点文件(那正是 #4650 堵住的攻击本身);不得要求 baseRev == merge-base。
配套两个新陷阱(已立单,SKILL 引用即可):#5370(merge 未 commit 就跑 gen:schema 会把锚点静默倒退回旧 merge-base,全部门放行——四步序必须是「先 commit merge,再整体重生成」)、#5371(gen:schema 的 rmSync 顺手抹掉 gen:openapi 产物,rest 随后 503 假红)。
3. 裁决传播 = 全仓 pin 扫描(补进 step 5 派发词 + step 7 review)
维护者裁决翻转公共语义时(实例:#5322 空组合子从拒收改单位元),旧立场的 pin 不止存在于改动包——消费层(REST 信封测试、objectql、runtime)各有拷贝。#5365 首轮只翻了 service-analytics 层,REST 层 analytics-filter-refusal-envelope.test.ts 的拷贝在 CI 上红(expected 200 to be 400),补一轮才清零。规则两条:
- 实施裁决的派发词必须含「全仓扫描同语义 pin(grep 错误码/错误消息,如
INVALID_FILTER)并一次翻完」; - 翻 pin 必须保留承重:断言新语义的实质(行数/译文),不是删掉旧断言了事;真正无效形状的拒收断言原样保留,守卫点覆盖不缩。
4. subagent 停摆纠偏(补进 step 6 Collect 的 subagent 半边)
os-dev 以「后台 watcher 会唤醒我」为由中途停止时,watcher 永不触发(完成通知本身即意味着无存活子任务)——本夜四个 agent 共停摆 6 次,全靠 PM 手动唤醒。两条:
- 长验证管线的派发/接力指令写明「前台(阻塞)同步执行全部步骤,中途不停止、不把构建/测试挂后台等唤醒」;
- 完成通知携带的是中途状态("build still in progress"、"I'll resume when...")即为停摆信号:立即 SendMessage 恢复并附上述指令,不等 50 分钟阈值。第三次停摆视为不可靠,重派新 agent 接管分支(接手协议同「Handing off an interrupted dev」)。
- 同一修正应同步落到
.claude/agents/os-dev.md(生产端修复优于 PM 端补救,PD Add comprehensive test suite for Zod schema validation #12)。
5. 飞行中范围重叠拦截(补进 step 5「same-day churn」段的姊妹段)
现行「same-day churn goes INTO the prompt」只管派发时刻;main 一天 ~18 合并,飞行中同样会撞。实例:#5322 的 agent 23:17Z 起飞,#5335(同两个编译器、四格中两格)00:0xZ 合入——PM 例行核查读 main log 发现重叠,立即 SendMessage 预警(合 main 重测矩阵、读对方 diff 定边界、只补未覆盖部分、被完全覆盖则停下回报勿硬造 diff)。agent 两次收窄范围、弃自研方案改在对方体系上最小 diff 重放。规则:PM 每轮核查 git log origin/main 时,对每个在飞 dispatch 做一次「新落地 PR × 在飞范围」的相交判断,相交即发预警——晚一轮就是一次返工。
6. 依赖 PR 的「预期红」停放(补进「入队与落地 B」)
串行链中后棒先行实现、依赖前棒才能转绿的 PR(实例:#5365 四条进表依赖 #5323 的 mongodb 归约):draft 停放,PR body 写明精确的预期红清单(失败测试名 + 报错签名)与解除条件(依赖 PR 合入);每个 CI-failure webhook 到达时与该签名比对——匹配则静默跳过,新签名才是真问题(#5365 的 REST 红正是靠这个对比识别为新问题的);依赖合入后走「最后一轮同步 → 红清 → ready + auto-merge」。这是 notes 2「flaky 签名」纪律在故意红上的对偶,现行文本只覆盖了前者。
六条的实付学费:错误锚点断言若未纠正会教唆手改锚点(#4650 攻击自身);#5365 的 REST 红多花一轮 CI;6 次停摆合计拖慢约 1.5-2 小时;#5335 重叠若晚发现即重写返工。均为一次性成本,固化进 SKILL 后消失。
关联:#5370、#5371、#5388(裁决传播的边缘残留实例)、#5095、#5130(同文件待改事项,可合并施工)。
Activity
os-zhuang commentedon Aug 5, 2026
分诊(backlog sweep,主 backlog 代扫):挂
domain:devx(落点.claude/skills/pm-dispatch/SKILL.md,内部 agent 工具面)。暂不入队:PM 流程规约的改动实质是多 PM 协作契约的变更,且与既有的域表补录单 #5095(Blocked-by: #5130)同一文件面——状态判级留待维护者对 SKILL 改动的 appetite 明确后,与 #5095 同窗处理,避免两单在同一份 SKILL.md 上并行开 PR。不构成认领。会话:session_01N3uGFF8teXbpgtbEJ1aYXuGenerated by Claude Code
os-zhuang commentedon Aug 5, 2026
认领:PM 循环第 4 轮(devx 车道,维护者指令插队)
会话:
session_01GX3sL71LFq8m2usg6VqTSE分支:
claude/issue-5441-relay-mode-gapsWorktree:
objectstack-issue-5441域:
domain:devx文件面:
.claude/skills/pm-dispatch/SKILL.md(六处按正文落点章节插入)+.claude/agents/os-dev.md(第 4 条的生产端半边)12:23Z 代扫评论的两个暂缓前提均已解除:① appetite —— 维护者 14:0xZ 直接指令「#5441 插队」;② 同文件冲突 —— #5095(PR #5468)与 #5130(PR #5453)今日均已 MERGED,SKILL.md 面空闲。新串行点:#5484(os-dev.md:263 一行修)顺延至本单落地后,避免同文件并行。⚠️ SKILL.md 今日已两改(三轴 + 域表),正文引用的章节位置有位移,基于合并后 origin/main 施工。
Generated by Claude Code
docs(pm-dispatch): 飞行中重叠一段的时间戳改用可核验值 —— #5335 的 merged_at 是 23:49:44Z…
os-zhuang commentedon Aug 5, 2026
验收(devx 车道 PM,
session_01GX3sL71LFq8m2usg6VqTSE,2026-08-05):ACCEPT → PR #5501,转 ready 并挂 auto-merge。verifyCommittedSurfaceBase()实码核过(「允许滞后」「不得要求 == merge-base」有实现级证据);四步序第 3 步直接改正而非加脚注的判断正确(留注等于自留声明/执行不一致)。where也 NULL-safe ——$not下推守卫、{$not:{}}为零行、{}析取项吸收$or(#5325) #5335 合入时刻(merged_at 双读数 23:49:44Z)、「50 分钟阈值」不存在 → 钉真实 ~2h。falsify-the-issue 是好运行。.claude/走标签首选;dev 把 same-day churn 应用到派发口径自身,正是本 PR 第 5 条新 SKILL 文本教的行为。不补 B —— 按门禁自述,空 changeset 的散文到不了任何 CHANGELOG,两者非等价物不并挂。domain:spec-tooling(在用,文件面与 devx 完全重叠)与domain:ui(一例,与repo:objectui重复) #5469 不开孪生单,处置正确。Generated by Claude Code
docs(pm-dispatch): 与 #5501 的语义合并 —— 座位 Routine 与停摆纠偏/串行接力的层级互引 (#5472)
docs(pm-dispatch,os-dev): 串行接力一夜沉淀的六条缺口补进 SKILL —— 接力模式、锚点措辞、裁决传播扫描、停…
docs(pm-dispatch): 协调模型改版 —— 分诊/执行纵向拆分 + 一人一车道双射 + 登记表正文即真相 + 座位 Rout…