Skip to content

Commit 85c6d76

Browse files
os-elon-muskclaude
andauthored
docs(pm-skill,checklist-test): the --tier instruction lines carry --repo so a not-yet-written path derives a tier (#18463)
Fixes #18425 Clause-②: no ## 维护者速读(草稿) **改了什么**:两处 agent 指令行里的命令拼写,从 `node scripts/pm/dispatch-gates.mjs --tier PATHS` 改为 `node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --tier PATHS`(占位符在文件里是尖括号拼写,本正文为避开 GitHub sanitizer 写作 PATHS)。只动这两行 —— checklist-test 侧是同一条 bullet 内的两行重新折行 —— 两个文件的行数不变:pm-dispatch SKILL.md 812 / 812,checklist-test SKILL.md 234 / 238。 **为什么改**:`dispatch-gates.mjs` 对树上不存在的路径,在没有 `--repo` 申报时以 exit 3(NOT MEASURED)拒绝 —— 这是 PR #18409 的有意设计,不是本卡的缺陷。PM 认领一张文件面尚未写出的卡(新 reference、新脚本)时照抄这两行,得到 exit 3、拿不到档位。改后的拼写照抄即 exit 0(下方 A7 读数)。 **风险与代价(含回滚)**:纯文案,不发布任何东西,不改脚本。代价一处:pm-dispatch SKILL.md 该行 120 B 预算容不下 +34 B —— 命令 85 B + 「引当次 … 输出」15 B + 「⛔ 不凭记忆」16 B + bullet 前缀与两个空格 4 B = 恰 120 B,所以主语「Container & model 行的档位」与逗号被删;保留「档位」的最短写法是 125 B,超预算。派发裁决禁止动该文件其它任何一行,所以「别处删一行换一行」不在本 PR 的选项内。回滚 = revert 这一个 commit。 **席位意见**:(留空) **你要做的(一个动作)**:接受去掉主语的写法则给一个 authorized APPROVED;若要保留「档位」,请裁定允许在 SKILL.md 别处删一行来换这条 bullet 的第二行,本 PR 再补一轮。 ## What changed — each line before / after, in bytes Byte counts are of the file's spelling, where the placeholder is written in angle brackets (7 B); this body writes it `PATHS` because the GitHub body sanitizer eats angle-bracket fragments even inside backticks. `.claude/skills/pm-dispatch/SKILL.md` :477 — file 812 / 812 (ceiling), `MAX_LINE_BYTES` 120, no line added: - before, 120 B: 「- Container & model 行的档位引当次 `node scripts/pm/dispatch-gates.mjs --tier PATHS` 输出,⛔ 不凭记忆。」 - after, 120 B: 「- 引当次 `node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --tier PATHS` 输出⛔ 不凭记忆」 `.claude/skills/checklist-test/SKILL.md` :98–:99 — file 234 / 238, the same bullet re-wrapped across its existing two lines, no line added, the floor / default / ceiling parenthetical untouched: - before :98, 88 B: 「 `node scripts/pm/dispatch-gates.mjs --tier PATHS` 的输出、⛔ 不凭记忆(floor」 - before :99, 90 B: 「 sonnet · default opus · ceiling fable);每个给:该项 JSON、RUNNER.md、dogfood 技」 - after :98, 100 B: 「 `node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --tier PATHS` 的输出、」 - after :99, 113 B: 「 ⛔ 不凭记忆(floor sonnet · default opus · ceiling fable);每个给:该项 JSON、RUNNER.md、dogfood 技」 ## Judgment call on the SKILL.md line (for the reviewer) The dispatch named three load-bearing pieces — the exact command spelling with `--repo objectstack-ai/objectstack --tier PATHS`, 「引当次 … 输出」 (quote THIS run's output) and 「⛔ 不凭记忆」 — and a 120 B gate. Those three plus the bullet prefix and two separating spaces measure exactly 120 B, so nothing else fits on the line: the subject prefix 「Container & model 行的档位」 and the comma are gone. The dispatch's own shortest candidate (「- 档位引当次 `…` 输出,⛔ 不凭记忆。」) measures 130 B; the shortest wording that keeps 「档位」 at all (「- 档位引当次 `…` 输出⛔不凭记忆」) measures 125 B. The bullet still sits in the claim-comment list and `--tier` names the tier itself; the claim template line (:808, untouched) keeps 「档位,引当次 --tier 输出」 as the subject. Typography note: a CJK glyph directly before ⛔ (「输出⛔ 不凭记忆」) has zero precedent on `origin/main` SKILL.md; the exact phrase 「⛔ 不凭记忆」 is preserved so a grep for it still hits this line. ## Self-verification of the instruction (dispatch A7) The command was extracted verbatim from between the backticks of SKILL.md :477 (`sed`, not retyped), the placeholder substituted with `packages/this-repo-has-no-such-package/src/index.ts` (absent from the tree, `ls` confirms), and run from the worktree; exit codes captured before any pipe: - new spelling → **exit 0**; output: 「Model tier — no path-derived mandate: the surface hits none of the 3 declared glob(s), derived here, not recalled. The tier stays the PM's per-card judgment call (floor sonnet · default opus · ceiling fable).」 - control, bare spelling extracted the same way from `origin/main` :477 → **exit 3** (NOT MEASURED); output names the two `--repo` readings. - the spelling extracted the same way from checklist-test :98 is byte-identical to the SKILL.md one. ## Gates Derived from the merge base with `node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --commands` (17 commands, merge base `e915c190`), each run in the foreground with the exit code redirected before any pipe, then reconciled with `--ran` at `7a7f3c22`: 「Run reconciliation — 17 derived, 17 run, 0 NOT-MEASURED, 0 UNRUN.」 (exit 0). | command | exit | | --- | --- | | `pnpm check:pm-skill-ratchet` (rerun on the committed head `7a7f3c22`) | 0 — 「pm-dispatch/SKILL.md is 812 lines (ceiling 812; headroom 0)」 · 「checklist-test/SKILL.md is 234 lines (ceiling 238; headroom 4)」 | | `pnpm check:pm-skill-id-lint` | 0 — 27 file(s) clean | | `pnpm check:skill-frame-sync` | 0 | | `pnpm check:pm-governed-prose` | 0 | | `pnpm check:pm-half-states` | 0 — 4356 self-test cases | | `pnpm check:nul-bytes` | 0 — 8733 text files, no raw control bytes | | `pnpm --filter @objectstack/lint run check:doc-formula-expressions` | 0 — first run exit 3 PREREQUISITE NOT MET (`@objectstack/formula` and `@objectstack/lint` unbuilt); built both under the verify lock (`VERDICT command-exit 0`, 171 s), rerun → 0 | | `pnpm check:agent-test-spelling` · `pnpm check:doc-authoring` · `pnpm check:driver-memory-census` · `pnpm check:pm-governed-merges` · `pnpm check:refd-timer-probe` · `pnpm check:watch-hint-literal` | 0 each | | `node scripts/check-closing-keyword-parity.mjs` (and `--self-test`) · `node scripts/check-comment-mask-corpus.mjs` · `node scripts/pm/check-governed-queue-guard.mjs --self-test` | 0 each | No package is touched, so there is no ① dependency-closure build and no ② package test; the control-character self-scan (`grep -naP` over the two files) is clean. ## Changeset None; label `skip-changeset`. AGENTS.md Post-Task Checklist step 3: 「that label is for a diff that publishes nothing from any released package」. `.claude/**` is in no package's `files[]` and is os-dev's declared fast lane for exactly this reason; nothing released moves. ## Acceptance notes - Rules layer (`.claude/skills/**`): draft PR; the dev never flips ready, never arms auto-merge, never requests review. Landing waits for an authorized APPROVED and the owning seat. - `scripts/pm/dispatch-gates.mjs` is deliberately untouched — its exit-3 refusal is the design landed in PR #18409, not the defect. - Out of scope, not edited (dispatch A3): pm-dispatch SKILL.md :637 (a review heuristic) and :808 (the claim template, `引当次 --tier 输出` — not a command spelling); `references/contract-review.md` :17; `references/lanes/skills.md` :20; `references/platform-readings.md` :391 「`dispatch-gates.mjs --tier PATH` 逐路径现推」 — a mechanism reference without `node scripts/pm/`, so not a verbatim-copyable command; noted, not filed. Bearer: whichever skills-seat PR next edits `platform-readings.md`. - The dispatch's suggested route (drop 「Container & model 」, keep 「档位引当次 … 输出,⛔ 不凭记忆」) was measured at 130 B and falsified; the arithmetic above is the replacement. --- _Generated by [Claude Code](https://claude.ai/code/session_01HPfcjvF23QBoBj7P47DDxs)_ Co-authored-by: Claude <noreply@anthropic.com>
1 parent 0fe38a9 commit 85c6d76

2 files changed

Lines changed: 3 additions & 3 deletions

File tree

‎.claude/skills/checklist-test/SKILL.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,8 @@ Tier 1 批量清掉,剩下的预算才对得起 Tier 2。
9595
- **并行度**:API 面测试项放开并行扇出(各自端口,便宜)。浏览器项**少量并行**
9696
(2–3 个),各自端口 + 浏览器上下文 —— 超过这个数,单机 CPU 与共享显示开始互相争
9797
抢。派发 runner 子代理时,档位引当次
98-
`node scripts/pm/dispatch-gates.mjs --tier <paths>` 的输出、⛔ 不凭记忆(floor
99-
sonnet · default opus · ceiling fable);每个给:该项 JSON、RUNNER.md、dogfood 技
98+
`node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --tier <paths>` 的输出、
99+
⛔ 不凭记忆(floor sonnet · default opus · ceiling fable);每个给:该项 JSON、RUNNER.md、dogfood 技
100100
能、自己的端口/DB、结果不进仓规则(§4)。
101101
- **没有子代理工具时,顺序跑 —— 并在运行记录里声明这一轮是顺序执行的。** 规则与它
102102
的论证住在 `checklist-author` 技能(维护者所定,一处成文);⛔ 不留第二份拷贝。

‎.claude/skills/pm-dispatch/SKILL.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -474,7 +474,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
474474
- 条款②入队闸门只读认领评论且只读行首键:句中提及与另发评论皆读不到,卡即不可读。
475475
- 谓词保持严格、⛔ 不放宽;session ID 不可省,`mode:subagent` 下 dev 与 PM 同 ID,身份看分支。
476476
- `Clause-②: yes | no` 恰这两种拼写,恒英文机器判据;判据:本卡放宽接受集或扩大公开面吗。
477-
- Container & model 行的档位引当次 `node scripts/pm/dispatch-gates.mjs --tier <paths>` 输出,⛔ 不凭记忆。
477+
- 引当次 `node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --tier <paths>` 输出⛔ 不凭记忆
478478
- 末行 Serial constraints cleared 是落在评论里的读数,同包在飞单不点名等于没查。
479479
- 本卡 pin 断言兄弟卡在改的行为 ⇒ 派发令注明,并在用例内预登记翻转触发词,⛔ 不修绿。
480480
- 文件面申报到区域级,每单必填;分支名必须带 issue 号。

0 commit comments

Comments
 (0)