Uh oh!
There was an error while loading. Please reload this page.
pm-dispatch: finding triage runs to empty each fire, quality held by ≤5-card same-family batches - #11988
Merged
Merged
Conversation
…family batches (#11972) Maintainer ruling 2026-08-25 supersedes the per-round 3–5-card budget and the 15–20-per-batch parameter. Scheduled finding triage now clears every ungraded card per fire; the rubber-stamp risk is controlled by batch granularity (≤5 same-family cards, read one by one), not by capping the round total. A run of several hours is acceptable; a fire that cannot finish resumes next fire, with the off-label discipline of graded cards as the checkpoint. The `finding` >15 concentrated-round trigger is absorbed: with run-to-empty as the steady state a count above the old threshold is no longer a mode switch but an inflow alarm — it counts only once it survives consecutive COMPLETED run-to-empty fires, which is what separates inflow above triage capacity from an outage spike that the next fire clears. Ceilings paid by consolidation, no registry raised: SKILL.md 1008 → 1005 (the superseded budget and trigger prose funded the new text), dispatch-runbook.md unchanged at 274/274. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RMTpSRF5CjMmQBFfPtPCwJ
hotlong
marked this pull request as ready for review
August 25, 2026 05:11
Uh oh!
There was an error while loading. Please reload this page.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes#11972
Governed surface (
.claude/**) ⇒ draft, human merge. Verified ata879b1e57.The ruling
Scheduled finding triage no longer carries a per-round total budget. Every fire
grades all ungraded
findingcards; the rubber-stamp risk is controlled bybatch granularity instead of by capping the round. Maintainer, 2026-08-25,
verbatim and untranslated:
So: ≤5 same-family cards per batch, read one by one, and a run of several
hours is an acceptable shape. A fire that exhausts its window resumes from where
it stopped — graded cards are off-label and never re-read, so the label
discipline already is the checkpoint.
What changed
.claude/skills/pm-dispatch/SKILL.md, 「发现分诊轮」首触定级每轮跑:预算 3–5 张→每 fire 跑到清空: no round total, all ungradedfindings graded this round, first-touch still ahead of old-card re-verification.
质量靠每批 ≤5 张同族卡逐张读,不靠封顶总量, with the2026-08-25 ruling quoted verbatim at the point where the rule is stated.
finding>15 ⇒ 集中轮 trigger sentence is gone; 域分批 and the sweeppromotion five rules stay, now as standing practice rather than a mode switch.
exception, the
Restart-when:daily sub-round,pm:retriageper-fire priority..claude/skills/pm-dispatch/references/dispatch-runbook.md, 发现分诊轮细则自动集中轮批量参数:15–20 张→每批约定:≤5 张同族卡、同上下文逐张读(维护者 2026-08-25,取代 15–20/批). Standing authorization unchanged.
积压告警bullet, the >15 trigger's destination:连续 COMPLETED 清空 fire 后仍 >15 ⇒ 入流 > 吞吐,报维护者。With run-to-empty as the steady state a rawcount is no longer a mode switch — it is only an alarm once it survives
consecutive completed fires, which is precisely the test that separates inflow
above triage capacity from a spike the next fire clears.
旧 hold 重验不占预算removed — 「预算」 no longer exists; the ordering itencoded now reads
首触定级…优先于旧卡重验in SKILL.md.Why run-to-empty rather than a larger budget
The current pile-up is an outage accumulation, not steady-state inflow.
Maintainer, 2026-08-25, verbatim and untranslated:
That is the strongest argument for the ruled shape: a per-round budget never
recovers from an outage — it amortizes the backlog over dozens of fires while
new cards keep aging — whereas run-to-empty self-heals on the first fire after
supply returns. It is also why the alarm is calibrated on survival across
completed fires: an outage gap is expected to produce a spike and one long
recovery round, and that is by design, not an alarm.
This outage narrative is deliberately not copied into the runbook. Repo
convention for the ceilinged instruction surfaces is that provenance is one line
and stories live on cards, not in operational text — so the story stays here and
on the card's addendum, and the doc carries the rule it produced.
Ceilings — paid by consolidation, nothing raised
.claude/skills/pm-dispatch/SKILL.md.claude/skills/pm-dispatch/references/dispatch-runbook.mdThe superseded prose is the purse: the 3–5 budget clause, the >15 trigger
sentence and the 15–20 batch parameter funded the ≤5 convention and the alarm
line.
scripts/pm/check-skill-line-ratchet.mjsmoves only to lower theSKILL.md ceiling to the landed count — the shrink-only direction the ratchet
calls always legitimate. No registry entry was raised.
Every line stays within
MAX_LINE_BYTES=120; the two verbatim rulings arebyte-intact, and no quote already spanning lines was re-flowed (the 出处
paragraph and the 状态转换机制 bullet are kept byte-identical).
Checks — all green at
a879b1e57Derived with
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack(14 families) plus
check:nul-bytes:check:agent-test-spelling·check:cross-package-test-inputs·check:doc-authoring·check:doc-formula-expressions·check:entry-guard·check:parse-guard·check:pm-governed-merges·check:pm-governed-prose·check:pm-skill-id-lint·check:pm-skill-ratchet·check:pnpm-filter-targets·check:skill-frame-sync·check-ci-filter-parity.mjs·check-cross-package-test-inputs.mjs·check:nul-bytes— 15/15 exit 0.Verdict lines:
✓ check-skill-line-ratchet: …SKILL.md is 1005 lines (ceiling 1005; headroom 0).·✓ check-skill-line-ratchet: …dispatch-runbook.md is 274 lines (ceiling 274; headroom 0).·✓ check-skill-line-ratchet self-test: 71 cases pass.·
✓ check-skill-frame-sync: 4 copies of the decision frame are structurally isomorphic across 3 files·check-nul-bytes: OK (scanned 6658 text file(s) …; no raw ASCII control bytes).No changeset:
.claude/**+scripts/pm/**only — nothing published ships fromthis diff.
Generated by Claude Code