Skip to content

pm-dispatch 协调模型改版:纵向拆分(分诊/执行)+ 一人一车道双射 + 登记表正文即真相 + 座位 Routine 化(维护者 2026-08-05 拍板) #5472

Closed

Description

@os-zhuang

维护者 2026-08-05 拍板的协调模型改版,本单是 SKILL 条款的实施单。背景:#4604 三天累积 79 条登记评论,「现状」与「历史」同通道导致对账成本线性涨;全局在飞检查是 O(PM × 在飞) 的常备税且依赖自由文本申报;objectstack 仓最大,单 PM 认知吞吐不够,同仓多 PM 必须保留——改版目标是把多 PM 的协调税降为结构性防撞。

拍板的模型(五点)

  1. 纵向拆分:1 个分诊 PM(全仓唯一)+ N 个执行 PM。分诊 PM 只扫、只分类、只打标签(domain:* / pm:queue / finding / needs-user-decision)、只拆跨域 issue、只查重,永不认领派发;它是 domain:* 的唯一生产者,「未标签不可认领」从此有机械保障。执行 PM 信任标签、跳过分诊、只在本车道认领。
  2. 一人一车道双射:每个执行 PM 恰好持有一个 domain:* 车道。删除 borrowing 规则(突发积压 → 调高该域 Routine 频率或 batch;持续积压 → 拆域,改表走 PR)。「域 X 谁管 / PM Y 管什么」都恰好一个答案。
  3. 跨域例外路径(唯一越界通道):真拆不动的跨域单 PR,由分诊 PM 指定一个车道 PM 认领 + 认领评论申报文件面 + 定向在飞检查——全局在飞检查从常备税降级为仅此路径触发。
  4. 登记表协议改写([PM] 分片分工登记表 — 谁在管哪个仓库的队列 #4604):正文表格 = 唯一权威现状,就地编辑;行 = 座位(分诊 + 各域 + 姊妹仓),列 = 座位 | 范围 | 当前 PM | 说明;评论仅作交接审计,不承载状态。无急切心跳——活性惰性判定:Routine 座位查调度器(last_fired/next_run),会话座位查其最近产出评论;冲突时 >24h 无产出即可回收。
  5. 座位 Routine 化:每座位一个 cron Routine(fresh session per fire),频率随队列深度独立调(轻域每日、重域每小时),醒来读 [PM] 分片分工登记表 — 谁在管哪个仓库的队列 #4604 拿范围 → 从 labels 重建状态 → 跑一轮 → 结束。轮次互斥的具体机制(防上一 fire 未完成时重入)在实施中定型,倾向「fire 开始时查上一轮产出时间,间隔不足即自退」。试点单:分诊座位先行(见关联单)。

SKILL.md 待改条款

  • 「Multi-repo coordination」rule 4 与「Domain lanes」:改写为上述 1-3(borrowing 段删除;global in-flight check 段改为例外路径专用);
  • 登记表协议段(rule 4 末与 Domain lanes 的 registry 引用、Epic 车道的登记要求):按 4 改写,epic 登记退回 pm:epic 父单正文([PM] 分片分工登记表 — 谁在管哪个仓库的队列 #4604 不重复记,label:pm:epic 即索引);
  • 「One board, no second tracker」rule 5:补充 org Project 为视图层(auto-add workflow 按 pm:*/domain:*/repo:* 聚合三仓,无任何机器读它,GraphQL 成本不进循环热路径——登记表权威层坚持 issue 正文 + REST,依据 Operational note 3 的配额实测);
  • 「Dispatch backends」/「Collect」:补座位 Routine 化的运行形态。

域表重切(与 #5095 同 PR)

domain:engine 现覆盖 objectql + metadata* + platform-objects + core + 全部 driver-,双射下单 PM 吃不下,拆为 domain:engine-core 与 domain:drivers(建议线:objectql/metadata/platform-objects/core ↔ plugins/driver-*);#5095 的约 20 个漏网包同批归位。拆分即改 SKILL 域表 + #4604 加行。

同文件施工批次

同一 SKILL.md 的待改单:#5441(串行接力等六条运维缺口)、#5130(决策轴扩三条)、#5095(域表补包)。建议一个 dev 一批做完,changeset 一份。

验收

  • SKILL.md 上述条款落地,与本单描述一致;域表拆分后每包恰好一域;
  • [PM] 分片分工登记表 — 谁在管哪个仓库的队列 #4604 正文按新协议运行(已由拍板会话先行改写,见其审计评论),SKILL 引用与实态一致;
  • borrowing 字样从 SKILL 移除,跨域例外路径有明确的触发条件与检查范围。

Activity

  1. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    domain:devxDomain lane — seat card indexed by label:pm:seat
    on Aug 5, 2026
  2. self-assigned this
    on Aug 5, 2026
  3. os-zhuang commented on Aug 5, 2026

    @os-zhuang
    ContributorAuthor

    认领:维护者 2026-08-05 直接指令本会话执行(越过 devx 车道队列的例外,已声明文件面供全局在飞检查)
    会话:session_01N3uGFF8teXbpgtbEJ1aYXu
    分支:claude/pm-dispatch-unassigned-tasks-j0ghxx(本会话的指定分支,替代常规 issue-slug 命名)
    Worktree:objectstack-5472
    域:domain:devx
    文件面:仅 .claude/skills/pm-dispatch/SKILL.md(#4604 正文的座位表行变更属运行态登记,由 PM 侧落地,不入本 PR;⛔ 不碰 .claude/agents/os-dev.md——那是在飞 #5441 第 4 条的领地)

    ⚠️ 串行声明:与在飞 #5441(devx 车道第 4 轮,14:11Z 派发)同改 SKILL.md。处置按「预期红停放」模式:本单 dev 基于当前 origin/main 实现,push 后开 draft PR 停放,body 写明解除条件 = #5441 的 PR 合并;届时终轮 merge origin/main 做语义合并(两 PR 意图叠加,禁止机械取边),再转 ready。

    前提核查要点(写入派发词):同文件今天已合 #5130(决策轴)与 #5095(域表 22 包)两单,issue 正文的处方须对 origin/main 现状取增量——尤其确认 engine 拆分(engine-core / drivers)是否已随 #5095 落地。


    Generated by Claude Code

  4. os-zhuang commented on Aug 5, 2026

    @os-zhuang
    ContributorAuthor

    PM 复核:ACCEPT(draft 停放中,待终轮)

    PR #5522(+261/−133,文件面仅 SKILL.md + changeset)验收通过:

    状态:draft 停放的解除条件已满足 —— #5441 的 PR #5501 已于 15:02:23Z 合并(早于本 PR push 十分钟,dev fetch 时点在合并前)。待办终轮:merge origin/main + 语义合并(重点 step 6 Collect 贴邻处:#5501 停摆纠偏段与本 PR 收集边界段并存)+ 门禁重跑,然后 PM 复核转 ready 入队。终轮指令已下发。

    衍生发现已按纪律归挂 #5469(domain 词表无机械对账,建议其对账等本 PR 落地后连同 engine-core/drivers 一次做完)。

    会话:session_01N3uGFF8teXbpgtbEJ1aYXu


    Generated by Claude Code

  5. added a commit that references this issue on Aug 5, 2026
  6. os-zhuang commented on Aug 5, 2026

    @os-zhuang
    ContributorAuthor

    完成:SKILL 条款 + 运行态收尾全部落地

    代码面:PR #5522 已于 16:39Z 经合并队列 MERGED(本单随之自动关闭)。终轮含与 #5501(#5441)的语义合并——零冲突、两处意图叠加补充(Collect 的 fire 生命周期边界、接力跨 fire 的 GitHub 可读交接要求),#5501 的「飞行中范围重叠拦截」经核实与被删的全局在飞检查是不同机制,一字未动。验收细节见本单上一条 PM 评论与 PR body。

    运行态收尾(本单「拆分即改 SKILL 域表 + #4604 加行」的另一半,已完成):

    两个新座位(engine-core / drivers)均待认领;drivers 座位因冻结令(#5499)当前实际可派发量为 0(driver-sql 的 #5234 除外),engine-core 可派发存量约 19 单。

    会话:session_01N3uGFF8teXbpgtbEJ1aYXu


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

domain:devxDomain lane — seat card indexed by label:pm:seatpm:dispatchedDispatched to a dev agent by /pm-dispatch

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions