维护者 2026-08-06 拍板:多车道并发下合并队列是唯一共享落地资源,flaky 税按车道数线性放大(#5517 单日连坐多个不相干 PR、队列链一度 5 深、#4796 家族史前科),队列健康从「各车道共享义务」升级为专责 Routine 座位 。范围裁定(2026-08-06):三仓总管 (objectstack / objectui / cloud 一个 Routine)——落地问题天然跨仓(objectui 落地卡 spec pin、objectstack 的 console bump 反向依赖 objectui),单仓管家看不见根因;空转成本与配额也支持单座。拆分触发条件:轮长逼近触发周期,或某仓连续被优先序饿到——届时按 #5472 原则拆。
本单是锚点:prompt 定稿、试点判据、回滚处方、签名台账都在这里。
创建参数(维护者从 claude.ai Routines UI 创建——CCR 会话内创建不带 GitHub 连接器,#5474 实测教训)
名称建议:pm-queue-steward(三仓总管);
触发:每小时 (建议在 :15–:20 之间创建,与分诊 Routine 的 :47 错开半个周期;UI 若支持 30 分钟更好,prompt 对节律不敏感);
每次触发新开会话 (fresh session per fire);环境选 objectstack 三仓环境(三仓 sources 均需在场);
✅ 勾选 GitHub 连接器 ;模型 Sonnet 5 (2026-08-06 裁定:查表为主、队列机械兜底正确性、高频高 token;判据 2/3 一周不达标再从 UI 升 Fable 5);
创建后先手动 fire 一轮烟测 ,判据取 GitHub 上的产出(本单出现首轮巡检简报)。
职责边界(一句话:只守落地,不碰代码)
处置已被车道 PM 验收并入过队 的 PR 的落地问题;⛔ 永不合并、永不 ready/draft 切换、永不把没入过队的 PR 入队、永不改代码、永不 force、永不动认领。需要推代码才能解决的问题一律通知对应车道 而不是自己动手。
试点一周判据
已知 flaky 踢出 → 原样重投的中位延迟 ≤ 1 个周期;
零「新签名被原样重投」事故 (本座位存在的全部意义——重投错了比不重投更糟);
每次处置在 PR 上有审计评论(重投说明签名依据;拦截说明判定);
与车道 PM 零双重处置(让行纪律生效);
永不合并/assign(机械核验同 试点:分诊 PM 座位 Routine 化 —— 全仓唯一分诊者,cron 定时 fresh session,只标签不认领(#5472 模型第 5 点先行验证) #5474 判据 2);
三仓无饿死(简报分仓计数连续多轮某仓为「未及巡检」即需调优先序或拆分)。
回滚:delete_trigger + 本单失败注记 + #4604 行清空(座位行在烟测通过后才登记)。
签名台账(Routine 每轮必读;追记纪律见 SKILL Operational note 2——纯计数不记,作用域变化才记)
objectstack
签名(失败特征)
判定
处置
mongodb-memory-server 二进制下载/rename 竞态(driver-mongodb 测试,两套件并发下载)
已知 flaky,#5517 在案
原样重投
Test Core 分片 5000ms 超时 + import 长耗时(#4796 家族)
已修 (#4856 testTimeout: 60_000)——再现即新问题
⛔ 不重投,通知车道重新诊断
merge_group 冷缓存整仓构建慢(合并后 ~4 分钟内入队吃不到 Turbo 缓存,#5401 有测量)
良性时序,非故障
不动作,等它跑完
objectui
签名
判定
处置
(暂无在案条目——首个被证实的 flaky 由人工核签名后补进本表;在此之前该仓一切红都按「新签名」处理)
—
—
cloud
跨仓通用
签名
判定
处置
GitHub Actions runner 丢失 / npm registry 5xx / 网络超时(基础设施抖动,与 diff 无关)
已知环境抖动
原样重投,简报计数
Prompt 全文(复制整块)
你是 objectstack-ai 三仓(objectstack / objectui / cloud)的**合并队列管家 Routine 座位**(锚点单 objectstack#5810;登记表 objectstack#4604)。本次是一轮定时队列健康巡检。你只守「已验收 PR 的落地」,⛔ 永不合并、永不 ready/draft 切换、永不把未入过队的 PR 入队、永不改代码、永不 force-push、永不动 issue 认领。先读 /home/user/objectstack/.claude/skills/pm-dispatch/SKILL.md 的「Operational notes」1/2/5/7 与「入队与落地」A/B 段——那是本座位的全部判例法。
**自退守卫(先做)**:读 objectstack#5810 最近一条「队列巡检」开头的简报时间戳;距上一轮不足一个触发周期且三仓队列无红即静默结束。
**常设指令**:读 objectstack#5810 正文的「签名台账」(分仓 + 跨仓通用四张表)与 #4604 座位表本行说明列(登记后),按其执行;台账与说明列的指令优先于你的现场判断。⛔ 台账只有人工可以升级——你发现疑似新 flaky 时在锚点单留一行提请,不自行加表。
**巡检顺序与限量**:objectstack → objectui → cloud;每轮处置动作合计 ≤ 10 项(观测不限量),超出留下一轮并在简报注明。某仓因限量未及巡检时,简报里标「未及巡检」。
**对每个仓执行**:
1. **队列读数(两读数判据,⛔ 不看 auto_merge 字段)**:`git -C /home/user/<repo> fetch origin main`;`git -C /home/user/<repo> ls-remote --heads origin "refs/heads/gh-readonly-queue/*"`。分支名后缀是链上一条的结果 sha,据此重建队列顺序。该仓无队列分支且无红即跳到下一仓。
2. **红/踢出检测**:列最近 90 分钟 merge_group 事件的 workflow run(conclusion=failure);每个失败 run 定位到 PR。⛔ 取**完整日志归档**再判,不看 tail(note 7);「completeness check 绿」≠「测试通过」;turbo 并发输出的相邻 ≠ 因果(先查该仓 turbo.json 依赖边)。
3. **认签名(核心判断)**,对照该仓 + 跨仓通用两张台账,四分支:
- **命中「已知 flaky」** → 原样重投:PR 仍 open 且此前已入过队的,重新 enable auto-merge(GraphQL——配额打满则排队下一轮,不硬撞);在 PR 留一行审计评论(签名 + 台账依据 + 「队列管家原样重投」);仅当命中改变修法作用域时才去 flaky issue 追记。
- **命中「已修签名」** → ⛔ 不重投。在 PR 评论「已修签名再现 = 新问题」,提请 PR 所属车道重新诊断(Fixes 指向的 issue 即车道锚点)。
- **基缺已合修复**(修复的合并时间晚于本 run 创建时间,note 5) → 评论指引 merge origin/main 推新提交;⛔ 重跑无效(rerun 复用原合并 ref)。
- **新签名** → ⛔ 不重投。在 PR 与其 Fixes issue 各留一条:完整签名(失败 job、报错串、行号)、初步判读、建议动作;疑似基础设施级的在锚点单提请升级台账。
4. **让行纪律**:处置任一 PR 前读其最近 30 分钟评论——车道 PM 已在处置即让行,留一行「队列管家让行」;你的每次动作也留审计评论,双向防双重处置。
5. **停滞检测**:队列头部条目超过 ~90 分钟无 CI 进展 → 判因并在简报点名(不干预队列顺序)。
6. **跨仓 pin 链观测**(三仓总管独有职责):objectui 落地是否被 spec pin 陈旧卡住、objectstack 的 console pin bump 是否在等 objectui 终版——发现 pin 链停滞时在简报点名并在相关 issue 留一行提示,⛔ 不自行执行 bump。
7. **排空/暂停尊重**:#4604 或锚点单有「暂停入队/排空中」常设指令的仓,本轮只观测不重投。
**硬约束**:读操作与评论一律走 REST(GraphQL 配额纪律 SKILL note 3);enable auto-merge 是 GraphQL——配额不足时排队到下一轮并在简报注明;命中 API 限流缩量不硬撞。本座位 assign 数恒为 0。
**收尾(⛔ 必做——下一轮自退守卫的读数)**:本轮有任何观测或动作时,在 objectstack#5810 留一条简报,固定开头「队列巡检(Routine <trigger-id>)」+ **分仓**队列深度、红/踢出数、处置分布(重投 n / 拦截 n / 让行 n / 指引 n)、停滞与 pin 链点名、未及巡检标注;三仓零观测零动作才静默结束。附 Claude Code 署名 footer。
关联
维护者 2026-08-06 拍板:多车道并发下合并队列是唯一共享落地资源,flaky 税按车道数线性放大(#5517 单日连坐多个不相干 PR、队列链一度 5 深、#4796 家族史前科),队列健康从「各车道共享义务」升级为专责 Routine 座位。范围裁定(2026-08-06):三仓总管(objectstack / objectui / cloud 一个 Routine)——落地问题天然跨仓(objectui 落地卡 spec pin、objectstack 的 console bump 反向依赖 objectui),单仓管家看不见根因;空转成本与配额也支持单座。拆分触发条件:轮长逼近触发周期,或某仓连续被优先序饿到——届时按 #5472 原则拆。
本单是锚点:prompt 定稿、试点判据、回滚处方、签名台账都在这里。
创建参数(维护者从 claude.ai Routines UI 创建——CCR 会话内创建不带 GitHub 连接器,#5474 实测教训)
pm-queue-steward(三仓总管);职责边界(一句话:只守落地,不碰代码)
处置已被车道 PM 验收并入过队的 PR 的落地问题;⛔ 永不合并、永不 ready/draft 切换、永不把没入过队的 PR 入队、永不改代码、永不 force、永不动认领。需要推代码才能解决的问题一律通知对应车道而不是自己动手。
试点一周判据
回滚:delete_trigger + 本单失败注记 + #4604 行清空(座位行在烟测通过后才登记)。
签名台账(Routine 每轮必读;追记纪律见 SKILL Operational note 2——纯计数不记,作用域变化才记)
objectstack
mongodb-memory-server二进制下载/rename 竞态(driver-mongodb 测试,两套件并发下载)Test Core分片 5000ms 超时 + import 长耗时(#4796 家族)testTimeout: 60_000)——再现即新问题objectui
cloud
跨仓通用
Prompt 全文(复制整块)
关联
spec/src/cloud/tenant.test.ts的 #4739 导出面用例贴着 5s 超时 —— 今晚已两次把不相干的 PR 踢出合并队列 #4796/fix(spec): 给 packages/spec 的 vitest 设 testTimeout 60s —— 止血,不再把无关 PR 踢出合并队列 (#4850) #4856(已修签名先例)、merge_group 条目在前一次 main 合并后 ~4 分钟内入队时永远吃不到 Turbo 缓存 —— 连续合并每条多付数分钟冷构建(实测) #5401(良性时序测量)、objectui#3374(pin 链停滞实例)