Repository navigation
Commit 85c6d76
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
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
95 | 95 | | |
96 | 96 | | |
97 | 97 | | |
98 | | - | |
99 | | - | |
| 98 | + | |
| 99 | + | |
100 | 100 | | |
101 | 101 | | |
102 | 102 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
474 | 474 | | |
475 | 475 | | |
476 | 476 | | |
477 | | - | |
| 477 | + | |
478 | 478 | | |
479 | 479 | | |
480 | 480 | | |
| |||
0 commit comments