Repository navigation
Commit fffe3e5
Fixes #18125
## Ruling
The maintainer, in the skills seat's chat at 2026-09-14T03:45Z, verbatim
and untranslated: 「并发2 还是太慢了,默认恢复3吧」. It supersedes lock 3's default (PR
#18072, commit `7ef05f997`, 「`batch` 默认 2」). The maintainer ceiling 5
stays. Ruling C (#17971, 「C. approve 后不管后续改动都由席位落地:」) governs the
landing: this PR stays a DRAFT; the seat does the four-piece; nothing
here is readied, queued, armed or approved by the dev.
## Change — one line
`.claude/skills/pm-dispatch/SKILL.md` line 60, the `batch:N` row of the
〈入口与角色〉 argument table:
- before: `| batch:N | 同时在飞的 dev 上限 | 默认 2;N 的维护者天花板 5 |`
- after: `| batch:N | 同时在飞的 dev 上限 | 默认 3;N 的维护者天花板 5 |`
(The row is quoted with `N` standing in for the angle-bracket
placeholder the file uses, so the body survives the sanitizer; the file
itself is unchanged in that respect.)
Equal-line and byte-neutral: 812 lines before and after (ceiling 812,
`scripts/pm/check-skill-line-ratchet.mjs:320`), 73524 bytes before and
after, one insertion / one deletion in `git diff --stat ca78860
06c1015`. Nothing else moves: write-identity locks 1, 2, 4, 5,
`LOCK_DEPTH_HOLD`, the same-file serial rule and the ceiling 5 are
untouched. The seats' Routine prompts are the seats' own to update on
landing (card body).
## Premise readings (all against `origin/main` = `ca7886047`, worktree
created 2026-09-14T03:50:37Z)
- **P1 holds** (read 2026-09-14T03:51Z): SKILL.md line 60 read 默认 `2`;
`git grep -n` for the literal 默认 followed by a backticked 2, over
`.claude AGENTS.md CLAUDE.md`, returned exactly one hit,
`.claude/skills/pm-dispatch/SKILL.md:60`.
- **P2 holds** (read 2026-09-14T03:51Z): `references/core-rules.md` is
151 lines and states no batch DEFAULT. `grep -n batch` hits: line 11
「并行度以 `batch` 封顶,验证锁到达深度 ≥ `LOCK_DEPTH_HOLD`(2)即等;同批按构造文件面不相交。」 (the
verify-lock depth, a different number) and line 37 「插队标签可超 `batch`
立即派发,⛔ 不豁免同文件串行、深度等待与认领协议。」. `grep -n 默认` hits lines 7, 17, 18, 52, 77,
139, 140 — none is about `batch`. So there is no mirror line, and
core-rules.md is untouched (151/151); the card body's "core-rules mirror
line likewise" is superseded by the claim comment's reading, which this
grep confirms.
- **P3 holds** (read 2026-09-14T03:51Z): SKILL.md is 812 lines at
ceiling 812; `sed -n '733,754p' SKILL.md | md5sum` =
`3327d02c56f8a0eca88569dad2270f32`. Same two readings on HEAD
`06c10152b` after the edit: 812 lines, md5
`3327d02c56f8a0eca88569dad2270f32`.
- **P4 holds** (read 2026-09-14T03:52:44Z–03:53:16Z): `git ls-remote
--heads origin` listed 1106 heads; the 6 `claude/issue-18xxx` heads were
compared to `main` through REST `GET .../compare/main...BRANCH` and all
9 open PRs through REST `GET .../pulls/N/files` (page count 9, fewer
than 100, so the listing is complete): zero hits on
`pm-dispatch/SKILL.md` or `core-rules.md` in any of them. Scope
declared: open PRs plus this wave's `issue-18xxx` heads; the 62 older
keyword-matched heads (seat session branches `pm-dispatch-*`, old issue
branches) were listed but not compared.
## Gates (run on the working tree at HEAD `06c10152b`,
2026-09-14T03:55Z–04:01Z; every exit captured by redirect-then-`$?`)
Derived with `node scripts/pm/dispatch-gates.mjs --commands --repo
objectstack-ai/objectstack` (no paths; change set from the merge base
`ca7886047`; the `--repo` assertion held): 16 commands — 9 matched by
path, 7 whole-tree. All 16 exit 0:
- `pnpm check:pm-skill-ratchet` — exit 0 (ratchet green;
widest-table-row pins and ceilings unchanged)
- `pnpm check:skill-frame-sync` — exit 0 (「the one declared copy of the
decision frame is internally coherent … 74 markdown files scanned for
undeclared copies」)
- `pnpm check:pm-governed-prose` — exit 0 (「2 instruction surface(s)
name all 5 registered governed surfaces … and claim no others」)
- `pnpm check:pm-skill-id-lint` — exit 0 (27 files clean)
- `pnpm check:pm-governed-merges` — exit 0
- `pnpm check:nul-bytes` — exit 0 (8643 text files, no raw control
bytes)
- `node scripts/pm/check-governed-queue-guard.mjs --self-test` — exit 0
(233 cases)
- `pnpm check:agent-test-spelling` — exit 0
- `node scripts/check-closing-keyword-parity.mjs` and its `--self-test`
— exit 0 / 0
- `node scripts/check-comment-mask-corpus.mjs` — exit 0 (6747 files, 0
disagree)
- `pnpm --filter @objectstack/lint run check:doc-formula-expressions` —
first run exit 3 「PREREQUISITE NOT MET — `@objectstack/formula` is not
built」 (not a measurement); after `pnpm exec turbo run build
--filter=@objectstack/formula --filter=@objectstack/lint` under
`os-verify-lock.sh` (「VERDICT command-exit 0 · held the lock 167s」),
rerun exit 0 (「22 record-scoped formula example(s) across 438 files …
judged clean」)
- `pnpm check:doc-authoring`, `pnpm check:driver-memory-census`, `pnpm
check:refd-timer-probe`, `pnpm check:watch-hint-literal` — exit 0 each
Reconciliation (`--ran` with `COMMAND :: exit CODE` lines,
2026-09-14T04:01:47Z): 「✓ dispatch-gates --ran: 16 derived famil(ies)
accounted for — 16 run, 0 NOT-MEASURED (a DERIVED zero — all 16 recorded
an exit code and none of them is 3).」
Tied family not on the derived list, run anyway: `node
scripts/check-skill-frame-freshness.mjs` (`--self-test` exit 0, scan
exit 0: 「the decision frame in this tree is current with origin/main」).
CI-measured only, not runnable here: `check-governed-queue-guard.mjs` on
the event payload.
Lint, narrowed and declared: `eslint --no-inline-config --format json
.claude/skills/pm-dispatch/SKILL.md` — exit 0, 1 file, 0 errors, 1
warning 「File ignored because no matching configuration was supplied」.
Population read from `eslint.config.mjs`: every `files:` block matches
only `**/*.{ts,tsx,mts,cts,js,jsx,mjs,cjs}` (six blocks;
`COMMENT_SWALLOW_FILES` is the same glob), so a `.md` file is outside
the linted population. Invariance: the config never enables type-aware
linting (its own line 328: no `parserOptions.project`, no typed rules),
so a one-line edit to an unlinted file cannot move the verdict of any
linted file; the repo-wide `pnpm lint` is CI's run.
`dispatch-gates --tier` was read for the claim; its model line is not
reproduced here (model-free rule).
## Changeset
None owed. The `Check Changeset` job
(`.github/workflows/pr-automation.yml`, job `changeset-check`) reads
exactly two exemptions — the `skip-changeset` label and the changesets
release PR pinned by branch and author — and no path exemption, so the
label is the declaration. The diff publishes nothing: `.claude/**` is in
no released package's `files[]` (fast-lane class per the dev
definition). The label is applied with the additive `POST
.../issues/N/labels` and read back; the read-back is recorded in the
report comment on #18125.
## 维护者速读(草稿)
**改了什么**:PM 派发技能 `SKILL.md` 的 `batch` 参数默认值从 2 改回 3;上限 5 不变;只此一行。
**为什么改**:维护者裁决「并发2 还是太慢了,默认恢复3吧」;lock 3 落地的默认 2 由此被取代。`core-rules.md`
本就没写默认值,故无需同改。
**风险与代价(含回滚)**:并发默认回到 3 意味着同一时刻多一个 dev
在飞,共享容器的验证锁排队会略长;其余四把写身份锁、验证锁深度等待、同文件串行规则均不动。回滚 = 把该行的 `3` 改回
`2`,一行、零副作用。
**席位意见**:(留空,席位定稿成评论)
**你要做的**:确认后由授权账号 approve,席位按裁决 C 落地;各席位自行更新自己的 Routine 提示词。
## Acceptance notes
- Dispatch vs dev definition: the dispatch asked for a two-line 维护者速读;
the dev definition sets five paragraphs, and the definition wins on
conflict, so the five-paragraph form is used with the two-line business
content inside it. Noted, no card.
- noted, not filed: the card body says the core-rules mirror line
changes "likewise"; the tree says there is no such line (P2 above). The
claim comment already carries the correction. 承接者:无 (nothing to land).
- noted, not filed: the first `check:doc-formula-expressions` run exited
3 on a fresh worktree because `@objectstack/formula` and
`@objectstack/lint` are not built by `pnpm install`; the gate's own text
says so and prescribes the build. Behaviour by design (Absence must be
loud), not a defect. 承接者:无.
- Out-of-scope findings of the three filing classes: none.
- Clause-②: no
---
_Generated by [Claude
Code](https://claude.ai/code/session_01DAcomhvR9kKizeYgg89Vo8)_
Co-authored-by: claude[bot] <claude[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
1 parent 689d606 commit fffe3e5
1 file changed
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
57 | 57 | | |
58 | 58 | | |
59 | 59 | | |
60 | | - | |
| 60 | + | |
61 | 61 | | |
62 | 62 | | |
63 | 63 | | |
| |||
0 commit comments