docs(pm-dispatch): findings pipeline — hold verdicts swap to pm:on-hold, first-touch grading every round, auto-concentrated rounds, lane-evidence protocol, atomic ruling-recording - #8602
Merged
Conversation
…on-hold, first-touch grading every round, auto-concentrated rounds, lane-evidence protocol, atomic ruling-recording (#8449) - finding now means exactly 'awaiting first grade': a hold verdict swaps finding → pm:on-hold in the same write; raw label count is the health metric; the exemption-comment mechanism is dropped in favor of the state transition (maintainer design input, 2026-08-13). - First-touch grading every round, budget 3-5, prioritized over re-verifying holds; auto-concentrated domain-batched round at finding >15 under the standing authorization. - Lane-evidence protocol codified (evidence yes, grades never; skills lane self-grades, repo-wide round skips it). - Ruling-recording is one atomic action with four parts (freshness gate, state transition, Blocked-by liveness, condition-fired check); the two report-only checker flags are described in the runbook, wiring is a separate card. - SKILL.md stays at 686/686 (net zero); details moved to references/dispatch-runbook.md, which has no ratchet. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018WuTtyckQa1VcXwgd52JpN
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
This was referenced Aug 14, 2026
hotlong
marked this pull request as ready for review
August 14, 2026 04:14
Contributor
Author
|
Audit — landing on explicit per-PR maintainer authorization. The maintainer's review on this PR (2026-08-14 04:14Z, verbatim, untranslated): 「同意合并」. That satisfies the human-review requirement for skills-root changes (founding ruling 2026-08-11: 「所有 skills 的更新和 adr 类似,需要人工审核」 — the review is the human act; this seat's ACCEPT of record is on the card). Acting on it via the only sanctioned landing path: ready-flip + auto-merge (SQUASH) into the merge queue — ⛔ no direct merge. Executed by the skills seat, session Generated by Claude Code |
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 free
to 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.
Fixes #8449
Implements the findings-pipeline redesign in
.claude/skills/pm-dispatch/**, per the card body as amended twice by the maintainer's design input in the card's comments — both amendment comments are in scope and amendment 1 supersedes the original clause 1 (comment-counting metric + exemption comments) with the state swap.What changed
SKILL.md — 686/686 before and after, strictly net zero (accounting below):
findingnow means exactly "awaiting first grade" — a hold verdict at any grading round swapsfindingtopm:on-holdin the same label write; the raw label count is the health metric; the originally-proposed exemption-comment mechanism is dropped and recorded as dropped (do-not-revive guard in both files). Thefindingandpm:on-holdState-model rows carry the swap and the hold comment's provenance duty (maintainer-ruled vs seat-graded lives in the hold comment, never a second label).findingcount above 15 makes the next fire a domain-batched concentrated round under the 2026-08-13 standing authorization; the sweep bundling five-condition rule applies. The original body's second threshold (non-exempt stock above 30) collapses into the honest count by construction after the state swap and is not restated.Blocked-by:liveness check (a merged half counts as discharge) / condition-fired check. The two mechanical flags are described as report-only half-state-sweeper duties in the runbook; wiring is a separate card andscripts/pm/check-half-states.mjsis untouched (read before deciding: none of its H1–H7 implements either flag today, so describe-here / wire-later is consistent).references/dispatch-runbook.md (+56 lines; references carry no ratchet) — two new sections host what the hot file sheds: the four verbatim maintainer quotes (dated, untranslated), the state-semantics rationale, concentrated-round batch parameters (15–20 cards, same-family same-context), the sweep five conditions (moved out of SKILL.md verbatim), the lane-evidence boundary, the atomic-recording worked failure shape, the two mechanical flags, the premise re-check command shapes and the escalation analysis template that SKILL.md now points at. The header's source-section list gains 「升级与决策」. Note: the dispatch prompt suggested seat-post-protocol.md as the findings-round host "per its header", but that file's header scopes it to the seat-post protocol / epic teardown / release board; dispatch-runbook.md's header already claims 分诊座位职责, and it already hosts the other triage-seat detail sections — so the detail landed there.
references/seat-post-protocol.md (±2 lines) — the release board's freshness rhythm was keyed to "same cadence as the findings round (every ~5 rounds)"; first-touch grading is now every round, so that anchor went stale and the board self-carries the ~5-round value.
SKILL.md line accounting (ceiling 686, headroom 0)
pm:on-hold,finding)The +1 (atomic four-parter) is funded by the −1 (分类动作 rewrap); the findings-round rewrite funds itself by moving the sweep five conditions and the ruling quotes to the runbook.
One-time migration — enumerated only, ⛔ not executed here (amendment 1)
Amendment 1 sized the migration at ~26 held findings out of ~47. Measured at implementation time (2026-08-14T01Z), the number drifted hard, in two ways:
pm:on-holdtoday, and a tight cluster of formerly-finding cards showsupdated_at2026-08-13T13:49–13:50Z — minutes after amendment 1 was posted, hours before this card was dispatched. The amendment's sequencing ("the migration rides the skill PR's landing") was overtaken on the live board. Per the shared-identity rule I did not revert or re-label anything; this is reported as an observation.findingcards remain. By latest triage comment:check:engine-double-contractcounts declaration sites, so a behaviourally-distinct engine double built byObject.assignover an existing one is not counted #8553 — HELD (graded 2026-08-13, three named triggers) → migratehintCoversmatches on a raw STRING prefix, not a path-segment boundary — a hint naming one package can claim a sibling that merely shares its name prefix #8534 — HELD (graded 2026-08-13 by the skills seat, trigger-fired re-verification stated) → migratemax_nodescap still cannot be enforced by any replica: the cluster has no membership view and no slot claim, so a count-carrying gate verdict stays advisory #8501 — held pending a blocker discharged the same day; latest comment states it is still ungraded → re-grade queuelist_issue_typesreturns 403 for this integration whileissue_writesets native types fine — a seat that probes the list first will wrongly conclude typing is unavailable #8574 — PROMOTED riding another card's dispatch; keepsfindingas the sweep-member recordpublish-draftshas two more undeclared-driver-text fields on the same 200 body:unhideErrorandrebindError#8516 — zero comments → first-touch queueMigration to execute after this merges: #8589, #8553, #8534 — one label write each,
finding→pm:on-hold; hold comments are already on-card. Post-migration honestfindingcount: 6.Verification
pnpm check:pm-skill-ratchet— green: "SKILL.md is 686 lines (ceiling 686; headroom 0)"pnpm check:pm-skill-id-lint— green: 9 files clean (no issue-ID citations in operational text)pnpm check:skill-frame-sync— green: 4 copies isomorphic, 3 axes, 4 count mentions agree (edits stay clear of every anchor)pnpm check:skill-frame-freshness— green (frame unchanged vs origin/main)pnpm check:nul-bytes— green (7740 files)pnpm check:doc-authoring— green (377 files)pnpm --filter @objectstack/lint run check:doc-formula-expressions— green after building the lint dependency closure (first run was the documented fresh-worktree false red: unbuilt@objectstack/formuladist)node scripts/pm/dispatch-gates.mjsover the actual changed paths returns exactly the five families the dispatch prompt named (plus the any-editcheck:nul-bytes); no family surfaced beyond the prompt's list;check:skill-frame-freshnessrun additionally as the implicated sibling of the named frame-sync family.Constraints honored
scripts/pm/check-half-states.mjs: untouched.One seam observed and left open (also in the dev report): the sweep five-condition rule keeps
findingon promoted sweep members (#8574 is a live instance), which re-pollutes the honest ungraded count while a sweep is in flight. Not resolved here — the five conditions are a 2026-08-07 maintainer approval this card does not reopen.Generated by Claude Code