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
20 changes: 10 additions & 10 deletions .claude/skills/pm-dispatch/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报

## 优先级

- 优先序:维护者裁决 > `AGENTS.md` > 红线 > 核心条款 > 细则 > 座位判断。
- 优先序:维护者裁决 > 北极星 > `AGENTS.md` > 红线 > 核心条款 > 细则 > 座位判断。
- 核心条款住 `references/core-rules.md`,是本文的子集;细则是本文其余各节与其它 references。
- 一条规则在本文与核心条款一处改动,另一处同 PR 同改。
- 红线与各节的禁止行都在四轴权衡之外,⛔ 不因更合理的理由被推翻。
Expand Down Expand Up @@ -251,6 +251,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
| `domain:skills` | governed 面全量(含本文件;统一定义见「governed 面统一定义」行);非门禁的 `scripts/pm/**`(PM 循环工具);governed 面的治理执行文件:`.github/CODEOWNERS` + SUBJECT 是 governed 面本身的门禁/审计(现为 `scripts/pm/check-governed-merges.mjs`) |
| `domain:spec` | `packages/spec` 整包:schema 形状、`contracts/**`、退役行为半边、strictness 台账;describe/JSDoc/墓碑散文/错误 guidance 与 alias 表;`packages/spec/scripts/**`、`packages/spec/docs/**` 及按锚定规则的例外归本域的工具链(域边界枚举与席内分派见 `references/lanes/spec.md`) |
| `domain:cli` | `packages/cli`、`runtime`、`verify`、`packages/qa`、`types`、`packages/rest`、`packages/mcp`、`packages/observability`、`packages/client*`、`cloud-connection`、`create-objectstack`、`packages/adapters/*`、`plugin-hono-server`、`plugin-dev` |
| `domain:cloud` | 云服务旅程,停放(加 `status:parked`,sweep 免扫)待 cloud PM 迁移,本仓不派 |
| (无固定归属,按落点分诊) | `packages/apps/*`、`packages/console`(dist 由脚本生成 ⛔ 不手改;UI 缺陷走 `repo:objectui`)、`examples/*`(归它演练的子系统)、`docs/audits/**` |

