From 6469e12a57fb6c811ca3d492a38e44098158d917 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 24 Oct 2026 13:25:49 +0000 Subject: [PATCH] docs(pm-dispatch): seat liveness, release and the main-repo release board name the director seat, and lane findings take triage's first touch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Five lines in seat-post-protocol.md and seat-lifecycle.md still gave the triage seat duties that thin triage moved to the director seat's digest (seat-post liveness, the in-flight knock-and-release, the main repo's release board), and one still had the skills lane triage its own findings, which 「所有卡都分诊」 withdrew. check-half-states.mjs quoted the runbook's daily tier as 「四仓全量对账」; the runbook now says 两仓. All in place, line-neutral. Co-Authored-By: Claude Claude-Session: https://claude.ai/code/session_01REMuzhz6MWRjg8uohedMnM --- .claude/skills/pm-dispatch/references/seat-lifecycle.md | 6 +++--- .claude/skills/pm-dispatch/references/seat-post-protocol.md | 4 ++-- scripts/pm/check-half-states.mjs | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.claude/skills/pm-dispatch/references/seat-lifecycle.md b/.claude/skills/pm-dispatch/references/seat-lifecycle.md index 913f53f8e3b..9c5b9ba7c0c 100644 --- a/.claude/skills/pm-dispatch/references/seat-lifecycle.md +++ b/.claude/skills/pm-dispatch/references/seat-lifecycle.md @@ -35,8 +35,8 @@ - 读侧只读贴正文 + 晚于正文最后编辑的评论;刷新前读完评论、回执未读敲门,再刷。 - 热文件串行队是正文具名段:区域写不清就只能整文件串行。 - 座位贴每仓登记合并是否对外发布及其验证层;登记缺失视为未验证。 -- 无心跳,活性由分诊轮判定:逾一天无自有产出 ⇒ 座位贴当场降级,静默认领同钟先敲门。 -- 敲门后满 `RECLAIM_AFTER_HOURS` 无答复即由分诊一笔中继释放,细则 `triage-duties.md`。 +- 无心跳,活性归总监席摘要:逾一天无自有产出 ⇒ 座位贴当场降级,静默认领同钟先敲门。 +- 敲门后满 `RECLAIM_AFTER_HOURS` 无答复即由总监席一笔中继释放,细则 `triage-duties.md`。 - ⛔ 永不从贴的 `updated_at` 或标题推死活;活性只认在任者自己的产出。 - 竞态三招:动手前重 fetch 正文、审计评论时间戳先到先得、写后回读。 - 收班 = 状态 flush + 在飞显式安置,不是在飞归零;派发口径失效,简报 ⛔ 不列作继承裁决。 @@ -44,7 +44,7 @@ - 换班报告默认零建议,只收三类:原则错/缺、可机械化项、平台事实变化。 - 原则错/缺 → skills 席专题;可机械化项 → 门禁/脚本卡,⛔ 不是散文。 - 平台事实变化 → references 事实表改一行。 -- 三类以 `finding` 入 skills 车道由该席分诊;三类之外默认关 not planned。 +- 三类以 `finding` 入 skills 车道,首触归分诊席;三类之外默认关 not planned。 - 接管/移交 = 改正文 + 审计评论(只作审计);收尾清单等细则见 `references/seat-post-protocol.md`。 - epic 委托不入座位贴体系;新 `packages/spec` 工作恒归 spec 座位。 diff --git a/.claude/skills/pm-dispatch/references/seat-post-protocol.md b/.claude/skills/pm-dispatch/references/seat-post-protocol.md index cfb882828b7..98556126a38 100644 --- a/.claude/skills/pm-dispatch/references/seat-post-protocol.md +++ b/.claude/skills/pm-dispatch/references/seat-post-protocol.md @@ -25,7 +25,7 @@ - 活性惰性半边在接管冲突时评估一次:Routine 座位查调度器 `last_fired` 与 `next_run`。 - 会话座位查最近一条产出评论的时间戳;回收 = 改正文 + 审计评论。 -- 常设半边是分诊轮的座位贴活性巡查,同一判据,细则见 `dispatch-runbook.md`。 +- 常设半边是总监席摘要的座位贴活性巡查,同一判据,细则见 `dispatch-runbook.md`。 - 可跑读法:本车道 `pm:dispatched` 卡按 `updated_at` 降序一搜,或读最近一条认领评论。 - 写侧刷新三时刻:派发、收班、暂停或交接前;时间戳恒取自 `scripts/pm/post-stamped.mjs`。 - 刷新前回执敲门;`--body` 拦截:评论晚于末次戳 ⇒ `--ack-through=ID`;空座欠账无卡号 ⇒ 拒写。 @@ -77,7 +77,7 @@ ## 发版板运维(`target:`) -- 生产者:主仓归分诊座位,objectui 与 cloud 归各自整仓座位。 +- 生产者:主仓归总监席,objectui 与 cloud 归各自整仓座位。 - 其余座位不打不摘,误判走上报;⛔ 三个生产者各扫各的 backlog。 - 消费者:维护者的发版清单 = 三仓三条查询 `label:target: is:open`。 - 等价的 org 级搜索仅是备用写法;归零 = 可发版指三张板都空,单看主仓归零不是。 diff --git a/scripts/pm/check-half-states.mjs b/scripts/pm/check-half-states.mjs index 5620300336a..4b1ad9f6f20 100644 --- a/scripts/pm/check-half-states.mjs +++ b/scripts/pm/check-half-states.mjs @@ -15233,7 +15233,7 @@ export function h64ExposureClause(counts = {}, cap = H64_LOGIN_ROSTER_CAP) { // inventory two-tiered and closes the rule with a forcing function: 「选层按 // fire 时刻,⛔ 不用计数器;简报写明本轮跑的层」. The SELECTOR itself is pinned // one hop away in `.claude/skills/pm-dispatch/references/dispatch-runbook.md` -// 〈分诊两级盘点细则〉 — 「每日层(当日首 fire)= 四仓全量对账 + 归集本就日频的 +// 〈分诊两级盘点细则〉 — 「每日层(当日首 fire)= 两仓全量对账 + 归集本就日频的 // 职责」, the hourly tier reading a `since` window — and neither text is // ambiguous. What had no reader is the LAST clause. The filing card's grep for // it across `scripts/pm/` and `.claude/skills/pm-dispatch/`, excluding the two @@ -15307,7 +15307,7 @@ export function h64ExposureClause(counts = {}, cap = H64_LOGIN_ROSTER_CAP) { // // · the KEY is closed — 「层」 plus a colon (ASCII or full-width), nothing else; // · the WORD SET is closed — 「小时层」/「每日层」, the runbook's own two names -// (〈分诊两级盘点细则〉「每日层(当日首 fire)= 四仓全量对账 …」). Any other +// (〈分诊两级盘点细则〉「每日层(当日首 fire)= 两仓全量对账 …」). Any other // word after the key is `unknown-tier`, exactly as `Tier: full` is; // · it must sit in a DECLARATION SLOT, never mid-sentence: the start of a // line, or immediately after a 「·」 field separator, which is the marker @@ -15656,7 +15656,7 @@ export function h65TierlessRoundArtefactRow(hit, comment, total = 1) { `${H65_TIER_EXAMPLES_CN} at the start of a line or as a 「·」-delimited field of the ` + 'headline — with the selector ' + 'read from `.claude/skills/pm-dispatch/references/dispatch-runbook.md` 〈分诊两级盘点细则〉 ' + - '(「每日层(当日首 fire)= 四仓全量对账 + 归集本就日频的职责」). ⛔ This row does NOT judge ' + + '(「每日层(当日首 fire)= 两仓全量对账 + 归集本就日频的职责」). ⛔ This row does NOT judge ' + 'whether the tier chosen was the RIGHT one — that reading is the seat\'s and is pinned in the ' + 'runbook; this one only refuses the silence. Report-only: patrol input, never a gate verdict.' + more