Skip to content

Commit 5497d4a

Browse files
docs(pm-dispatch): Tier S landed from a project needs a review of record by another account; the 分诊席 shrinks to bare cards; decision cards stay in their repo and the 总监席 scans every repo (#25422)
<!-- claude-projects-attribution: {"github_login":"os-elon-musk"} --> _Requested by **Elon** · [project thread](https://claude.ai/code/project/chan_01WedDzV26nniwxv7jC88B9D?thread=cmsg_01WedDzV26nniwxv7jC88B9DT9BzcHzTUTCpkAMQnkTEXC)_ Fixes #25414 Clause-②: no Metadata-protocol: none ## 维护者速读(草稿) - **改了什么**:把您 2026-10-23 在「车队机制迁往 Projects」线程的话写进 pm-dispatch 六个细则文件。① 项目席落地 Tier S 的前提多一条:契约复核记录的 `Reviewed-by:` 会话必须属于 PR 作者之外的账户(记录另带一行 `Reviewed-by-account:` 写复核账户的 login,须异于 PR 正文 attribution 的 github_login,与 #25415 队列守卫读的键一致);同账户的隔离子代理只算复核、不作落地记录;只动散文面的 PR 同样欠另一账户一条 TIER_DEFAULT 记录;过渡期没有另一账户在席时,替代是您本人在执行线程的话:逐个点名 PR 编号,或对该席位的 Tier S 长期授权(一句可撤;批 #7 卡 2 裁定 A)。② `pm:mailbox` 信箱 PR 不欠 CI、永不入队、台账查询排除。③ 每个项目的巡查多一项:扫 `needs:contract-review` 的 open PR、剔除本账户署名的、留 Claim 形评论再复核、PASS 同笔摘标;总监席摘要列等候逾 24 小时的 PR。④ 分诊席缩为薄席:只做 objectstack、objectui 两仓裸卡的首触定级与路由、跨车道查重,只写标签与审计评论;半标卡归所属车道席补齐;应用仓无分诊席;发版板、pin 链、决策箱勤务移到总监席章程,fork PR 扫描与 hold 解锁重验移到车道巡查。⑤ 决策卡留在立卡仓,总监席扫全部仓的 `needs-user-decision` 按批呈您;pin 链扩到每个应用仓;新仓清单加 GOVERNED_REPOS、车队 App、车道宪章文件。 - **为什么改**:您的原话(卡 #25414 正文):「分诊不忙不如留给总监管」(12:08Z)、「为什么我们需要区分项目类型?任何一个项目中都可以召唤总监啊,任何一个项目中也可以召唤分诊」(12:25Z)、「你立卡并派发处理所有相关任务,跟踪落地」(12:13Z)。实测依据:06:04Z 至 06:16Z 三个席位的落地只在您本人逐个点名 PR 时放行;#25363 由另一账户复核后作者席位一分钟内自落,无人点名。 - **风险与代价(含回滚)**:纯规则文本;triage-duties.md 120→103 行,lanes/director.md 70→87 行,其余五个文件净零;棘轮以跨文件迁移申报付账,总上限不升;一次 revert 可回。两处要您知道:① 本 PR 在 #25412(项目形态,写 `project-forms.md`)之后落地,#25412 已先合入,main 已并进本 PR,lanes/director.md 的 project-forms.md 指针与「直连无 Routine」那行核对后无需再改;② 分诊席的人工决裁底线(风险判据、工作量判据、人工地板、不呈清单)原文未动。 - **席位意见**:席位增量复核 PASS(评论 6369430152,head 3e07aa8):FAIL-1 已按原句修正;裁定 A 原句逐字写入;47 项检查全部通过或跳过。同账户记录只算复核,落地依据是您 14:14Z 在席位线程的长期授权;过时的席外文字由 #25490 跟进。 - **你要做的(一个动作)**:无。您 15:55Z 的「25422 同意」已裁定过渡行,席位对新 head 增量复核 PASS、CI 全绿后,按您 14:14Z 在席位线程给的长期授权落地,不必再点名。本 PR 写的规则(另一账户的复核记录即放行)要等它自己合入才生效。 ## What changed Seven files under `.claude/skills/pm-dispatch/references/**` plus the ceiling rows in `scripts/pm/check-skill-line-ratchet.mjs`; rule text only; every edited line is at or under 120 bytes. | File | Before | After | |:--|:--|:--| | `contract-review.md` 独立性对 (48 → 54, ceiling 60) | the pair is read off `--template` | +3: a project seat's Tier S landing needs a `Reviewed-by:` from an account other than the PR author's: the record carries a `Reviewed-by-account:` line (the reviewing session's login) beside `Reviewed-by:`, and it must differ from the PR body attribution `github_login` (the same key and comparison the #25415 queue guard reads); a same-account isolated subagent is a review, not the record; a prose-only PR owes one cross-account `TIER_DEFAULT` record. +2 beside 落地前检: ① gains the account condition for project seats; the interim rule while no other account is seated is the maintainer's own words in the executing thread, either naming each PR number or a standing Tier S authorization for that seat, revocable by one sentence (batch 7 item 2, letter A, on the card; the line wraps once, 53 → 54). The card names `landing-operations.md` for item 2, but the 落地前检两条 lines live here since the rules-only rewrite, so the text went where the rule is | | `landing-operations.md` 入队与落地 (101, net 0) | — | +1 `pm:mailbox`: owes no CI, never queued, excluded from the landing ledger and orphan-PR queries; paid by folding 「外部评审链降为可选事后审计」 into the design-fork line | | `dispatch-runbook.md` (241, net 0) | 〈座位贴活性巡查(分诊轮常设项)〉, six lines run by the triage Routine | 〈巡查常设项(每项目巡查与总监席摘要)〉: seat-post liveness goes to the 总监席 digest (3 lines, same tests); the cross-account review pass (3 lines: the `is:pr is:open label:needs:contract-review` query minus this account's attribution, the `Claim:`-shaped comment before reviewing, review per `contract-review.md`, strip the marker on PASS, the digest lists PRs waiting over 24 h); the lane patrol takes hold/closed re-validation and the fork-PR sweep (1 line). Paid by merging two 读数成本 lines. 〈分诊两级盘点细则〉: 四仓 → 两仓; `Restart-when:` batch scan → lane patrol, inbox back-fill → 总监席; sweep disjuncts ①②③ → ①② | | `triage-duties.md` (120 → 103) | the full triage duty list | the seat keeps bare-card first touch and cross-lane dedupe; disjunct ② stays (queue label, no domain), the half-labelled ③④ go to the owning lane seat; 全仓 → 两仓; the fork-PR sweep, the pin chain (6), the decision-inbox duties (3), the closed/`Restart-when:` re-validation (2) and the release board (5) leave; line 5 names where the release board and pin chain went (总监席 digest, details now in `lanes/director.md`) and that the in-flight liveness re-check goes to the same digest with its details staying here. Lines 95–120 (人工地板, 风险判据, 工作量判据, 不呈 list, 例外一/二) are untouched | | `lanes/triage.md` (7, net 0) | pickup alternation and the starvation guard | summoned by the maintainer's sentence into any project, by default beside the 总监席; labels and audit comments only, no PR, no claim; scope = objectstack/objectui bare cards + cross-lane dedupe, app repos have no triage seat; the alternation, 4 h starvation guard, no-second-seat and no-frequency-change rules kept | | `lanes/director.md` (70 → 87) | 决裁勤务 inbox line | +1 授权与形态: the 分诊席 is summoned beside this seat by default, its hourly run may share the inbox scan. 职责二 +2: the inbox is every repo's `needs-user-decision`, cards stay in the repo they were filed in; the two 入箱勤务 lines moved from triage-duties. New 职责四 (+12): the daily digest line (in-flight / awaiting ruling / awaiting landing / wall notes, PRs waiting over 24 h for review, release board, pin lag, cardless fork PRs); seat-post and in-flight liveness; the release board (5 lines moved, main-repo producer now this seat); the pin chain (3 lines, extended to every app repo); the roster regenerated by the digest, pointing at `project-forms.md` (sibling card #25412) | | `cross-repo-coordination.md` (51, net 0) | 「决策收件箱按仓:平台在 objectstack / objectui,元数据项目在本仓」 | 「决策卡留在立卡仓,总监席扫全部仓 `needs-user-decision` 呈批」; the new-repo checklist gains `GOVERNED_REPOS`, the fleet App and the lane charter file, and names 「应用仓无分诊席」; paid by merging the 准入 and hotcrm-charter lines | | `scripts/pm/check-skill-line-ratchet.mjs` | — | `triage-duties.md` 120 → 103, `lanes/director.md` 70 → 87, declared as one CROSS_FILE_MOVE (destination director.md, was 70; source triage-duties.md, was 120): +17 against a net source decrease of 17, map total unchanged | Acceptance checks on this head: `git grep -n '决策收件箱按仓' -- .claude/skills` → no hit; `git grep -n 'os-bill\|hotlong\|os-elon-musk' -- .claude/skills/pm-dispatch/references/` → no hit; no rule line names a login. ## Line budget | File | Lines | Ceiling | Net | |:--|--:|--:|--:| | `references/contract-review.md` | 54 | 60 | +6 (headroom was 12) | | `references/landing-operations.md` | 101 | 101 | 0 (+1 −1) | | `references/dispatch-runbook.md` | 241 | 241 | 0 (+1 −1, 4 edited in place) | | `references/triage-duties.md` | 103 | 103 (was 120) | −17 | | `references/lanes/triage.md` | 7 | 7 | 0 (rewritten) | | `references/lanes/director.md` | 87 | 87 (was 70) | +17 (cross-file move) | | `references/cross-repo-coordination.md` | 51 | 51 | 0 (+1 −1, 1 edited) | `SKILL.md` untouched by this PR (318/318 after the `main` merge that brought #25427). Widest edited line 120 bytes. ## Gates On `3e07aa8` (after merging `main` with #25427): `pnpm check:pm-skill-ratchet` ✓ (self-test 164 cases; declared cross-file moves 3, total ceilings down 488; every covered file at or under its ceiling), `pnpm check:pm-skill-id-lint` ✓ (87 files clean), `pnpm check:skill-frame-sync` ✓, `pnpm check:skill-frame-freshness` ✓, `scripts/check-commit-card-trailers.mjs --range origin/main..HEAD` ✓. No published package moves (`.claude/**` and one ceiling file), so `skip-changeset`. ## Ordering and open PRs - Lands after #25412 (sibling card, `project-forms.md`): its PR merged first and `main` is merged in here (clean, no conflict). The two spots re-read after that merge need no edit: the `project-forms.md` pointer in `lanes/director.md` 职责四 now resolves to the file that card added, and the 授权面 line on `main` already reads 「直连 ⛔ 无 Routine/cron」, which leaves the project-run 总监席's hourly inbox scan and daily digest (`project-forms.md` 例行) intact. Post-merge counts: `SKILL.md` 318, `lanes/director.md` 87, `seat-lifecycle.md` 95. - Open PRs on the same tree at push time: #25385 (`dispatch-runbook.md` 〈卡线程〉 L141–L142, `lanes/director.md` L1), #25255 (new `coordinator.md`, runbook L136), #25247 (lane files). This PR touches none of their hunks (runbook L39–L46, L52–L53, L64, L69–L70; director.md L22, L51, L68). ## Acceptance notes - The card's acceptance names a `record-recognisers.mjs --template` run that shows where the account line goes; `scripts/pm/record-recognisers.mjs` is outside this claim's file surface (devx S card, same stroke as the queue-guard check). Until that lands, the reviewer adds the `Reviewed-by-account:` line by hand beside `Reviewed-by:`, as `contract-review.md` now says; the key name is the one the #25415 queue guard reads, so the two PRs agree without waiting for the template change. - `seat-post-protocol.md` 发版板运维 still reads 「生产者:主仓归分诊座位」; `seat-lifecycle.md` 〈座位贴协议〉 still says the triage round releases a silent claim, and its 轮次报告 line still counts disjunct ④. All three files are outside this claim's surface (and #25385 edits the first two); one-line follow-ups for the seat: 「主仓归总监席」, 「由总监席摘要一笔中继释放」, 「析取④ → 车道席补齐」. - The 在飞活性复查 lines (knock, `RECLAIM_AFTER_HOURS`, `Release:`) stay in `triage-duties.md` because `seat-lifecycle.md` points there; line 5 of that file names the 总监席 digest as the run that executes them. - The body's first line is the HTML-comment attribution block the project session requires; `os-dev.md` 〈干净收尾〉 forbids HTML comments in GitHub text. Reported as a deviation, not hidden. Governed surface `.claude/**` (Tier S): draft, awaiting the seat's `CONTRACT_REVIEW_TIER` review and the maintainer's word; ⛔ not to be flipped ready, queued or armed by this thread. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_011XvnQKt7WvdyvD2X4DLc8R --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent c5cbf7f commit 5497d4a

8 files changed

Lines changed: 80 additions & 46 deletions

File tree

‎.claude/skills/pm-dispatch/references/contract-review.md‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,14 @@
3232
只读条款与输入集内建,⛔ 不删 ⛔ 行。
3333
- 隔离复核子代理暂存全写按所审 PR 命名的 `<scratchpad>/pr-<n>/`,⛔ 不读非本轮自写的暂存。
3434
- 独立性对:`Implemented-by:`/`Reviewed-by:` 取值同见 `--template`;子代理记采纳它的席位。
35+
- 项目席落地的 Tier S:`Reviewed-by:` 须属 PR 作者外的账户;同账户子代理只算复核。
36+
- 作者账户 = PR 正文 attribution 的 `github_login`;记录另带 `Reviewed-by-account:` 行写复核账户。
37+
- 只动散文面、不欠契约复核的 PR 同欠另一账户一条 `TIER_DEFAULT` 记录;⛔ 散文面无豁免。
3538
- 轮次报告设复审清单专节,与呈裁清单同为强制审计。
3639
- 落地前检两条,过则 Tier S 入队、Tier H 等人批:① 达档条款②复核 PASS 在案(同形记录)。
40+
- ① 在项目席另加:`Reviewed-by-account:` 的登录须异于 PR attribution 的登录,队列守卫同判。
41+
- 过渡:无另一账户在席时,① 的替代 = 维护者本人在执行线程的话:逐个点名 PR 编号,
42+
或对该席位的 Tier S 长期授权(一句可撤)。
3743
- 例外:纯重生成或只动上列散文面的 head 后移原记录继续管;判据机读已提交树;
3844
PR 落 `Regen-provenance:` 行。
3945
- ② PR check 全绿,⛔ 非 required 子集;例外:merge-base 同签名的红不计、按设计而红见 SKILL.md。

‎.claude/skills/pm-dispatch/references/cross-repo-coordination.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
- 单车道仓 `repo:*` 席自理机械三务,⛔ 不产 `domain:*`;决策卡入本仓收件箱,不落 objectstack。
1010
- 机械三务 = 自扫 sweep、自打 `type`、自做 `finding` 首触定级。
1111
- 新仓登记是一张清单:座位贴、标签、类别归属、门禁盘点、写身份锁移植(deny + hooks)。
12-
- 新仓准入判据一句:这个仓真的需要常设席位吗。
13-
- hotcrm 收卡判据与宪章见 `references/lanes/hotcrm.md`。
12+
- 新仓三件:加入 `GOVERNED_REPOS`、安装车队 App、写 `lanes/<repo>.md` 宪章;应用仓无分诊席。
13+
- 新仓准入只问一句:真需要常设席位吗;hotcrm 宪章见 `references/lanes/hotcrm.md`。
1414
- objectui 卡按修复落点分两条车道:`domain:ui`(全部代码)与 `domain:skills`(仓根发布 `skills/**`)。
1515
- objectui 的 `domain:spec`、`domain:devx`、`domain:tooling` 已退役:⛔ 不贴、不认领、不再创建。
1616
- 协议恒归 objectstack `domain:spec`;跨层功能照规则 2,objectui 子单归 `domain:ui`。
@@ -24,7 +24,7 @@
2424
- 判据:正文抽掉 objectstack 还成立 ⇒ 当场转仓(console/UI 缺陷即转 objectui);不成立才是缝卡。
2525
- 转仓走 `issue-transfer.mjs`;名册外或平台拒才重建:出处头 + 裸 `#N` 改全名 + 关源单为 moved。
2626
- 缝卡收窄为真协调卡:留 objectstack 带 `repo:*`,正文点名读者(哪个座位、哪一步)。
27-
- 决策收件箱按仓:平台在 objectstack / objectui,元数据项目在本仓;在飞卡 ⛔ 不中途转仓。
27+
- 决策卡留在立卡仓,总监席扫全部仓 `needs-user-decision` 呈批;在飞卡 ⛔ 不中途转仓。
2828
- 规则 2:跨层功能点或 objectui 消费的 `Seam:` 卡恒由分诊立父单 + 逐层子单,spec/后端先行。
2929
- 下游带 `Blocked-by: <owner/repo>#<n>`;`Blocked-by` 未关闭/未合并的不派发,对 GitHub 现验。
3030
- 被链接或同父的两单永不同批。

‎.claude/skills/pm-dispatch/references/dispatch-runbook.md‎

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,21 +36,21 @@
3636
- 写序:标签翻转只在认领评论写成功之后,两笔不原子。
3737
- 评论失败而标签已翻即制造一记真半状态;顺序反了就带重试义务,重试未成即回滚标签。
3838

39-
## 座位贴活性巡查(分诊轮常设项)
39+
## 巡查常设项(每项目巡查与总监席摘要)
4040

41-
- 分诊 Routine 每 fire 附带一次本巡查。
42-
- 扫描面:`label:pm:seat` 列表页上标题挂 `🟢 <github-login>` 的贴。
43-
- `🟢 Routine` 座位以调度器读数为准,⛔ 不入本巡查。
44-
- 判据只认在任者自己的产出:自有评论、认领、正文编辑;作者与时间戳是硬读数。
45-
- ⛔ 不算发给它的跨座位通知:收到消息不是活着的证据。
41+
- 座位贴活性归总监席摘要:扫 `label:pm:seat` 挂 `🟢 <github-login>` 的贴,Routine 席读调度器。
42+
- 判据只认在任者自有产出(评论、认领、改正文)及其作者与时间戳,⛔ 收到的通知不算。
4643
- >24h 无自有产出 ⇒ 当场降级:改 `⏳ vacant` + 摘 assignee 同笔 + 证据评论(时间戳与链接)。
44+
- 跨账户复审:每项目巡查跑 `is:pr is:open label:needs:contract-review`,剔除本账户署名的 PR。
45+
- 复核前在 PR 留 `Claim:` 形评论(会话、账户);已有他账户的认领即跳过,⛔ 不双做。
46+
- 复核照 `contract-review.md`;PASS 同笔摘标记、FAIL 不摘;总监席摘要列等候逾 24h 的 PR。
47+
- 车道巡查同跑:hold/closed 解锁重验回队;本仓无卡 fork PR 按 `external-contributions.md` 立卡。
4748

4849
## 分诊席读数成本三则
4950

5051
- 收班简报索引化,四段模板:首行机器判据、索引表、健康指标、接力清单。
5152
- 首行机器判据是起始标记 `分诊轮收尾`,逐字不动,互斥守卫靠 grep 它。
52-
- 索引表 = 卡号加一行判决;后两段沿用 SKILL.md 轮次报告节的定义。
53-
- 细节禁止复述:逐卡理由已作审计评论落卡,简报只指不拷。
53+
- 索引表 = 卡号加一行判决,后两段沿用 SKILL.md 轮次报告节;细节不复述,简报只指不拷。
5454
- 硬预算正文 ≤3000 字符,收班自报字符数;连续两轮超限即漂移。
5555
- 互斥最小尾页读法:尾页配方只覆盖座位贴的两个读数,判空缺另对正文与标题。
5656
- 配方:`issue_read get` 拿评论总数,按小 `perPage`(~15)算末页页码只读尾页。
@@ -61,13 +61,13 @@
6161

6262
## 分诊两级盘点细则
6363

64-
- 小时层三读法之一,sweep 析取①②③ = `list_issues` + `since`。
64+
- 小时层三读法之一,sweep 析取①② = `list_issues` + `since`。
6565
- 标签变更会刷新 `updated_at`,半标注照样入窗。
6666
- 之二,解锁扫描反演 = 逐仓 `state=CLOSED` + `since` 与 `Blocked-by:` 反向索引求交,命中走双查。
6767
- 之三,健康指标 = 逐标签 `perPage: 1` 只读 `totalCount`。
6868
- 裸卡数例外:标签缺席无计数可读,取本轮析取①的枚举,⛔ 不另发查询。
69-
- 每日层(当日首 fire)= 四仓全量对账 + 归集本就日频的职责。
70-
- 日频职责 = finding 集中轮、`Restart-when:` 判据批扫、决策箱回填。
69+
- 每日层(当日首 fire)= 两仓全量对账 + 归集本就日频的职责。
70+
- 日频职责 = finding 集中轮;`Restart-when:` 批扫归车道巡查,决策箱回填归总监席。
7171
- 成本靶:干活轮 ≤50k token,空转轮守既有探针预算。
7272
- 每条枚举比对返回数与 `totalCount`;分页只治当次,一个谓词,⛔ 不加第二条代码路径。
7373

‎.claude/skills/pm-dispatch/references/landing-operations.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
## 入队与落地
66

77
- fork PR = 提案,席位永不放行;采纳 diff 内部落地,见 `references/external-contributions.md`。
8+
- `pm:mailbox` 信箱 PR 不欠 CI、永不入队;落地台账与孤儿 PR 查询一律排除该标签。
89
- 条款②入队闸门:翻 ready / 入队前先取 PR 实际 diff;diff 是事实,卡片语义是预测。
910
- `--tier` 嫌疑行是提示非裁定;双肢命中任一 ⇒ 无达档条款②复核 PASS 在案 ⛔ 禁止入队。
1011
- 路径肢 = diff 触及契约面 `packages/spec/src/**` 非测试,含 error-code-ledger、`*.zod.ts` 契约 schema。
@@ -15,8 +16,7 @@
1516
- diff 只改 release 文字或注释者:派发席 ACCEPT 确认,逐句引改前与改后,免第二次同 head 复核。
1617
- 其余(含改代码)照全套:同 head 达档复核 PASS 记录即确认,记录逐句判改写句。
1718
- 两类缺一不算;算即按 SKILL.md 三条件带红入队,门禁不改。
18-
- 真正设计分叉照旧进决策箱,席内复核 ⛔ 不替代维护者裁定。
19-
- 外部评审链降为可选事后审计,非放行前提。
19+
- 真正设计分叉照旧进决策箱,席内复核 ⛔ 不替代维护者裁定;外部评审链只作事后审计。
2020
- 默认分支 push 即触发对外部署的仓,只在验证层存在时才合并;无验证层 ⛔ 不合并。
2121
- 验证层 = 部署以 CI 为闸、发布后探测线上面、失败自动回滚并立卡。
2222
- 该类仓的落地判据是已发布且探测通过,⛔ 不是 MERGED;跟到发布为止。

‎.claude/skills/pm-dispatch/references/lanes/director.md‎

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
- 不占 `domain:*` 车道,范围按职责标签跨车道跨仓;永不认领 backlog、永不写码。
2121
- 项目内卡线程报 `needs_decision` ⇒ 席位写四维分析加推荐,并入决裁批次呈维护者人工裁。
2222
- 维护者令「必须人工决裁」撤销「有把握自己决定」;⛔ 无裁决线程、代裁、置信门。
23+
- 分诊席默认与本席同项目召唤,小时轮可与收件箱扫描共用一轮;职责见 `triage.md`。
2324

2425
## 基本原则
2526

@@ -48,7 +49,9 @@
4849
- 首批读完前 ≤5 张同族卡即呈;⛔ 不先扫全箱;每张皆呈维护者,⛔ 无自裁、无免呈。
4950
- 取下五张只用便宜扫描:标签、assignee、PR 引用、速读首行;全文只读手上五张。
5051
- 判据:开场标记→首批 ≤ 读五张;录裁只录维护者回字,⛔ 不自录、不自转工作态。
51-
- 决策收件箱 `needs-user-decision` 跨仓勤务,按基本原则批呈;⛔ 不复活已退役的汇总 issue。
52+
- 决策收件箱 = 全部仓的 `needs-user-decision`,卡留立卡仓;⛔ 不复活已退役的汇总 issue。
53+
- 入箱勤务:校验/补全四棱块、速读与 `Prior rulings on this card:` 行;入箱同笔现读前提。
54+
- 线程有 `Ruling:`/RULED 的卡再入箱,该行逐 id 各一句变化;缺行 ⇒ 拒入,`pm:retriage` 回立卡者。
5255
- 一次只开一批:维护者对批 N 回字(一字即可)后,新到才合成批 N+1;续批至清零才收工。
5356
- 受管草稿批:两仓 `is:pr is:open is:draft label:needs-user-decision` 对照等人合清单,差集点名。
5457
- 有席内 ACCEPT 者呈一批 ≤5 行,写法见 `../decision-analysis.md`;四件缺一者列缺口不呈。
@@ -65,6 +68,20 @@
6568
- 待您清单与待字索引随所属批只呈一次,⛔ 不逐轮重印;座位贴散文降为指针,标签即状态。
6669
- 出口执行:核验动作确已发生,再摘标加证据评论同笔;出口条款见 `../state-machine.md`。
6770

71+
## 职责四:每日摘要、发版板、pin 链与总表
72+
73+
- 每日摘要:在飞/待裁/待落地/撞墙、等复审逾 24h 的 PR、发版板、pin 滞后、无卡 fork PR。
74+
- 座位贴与在飞活性复查归本摘要,见 `../dispatch-runbook.md` 巡查常设项与 `../triage-duties.md`。
75+
- 发版板 `target:<major>` 主仓归本席;判据二元,⛔ 不做优先级渐变:不修它,RC 能不能发。
76+
- 判阻塞四类:① 用户今天就撞的已发布面缺陷;② 公开契约 declared≠enforced。
77+
- ③ 存量数据/迁移形状(发布后修不回);④ 发布说明里要为它道歉的。
78+
- 拆分/分票时 `target:*` 随工作走,对每一半重跑二元判据,默认继承,不继承按四类写明理由。
79+
- 每张板恰好一个生产者;鲜度节奏、清板三选一、pin 前置见 `../seat-post-protocol.md`。
80+
- 跨仓 pin 链:objectui pin 落后且其队列已空 ⇒ 在本仓立/刷新 console bump 单;⛔ 只立单不 bump。
81+
- 见新 tag 族发布 ⇒ 在 cloud 与每个应用仓立平台版本 bump 单;单张封顶,已有则追评刷新。
82+
- bump 单等待卡清单 = hold 索引(`Restart-when:`/`Blocked-by:` 点名该发布的 open 卡),查询落正文。
83+
- 车队总表随本摘要重生成,坐席/接管/收班同笔;一席一行,⛔ 不手改;见 `../project-forms.md`。
84+
6885
## 与 skills 席的分界
6986

7087
- 改 skill、指令或治理文本归 skills 席;出裁决、清复审标、清点待人工清单归本席。
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# 席位章程:分诊席(Triage)
22
见 triage-duties.md;本文是本席的岗位说明,现值状态恒在座位贴,⛔ 不迁入本文。
33

4-
- 分诊每 fire 只取一个仓,两仓轮替:objectstack、objectui、objectstack……;仓内按最旧优先。
5-
- 饥饿守卫:轮次开始时任一仓最旧未路由卡超过 4 小时,该仓本轮优先,不论轮到谁。
6-
- ⛔ 不回退到跨仓全局最旧优先;⛔ 不因积压增设第二分诊席或改 fire 频率。
7-
- 补半状态前先确认无人在动;读取之后才出现的六态属他席,停手重读,⛔ 不替换。
4+
- 由维护者一句召唤到任一项目,默认同总监席项目;只写标签与审计评论,⛔ 无 PR、无认领。
5+
- 范围 = objectstack、objectui 的裸卡首触(定级、路由、三件)与跨车道查重;应用仓无分诊席。
6+
- 每 fire 只取一个仓,两仓轮替、仓内最旧优先;最旧未路由超 4h 的仓本轮优先。
7+
- 补半状态前先确认无人在动,读后新现六态属他席即停手;⛔ 不加第二席、不改 fire 频率。

‎.claude/skills/pm-dispatch/references/triage-duties.md‎

Lines changed: 6 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,33 +2,26 @@
22

33
分诊席每次 fire 开局读本文;本文是分诊座位的全部职责。
44

5-
- 发版板(无板仓跳过)与查重/shadow 检查全仓照跑;⛔ 无代裁通道。
5+
- 发版板、pin 链归总监席摘要,细则见 director.md;活性复查同归,细则留本文;⛔ 无代裁通道。
66
- fire 开局只按名加载互斥检查所需工具,`ToolSearch` 用 `select:`;判定本轮有活才加载其余。
77
- ⛔ 分诊 fresh session 开局不做泛关键词 ToolSearch;可验判据:空转轮 ~4 万 token 以内。
88
- 两级盘点:小时轮以 `since` 窗口读增量,锚 = 座位贴上一份收班简报的时间戳。
99
- 查重缓存住席内:新会话全量拉,其后 `since` 增量;⛔ 不建分支、不共享、不依赖备份。
10-
- 每日一 fire 跑全仓全量对账并归集日频职责;选层按 fire 时刻 ⛔ 不用计数器,简报写明层。
10+
- 每日一 fire 跑两仓全量对账并归集日频职责;选层按 fire 时刻 ⛔ 不用计数器,简报写明层。
1111
- 每条枚举比对返回数与 `totalCount`,不等 ⇒ 报 `sweep INCOMPLETE` 点名缺口,⛔ 永不报干净。
1212
- Backlog sweep 是常设职责,每 fire 扫任一析取命中的卡。
1313
- 析取 ①:全裸(无 `pm:*`、无 `needs-user-decision`、无 `domain:*`)。
14-
- 析取 ②:有 `pm:queue` 无 `domain:*`(仅多车道仓);析取 ③:有 `domain:*` 无 pm-state。
15-
- 析取 ④:有 `pm:queue` 与 `domain:*` 而无 `priority:*`;②③④ 只取 `updated_at` 早于 ~2 分钟。
14+
- 析取 ②:有 `pm:queue` 无 `domain:*`(仅多车道仓),只取 `updated_at` 早于 ~2 分钟。
15+
- 有 `domain:*` 无 pm-state,或有 `pm:queue`+`domain:*` 无 `priority:*` 的半标卡,归所属车道席补齐。
1616
- 排除 `tracking`、`status:parked`、全部 `pm:seat` 贴、`qa-run` 记录。
1717
- 自贴卡抽查:窗内新建且 `domain:*` 事件与建卡同分钟,逐张核车道、补齐三件;⛔ 不凭 actor。
18-
- 半状态治愈积压 ②③④ 最老优先、P0 嫌疑先行,⛔ 优先最新不适用。
19-
- 首触定级与三析取 sweep 每 fire 跑到清空:⛔ 无每轮总量预算,清得动就多清。
18+
- 半状态治愈积压 ② 最老优先、P0 嫌疑先行,⛔ 优先最新不适用。
19+
- 首触定级与两析取 sweep 每 fire 跑到清空:⛔ 无每轮总量预算,清得动就多清。
2020
- 窗口耗尽未跑完的,下一 fire 从标签状态断点续跑。
2121
- 排序:队列每轮清空时最新优先;清不空的那一刻起改最老优先。
2222
- 裸卡数 >15 ⇒ 下一 fire 整轮改域分批集中模式,每批 ≤5 张同族卡,照样跑到清空。
23-
- 每 fire 同扫 open fork PR:无卡按 `external-contributions.md` ① 立卡;卡已关的按其 ③ 补关。
2423
- 紧急卡直接分诊:维护者点名或 p0 嫌疑 ⇒ 立即起默认判断档分诊子代理,不等定时轮。
2524
- 紧急分诊的授权面 = 分诊本身,⛔ 不写码不认领;产出落卡,与定时轮分诊同格式同效力。
26-
- 跨仓 pin 链的窗口级兜底也在 sweep,⛔ 只立单不执行 bump。
27-
- objectui pin 落后且其队列已空 ⇒ 在本仓立/刷新 console bump 单。
28-
- 见新 tag 族发布 ⇒ 在 cloud 立 `.objectstack-sha` bump 单。
29-
- bump 单单张封顶:先查同题 open 单,已有就追评刷新;工具链新形态只提请不扩面。
30-
- bump 单的等待卡清单读自 hold 索引,查询式与命中数落正文;⛔ 凭记忆写的不是该清单。
31-
- hold 索引 = `Restart-when:` 或 `Blocked-by:` 行点名该发布、版本或上游 commit 的全部 open 卡。
3225
- 分类动作每张三选一,外加一个修复通道。
3326
- 裁定写方向、给六态之一。
3427
- 方向在 ADR/本卡裁决/不可重裁规则:贴 `check-prior-rulings.mjs` 的 `Prior rulings read:` 行,或不点。
@@ -50,9 +43,6 @@
5043
- 缺 `reach:` 且非例外 ⇒ 定 `priority:p3`,并入收口卡或清扫卡,⛔ 不单独派发、不因此关卡。
5144
- 先修复:正文被 sanitizer 截断的卡不可派发,评论修复指令后跳过。
5245
- 停摆指令判据必须比其它分类更硬(双读取),事后证伪同处公开作废。
53-
- 决策箱勤务:入箱校验/补全四棱块、速读与 `Prior rulings on this card:` 行;存量卡低频回填。
54-
- 入决策箱那一笔连「前提今天还成立吗」一起现读;改状态只需现读卡。
55-
- 线程有 `Ruling:`/RULED 的卡再入箱,该行逐 id 各一句变化;缺行 ⇒ 拒入,`pm:retriage` 回立卡者。
5646
- `type`(Bug/Feature/Task)立单者可预填、分诊校正;新卡即时打,存量卡 ⛔ 不回填、下次碰到补。
5747
- 判据:违背已声明契约 ⇒ `Bug`,扩大接受集/公开面越出已声明 ⇒ `Feature`,其余 ⇒ `Task`。
5848
- 定级按北极星「优先级」1–3 条;首行 `Path: <定义项> | <清单项 id/缺项> | P<路步> | none`。
@@ -72,8 +62,6 @@
7262
- 生产者在哪是常设分诊问题:declared ≠ enforced 形状的卡先问谁在写这个字段。
7363
- 首触答责任三问:谁的代码出险/有正路否/谁可达且有人用否;据答改卡范围、域与路由。
7464
- 发现分诊轮:`finding` 恒 = 待首次定级、定级即离标;hold 重验只在 `Restart-when:` 命中时发生。
75-
- closed 形态随每轮解锁扫描;可执行判据由分诊席每日一个低频子轮批量执行。
76-
- `Restart-when:` 命中同 closed 命中待遇:回队前 ref 重验再回队。
7765
- ⛔ 不设逐卡豁免评论;每 fire 定完全部未定级 finding,优先于旧卡重验。
7866
- 三类外不可逆或有硬时限(发版即固化、只被消费的文件、过窗不可补)⇒ 不关,报维护者。
7967
- 三类外首触关闭只清门前存量,关 not planned(不等批准可否决重开);三类内无证据拒收。
@@ -87,11 +75,6 @@
8775
- 域分批与 sweep 打包晋级五条照用;每批约定与积压告警见 `references/dispatch-runbook.md`。
8876
- `pm:retriage` 每 fire 先答异议评论所求,答后同笔摘标;须维护者答的进收件箱,标照摘。
8977
- retriage 的异议判据认内容(有评论写明所求)⛔ 不认形状(有一条异议评论)。
90-
- 发版板 `target:<major>`:判据二元,⛔ 不做优先级渐变:不修它,当前 RC 能不能发。
91-
- 判阻塞四类:① 用户今天就撞的已发布面缺陷;② 公开契约 declared≠enforced。
92-
- ③ 存量数据/迁移形状(发布后修不回);④ 发布说明里要为它道歉的。
93-
- 拆分/分票时 `target:*` 随工作走,对每一半重跑二元判据,默认继承,不继承按四类写明理由。
94-
- 每张板恰好一个生产者;鲜度节奏、清板三选一、pin 前置见 `references/seat-post-protocol.md`。
9578
- 裁决恒归维护者人工:分诊只分析、推荐、入箱;⛔ 无代裁车道、置信门与 `auto-adjudicated`。
9679
- 人工地板(恒呈维护者):功能新增;ADR;协议/公开契约变化;破坏性或难回滚动作。
9780
- 人工地板同含:安全/权限边界;门禁削弱(降阈/删必查/抬上限/跳测);新增运行时第三方依赖;

0 commit comments

Comments
 (0)