- 表未覆盖的包首次分诊时归类并走 PR 更新本表;新增或退役 `domain:*` 必须同批改本表。
Expand Down Expand Up @@ -354,14 +355,13 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- 先修复:正文被 sanitizer 截断的卡不可派发,评论修复指令后跳过。
- 停摆指令判据必须比其它分类更硬(双读取),事后证伪同处公开作废。
- 决策箱勤务:落卡入箱时校验/补全四棱块与速读;存量卡低频子轮回填,语言按不变量。
- 原生 issue 类型 Bug/Feature/Task 是分诊的固定产出。
- 分诊席是 `type` 字段的唯一权威生产者;立单者可预填,分诊校正。
- 判据:违背已声明契约 ⇒ `Bug`,扩大接受集/公开面 ⇒ `Feature`,其余 ⇒ `Task`。
- `type`(Bug/Feature/Task)是分诊固定产出,分诊席唯一权威生产;立单者可预填,分诊校正。
- 判据:违背已声明契约 ⇒ `Bug`,扩大接受集/公开面越出已声明 ⇒ `Feature`,其余 ⇒ `Task`。
- `Bug` 无具名落点或复现路径不入 `pm:queue`(标记补复现)。
- ⛔ 不回填存量 backlog 的 type;新卡即时打、存量卡下次碰到补。
- 路由是分诊的技术判断,⛔ 永不升级哪个仓的问题。
- 定级按 `docs/NORTH-STAR.md`「优先级」第 1、2 条;正文首行 `Path: P<n> | <清单区> | none`。
- 路由是分诊的技术判断,⛔ 永不升级哪个仓的问题;父单是协调节点,永不派发。
- 父单已有子结构的:父单队列标签即可,分诊逐个展开路由、补 `Blocked-by:` 排序。
- 父单是协调节点,永不派发。
- 每张留一条英文审计评论(`Triage: lands in …; rationale: …`),可选带 `Size/model suggestion:` 行。
- 查重/shadow 检查先按文件/机制查本仓与姊妹仓 open 卡(含 `pm:dispatched`),再跟引用与关键词。
- 同文件同缺陷 = 同一发现,不分车道:证据搬到先卡,后卡关 `duplicate_of`,⛔ 不并排派发。
Expand Down Expand Up @@ -449,16 +449,16 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- 并行纪律四条(常规,非豁免):① 认领申报文件面到区域级,拿不准就串行。
- ② 开 PR 前合一次 main;③ 兄弟卡落地后再合一次;④ 冲突交合并队列仲裁,⛔ 不手动排序。
- 文件面不相交只保证文本可合并;跨文件语义耦合由队列 CI 逮住,⛔ 不读作不可能冲突。
- 阻塞解除后给延后单重新定价:派发前一单时带必答项。
- 必答项:你的改动让 #X 变简单、变难、变得不必要还是无影响。
- 阻塞解除后延后单重定价:前一单派发词必答 #X 变简单、变难、不必要或无影响。
- 派发后一单前用该回答重读它的选项与成本,⛔ 不沿用立单时那份。
- 在飞卡衍生三分:不修它验收过不过;in-scope ⇒ 父卡 sub-issue,认领席自有、优先级继承。
- 该 sub-issue 带父卡域与优先级直接派发,唯一绕过分诊;sweep 事后扫,重复关 `duplicate`。
- 阻塞项无主 ⇒ 被挡席认领做掉,不限大小;在该卡走完整认领、尊重其热文件串行队。
- 阻塞项在飞 ⇒ 等:`pm:blocking` 在其车道排最前、等待者写该卡;p0/p1 优先级沿链传递。
- 取卡前置 = `docs/NORTH-STAR.md`「优先级」第 3 条:产品仓开放 P0/P1 每次取卡现读。
- 取卡全序:`priority:p0` > `pm:blocking` > `target:` 板上项 > p1 > p2 > p3 > 无级;同级先 `Bug` 再卡龄。
- `pm:blocking` 级内先按解锁扇出(从 `Blocked-by:` 反向索引现算,⛔ 扇出数不落标签)。
- 全序每级取既有信号现读/现算,零逐卡维护;优先是排序不是豁免;无级卡轮报记分诊缺口
- 全序每级取既有信号现读/现算,零逐卡维护;优先非豁免;无级/缺 `Path:` 轮报记分诊缺口
- 解锁那一刻 PM 自己的判断最不可信:裁决收窄或关掉了那张卡是假设不是前提。
- 该假设以机制假设身份进派发令,被证伪就在同一张卡公开更正。

Expand Down Expand Up @@ -602,7 +602,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- 判决 ESCALATE:见 升级与决策 节。
- **ACCEPT 之后的路径分叉**:翻 ready / 挂 auto-merge / 入队前先取一次 PR 的路径面。
- 路径面用 `get_files` 取,⛔ 不看报告自述;动手之前先分,不是事后对照。
- governed 面统一定义:`docs/adr/**` + `.claude/**`(全量,含 agents/hooks/settings)+ `skills/**`。
- governed 面统一定义:`docs/adr/**` + `.claude/**`(全量)+ `skills/**` + `docs/NORTH-STAR.md`。
- governed 面同含 `AGENTS.md` + `CLAUDE.md`;`GOVERNED_REPOS` 各仓同治理待遇,执行席恒随落地仓车道。
- 路径面命中规则层 ⇒ ACCEPT 换终局四件套,混合 diff ⛔ 不按比例判;要拆让 dev 单独开 PR。
- ① 复核结论照常写在 issue 上;技能面 hunk 须由契约复审档的席复核,档外席先交 skills 席。
Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/pm-dispatch/references/core-rules.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@
- 设计卡、契约形状提案、碰迁移形状或删已发布能力的进决策箱;无出处说明书脱节不进。
- 立卡限三类:可复现缺陷、契约违背、元数据陷阱;截断卡先发修复指令再跳过,不可派发。
- 三类边界:缺陷问错不问缺、文档同判;元数据须他人再作者化;引向更糟的警告在类外。
- 类型字段由分诊席唯一生产,违背已声明契约是缺陷、扩大接受面是功能、其余是任务。
- 类型字段由分诊席唯一生产,违背已声明契约是缺陷、扩出已声明是功能、其余是任务。
- 缺陷卡无具名落点或复现路径不入队列 ⛔ 不回填存量;每张卡留一条英文审计评论。
- 路由是分诊的技术判断 ⛔ 永不升级哪个仓的问题;父单是协调节点、永不派发。
- 发版板判据二元:不修它当前候选版能不能发 ⛔ 不做渐变,拆票时标签随工作走。
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 @@ -6,8 +6,7 @@

