Repository navigation
Commit a43405d
docs(pm-dispatch): concentrated test runs file one card per defect, with no per-fire quota (#24743)
Maintainer instruction, verbatim, in Claude Code session
`session_01CfRDy7SuTfUqaTu2AEH2Hi` on 2026-10-20 (the 18.0 QA wave's
dispatch session), after a UX walkthrough folded fifteen unrelated
console defects into one list card to stay under the per-fire quota:
> 你这种集中测试的不应该限制立卡张数,skills 也要调整
Clause-②: no — internal agent tooling under `.claude/`; publishes
nothing from any released package.
## What changes
One line of `.claude/skills/pm-dispatch/references/filing-gate.md`, the
filing gate's quota rule:
- **Before:** "配额:一席每 fire 至多立三张;sweep 超出的折进一张带清单的卡,或折进座位贴。" — every
filing seat, a QA run or walkthrough included, filed at most three cards
per fire and folded the rest into one list card.
- **After:** "配额:一席每 fire 至多三张,超出折清单卡或座位贴;QA/走查逐缺陷立不限张数,守批量间隔。" — the
per-fire quota still binds every other filing; a QA run
(`checklist-test`) or a dogfood / UX walkthrough files each defect that
passes the gate as its own card, with no count limit, and keeps the
batch write gap (`scripts/pm/write-pace.mjs` rule ⑤: announce the batch,
30 s between writes).
Why the pacing half (second commit): lifting the count without naming
the gap invited bursts — one walkthrough filed fifteen issues in 42
seconds at the default 3-second gap. The maintainer approved adding it
in the same session.
Unchanged: the gate itself (categories ①–④, the three answers, `reach:`,
the dedupe query and hit count), and the report contract's rule in
`SKILL.md` that same-family findings (one root cause, several locations)
fold into one family card.
## Why
A concentrated test run's findings were landing as list cards no single
lane could pick up: the round-1 wave folded unrelated items into one
card, and the first UX walkthrough folded fifteen console defects across
different components into one. A list card of unrelated defects has no
single owner, no single fix and no single close. `checklist-test` §4 and
RUNNER's extraction obligation already say each product defect is
extracted as its own issue; the quota line was the only text
contradicting them.
## Line budget
The file sits at its ratchet ceiling (64 lines, headroom 0) and a
120-byte line cap, so the rule is rewritten in place: 1 line out, 1 line
in (120 bytes, at the cap). No ceiling moves.
## Gates
Run locally at `6aede73015`; after the pacing commit `4d35cb6460`,
`check:pm-skill-ratchet`, `check:pm-skill-id-lint`,
`check:skill-frame-sync` and `check:doc-authoring` re-run, each exit 0.
The first run, the derived set from `node scripts/pm/dispatch-gates.mjs
--commands` for this path (17 commands), every one exit 0:
`check:pm-skill-ratchet`, `check:pm-skill-id-lint`,
`check:skill-frame-sync`, `check:pm-governed-merges`,
`check:doc-authoring`, `check:nul-bytes`, `check-closing-keyword-parity`
(scan and self-test), `check-comment-mask-corpus`,
`check-harness-current --self-test`, `check:agent-test-spelling`,
`check:cross-package-test-inputs`, `check:driver-memory-census`,
`check:gitlink-declared`, `check:refd-timer-probe`,
`check:watch-hint-literal`, and `@objectstack/lint
check:doc-formula-expressions` (first run exited 3 before measuring —
the formula and lint packages were unbuilt; after building both it exits
0).
## Landing
`.claude/**` is a Tier S governed surface (Prime Directive 14): this PR
stays draft until the PR thread or its card carries a `## Contract
review` record for the current head with `Served-tier:
CONTRACT_REVIEW_TIER` and a PASS verdict; the owning seat
(`domain:skills`) then lands it.
---
_Generated by [Claude
Code](https://claude.ai/code/session_01CfRDy7SuTfUqaTu2AEH2Hi)_
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 46bb5e3 commit a43405d
1 file changed
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
30 | | - | |
| 30 | + | |
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
| |||
0 commit comments