Skip to content

Commit fffe3e5

Browse files
claude[bot]claude
andauthored
docs(pm): batch default back to 3 on the maintainer's ruling — ceiling 5 unchanged (#18125) (#18128)
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

File tree

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
5757
| `director` | 以项目总监席身份运行(人工召唤;四职见 升级与决策 节与 `references/lanes/director.md`) | — |
5858
| `label:<name>` | backlog 过滤标签;`label:all` = 全部 open 未认领 | `pm:queue` |
5959
| `repo:<owner/name>` | 扫哪个仓的 backlog(单 issue 的落地仓看它自己的 `repo:*` 标签) | `objectstack-ai/objectstack` |
60-
| `batch:<n>` | 同时在飞的 dev 上限 | 默认 `2`;`n` 的维护者天花板 `5` |
60+
| `batch:<n>` | 同时在飞的 dev 上限 | 默认 `3`;`n` 的维护者天花板 `5` |
6161
| `rounds:<n>` | 跑 N 轮后停 | 队列清空为止 |
6262
| `mode:subagent` \| `mode:cloud` | 派发后端 | 按卡分流:S+M ⇒ `subagent`,`cloud` 只留 L/XL 等保留面 |
6363
| `#12 #34 …` | 显式 issue 清单,整体覆盖标签查询 | — |

0 commit comments

Comments
 (0)