- 两个技能根:`.claude/skills/**`(含 pm-dispatch 本体)与 `skills/**`(发布目录,恒英文)。
- PM 循环工具与指令架构文件的归属见 SKILL.md 域车道表 `domain:skills` 行,⛔ 不另抄。
- 受管面的治理执行文件:`.github/CODEOWNERS` 治理路由半边。
- 同含 SUBJECT 是受管面本身的门禁与审计脚本。
- 受管面治理执行文件:`.github/CODEOWNERS` 路由半边 + SUBJECT 是受管面本身的门禁/审计脚本。
- 全量判据在 SKILL.md 域车道表;受管面定义与两层分档见 SKILL.md 〈复核〉,⛔ 不另抄。
- QA 管理循环执行归本席;qa-run 记录是协议载体不是工作。
- 契约复核归派发席席内、决裁勤务归项目总监席(`director.md`);本席保留 skill 与治理文本。
Expand All @@ -22,6 +21,7 @@
- 棘轮逐行付账,⛔ re-wrap 筹行;砍点逐条核幸存,被砍内容若在别处无家,砍掉就是丢规则。
- 首触定级每轮;决策形状 ⇒ 决策箱带四棱块,⛔ 永不自裁。
- 唯一例外:本车道 finding 自分诊,全仓轮跳过。
- 自分诊问北极星「仪器为车队服务」的那一问:答不出 ⇒ 即刻 p3 或不做,⛔ 不入队。
- 内部指令面中文,机器判据恒英文;认领前重读全线程;标签写 read-modify-write 加回读。
- QA 波次由维护者手动触发,⛔ 不自启。

Expand Down
24 changes: 12 additions & 12 deletions .claude/skills/pm-dispatch/references/lanes/spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,33 +4,33 @@

## 范围

- `packages/spec` 整包唯一契约,语义、文本、机器三面同席。
- `packages/spec` 整包唯一契约,契约、辅助、机器三面同席。
- 含 schema 形状、`contracts/**`、退役行为半边、strictness 台账。
- 含 describeJSDoc、墓碑散文、错误 guidancealias 表。
- 含 describe/JSDoc、墓碑散文、错误 guidancealias 表;其重生成的 references 产物归源 PR
- 含 `packages/spec/scripts/**`、`packages/spec/docs/**`。
- 同含围着 spec 契约转的工具链:门禁、生成器、lint 规则、报错散文、references 管线。
- 一般开发工具面留 devx;`packages/spec` 恒归本席,不论谁需要它。
- objectui 的契约面同辖:`packages/types`、schema 与 `$schema` 语料、spec pin 耦合与契约决策卡。

## 席内分派参考

- 语义与文本按合法元数据集合变没变分:改动前过校验的输入改动后同判 ⇒ 文本面。
- 文本面的 changeset 恒 patch,默认 sweep-first;否则语义面。
- 放宽接受集或扩大公开面的卡,不论多小,即条款②;收窄仍是语义面,不触条款②。
- 契约面 = 「改动前后同一份输入的接受/拒绝结果变了」;判定逐字节不变 ⇒ 辅助面。
- 契约面五形任一命中:收紧、放宽、公开导出面增删、declared ≠ enforced、退役。
- 辅助面的 changeset 恒 patch,默认 sweep-first;第二刀问「它误导了 AI 吗」。
- 误导 ⇒ P2 保留;不误导 ⇒ 关 not planned,或搭下一个触碰它的 PR 的 Acceptance notes。
- 放宽接受集或扩大公开面的卡,不论多小,即条款②;收窄仍是契约面,不触条款②。
- 收窄不触发条款②,但按 `yes` 申报恒不是错误;⛔ 个案裁决不改本行。
- 机器面改围契约的机器,与文本面不交,⛔ 不碰 `packages/spec/src/**/*.zod.ts` 与 strictness 台账。
- 产物随源走:describe 与 JSDoc 改动重生成的 references 产物归触发它的源 PR
- 机器面改围契约的仪器,与辅助面不交,⛔ 不碰 `packages/spec/src/**/*.zod.ts` 与 strictness 台账。
- 机器面卡只按北极星「仪器为车队服务」的那一问评级
- 改元数据格式或接受面的照旧归 `domain:spec`;`/meta` 路由本体在 `packages/rest` 归 `domain:cli`。
- 拿不准 FLAG 回分诊,⛔ 不自设第二套判据。
- 档位随面走的现行表在 SKILL.md 模型分档,单源,⛔ 不另抄。
- 拿不准 FLAG 回分诊,⛔ 不自设判据;档位随面走,表在 SKILL.md 模型分档,⛔ 不另抄。

