Other

/qa-verdict-gate

Mechanical kill-gate: enforce tri-state QA PASS/FAIL/INCONCLUSIVE — FAIL only for confirmed-observed failures, INCONCLUSIVE when the path couldn't be reached, and a qa-report.md artifact must exist. Triggers: QA verdict, QA done/complete, pre-merge QA, false-FAIL.

$ golems-cli skills install qa-verdict-gate

Updated 1 week ago

FAIL is a confirmed-observed failure, not "I couldn't reach it". An unreached path is INCONCLUSIVE. A QA run only counts when a qa-report.md with all the checklist items exists. Closes R-024 (LOST→BROKEN-OPEN, "v9 horrible" pre-merge QA) + R-035 (self-QA-functional-not-mechanical).

What It Is

A deterministic detector over a QA transcript/verdict: a QA result is a verdict-integrity violation unless the agent's stated verdict matches the OBSERVED evidence in the same turn AND a terminal qa-report.md artifact exists. This is the MECHANICAL gate that /qa-video and /never-fabricate describe in prose. The pinned RED/GREEN transcript fixtures ARE the replayable gate (R-003/R-014 pattern, T6 deterministic smoke-spec shape). Sibling of /false-green-gate — same lib/transcript.mjs, same buildEvidence discipline (evidence comes from tool calls + tool_result OUTPUTS, never assistant prose).

The Rule — tri-state, evidence-anchored

Detector codeFires whenThe honest verdict instead
QA_FAIL_WITHOUT_OBSERVATIONa FAIL with no same-turn observed-failure evidence (no screenshot, no click that reached the surface, no observed error in a tool_result) — the failing path was never shown to be exercisedINCONCLUSIVE
QA_UNREACHED_NOT_INCONCLUSIVEthe transcript shows the path couldn't be reached ("couldn't load", "element not found", "blocked at step 0", net::ERR_*), but the verdict is FAIL or PASSINCONCLUSIVE
QA_NO_REPORT_ARTIFACTa QA "done/complete" claim with no qa-report.md written this turn carrying the checklist items (≥2)write the report first

PASS = the stated verdict matches the observed evidence and the qa-report.md artifact exists. "Same turn" = the events since the last human message — the probe tool calls and their results the agent ran before its verdict. Negated/in-progress statements ("not done yet") are not verdicts. An explicit Verdict: INCONCLUSIVE line is authoritative over loose pass/fail words elsewhere in the prose.

Why FAIL is reserved

A false-FAIL (codex 019ee5ea#1) and a truncated QA with no artifact (019ee493#2/#4) are the two specimens this closes. A FAIL emitted when the regression path was never reached is worse than no QA — it sends a worker chasing a phantom bug. FAIL must come from a confirmed observation; everything the run could not actually exercise is INCONCLUSIVE, surfaced honestly.