Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude/skills/pm-dispatch/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- 表未覆盖的包首次分诊时归类并走 PR 更新本表;新增或退役 `domain:*` 必须同批改本表。
- 退役 `domain:*` 只退流通,对象保留;`domain:engine`/`domain:services`/`domain:cli` 读作 `domain:server`。
- `domain:*` 只由分诊席产出,例外一:在飞卡衍生 sub-issue 承父卡域;无标签的卡 ⛔ 不得认领。
- 例外二:立卡人自贴而车道合上表、正文齐立卡门三件 ⇒ 执行席直接认领,分诊事后抽查。
- 预贴标签只是建议,队列与级别只由分诊落笔(例外一同承);无分诊审计评论 ⛔ 不得认领。
- 跨域例外路径:拆不动的跨域单 PR 由分诊席指定一个车道 PM 认领,认领评论申报文件面。
- 派发前在飞检查:读 `pm:dispatched` 卡认领评论申报的文件面,本地求交、不另发查询。
- 跨域例外路径的范围加上该单文件面触及各域的在飞单;相交 ⇒ 排该 PR 之后串行或让行。
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
- 多车道仓 `objectstack`、`objectui`:中央分诊是 `domain:*`/type/定级的唯一生产者。
- 单车道仓 `cloud`、`objectos`、`hotcrm`、`www.objectos.ai`;未来新仓默认此类。
- 单车道仓 `repo:*` 席自理机械三务,⛔ 不产 `domain:*`;决策卡入本仓收件箱,不落 objectstack。
- 机械三务 = 自扫 sweep、自打 `type`、自做 `finding` 首触定级。
- 机械三务 = 自扫 sweep、自打 `type`、自做首触(含 `finding` 与业务理由,判据评论同分诊)。
- 新仓登记是一张清单:座位贴、标签、类别归属、门禁盘点、写身份锁移植(deny + hooks)。
- 新仓三件:加入 `GOVERNED_REPOS`、安装车队 App、写 `lanes/<repo>.md` 宪章;应用仓无分诊席。
- 新仓准入只问一句:真需要常设席位吗;hotcrm 宪章见 `references/lanes/hotcrm.md`。
Expand Down
8 changes: 6 additions & 2 deletions .claude/skills/pm-dispatch/references/dispatch-runbook.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@

## 分诊两级盘点细则

- 小时层三读法之一,sweep 析取①② = `list_issues` + `since`。
- 小时层三读法之一,sweep 析取①–⑤ = `list_issues` + `since`。
- 标签变更会刷新 `updated_at`,半标注照样入窗。
- 之二,解锁扫描反演 = 逐仓 `state=CLOSED` + `since` 与 `Blocked-by:` 反向索引求交,命中走双查。
- 之三,健康指标 = 逐标签 `perPage: 1` 只读 `totalCount`。
Expand Down Expand Up @@ -146,8 +146,12 @@
- 终报 `needs_decision` ⇒ 席位附四维分析与推荐,并入决裁批次呈维护者裁;⛔ 无裁决线程。
- 容器重启杀本地后台循环:席位等服务端信号(PR 订阅事件、座位 Routine),本地 watcher 可选。

## subagent 批派发前置:先把本地检出钉到 main
## 派发前置:前提核实,再把本地检出钉到 main

- 派发前前提核实由只读子代理做(下限档);卡线程卡在交候选给 coordinator 之前做。
- 成立 ⇒ 派;不成立而改法明确 ⇒ 改卡再派;判不了 ⇒ 入决策箱,⛔ 不占卡线程槽。
- 改法明确 = 目标不变,只换落点或修法:评论记原前提、读数与改法,再改正文。
- 砍范围、降级、关卡是卡的命运,归人工地板 ⛔ 不借改卡裁;读数落认领 `Premise:` 行。
- subagent 读 PM 容器本地检出的 agent 定义与技能文本,不读 `origin/main`:过期则整批过期。
- 每批派发前:`git -C <repo-root> fetch origin main && git -C <repo-root> checkout --detach origin/main`。
- 游离 HEAD 使停止钩子跳过分支块,⛔ 不快进会话分支;只拒与切换冲突的脏改动,不拒分叉。
Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/pm-dispatch/references/execution-duties.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

