From 7c500f8ed5d6460e34de0db22f80e92c6a55f73a Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 5 Aug 2026 13:10:57 +0000 Subject: [PATCH] =?UTF-8?q?docs(pm-dispatch):=20=E5=9F=9F=E5=88=86?= =?UTF-8?q?=E7=B1=BB=E8=A1=A8=E8=A1=A5=E5=85=A8=2022=20=E4=B8=AA=E6=9C=AA?= =?UTF-8?q?=E5=88=97=E5=8C=85,=E5=85=9C=E5=BA=95=E4=BD=8D=E6=98=BE?= =?UTF-8?q?=E5=BC=8F=E7=82=B9=E5=90=8D=20(#5095)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `.claude/skills/pm-dispatch/SKILL.md` 的 `domain:*` 包家族表只覆盖了一部分包, 而同节 label discipline 规定「未打标签的 issue 任何 PM 都不得认领」—— 落在未列包上的 issue 因此处于死角。表下本就写明未列包由首次分诊定级、 并由 PR 更新表;本条即那个 PR。 对 origin/main 重新清点 77 个 workspace 包,按锚定规则(读依赖方向 / src / 真实消费方,不从包名猜)补入 22 个包:formula 与 plugin-pinyin-search 归 engine;triggers/*、plugin-email、plugin-reports、embedder-openai、 knowledge-* 归 services;sdui-parser、vscode-objectstack、apps/docs 归 devx; rest、mcp、observability、client、client-react、cloud-connection、 create-objectstack、adapters/*、plugin-hono-server、plugin-dev 归 cli。 apps/*、console、examples/* 作为无固定归属项在表内显式点名并挂兜底句。 另注明本表只覆盖本仓的包,objectui / cloud 用 repo:* 分片表达。 只改域分类表与其说明段,协议其它条款未动。 Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01GX3sL71LFq8m2usg6VqTSE --- .../pm-dispatch-domain-table-full-coverage.md | 38 +++++++++++++++++++ .claude/skills/pm-dispatch/SKILL.md | 26 +++++++++++-- 2 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 .changeset/pm-dispatch-domain-table-full-coverage.md diff --git a/.changeset/pm-dispatch-domain-table-full-coverage.md b/.changeset/pm-dispatch-domain-table-full-coverage.md new file mode 100644 index 0000000000..65982b41b7 --- /dev/null +++ b/.changeset/pm-dispatch-domain-table-full-coverage.md @@ -0,0 +1,38 @@ +--- +--- + +docs(pm-dispatch): 域分类表补全 22 个未列包 —— 未列包不再落入「不可被任何 PM 认领」死角 (#5095) + +`.claude/skills/pm-dispatch/SKILL.md` 的 `domain:*` 包家族表只覆盖了一部分包,而同节的 +label discipline 规定「未打标签的 issue 任何 PM 都不得认领」—— 两条合起来,落在未列包上的 +issue 要么无法认领,要么每个 PM 各自临场判一次归属,车道协议「一个 PM 的分诊结论被缓存成 +标签、其他 PM 直接读」的价值当场归零。表下本就写明:未列包在首次分诊时定级,并由 PR 更新表。 +本条就是那个 PR。 + +对 `origin/main` 重新清点(77 个 workspace 包),补入的 22 个包按**锚定规则**逐包定级 —— +读 package.json 依赖方向、`src/` 内容与真实消费方,不从包名猜: + +- **`domain:engine`**:`packages/formula`(CEL / `matches-filter` / RLS 谓词求值,消费方 + 是 objectql 与各 driver)、`plugin-pinyin-search`(注册全局 `beforeInsert`/`beforeUpdate` + 钩子,与 #4775 同一条锚定先例)。 +- **`domain:services`**:`packages/triggers/*`(三个 flow 触发器,承接 automation 引擎的 + `FlowTrigger` 接线)、`plugin-email`(#5087 首次分诊已定)、`plugin-reports`、 + `embedder-openai`、`knowledge-memory`、`knowledge-ragflow`(后两者直接依赖 + `@objectstack/service-knowledge`)。 +- **`domain:devx`**:`packages/sdui-parser`(全仓唯一代码消费方是 `packages/lint`)、 + `packages/vscode-objectstack`(编写期编辑器 DX,只依赖 spec)、`apps/docs`(文档站)。 +- **`domain:cli`**:`packages/rest`(#4886 先例,#5423 沿用)、`packages/mcp`(落点与 + `packages/runtime/src/domains/mcp.ts` 同缝)、`packages/observability`(最大消费方是 + runtime)、`packages/client` / `client-react`(REST 线协议 SDK,自带 route-ledger 一致性 + 用例)、`packages/cloud-connection`(cli 车道 2026-08-05 首次分诊已定)、 + `packages/create-objectstack`、`packages/adapters/*`、`plugin-hono-server`、`plugin-dev` + (`os dev` 装配栈,posture 门与 cli serve/verify 同面)。 +- **兜底位显式点名**(表内新增一行,写明「不是遗漏」):`packages/apps/*`、 + `packages/console`、`examples/*` —— 各自的读法写在表下,`packages/console` 尤其点明其 + `dist/` 是 `../objectui` 的构建产物落盘位,UI 缺陷走 `repo:objectui`。 + +另加一句表的适用范围:本表只覆盖本仓的包;`objectui` / `cloud` 是仓库级分片,routing 用 +`repo:*` 表达,不另打 `domain:*`(域车道是「同仓多 PM 并发」的切法,不是第二套仓库标签)。 + +只改域分类表与其说明段,协议其它条款(含第 8 步三轴决策框架)一字未动;仅内部 agent +协议文本,不发布任何包,空 frontmatter 仅为满足 changeset 门禁。 diff --git a/.claude/skills/pm-dispatch/SKILL.md b/.claude/skills/pm-dispatch/SKILL.md index 1a987df3bc..e7deebdd8a 100644 --- a/.claude/skills/pm-dispatch/SKILL.md +++ b/.claude/skills/pm-dispatch/SKILL.md @@ -358,18 +358,36 @@ file the fix touches, you have not triaged it yet, and it is not labelable. | 标签 | 包家族 | |:--|:--| -| `domain:engine` | `packages/objectql`、`packages/metadata*`、`packages/platform-objects`、`packages/core`、`packages/plugins/driver-*` | -| `domain:services` | `packages/services/*`、`packages/plugins/plugin-approvals`、`plugin-webhooks`、`packages/connectors/*` | +| `domain:engine` | `packages/objectql`、`packages/metadata*`、`packages/platform-objects`、`packages/core`、`packages/formula`(CEL / `matches-filter` / RLS 谓词求值)、`packages/plugins/driver-*`、`plugin-pinyin-search`(全局写钩子,同 #4775 锚定) | +| `domain:services` | `packages/services/*`、`packages/connectors/*`、`packages/triggers/*`(flow 触发器)、`packages/plugins/plugin-approvals`、`plugin-webhooks`、`plugin-email`、`plugin-reports`、`embedder-openai`、`knowledge-memory`、`knowledge-ragflow` | | `domain:identity` | `packages/plugins/plugin-auth`、`plugin-security`、`plugin-sharing`、`plugin-audit` | -| `domain:devx` | `packages/lint`、`skills/**`、`content/docs/**`、`scripts/`(门禁类) | +| `domain:devx` | `packages/lint`、`packages/sdui-parser`(仅 lint 消费)、`packages/vscode-objectstack`、`skills/**`、`content/docs/**`、`apps/docs`、`scripts/`(门禁类) | | `domain:spec` | `packages/spec` 及其生成物(现 spec 车道不变) | -| `domain:cli` | `packages/cli`、`runtime`、`verify`、`qa`、`types` | +| `domain:cli` | `packages/cli`、`runtime`、`verify`、`qa`、`types`、`packages/rest`、`packages/mcp`、`packages/observability`、`packages/client`、`packages/client-react`(REST 线协议 SDK)、`packages/cloud-connection`、`packages/create-objectstack`、`packages/adapters/*`、`packages/plugins/plugin-hono-server`、`plugin-dev` | +| (无固定归属,按落点分诊) | `packages/apps/*`(`setup` / `studio` / `account`)、`packages/console`、`examples/*` —— 见下,**这一行是显式点名,不是遗漏** | `examples/**` belongs to the subsystem it exercises; anything that fits nowhere is judged at triage by its principal landing site. A package missing from the table is classified the first time it is triaged and the table updated **by PR** — the taxonomy evolves deliberately, never per-claim. +最后一行的三处兜底位:`examples/*` 照上一句;另两处的读法如下(表按 #5095 逐包 +核过真实消费方向补全,`packages/` 下余包都已落到上面某一行): + +- `packages/apps/*` 今天只是 app manifest + plugin 壳,内容仍从 + `@objectstack/platform-objects/apps` 再导出,落点可能在 platform-objects + (engine)、这三个包本身、或控制台渲染面(`repo:objectui`)—— 按主要落地站点 + 在分诊时判定。 +- `packages/console` 是 `../objectui` 构建产物的落盘位:仓内只跟踪 + `package.json` / `README` / `CHANGELOG`,`dist/` 由 `scripts/build-console.sh` + 生成且⛔禁止手改。控制台 UI 的缺陷走 `repo:objectui`;仓内唯一可改面是 pin / + 刷新脚本(`build-console.sh`、`bump-objectui.sh`、`check-console-sha.mjs`、 + `check-objectui-pin-fresh.mjs`),归 `scripts/`(门禁类)那一行。 + +本表只覆盖**本仓(objectstack)的包**。`objectui` / `cloud` 是**仓库级分片**, +routing 用 `repo:*` 表达(rule 4 的分片协议),不另打 `domain:*` —— 域车道是 +「同仓多 PM 并发」的切法,不是第二套仓库标签。 + **Label discipline.** `domain:*` is applied during the backlog sweep (round loop step 0) by whichever PM triages the issue. **Labeling ≠ claiming**: any PM may label any issue, including ones it will never claim — the label is