Repository navigation
Commit d3bdf43
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
- skills/pm-dispatch/references
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
49 | 49 | | |
50 | 50 | | |
51 | 51 | | |
52 | | - | |
| 52 | + | |
53 | 53 | | |
54 | 54 | | |
55 | 55 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
4 | | - | |
5 | 3 | | |
6 | 4 | | |
7 | 5 | | |
| |||
45 | 43 | | |
46 | 44 | | |
47 | 45 | | |
| 46 | + | |
| 47 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
175 | 175 | | |
176 | 176 | | |
177 | 177 | | |
| 178 | + | |
178 | 179 | | |
179 | 180 | | |
180 | 181 | | |
| |||
0 commit comments