- 整车道一次读全,本地求交:`list_issues` 带 `labels: [domain:X]` + 最小字段拿回全车道 open 集。
- 候选 = open、未 assign、无 `needs-user-decision`、无 `pm:retriage`;⛔ 排除三门皆无的 `tooling` 卡。
- 自贴 `domain:*` 卡:合域表且齐立卡门三件 ⇒ 候选;缺一 ⇒ 挂 `pm:retriage`,⛔ 只评论不算。
- 无分诊审计评论的卡不是候选,预贴 `pm:queue` 视同无;例外一的 sub-issue 承父卡首触。
- 已排队父单的 open sub-issue 自动是候选,`pm:epic` 父单的子树除外。
- 每张候选读全文 + 全部评论,写派发词前做决策复读:评论读到最后一页。
- 维护者裁决逐字引入派发词裁决分区作约束,无则写明无裁决。
Expand Down
10 changes: 7 additions & 3 deletions .claude/skills/pm-dispatch/references/filing-gate.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,18 @@
- `reach:` 二选一:公开入口(HTTP/界面/`os validate`/保存)实测一次错误结果;或具名真实生产者。
- 三种例外照立,要点首条「先测可达性」:可能泄露数据;发版固化的错误文字;维护者直派。
- ② 只有维护者能做的决定,落卡即带「维护者速读」与四棱块。
- ③ 维护者直派的任务,正文引其原话。
- ④ 协调节点:跨仓/跨层父单与它的逐层子单。
- ③ 维护者直派的任务,正文引其原话;④ 协调节点:跨仓/跨层父单与它的逐层子单。
- ⛔ 不是卡:席位自己的失误、协议观察与「记住这条」,它们进座位贴或收班简报。
- 「搭下个碰 X 的 PR」不算 `carrier:`;已落地工作欠的后续照立卡,⛔ 不按「不是卡」压下。
- ⛔ 不是卡:丢卡重建(除非自身即 ①–④)、sweep 每 fire 重导的 pin/bump/卫生提醒。
- ⛔ 不是卡:既有卡一条评论能承载的指针/知会/请求;那条评论即其记录。
- UI 卡写明所需通用块或 spec 契约门;要产品命名 widget/dialog/hook/命名空间的卡退回重立。
- POST 前正文答三件:类别 ①–④、动手的读者(哪席哪步)、查重查询与命中数(含 closed)。
- POST 前正文答四件:类别、业务理由、动手的读者(哪席哪步)、查重查询与命中数(含已关)。
- 业务理由:谁受益、什么场景、不做会怎样;③ 以原话代,④ 承父单;分诊 ⛔ 不代写。
- 清楚且合北极星方向 ⇒ 照常定级入队;与「做出来的是什么」不符或无受益者 = 站不住。
- 缺失或站不住 ⇒ `Triage: returned` 退回立卡人,留 `finding`,改后再读;⛔ 不代写不关卡。
- 涉及产品取舍或方向不明 ⇒ `needs-user-decision` 入箱,总监席呈批;⛔ 不替维护者判需求。
- 批量立卡(一次 ≥10 张):审计评论带 `Batch-of:` 行,总监席每源抽 ≤5 张呈维护者过目。
- 缺件卡由分诊(单车道仓 `repo:*` 席)首触补齐卡与一次检索可推三件,写进定级评论并定级。
- 补不齐(四类皆非)者才因缺件首触即关 not_planned,一行点名所缺。
- 「动手的读者」与 Acceptance notes 同一问:说得出具体 PR 或人 ⇒ 写进去,说不出 ⇒ 不立卡。
Expand Down
4 changes: 2 additions & 2 deletions .claude/skills/pm-dispatch/references/lanes/skills.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@
- 额度耗尽豁免的地板是默认判断档,⛔ 不再往下。
- 棘轮逐行付账,⛔ re-wrap 筹行;砍点逐条核幸存,被砍内容若在别处无家,砍掉就是丢规则。
- 首触定级每轮;决策形状 ⇒ 决策箱带四棱块,⛔ 永不自裁。
- 唯一例外:本车道 finding 自分诊,全仓轮跳过。
- 自分诊问北极星「仪器为车队服务」的那一问:答不出 ⇒ 即刻 p3 或不做,⛔ 不入队。
- 本车道 finding 同走分诊席首触,⛔ 不自分诊;席位可附证据与「仪器为车队服务」的答案。
- 「仪器为车队服务」答不出的 finding ⇒ 席位建议 p3 或不做,⛔ 不自入队;定级归分诊。
- 内部指令面中文,机器判据恒英文;认领前重读全线程;标签写 read-modify-write 加回读。
- QA 波次由维护者手动触发,⛔ 不自启。

Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/pm-dispatch/references/lanes/triage.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
见 triage-duties.md;本文是本席的岗位说明,现值状态恒在座位贴,⛔ 不迁入本文。

