Skip to content

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
hotlong merged 2 commits into
mainfrom
claude/issue-8449-findings-pipeline
Aug 14, 2026
Merged

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
hotlong merged 2 commits into
mainfrom
claude/issue-8449-findings-pipeline

Conversation

@hotlong

@hotlong hotlong commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

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):

  1. State semantics (amendment 1): finding now means exactly "awaiting first grade" — a hold verdict at any grading round swaps finding to pm:on-hold in 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). The finding and pm:on-hold State-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).
  2. First-touch grading every round: budget 3–5 cards, prioritized over re-verifying old holds; the three-way verdict (promote / close-not-planned / hold-swap) and "grading happens at the round, not at filing" stay.
  3. Auto-concentrated mode: honest finding count 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.
  4. Lane-evidence protocol codified: lane seats may attach evidence / premise re-checks to findings in their lane — never grades, never label changes; the skills-lane self-grading carve-out is stated in the findings-round text; the standby-duties line now carries the same no-grade boundary.
  5. Atomic ruling-recording (amendment 2): 落卡/升级流程 gains step ③ — recording any ruling (maintainer ruling or delegated adjudication) is one atomic action with four parts: freshness gate / state transition in the same write / 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 and scripts/pm/check-half-states.mjs is untouched (read before deciding: none of its H1–H7 implements either flag today, so describe-here / wire-later is consistent).
  6. Round-report metric line: "finding median age" becomes finding count + median age, with the honest-count parenthetical (hold cards have left the label).

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)

Region Before After Δ
State model rows (pm:on-hold, finding) 2 2 0 (widened in place)
分类动作 paragraph (finding wording, tighter wrap) 7 6 −1
发现分诊轮 paragraph (full rewrite; five-condition detail moved to runbook) 6 6 0
发版板 freshness anchor 2 2 0
Round-report health metrics 2 2 0
Standby findings-duty line 1 1 0
落卡/升级流程 (①② rewrapped, analysis template moved to runbook, new atomic step ③) 6 7 +1
Total 686 686 0

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:

  1. The bulk of the migration was already executed by another actor. 61 cards carry pm:on-hold today, and a tight cluster of formerly-finding cards shows updated_at 2026-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.
  2. 9 open finding cards remain. By latest triage comment:

Migration to execute after this merges: #8589, #8553, #8534 — one label write each, findingpm:on-hold; hold comments are already on-card. Post-migration honest finding count: 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/formula dist)
  • Gate re-derivation: node scripts/pm/dispatch-gates.mjs over the actual changed paths returns exactly the five families the dispatch prompt named (plus the any-edit check:nul-bytes); no family surfaced beyond the prompt's list; check:skill-frame-freshness run additionally as the implicated sibling of the named frame-sync family.

Constraints honored

  • Model tiering section, the queue/dispatch sections landed by the strategy PR, and scripts/pm/check-half-states.mjs: untouched.
  • Maintainer quotes recorded with date + verbatim original, untranslated, in the runbook (SKILL.md cites by date and points there — the same pattern the 选择优先级 section already uses).
  • ADR-class merge path (skills root): left as draft for the maintainer's hand-merge — not marked ready, no auto-merge, no queue.

One seam observed and left open (also in the dev report): the sweep five-condition rule keeps finding on 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

…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
@vercel

vercel Bot commented Aug 14, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
objectstack Ignored Ignored Aug 14, 2026 1:04am

Request Review

@github-actions github-actions Bot added size/m documentation Improvements or additions to documentation labels Aug 14, 2026

@hotlong hotlong left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

同意合并

@hotlong
hotlong marked this pull request as ready for review August 14, 2026 04:14
@hotlong
hotlong added this pull request to the merge queue Aug 14, 2026

hotlong commented Aug 14, 2026

Copy link
Copy Markdown
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 session_018WuTtyckQa1VcXwgd52JpN; on MERGED, the card's close-out chain runs (three-card migration + serialized dispatches).


Generated by Claude Code

Merged via the queue into main with commit 82ea3f5 Aug 14, 2026
23 checks passed
@hotlong
hotlong deleted the claude/issue-8449-findings-pipeline branch August 14, 2026 04:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/m skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

2 participants