feat(qa): a SEQUANT_AC marker in the QA skill — one machine-anchored line per criterion, read first by the #1525 producer, prose parse as fallback; retires the 80% parse (PROJECT-DISCUSSION §10)

Aperta
#1,622 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
25/100
Tipo di issue
Funzionalità
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
typescript

Direzione di ricerca

Read the QA skill at .claude/skills/qa/SKILL.md, its template mirror, and src/lib/workflow/ac-status.ts with src/lib/workflow/ac-status.test.ts; the work is blocked by #1525 and the plugin freeze lift. Check the existing marker patterns and the fixture tests before changing the skill and producer. Done means the skill emits one marker per criterion, marker statuses take precedence with prose parsing as fallback, the fixture tests remain unchanged and pass, and a testbed run confirms the markers.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

enhancement graph-2026-10-review-surface

Epic: graph-2026-10-review-surface Tier: judgment Execution: sequant_run Blocked by: #1525 (the plugin freeze lifted 2026-11-06)

  • Blocked by: #1525

PROJECT-DISCUSSION §10's first post-freeze item (docs/internal/graph-2026-10-review-surface/PROJECT-DISCUSSION.md); the class #1525's spec recorded as deliberately local ("class tracked in #N").

Problem

#1525's producer parses the QA comment's prose for per-AC status. #1524 measured that parse at 80% of ACs across the 12-fixture corpus (3 of 75 labels wrong, pinned as KNOWN_MISSES in src/lib/workflow/ac-status.test.ts), below RD-B's 90% bar, so RS-02 shipped with unknown as the common case and §10 named this marker as its replacement. The QA skill already writes three machine-anchored markers (SEQUANT_MUTATION, SEQUANT_QA_GAPS, SEQUANT_PHASE); per-AC status has none, so the only producer scrapes an output format the skill does not promise. Prior fixes on that scrape: the parseQaVerdict first-match fix (v2.18.0), parseQaSummary (#964, #1194), qa-gaps-marker.ts. Three fixes on one class is the stop rule; the marker ends the class.

Decisions

ID Decision Rejected alternative
M-1 One marker line per criterion, HTML-comment anchored like SEQUANT_MUTATION: `<!-- SEQUANT_AC: {"ac":"AC-N","status":"met not_met
M-2 recordAcStatuses reads markers first; when the output carries at least one marker the prose parse is not consulted; otherwise the prose parse runs unchanged (older skill versions, other drivers) removing the prose parse now (breaks every pinned skill)
M-3 The status enum is #1525's five; no sixth a partial status

Acceptance Criteria

  • AC-1: The QA skill emits the marker, mirrors in sync. Evidence: grep -c 'SEQUANT_AC:' .claude/skills/qa/SKILL.md → ≥ 1 and npm run lint:skill-sync → exit 0
  • AC-2: The producer prefers markers. Evidence: npx vitest run src/lib/workflow/ac-status.test.ts -t "marker" → ≥ 2 passed, 0 failed (an output whose markers and prose rows disagree yields the marker statuses; an output with no markers yields the prose parse)
  • AC-2 is classified as a gate test by isGateTestEvidence; the PR body carries its SEQUANT_MUTATION record (remove the marker branch from the producer → the disagreeing case fails; restore).
  • AC-3: The 12-fixture test passes unchanged. Evidence: npx vitest run src/lib/workflow/ac-status.test.ts -t "fixture" → ≥ 13 passed, 0 failed
  • AC-4: One testbed QA run after the skill change yields a marker per declared AC and no unknown for a declared AC. Evidence: that run's acs[] from the run log, pasted in the PR body (human check)

May touch

.claude/skills/qa/SKILL.md and its templates/skills/qa/SKILL.md mirror, plugin/ copies via sync:skills, src/lib/workflow/ac-status.ts, src/lib/workflow/ac-status.test.ts, CHANGELOG.

Non-Goals

  • Changing the prose parser's thresholds or KNOWN_MISSES (#1524, #1525).
  • Rendering (#1526).
Lingua principale
TypeScript
Stelle
1
Fork
1
Merge medio
11h 3m
PR unite (30g)
84

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di sequant-io/sequant

Tutte le issue di sequant-io/sequant

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.