diff --git a/.claude/skills/pm-dispatch/SKILL.md b/.claude/skills/pm-dispatch/SKILL.md index 7d2c8d5640..38eb0eb6ef 100644 --- a/.claude/skills/pm-dispatch/SKILL.md +++ b/.claude/skills/pm-dispatch/SKILL.md @@ -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:` | 发版阻塞:每个 backlog 恰好一个生产者 | | `pm:epic`(父单或 sub-issue) | 已由 epic PM 保留;其它 PM 永不取;⛔ 永不与 `pm:queue` 同挂 | | `pm:seat` | 座位登记贴:协议载体,不是待分诊的工作 | @@ -351,7 +351,8 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报 - 碰存量数据迁移形状或删除已发布能力的卡也进决策箱。 - 决策卡落卡必带四棱卡面块与其上的「维护者速读」,⛔ 不留待有人接手再补。 - 决策卡的速读同题,用业务语言先讲事情与选项,末句只问一字:A/B/C 或是否。 -- `finding` = 观察类(死代码、未演练漂移、抛光;真实但今天没有用户撞上),待首次定级。 +- `finding` = 三类内待定级:(a) 可复现缺陷(复现或失败探针);(b) 违背已声明契约(引契约文); +- (c) AI 写元数据会被运行时拒收或静默丢弃的陷阱;其余进 PR `## 验收备注`,⛔ 不立卡。 - 先修复:正文被 sanitizer 截断的卡不可派发,评论修复指令后跳过。 - 停摆指令判据必须比其它分类更硬(双读取),事后证伪同处公开作废。 - 决策箱勤务:落卡入箱时校验/补全四棱块与速读;存量卡低频子轮回填,语言按不变量。 @@ -374,9 +375,9 @@ 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 维持或改判皆由分诊席同笔摘标;挂标归异议席。 @@ -384,8 +385,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报 - 判阻塞四类:① 用户今天就撞的已发布面缺陷;② 公开契约 declared≠enforced。 - ③ 存量数据/迁移形状(发布后修不回);④ 发布说明里要为它道歉的。 - 拆分/分票时 `target:*` 随工作走,对每一半重跑二元判据,默认继承,不继承按四类写明理由。 -- 每张板恰好一个生产者。 -- 鲜度节奏、清板三选一、pin 前置细则见 `references/seat-post-protocol.md`。 +- 每张板恰好一个生产者;鲜度节奏、清板三选一、pin 前置见 `references/seat-post-protocol.md`。 - 代裁人工地板(恒交维护者):功能新增;ADR;协议/公开契约变化;破坏性或难回滚动作。 - 人工地板同含:安全/权限边界;门禁削弱(降阈值、删必查项、抬 ratchet 上限、跳过测试)。 - 人工地板同含:花费/配额/舰队形态/默认模型档位;新增运行时第三方依赖。 @@ -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 同一小时审相邻代码会立出孪生卡。 ## 机械守卫索引 diff --git a/.claude/skills/pm-dispatch/references/core-rules.md b/.claude/skills/pm-dispatch/references/core-rules.md index e53c815271..f540c1ff6c 100644 --- a/.claude/skills/pm-dispatch/references/core-rules.md +++ b/.claude/skills/pm-dispatch/references/core-rules.md @@ -86,7 +86,7 @@ - 裸卡超过十五张则下一轮改域分批集中模式,每批不超过五张同族卡。 - 有落点或可复现的具体缺陷与范围明确的工具修复进 `pm:queue`。 - 设计卡、契约形状提案、碰迁移形状或删已发布能力的进决策箱,落卡即带四棱块。 -- 观察类记录打 `finding` 待首次定级;正文被截断的卡先发修复指令再跳过,不可派发。 +- 立卡限三类:可复现缺陷、契约违背、元数据陷阱;截断卡先发修复指令再跳过,不可派发。 - 类型字段由分诊席唯一生产,违背已声明契约是缺陷、扩大接受面是功能、其余是任务。 - 缺陷卡无具名落点或复现路径不入队列 ⛔ 不回填存量;每张卡留一条英文审计评论。 - 路由是分诊的技术判断 ⛔ 永不升级哪个仓的问题;父单是协调节点、永不派发。 @@ -147,4 +147,4 @@ ## 报告契约 - 终报 JSON 的权威形状住 `.claude/agents/os-dev.md`,⛔ 本协议不另存第二份。 - 前提被证伪且无 PR 是合法终报,当再分诊输入复核,⛔ 永不当失败派发。 -- 报 needs_decision 时 open_questions 非空;范围外发现须已立卡,PM 核验并对读同轮报告。 +- needs_decision 必带 open_questions;范围外发现三类立卡、其余 noted not filed,核验对读同轮报告。 diff --git a/AGENTS.md b/AGENTS.md index 60bc7266f5..da2a625fc7 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -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.