## 常设承诺

- findings 首触定级归分诊席,本席只供证据。
- 门禁强制的跨车道 ledger 追加整类预批(`error-code-ledger.zod.ts`),三条全中即免本席签字。
- ①:码的存在已在归属卡裁过。
- ②:纯增量 —— 不动 schema 形状、既有条目与 ledger 机制,只落追加方自己的包分节。
- ③:兜底不变 —— 条款②路径肢照命中,入队前仍过契约复核。
- ①:码的存在已在归属卡裁过;②:兜底不变,条款②路径肢照命中,入队前仍过契约复核。
- ③:纯增量 —— 不动 schema 形状、既有条目与 ledger 机制,只落追加方自己的包分节。
- 出类(新 ledger 字段、重构、别道条目、准入或拒收语义)⇒ 本席卡,不论谁需要它。
- 分支信息测试(原文不译):Does this defect give a consumer a branch it could act on differently?
No ⇒ widen the existing member's comment/message; yes ⇒ new code under the pre-approved class.
Expand Down
6 changes: 3 additions & 3 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ Primary AI instruction file for this repo — and the human contributors' source
Read natively by Claude Code, GitHub Copilot (coding agent + CLI), and other agents — no
separate `.github/copilot-instructions.md` mirror needed. When any other instruction file
in this repo (including `.claude/skills/**`) conflicts with this one, **AGENTS.md wins**.
`docs/NORTH-STAR.md` (先做什么: goals, priority) outranks it; `content/docs/concepts/north-star.mdx` = architecture.

> **v5.0 breaking rename: `project` → `environment`** everywhere (CLI `-e`, `/api/v1/environments/:id`, header `X-Environment-Id`, `OS_ENVIRONMENT_ID`, DB column `environment_id` [control-plane tables; on the metadata tables since deprecated in favour of `organization_id`, ADR-0006 v4]). No aliases. See ADR-0006. "Project" now only means the npm/monorepo sense.

Expand All @@ -19,7 +20,6 @@ script's own header is the authority on detail.
## Communication

语言规则分两件事:**和维护者说话用什么语言**,与**留在 GitHub 上的产物用什么语言**。
一条规则一个通道,互不重叠。

- **在 Claude Code 中与维护者对话一律使用中文**(对话回复、轮次报告等聊天通道里的内容)。
- **GitHub 产物一律使用英文**:issue 与 PR 的标题、正文、评论。
Expand Down Expand Up @@ -255,8 +255,8 @@ localStorage / auth gotchas.
14. **⛔ A governed surface is confirmed and merged by the maintainer, by hand — or confirmed by an authorized
approval and then landed by the owning seat; before that approval no AI seat merges, queues, or arms auto-merge on a
PR whose diff touches one.** The governed surfaces are `docs/adr/**`, `.claude/**` (agents, hooks and settings —
not only skills), `skills/**`, `AGENTS.md` and `CLAUDE.md` — the file you are reading is one — and a mixed diff
is governed whole on a single path hit. The register is the `GOVERNED_SURFACES` table in
not only skills), `skills/**`, `AGENTS.md`, `CLAUDE.md` and `docs/NORTH-STAR.md` — the file you are reading is
one — and a mixed diff is governed whole on a single path hit. The register is the `GOVERNED_SURFACES` table in
`scripts/pm/check-governed-merges.mjs`; adding a surface is an edit *there*, never here, and `pnpm
check:pm-governed-prose` reds per-PR when this paragraph names fewer surfaces than the register — or more. When it
reds, name the surface here.
Expand Down
Loading
Loading