Skip to content

docs(qa,pm): qa-run joins the sweep exclusion list; run records owe defect extraction at close-out - #9366

Merged
os-zhuang merged 1 commit into
mainfrom
claude/issue-9363-qa-run-carrier
Aug 17, 2026
Merged

docs(qa,pm): qa-run joins the sweep exclusion list; run records owe defect extraction at close-out#9366
os-zhuang merged 1 commit into
mainfrom
claude/issue-9363-qa-run-carrier

Conversation

@os-zhuang

@os-zhuangos-zhuang commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

Fixes#9363

Implements the maintainer's 2026-08-17 ruling, quoted verbatim and untranslated: 「把 qa-run 加进 sweep 排除清单 —— run 记录和 pm:seat 贴同类:协议载体,不是工作」— plus the closing half the card mandates: once run records are excluded from the sweep, nobody fishes them for dispatchable work, so the extraction obligation becomes a clause of the qa-run protocol itself (precedent pair: run record #9351 → extracted card #9362).

Surface 1 — .claude/skills/pm-dispatch/SKILL.md (backlog sweep exclusion)

qa-run records added to the triage sweep's exclusion list, parallel with the pm:seat posts, with the one-phrase rationale the card prescribes (协议载体非工作). Net line change +0 — the edit lands inside the existing exclusion sentence, no new lines, no re-wrap; the file stays at exactly its 682-line ceiling (check:pm-skill-ratchet green below).

Surface 2 — docs/qa/platform-checklist/RUNNER.md (the qa-run producer's protocol)

New clause "Extraction obligation — the run record is a protocol carrier, not work", carrying the card's four points:

  • the run issue carries run evidence only — not a dispatchable unit, never carries work labels (bug, priority, …); work labels ride the extracted cards;
  • product defects found during the run: at close-out the runner extracts each into its own standalone issue (self-contained title, reproduction and mechanism itemized, pointer back to the run record for the full evidence chain); defect cards do not carry qa-run and enter triage first-touch normally;
  • checklist-accuracy findings and fixture gaps close out through the wave's anchor card — not extracted;
  • environment blockers: recorded in the run record is enough.

The ruling is quoted in the clause verbatim, untranslated. RUNNER.md is not on the line ratchet; the clause is written tight (net +23 lines in that file).

Consistency sweep — the old "plus bug" convention removed everywhere

The prior convention (run issue gains bug/regression labels so it triages straight from the run) contradicts the new clause and was stated in four places. All are reconciled in this PR — same surface, same defect class, each named here:

  • docs/qa/platform-checklist/RUNNER.md — accuracy rule 2 ("which is labeled bug") and the Run-records header ("plus bug when any clause failed") → run issue is qa-run-only;
  • .claude/skills/checklist-test/SKILL.md §4 — the label bullet rewritten (qa-run only, work labels ride the extracted cards) and a close-out extraction bullet added; §3's "defects go to FOLLOW-UPS.md (or an issue)" now routes through the §4 extraction, keeping the expected-fail-probe half and the "never tick green on a real defect" rule intact;
  • docs/qa/platform-checklist/runs/README.md — the bug-label sentence → extraction at close-out;
  • docs/qa/platform-checklist/README.md (release-sweep section) — same.

Tier derivation (node scripts/pm/dispatch-gates.mjs --tier on the changed paths, output verbatim)

Model tier — MANDATORY: claude-fable-5 (derived from the file surface, not recalled).
- .claude/skills/pm-dispatch/SKILL.md ⇢ '.claude/skills/pm-dispatch/**' — clause ① of the model-tiering ruling: a card editing the PM dispatch skill is fable-mandatory, references included — the skill is the lane's own operating protocol and a wrong edit propagates to every later dispatch
The only exit is the measured quota exemption (fable unavailable ⇒ opus, never lower), recorded with its reason in the claim comment's `Container & model` line.
Clause ② is NOT reachable from paths: a card that changes contract accept/reject behaviour or widens the public surface is fable-mandatory too, judged from the card CONTENT. This line is a FLOOR, never a clearance.

Verification — full gate union re-run at the final commit, git rev-parse --short HEAD = 9c797322c

Path-derived gates (dispatch-gates.mjs named 5) plus implicated families, all green at 9c797322c:

  • check:pm-skill-ratchet (+ --self-test, 11 cases) — SKILL.md 682/682, headroom 0
  • check:pm-skill-id-lint — 9 files clean
  • check:skill-frame-sync — 4 copies isomorphic, 3 axes
  • check:doc-authoring (+ self-test) — 376 files clean
  • check:doc-formula-expressions (+ self-test, 24 cases) — 22 formula examples / 395 files clean (built the @objectstack/lint dependency closure first in the fresh worktree)
  • check:nul-bytes — 6087 text files clean
  • check:platform-checklist (+ checklist-select --self-test, 17 cases) — 15 areas, 190 items OK

No changeset: docs/.claude-only, releases nothing (skip-changeset applied).

Per the card: draft PR, never ready/queued/auto-merged — parked for the maintainer.


Generated by Claude Code

…efect extraction at close-out (#9363)
Per the maintainer's 2026-08-17 ruling, qa-run records are protocol
carriers like the pm:seat post, not work: the triage sweep excludes
them, and the extraction obligation (each product defect extracted as
its own standalone card at report close-out; checklist-accuracy and
fixture gaps to the wave anchor; environment blockers recorded only)
becomes part of the qa-run protocol itself in RUNNER.md, with the
checklist-test skill and the two checklist READMEs aligned — run issues
carry qa-run only, work labels ride the extracted cards.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017TNzEetykdh7ceZGwuAPLq
@github-actionsgithub-actionsBot added size/s documentation Improvements or additions to documentation labels Aug 17, 2026
@os-zhuangos-zhuang added skip-changeset PR has no user-facing published change; bypasses the changeset gate and removed documentation Improvements or additions to documentation labels Aug 17, 2026 — with Claude
@os-zhuang
os-zhuang marked this pull request as ready for review August 17, 2026 21:54
@os-zhuang
os-zhuang added this pull request to the merge queueAug 17, 2026
Merged via the queue into main with commit 3e5034aAug 17, 2026
29 checks passed
@os-zhuang
os-zhuang deleted the claude/issue-9363-qa-run-carrier branch August 17, 2026 22:11
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/sskip-changesetPR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

技能卡:qa-run 入 sweep 排除清单 + run 记录抽取义务(协议载体定位)

2 participants

@os-zhuang@claude