- 由维护者一句召唤到任一项目,默认同总监席项目;只写标签与审计评论,⛔ 无 PR、无认领。
- 范围 = objectstack、objectui 的裸卡首触(定级、路由、三件)与跨车道查重;应用仓无分诊席。
- 范围 = objectstack、objectui 每张卡首触(业务理由与定级)与跨车道查重;应用仓无分诊席。
- 每 fire 只取一个仓,两仓轮替、仓内最旧优先;最旧未路由超 4h 的仓本轮优先。
- 补半状态前先确认无人在动,读后新现六态属他席即停手;⛔ 不加第二席、不改 fire 频率。
18 changes: 9 additions & 9 deletions .claude/skills/pm-dispatch/references/triage-duties.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,18 @@
- 每条枚举比对返回数与 `totalCount`,不等 ⇒ 报 `sweep INCOMPLETE` 点名缺口,⛔ 永不报干净。
- Backlog sweep 是常设职责,每 fire 扫任一析取命中的卡。
- 析取 ①:全裸(无 `pm:*`、无 `needs-user-decision`、无 `domain:*`)。
- 析取 ②:有 `pm:queue` 无 `domain:*`(仅多车道仓),只取 `updated_at` 早于 ~2 分钟。
- 有 `domain:*` 无 pm-state,或有 `pm:queue`+`domain:*` 无 `priority:*` 的半标卡,归所属车道席补齐。
- 析取 ②:有 `pm:queue` 无 `domain:*`(仅多车道仓);析取 ③:有 `domain:*` 无 pm-state。
- 析取 ④:有 `pm:queue`+`domain:*` 无 `priority:*`;②③④ 只取 `updated_at` 早于 ~2 分钟。
- 排除 `tracking`、`status:parked`、全部 `pm:seat` 贴、`qa-run` 记录。
- 自贴卡抽查:窗内新建且 `domain:*` 事件与建卡同分钟,逐张核车道、补齐三件;⛔ 不凭 actor。
- 半状态治愈积压 ② 最老优先、P0 嫌疑先行,⛔ 优先最新不适用。
- 首触定级与两析取 sweep 每 fire 跑到清空:⛔ 无每轮总量预算,清得动就多清。
- 析取 ⑤:窗内新建且 `pm:queue`/`priority:*` 与建卡同分钟,照未分诊首触;⛔ 不凭 actor。
- 半状态治愈积压 ②③④ 最老优先、P0 嫌疑先行,⛔ 优先最新不适用。
- 首触定级与五析取 sweep 每 fire 跑到清空:⛔ 无每轮总量预算,清得动就多清。
- 窗口耗尽未跑完的,下一 fire 从标签状态断点续跑。
- 排序:队列每轮清空时最新优先;清不空的那一刻起改最老优先。
- 裸卡数 >15 ⇒ 下一 fire 整轮改域分批集中模式,每批 ≤5 张同族卡,照样跑到清空。
- 紧急卡直接分诊:维护者点名或 p0 嫌疑 ⇒ 立即起默认判断档分诊子代理,不等定时轮。
- 紧急分诊的授权面 = 分诊本身,⛔ 不写码不认领;产出落卡,与定时轮分诊同格式同效力。
- 分类动作每张三选一,外加一个修复通道。
- 裁定写方向、给六态之一。
- 分类动作每张三选一,外加一个修复通道;裁定写方向、给六态之一。
- 方向在 ADR/本卡裁决/不可重裁规则:贴 `check-prior-rulings.mjs` 的 `Prior rulings read:` 行,或不点。
- `pm:queue` = 有具名落点或复现的具体缺陷,无可问之事;⛔ 工具/门禁修复不由此进。
- `tooling` 入 `pm:queue` 仅凭三门之一:首行带 `Unblocks: #N`(open 产品卡)或点名所护的已发布面;
Expand All @@ -32,7 +31,8 @@
- `needs-user-decision` = 设计卡、feature/契约形状提案、需要 appetite 的多周程序。
- 碰迁移形状或删已发布能力也进决策箱;说明书脱节不进:有裁定出处才是 (b),否则改文档。
- 决策卡速读居四棱块之上、同题,用业务语言先讲事情与选项,末句只问一字:A/B/C 或是否。
- 首行写立卡门类别 ①–④;四类定义、⛔ 清单、三答与配额见 `references/filing-gate.md`。
- 首行写立卡门类别 ①–④;四类定义、⛔ 清单、四答、理由判据与配额见 `filing-gate.md`。
- 首触先按业务理由三出口分流,再定级路由;批量卡审计评论带 `Batch-of:` 行。
- `finding` = 三类内待定级:(a) 可复现缺陷(复现或失败探针);(b) 违背已声明契约(引契约文);
- (c) AI 写元数据会被运行时拒收或静默丢弃的陷阱;其余进 PR `## Acceptance notes`,⛔ 不立卡。
- (a) 的分界是不完整 vs 错误,不是文档 vs 代码:示例照抄即失败是 (a),漏列成员不是。
Expand Down Expand Up @@ -71,7 +71,7 @@
- 在飞活性复查:认领逾一天无自有产出(commit/PR/评论)⇒ 敲门一次,首行键 `Owned-24h re-check:`。
- 敲门后 `RECLAIM_AFTER_HOURS = 12` 小时无答复 ⇒ `label-write.mjs --release` 一笔中继释放,贴不动。
- 释放:`Release:` 评论(出处三件)+ `Resume-from:` 行 + `pm:dispatched`→`pm:queue` + 清 assignee。
- 车道席可附证据/前提重验,⛔ 不定级不改标;skills 车道 finding 由该席自分诊,全仓轮跳过。
- 车道席可附证据/前提重验,⛔ 不定级不改标;每张卡欠一次分诊首触,车道 ⛔ 不自分诊。
- 域分批与 sweep 打包晋级五条照用;每批约定与积压告警见 `references/dispatch-runbook.md`。
- `pm:retriage` 每 fire 先答异议评论所求,答后同笔摘标;须维护者答的进收件箱,标照摘。
- retriage 的异议判据认内容(有评论写明所求)⛔ 不认形状(有一条异议评论)。
Expand Down
25 changes: 23 additions & 2 deletions scripts/pm/check-skill-line-ratchet.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -418,7 +418,16 @@ export const CEILINGS = new Map([
// tails leave the corpus; one rule per ≤120-byte line, no rule already stated in
// SKILL.md). Landed count, headroom 0, same convention (lowering is always
// legitimate).
['.claude/skills/pm-dispatch/references/dispatch-runbook.md', 241],
// Raised 241 → 245 by the pre-dispatch premise check (the same maintainer's
// word of 2026-10-23, 「立卡」 and 「并且立刻派发」 on the proposal 「席位派发前先用
// 子代理核实前提。核实成立就派;不成立、但改法明确的,就改卡后再派;判断不了的,
// 转决策,不占卡线程名额」; quoted on card #25507, claim comment 6370029859):
// four lines at the head of the pre-dispatch section — the read-only subagent
// and when a card-thread card runs it, the three exits, what 「改法明确」 may and
// may not change, and the `Premise:` claim line. Measured delta +4; the section
// heading was renamed in place. Not a CROSS_FILE_MOVES destination, so no
// `ruledRaises` record applies. Landed count, headroom 0, same convention.
['.claude/skills/pm-dispatch/references/dispatch-runbook.md', 245],
// Whole-text restructuring round (maintainer ruling 2026-08-23, Q1 = A):
// mechanism detail extracted from SKILL.md — the four long state-table rows
// (state-machine.md) and the clause-② review-chain operational detail
Expand Down Expand Up @@ -1341,7 +1350,19 @@ export const CEILINGS = new Map([
// 120-byte cap), with no restatement left in the section to pay with. Not a
// CROSS_FILE_MOVES destination, so no `ruledRaises` record applies. Landed
// count, headroom 0, same convention.
['.claude/skills/pm-dispatch/references/filing-gate.md', 64],
// Raised 64 → 68 by the business-rationale card (maintainer's word 2026-10-23,
// project chat, verbatim and untranslated: 「我说的是业务需求上的合理性,谁来判断」
// and 「立卡」 on the proposal that names the field and the three triage exits;
// quoted on card #25507 and in its claim, comment 6370029859). The text is the
// fourth filing-gate answer 「业务理由」 (who benefits, the scenario, the cost of
// not doing it) and the triage reading of it: clear and on the North-Star
// direction ⇒ queue; missing or not holding ⇒ returned to the filer, never
// written for them and never closed on it; a product trade-off ⇒ the decision
// inbox; batch filings sampled to the maintainer. Five lines landed, one paid
// in place (③ and ④ of the gate merged onto one line), so the measured delta
// is +4. Not a CROSS_FILE_MOVES destination, so no `ruledRaises` record
// applies. Landed count, headroom 0, same convention.
['.claude/skills/pm-dispatch/references/filing-gate.md', 68],
// The project layer above the seats (maintainer's word: ONE project form, the
// instruction line 「pm-dispatch <席位…>」 is the summon, seats are read from the
// seat posts' 🟢 line, takeover never waits for a walled account, mailbox PRs,
Expand Down
Loading