Skip to content

pr-coverage: bug status, finding resolution, feature-scoped bugs, TC id collisions — reader and writer contracts - #89

Closed
TimothyHan wants to merge 3 commits into
mainfrom
improve/pr-coverage-status-scope
Closed

TimothyHan wants to merge 3 commits into
mainfrom
improve/pr-coverage-status-scope

Conversation

@TimothyHan

Copy link
Copy Markdown
Owner

Four defects from the demo repo

Reported 2026-09-12; worked via /qa-improve Fix mode. The reader (bin/pr-coverage.js 0.2.0, one commit) and the writers (the skills, prompts, KB spec — one commit) change together, because each defect was a contract the two sides never agreed on.

# defect root cause reader fix writer fix
1 author to-do list ignores bug status no defined status field: writers improvised **status:** open, the reader wanted **Status:** and then never used it **Status:** read case-insensitively; closed resolved vocabulary (fixed, verified, wont-fix, duplicate, …); absent = open; resolved bugs listed under "Resolved", never as a to-do /qa-qa 0.3.8 writes **Status:** open; /qa-verify-fix 0.4.3 sets verified / reopened; KB spec §6.10 defines the file
2 findings never checked for resolution only the latest session was read; no identity across sessions; issues listed open issues only, so a closed one was re-created findings keyed by feature + title across every session, a later **Status:** wins, a bug-linked finding follows the bug; issues --state all: a resolved finding closes its issue, a returning one reopens it /qa-exploratory 0.4.7 re-checks earlier sessions and re-lists each finding with **Status:** still open | resolved | not reproduced; explore prompt says so; KB spec §6.9
3 "also seen as" not scoped to one feature bug ids restart per feature; the summary matched by id only a finding links to its own feature's bug only —
4 test IDs not separated per ticket → mixed request-logging heatmap every ticket restarted at TC-001; the heatmap resolved spec titles by bare id ids owned per test-case file; a collision is reported on the comment and counts no evidence; an id another feature also defines needs a spec that cites the feature (the unit column's existing rule) /qa-test-cases 0.6.3 continues the feature's numbering (self-check 9); kb prompt; KB spec §6.5

Also: the Korean finding block (### 발견 N:, **상태:**) now parses — the ko build wrote findings the reader never saw. eval.js scope reads reference section scope from the built index and ignores other skills' files, so its RUN reason names the section (here: KB spec file-schemas, scoped to all).

Verification

  • node test.js: 1887 passed, 0 failed — new checks for each defect (lowercase status → Resolved; later-session status resolves a finding and closes its issue; a returning finding reopens; two features with BUG-001 link separately; TC-01 defined by two tickets is a collision and proves nothing while TC-02 still counts; a shared id needs a citing spec).
  • Rubric gate: scope says RUN for both calibrated skills because KB spec §6 (file-schemas, scoped to all) changed. eval.js ab for test-cases and exploratory is running; the per-criterion tables will be added here when it finishes.

Left open

🤖 Generated with Claude Code

timothyh124 and others added 3 commits September 12, 2026 22:10
…, TC id collisions (0.2.0)

Problem: four defects seen on the demo repo — (1) the author's to-do list ignored
bug status (`**status:**` read case-sensitively, then never consulted); (2) findings
were never checked for resolution (only the latest session read, every finding open
for ever, closed issues re-created); (3) "also seen as" linked a finding to any
feature's bug of the same number; (4) test case ids restarted at TC-001 per ticket,
so one ticket's spec proved the other's rows — the mixed request-logging heatmap.
Root cause: reader/writer contract gaps — no defined bug status, no finding
identity across sessions, bug ids per feature not honoured, TC ids resolved by bare
id repo-wide.
Fix: `**Status:**` read case-insensitively with a closed resolved vocabulary;
findings keyed by feature + title across every session, a later status wins, a
bug-linked finding follows the bug; bugs matched within their feature; TC ids owned
per test-case file, a collision reported and counted as no evidence, an id another
feature also defines needs a spec that cites the feature; `issues --state all`
closes resolved findings' issues and reopens closed ones that come back; the
Korean finding block parses. Tests for each, badge 1887.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…line reads

/qa-qa 0.3.8 writes `**Status:** open` on every bug file; /qa-verify-fix 0.4.3
(ko catches up from 0.4.1) sets `verified` / `reopened`; /qa-exploratory 0.4.7
re-checks earlier sessions' findings and re-lists them with a `**Status:**`;
/qa-test-cases 0.6.3 numbers TC ids per feature, never per ticket (self-check 9).
KB spec §6.5 (id uniqueness), §6.9 (finding identity), new §6.10 (bugs/) in en
and ko; the kb and explore prompts carry the same rules; the pipeline README and
the CI guides say what leaves the to-do list and why. CHANGELOG in both locales.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…tion scope from the built index

Another skill's SKILL.md is never loaded by this runner; a changed reference
counts only when the section (by its qab id) is scoped to the skill or to all.
The reason line now names the section, so a RUN verdict says what the A/B pays for.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants