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
18 changes: 9 additions & 9 deletions .claude/skills/pm-dispatch/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
| `pm:awaiting-maintainer` | 决定已做,只剩一次 GitHub 之外的人工动作:不派发不催;与其它 pm 状态标签互斥 |
| `pm:blocking` | 有 open 下游依赖者(自 `Blocked-by:` 索引推导的缓存,⛔ 不手工挂);进选择全序 |
| `pm:retriage` | 向分诊提问(改判、跨域 PR 指定车道、改路由、拆卡、裁 dev 报告留下的分叉),异议评论写明所求;与现行 `pm:*` 并存、⛔ 不摘原标;带本标签的 `pm:queue` 卡跳过派发 |
| `finding` | 观察类记录,恒 = 待首次定级;定级即离标;不占队列不进收件箱 |
| `finding` | 立卡三类内待首次定级,定级即离标;三类外关 not planned;不占队列不进收件箱 |
| `target:<major>` | 发版阻塞:每个 backlog 恰好一个生产者 |
| `pm:epic`(父单或 sub-issue) | 已由 epic PM 保留;其它 PM 永不取;⛔ 永不与 `pm:queue` 同挂 |
| `pm:seat` | 座位登记贴:协议载体,不是待分诊的工作 |
Expand Down Expand Up @@ -351,7 +351,8 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- 碰存量数据迁移形状或删除已发布能力的卡也进决策箱。
- 决策卡落卡必带四棱卡面块与其上的「维护者速读」,⛔ 不留待有人接手再补。
- 决策卡的速读同题,用业务语言先讲事情与选项,末句只问一字:A/B/C 或是否。
- `finding` = 观察类(死代码、未演练漂移、抛光;真实但今天没有用户撞上),待首次定级。
- `finding` = 三类内待定级:(a) 可复现缺陷(复现或失败探针);(b) 违背已声明契约(引契约文);
- (c) AI 写元数据会被运行时拒收或静默丢弃的陷阱;其余进 PR `## 验收备注`,⛔ 不立卡。
- 先修复:正文被 sanitizer 截断的卡不可派发,评论修复指令后跳过。
- 停摆指令判据必须比其它分类更硬(双读取),事后证伪同处公开作废。
- 决策箱勤务:落卡入箱时校验/补全四棱块与速读;存量卡低频子轮回填,语言按不变量。
Expand All @@ -374,18 +375,17 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- closed 形态随每轮解锁扫描;可执行判据由分诊席每日一个低频子轮批量执行。
- `Restart-when:` 命中同 closed 命中待遇:回队前 ref 重验再回队。
- ⛔ 不设逐卡豁免评论;每 fire 定完全部未定级 finding,优先于旧卡重验。
- 每批先过时前提检查再三选一:晋级 / 关闭 not planned(维护者可否决重开,PM 不等批准)/ hold
- 判级发生在发现分诊轮,不在立单时;车道座位可附证据/前提重验,⛔ 不定级不改标
- 唯一例外:skills 车道 finding 由该席自分诊,全仓轮跳过。
- 每批先验三类:三类外关 not planned(不等批准,维护者可否决重开);三类内无证据拒收
- 三类内再过时前提检查,三选一:晋级 / 关闭 not planned / hold;判级只在此轮,不在立单时
- 车道席可附证据/前提重验,⛔ 不定级不改标;skills 车道 finding 由该席自分诊,全仓轮跳过。
- 域分批与 sweep 打包晋级五条照用;每批约定与积压告警见 `references/dispatch-runbook.md`。
- `pm:retriage` 每 fire 先答异议评论所求,答后同笔摘标;须维护者答的进收件箱,标照摘。
- retriage 维持或改判皆由分诊席同笔摘标;挂标归异议席。
- 发版板 `target:<major>`:判据二元,⛔ 不做优先级渐变:不修它,当前 RC 能不能发。
- 判阻塞四类:① 用户今天就撞的已发布面缺陷;② 公开契约 declared≠enforced。
- ③ 存量数据/迁移形状(发布后修不回);④ 发布说明里要为它道歉的。
- 拆分/分票时 `target:*` 随工作走,对每一半重跑二元判据,默认继承,不继承按四类写明理由。
- 每张板恰好一个生产者。
- 鲜度节奏、清板三选一、pin 前置细则见 `references/seat-post-protocol.md`。
- 每张板恰好一个生产者;鲜度节奏、清板三选一、pin 前置见 `references/seat-post-protocol.md`。
- 代裁人工地板(恒交维护者):功能新增;ADR;协议/公开契约变化;破坏性或难回滚动作。
- 人工地板同含:安全/权限边界;门禁削弱(降阈值、删必查项、抬 ratchet 上限、跳过测试)。
- 人工地板同含:花费/配额/舰队形态/默认模型档位;新增运行时第三方依赖。
Expand Down Expand Up @@ -775,8 +775,8 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- ⛔ 本文不抄终报形状的第二份。
- `premise_still_valid: false` + `pr: null` 是合法终报,当再分诊输入复核,永不当失败派发。
- `status: needs_decision` 时 `open_questions` 必须非空。
- `out_of_scope_findings` 应已由 dev 立成无 assignee 的卡:查重先行、归挂判据、立在修复落地仓
- 范围外发现的标签按种分:观察类打 `finding`,具体缺陷不打标留分诊
- `out_of_scope_findings` 只列三类立卡与 `noted, not filed`;立卡查重先行、归挂、立在修复仓
- 席位在 ACCEPT 读 PR `## 验收备注`,其中实属三类的由席位补立;三类外已立的卡关 not planned
- PM 核验它们存在,并把同轮并行报告互相对读:两个 dev 同一小时审相邻代码会立出孪生卡。

## 机械守卫索引
Expand Down
4 changes: 2 additions & 2 deletions .claude/skills/pm-dispatch/references/core-rules.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@
- 裸卡超过十五张则下一轮改域分批集中模式,每批不超过五张同族卡。
- 有落点或可复现的具体缺陷与范围明确的工具修复进 `pm:queue`。
- 设计卡、契约形状提案、碰迁移形状或删已发布能力的进决策箱,落卡即带四棱块。
- 观察类记录打 `finding` 待首次定级;正文被截断的卡先发修复指令再跳过,不可派发。
- 立卡限三类:可复现缺陷、契约违背、元数据陷阱;截断卡先发修复指令再跳过,不可派发。
- 类型字段由分诊席唯一生产,违背已声明契约是缺陷、扩大接受面是功能、其余是任务。
- 缺陷卡无具名落点或复现路径不入队列 ⛔ 不回填存量;每张卡留一条英文审计评论。
- 路由是分诊的技术判断 ⛔ 永不升级哪个仓的问题;父单是协调节点、永不派发。
Expand Down Expand Up @@ -147,4 +147,4 @@
## 报告契约
- 终报 JSON 的权威形状住 `.claude/agents/os-dev.md`,⛔ 本协议不另存第二份。
- 前提被证伪且无 PR 是合法终报,当再分诊输入复核,⛔ 永不当失败派发。
- needs_decision open_questions 非空;范围外发现须已立卡,PM 核验并对读同轮报告
- needs_decision 必带 open_questions;范围外发现三类立卡、其余 noted not filed,核验对读同轮报告
6 changes: 3 additions & 3 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -208,9 +208,9 @@ localStorage / auth gotchas.
When renaming a legacy var, use `readEnvWithDeprecation('OS_NEW', 'LEGACY')` from `@objectstack/types` (keeps legacy
working one release). Third-party exceptions kept as-is: `NODE_ENV`, `HOME`, `OPENAI_API_KEY`, `TURSO_*`, OAuth
`*_CLIENT_ID/SECRET`, `RESEND_API_KEY`, `POSTMARK_TOKEN`, `AI_GATEWAY_*`, `SMTP_*`.
10. **File issues for out-of-scope findings — don't silently expand scope or leave them buried.** When you hit a bug,
gap, or unenforced capability that's unrelated to the current task, or too large to fix in scope, open a GitHub
issue with a clear repro/decision and link it from your PR. Corollary: **never advertise or demo a capability the
10. **File an issue for a reproducible defect, a contract violation, or a metadata-authoring trap; note everything
else in the PR's acceptance notes — never expand scope, never bury a defect.** A card names its evidence (repro,
contract text or trap); the reviewer files a note that is one. Corollary: **never advertise or demo a capability the
runtime doesn't actually deliver** (declared ≠ enforced) — fix it, trim it, or file an issue, but don't fake
coverage. Trim what can never be enforced, implement the rest, and keep the claim as narrow as the enforcement:
a `case` label is not enforcement; check every **call site**, bulk paths included.
Expand Down
Loading