Uh oh!
There was an error while loading. Please reload this page.
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
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
|
hotlong
commented
Aug 14, 2026
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 |
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