Skip to content

Commit d3bdf43

Browse files
objectstack-fleet[bot]os-warrenclaude
authored
pm-dispatch: cloud-lane work found during development is filed as a cloud-lane card (home in cross-repo-coordination.md, pointers from execution-duties.md and os-dev.md) (#26286)
Fixes #26121 Clause-②: no Metadata-protocol: none ## What changes The maintainer's words on the project timeline, as the card quotes them: 「需要转给 cloud的,应该立 cloud 车道卡」「需要转给 cloud的,应该立 cloud 车道卡,应该立卡写入 skills」「开发中涉及 cloud 车道的,也应该转给 cloud」. The split-by-repo rule in `cross-repo-coordination.md` covered a card at filing or first touch only; this PR extends it to work that surfaces during development, with one home and two pointers, exactly as the triage first grade shaped it. **Home — `.claude/skills/pm-dispatch/references/cross-repo-coordination.md`** (47 → 47 lines, ceiling 47). Two rule lines directly after the split-by-repo pair: - new L46 (118 B): `- 开发中涉 cloud 车道者由席位同拆:报告 `open_questions`/`out_of_scope_findings`、复核/落地所见。` - new L47 (118 B): `- ⛔ 不记而弃、不并入本仓 PR、不留 `carrier: none`;停放卡加 `repo:cloud`,出处行与一行判据。` The card shape is a reference, not a restatement: `domain:cloud`+`status:parked` already stands on the split line (now L44), 出处行与一行可执行判据 and `Blocked-by:` on the transfer line (L41), 本卡只留本仓活 and the dependency `Blocked-by:` on the line directly above the new pair (L45). The one label those lines lacked is `repo:cloud`, which the precedent cards carry. Paid in-file, no ceiling raise: the reader-and-moment intro line (old L3, 103 B, 「分诊席每次 fire 路由与查重前读本文;执行席跨仓认领、派发或转移时读本文。」) and its blank line (old L4) are retired. `SKILL.md` 阶段细则索引 carries that file's row with the same reader and moment, and `SKILL.md` names that index as where each file's readers live (「阶段文件与各自读者见〈阶段细则索引〉」). No rule line left the file. **Pointer — `.claude/skills/pm-dispatch/references/execution-duties.md`** (187 → 188 lines, ceiling 188). One line in 〈复核〉, directly after the review-checklist line, paying the single line of headroom the tooling-cap deletion left: - new L178 (119 B): `- 报告 `open_questions`/`out_of_scope_findings` 涉 cloud 车道者,按 `cross-repo-coordination.md` 立 cloud 卡。` **Pointer — `.claude/agents/os-dev.md`** (404 → 404 lines, ceiling 404). The `carrier:` rule line is respelled in place, 120 → 114 B, no line added: - L52 before: ` - `carrier:` = 卡号或人,⛔ 非下个碰 X 的 PR;无则「承接者:无」;皆无 ⇒ 只进 Acceptance notes。` - L52 after: ` - `carrier:` = 卡号或人,⛔ 非下个 PR;涉 cloud 写 `carrier: cloud`;无则 `none`;皆无只进该节。` Three respellings, no clause deleted: 「⛔ 非下个碰 X 的 PR」→「⛔ 非下个 PR」(the full lesson 「搭下个碰 X 的 PR」不算 `carrier:` stays in `filing-gate.md`, the seat's filing gate); 「无则「承接者:无」」→「无则 `none`」(the English key value, the spelling the card itself names and the JSON template already uses); 「皆无 ⇒ 只进 Acceptance notes」→「皆无只进该节」(该节 is L51's `## Acceptance notes`, the line directly above). **Untouched — `.claude/skills/pm-dispatch/SKILL.md`** (319/319). The 报告契约 hook line 「dev 不立卡;ACCEPT 逐条一行 `filed #N`/`Acceptance notes`/`dropped — 因`;三类由席位立在修复仓。」 is 117 B; every fold that keeps its content measures over the 120 B line cap: 「…,涉 cloud 立 cloud 卡」 141 B, 「…,涉 cloud 立卡」 134 B, 「三类与涉 cloud 者由席位立卡」 124 B. The `domain:cloud` lane row (停放待 cloud PM 迁移) already describes the parked state and is a different subject. ## Line budget | file | before | after | ceiling | touched lines (bytes) | |:--|--:|--:|--:|:--| | `references/cross-repo-coordination.md` | 47 | 47 | 47 | −L3 103 B, −L4 0 B (blank); +L46 118 B, +L47 118 B | | `references/execution-duties.md` | 187 | 188 | 188 | +L178 119 B | | `.claude/agents/os-dev.md` | 404 | 404 | 404 | L52 120 B → 114 B | | `pm-dispatch/SKILL.md` | 319 | 319 | 319 | none (L283 117 B; no fitting fold) | Rules retired: one — the cross-repo-coordination.md reader intro (who reads the file, when), now living only in the `SKILL.md` 阶段细则索引 row for that file. ## Dispatch hypotheses, measured 1. **Falsified.** The ratchet row for `cross-repo-coordination.md` is 47, not 51: the script's own comment on that row says it was lowered 51 → 47 when objectui stopped being a sister repo. The file sat at its ceiling (the card's 「each touched file is at its line ceiling」 was right for it), so the two home lines were paid in-file as described above. The first gate run went red at 49/47 and is what surfaced it. 2. Holds: 187 under 188 on `origin/main`; the pointer sits beside the review-checklist line in 〈复核〉, the step where the seat reads the report. 3. Option (a): an in-place fold on L52 freed 6 B net after adding 30 B of `涉 cloud 写 `carrier: cloud`` text (120 → 114 B). Option (b) was not needed; (c) not taken. 4. Does not fit (117 B + 7–24 B of addition exceeds 120 B); `SKILL.md` untouched. 5. `cloud` grep over `.claude/skills/pm-dispatch/**` and `.claude/agents/os-dev.md`, before and after: 21 hits before, 24 after; the three new hits are the three new lines. Every pre-existing hit is a different subject: `mode:cloud` (the dispatch backend: SKILL.md L61/L311, execution-duties L144/L145/L165, landing-operations L77, dispatch-runbook L108, os-dev.md L325), the repo roster and dependency direction (cross-repo-coordination L5/L7, true-green L26, seat-post-protocol L80, director L82, decision-analysis L47/L50), the `cloud-connection` package (SKILL.md L160, server.md L68), the force-push rule (os-dev.md L73), and the `domain:cloud` lane row (SKILL.md L165) plus the split line itself (cross-repo-coordination L44), both of which the new lines build on rather than restate. ## Precedent The card names two cloud-lane cards from the server seat, both labelled `domain:cloud` + `status:parked` + `repo:cloud` with a provenance line and a done-when criterion: #26108 (`area:i18n`, `bug`) and #26110 (`area:ai`, `chore`). Neither is affected by this PR. ## Gates Derived with `node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack` (no paths) on the final tree at `ff37d61c`; each command run locally with its exit code captured before any pipe, then reconciled with `--ran`. All 20 derived families plus the local-only `pnpm check:skill-frame-freshness` ran on the final tree (`ff37d61c`; the working tree was clean, so the run reads the tree the two commits leave), each exit code recorded as `command :: exit N` before any pipe: | command | exit | |:--|--:| | `node scripts/check-closing-keyword-parity.mjs` | 0 | | `node scripts/check-closing-keyword-parity.mjs --self-test` | 0 | | `node scripts/check-comment-mask-corpus.mjs` | 0 | | `node scripts/pm/check-governed-queue-guard.mjs --self-test` | 0 | | `node scripts/pm/check-harness-current.mjs --self-test` | 0 | | `pnpm --filter @objectstack/lint run check:doc-formula-expressions` | 0 | | `pnpm check:agent-model-declared` | 0 | | `pnpm check:agent-test-spelling` | 0 | | `pnpm check:commit-card-trailers` | 0 | | `pnpm check:cross-package-test-inputs` | 0 | | `pnpm check:doc-authoring` | 0 | | `pnpm check:driver-memory-census` | 0 | | `pnpm check:gitlink-declared` | 0 | | `pnpm check:nul-bytes` | 0 | | `pnpm check:pm-governed-merges` | 0 | | `pnpm check:pm-skill-id-lint` | 0 | | `pnpm check:pm-skill-ratchet` | 0 | | `pnpm check:refd-timer-probe` | 0 | | `pnpm check:skill-frame-sync` | 0 | | `pnpm check:watch-hint-literal` | 0 | | `pnpm check:skill-frame-freshness` (local-only, beyond the union) | 0 | Reconciliation, verbatim: `✓ dispatch-gates --ran: 20 derived famil(ies) accounted for — 20 run, 0 NOT-MEASURED (a DERIVED zero — all 20 recorded an exit code and none of them is 3).` Verdict lines quoted from the ratchet on the final tree: `cross-repo-coordination.md is 47 lines (ceiling 47; headroom 0)`, `execution-duties.md is 188 lines (ceiling 188; headroom 0)`, `os-dev.md is 404 lines (ceiling 404; headroom 0)`, `SKILL.md is 319 lines (ceiling 319; headroom 0)`. `check:skill-frame-freshness`: `1/1 framework files are byte-identical to the ref`. `check:pm-skill-id-lint`: green over both corpora (no issue number in any new line). Readings before the final tree, for the record: the first battery, run before the ceiling payment, read `cross-repo-coordination.md is 49 lines; the ratchet ceiling is 47` (exit 1) and `check:doc-formula-expressions` exit 3 (PREREQUISITE NOT MET: `@objectstack/formula` and `@objectstack/lint` not built). After `pnpm exec turbo run build --filter=@objectstack/formula --filter=@objectstack/lint` under the verify lock (`VERDICT command-exit 0 · held the lock 111s`), that gate reads exit 0 on the same tree. No package is touched, so no build closure, package test or ablation applies; CI's check-runs on this PR are the seat's to read, not waited for here. ## Acceptance notes - `SKILL.md` 阶段细则索引 names this file's readers as the triage seat (routing, dedupe) and the execution seat (cross-repo claim, dispatch, transfer); the review moment is reached through the new `execution-duties.md` line. Widening that index row is outside the declared file surface; carrier: the `domain:skills` seat, if it wants the row to name the review moment too. - `review-checklist.md` has no item for the cloud routing of 范围外去向; the execution-duties line sits beside the checklist pointer, so the checklist reader meets it first. Outside the file surface; noted, not filed. ## 维护者速读(草稿) - 改了什么:把您在项目时间线上的话「开发中涉及 cloud 车道的,也应该转给 cloud」写进 pm-dispatch 技能。多仓协调页加两行:开发中冒出来的 cloud 事项(dev 报告的 open_questions / out_of_scope_findings,复核或落地时看到的)由席位立 cloud 车道卡,⛔ 不记而弃、不并入本仓 PR、不留「承接者:无」;卡形在现有停放双标上加 `repo:cloud`、出处行与一行判据。执行席复核页加一行指针;os-dev 定义里 `carrier:` 那行改拼法,让 dev 遇到 cloud 事项直接写 `carrier: cloud`。SKILL.md 一字未动。 - 为什么改:现有规则只管立卡或首触时按仓拆,开发中冒出来的 cloud 事项没有落点,会被报告里「承接者:无」一行带过去。 - 风险与代价(含回滚):纯规则文本,不发布、不改门禁、不动 cloud 自己的 PM。多仓协调页为了不抬行数上限,删掉了「谁何时读本文」的一行引言(SKILL.md 索引表原样保留同一信息);os-dev 行上三处缩写不丢规则。回滚 = revert 本 PR。 - 席位意见: - 你要做的:无需动作。Tier S:席位达档复核 PASS 后自行入队落地。 --- _Generated by [Claude Code](https://claude.ai/code/session_01LqKsGyMNFwwnbF5FTAqyPn)_ --------- Co-authored-by: os-warren <warren@objectstack.ai> Co-authored-by: Claude <noreply@anthropic.com>
1 parent 876aa27 commit d3bdf43

3 files changed

Lines changed: 4 additions & 3 deletions

File tree

‎.claude/agents/os-dev.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ model: opus
4949
- 把作者引向运行时会兑现却让事情更糟的元数据的警告不在 (c) 内,记为边界不扩类。
5050
- 其余 ⛔ 不立卡:只读推断、观察、休眠、零拉动、死代码、未演练漂移、抛光、命名。
5151
- 它们进 PR `## Acceptance notes`;报告 `out_of_scope_findings` 逐条 `class:`+`reach:`+证据,或 `carrier:`。
52-
- `carrier:` = 卡号或人,⛔ 非下个碰 X 的 PR;无则「承接者:无」;皆无 ⇒ 只进 Acceptance notes。
52+
- `carrier:` = 卡号或人,⛔ 非下个 PR;涉 cloud 写 `carrier: cloud`;无则 `none`;皆无只进该节。
5353
- 同族发现 ⛔ 不开单点卡,报告点名并入该族收口卡;收口卡定义住 pm-dispatch 报告契约。
5454
- dev ⛔ 不查重、不扫 open issues、不拉板,只附 3–5 个查重词;查询与命中数由立卡席写。
5555
- GitHub 写一律经 `scripts/pm/` 写工具;云容器里经 `fleet-write` 中继落为 `objectstack-fleet[bot]`。

‎.claude/skills/pm-dispatch/references/cross-repo-coordination.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
# 多仓协调
22

3-
分诊席每次 fire 路由与查重前读本文;执行席跨仓认领、派发或转移时读本文。
4-
53
- 产品依赖方向固定:`objectstack`(后端与 `ui/` 前端,`packages/spec` 唯一契约)→ `cloud`、`hotcrm`。
64
- 多车道仓 `objectstack`:中央分诊是 `domain:*`/type/定级的唯一生产者。
75
- 单车道仓 `cloud`、`objectos`、`hotcrm`、`www.objectos.ai`;未来新仓默认此类。
@@ -45,3 +43,5 @@
4543
- 该评论点名席位与步骤;无既有卡承载且请求自身即立卡门 ①②④ 时才立新卡。
4644
- 跨不可达仓的卡立卡或首触按仓拆:该仓部分由可达席立卡,或挂 `domain:cloud`+`status:parked`。
4745
- 本卡只留本仓活,不读他仓;拆不开先立该仓前置卡;依赖即 `pm:blocked`+`Blocked-by: owner/repo#N`。
46+
- 开发中涉 cloud 车道者由席位同拆:报告 `open_questions`/`out_of_scope_findings`、复核/落地所见。
47+
- ⛔ 不记而弃、不并入本仓 PR、不留 `carrier: none`;停放卡加 `repo:cloud`,出处行与一行判据。

‎.claude/skills/pm-dispatch/references/execution-duties.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@
175175

176176
- 你是记录在案的复核人:对 GitHub 核验,⛔ 不对报告的自述核验。
177177
- 逐项判据展开在 `references/review-checklist.md`,每份报告对着它过。
178+
- 报告 `open_questions`/`out_of_scope_findings` 涉 cloud 车道者,按 `cross-repo-coordination.md` 立 cloud 卡。
178179
- 改到已有 `.changeset/*.md` 的 PR ⛔ 不打 `skip-changeset`;确认取同 head 达档 PASS 或维护者原话。
179180
- 报告在草稿 PR 时点到达,CI 收敛读数只属于复核侧:gate `in_progress` 是诚实读数。
180181
- 绿色输出≠ 该绿证明了被测风险:拒收断言、全绿方向与时序、pin 翻转、边界后收益。

0 commit comments

Comments
 (0)