qa-verdict-gate
Skill0 starsChanged 16 days agoApache-2.0View on GitHub
Kill-gate: QA PASS/FAIL/INCONCLUSIVE + qa-report.md. Triggers: QA verdict, QA done/complete, pre-merge QA, false-FAIL.
In this repository64 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- verify-lead-waitSkill
- verify-merge-receiptsSkill
- branded-docSkill
- explanatory-docSkill
- 1passwordSkill
- agada-benchSkill
- agent-browserSkill
- agent-routingSkill
- architectural-conformance-auditSkill
- audio-dashboardSkill
- brain-store-fallbackSkill
- claude-desktop-researchSkill
- cmux-agentsSkill
- cmuxSkill
- coachSkill
- coderabbitSkill
- codex-workflowsSkill
- collab-monitorSkill
- content-demo-creationSkill
- convention-auditSkill
- cursor-workflowsSkill
- cyberSkill
- deploy-verifySkill
- drive-filingSkill
- eas-prebuild-checkSkill
- ecosystem-healthSkill
- eli5Skill
- false-green-gateSkill
- figma-loopSkill
- fleet-wrap-gateSkill
- fleet-wrapSkill
- frustration-captureSkill
- gemini-researchSkill
- git-guardianSkill
- github-researchSkill
- golem-installSkill
- grill-meSkill
- heredoc-guardSkill
- html-dashboardSkill
- human-confirm-gateSkill
- i-have-adhdSkill
- install-runbook-linterSkill
- large-planSkill
- m1-window-gateSkill
- model-pin-gateSkill
- never-fabricateSkill
- orcSkill
- plan-councilSkill
- pr-loopSkill
- qa-videoSkill
- repogolemSkill
- research-lifecycleSkill
- reviewer-order-gateSkill
- session-handoffSkill
- skill-creatorSkill
- stitch-designSkill
- t3-visualsSkill
- tmp-blockSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 1 is distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 55
Only the FAIL observation check accepts these receipts.
- Very specific: line 67
Before a QA seat emits a verdict or a "QA complete" message, run the gate on the turn — /qa-verdict-gate (bun …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Skill: QA Verdict-Integrity Kill-Gate (gen-18 Track 2 #6)
Fleet law: canon #4 owns user-visible completion; canon #3 owns evidence. This skill enforces QA verdict integrity, report artifacts, and rendered-state evidence.
Scope
FAIL is only for confirmed-observed failures; INCONCLUSIVE is for when the path couldn't be reached. A qa-report.md artifact must exist.
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 code | Fires when | The honest verdict instead |
QA_FAIL_WITHOUT_OBSERVATION | a FAIL with no same-turn observed-failure evidence (screenshot, click that reached the surface, observed error, or matching qa-video inspected-ledger rows in tool_result outputs) | INCONCLUSIVE |
QA_UNREACHED_NOT_INCONCLUSIVE | the 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 PASS | INCONCLUSIVE |
QA_NO_REPORT_ARTIFACT | a QA "done/complete" claim with no qa-report.md written this turn carrying the checklist items (≥2) | write the report first |
QA_DECISION_CLAIM_NO_VISUAL_EVIDENCE | a terminal QA/completion answer that feeds an Etan merge/ship/QA decision has no screenshot/dashboard/rendered-state reference embedded in that same answer | embed the visual evidence reference where Etan answers |
QA_USER_VISIBLE_WITHOUT_RENDERED_EVIDENCE | a PASS/ready/done verdict about a user-facing surface is backed only by merge/plumbing state, with no same-turn screenshot/click/rendered page/HTTP 2xx probe | probe the rendered user-visible surface 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.
Recorded-frame observation
For qa-video, same-turn tool outputs may supply headerless inspected-ledger rows:
pts<TAB>absolute frame path<TAB>reader: why<TAB>finding-id[<TAB>sha256].
Legacy four-column rows are accepted. Five-column rows require a 64-hex-digit
SHA-256 field; other row shapes are rejected. Read the run's
inspected.tsv (or logs/inspected*.tsv) and include its rows in the tool output.
PTS must be finite and nonnegative; the canonical absolute .png/.jpg/.jpeg
path must stay under the run directory of a same-turn Write/Edit/MultiEdit to
/…/qa-video/<run>/qa-report.md (namespaced tool names are supported).
There must be exactly one such run root. Every named FAIL in assistant text or
the report needs a matching row: F1 FAIL or ### F1: title — **FAIL**, with
case-sensitive alphanumeric/hyphen IDs containing a digit (e.g. S1-F6r).
Rows for another finding/run, earlier-turn rows, assistant prose, and CONFIRMED
records or verification summaries alone do not count. This checks inspection
receipts, not image contents, before/after sufficiency, or verifier correctness.
Only the FAIL observation check accepts these receipts; the other four checks
remain unchanged, including the requirement to write the report this turn.
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.
How /pr-loop + /qa-video Consume It
Before a QA seat emits a verdict or a "QA complete" message, run the gate on the turn — /qa-verdict-gate
(bun skills/golem-powers/qa-verdict-gate/scripts/qa-verdict-gate-cli.mjs <transcript|->, exit 3 = FLAG).
A FLAG means the verdict is not yet earned: reach the surface and observe, or downgrade FAIL→INCONCLUSIVE,
write the missing qa-report.md, embed the visual reference in decision-feeding answers, or probe the
rendered user-visible surface. Compose with /false-green-gate (live-outcome probe for completion claims)
and /never-fabricate (read the output before reporting).
Run It
bun test skills/golem-powers/qa-verdict-gate/evals/qa-verdict-gate.test.mjs # replay (CI-safe)
python3 skills/golem-powers/qa-verdict-gate/evals/run_suite.py # hook schema + fail-open
bun skills/golem-powers/qa-verdict-gate/scripts/qa-verdict-gate-cli.mjs <transcript.jsonl|->Programmatic: import { detectQaVerdict } from "./src/qa-verdict-gate.mjs" → { verdict, claim, qaVerdict, violations }.
Stated Limits (honesty rule)
- Evidence is marker-anchored over the same-turn blob; a probe described but not actually run can read as present. The fixtures pin the known specimens; new evasion shapes are added as RED fixtures (R-003 model).
- "Same turn" is bounded by the last human message; a probe run two turns earlier does not count (by design).
- Observed-error / screenshot tokens in a
tool_resultonly count when a Bash command or a browser tool actually drove a surface this turn — a passiveReadof an old log cannot supply them (same-turn-scope). The recorded-frame route instead accepts a same-turn ledger Read under the contract above. - Decision-feeding evidence is checked on the terminal answer text: a screenshot mentioned only earlier in the turn does not help Etan answer the decision prompt.
Provenance
RED specimens: codex/019ee5ea#1 (false-FAIL, path unreachable), codex/019ee493#2/#4 (truncated QA,
no artifact), a FAIL with zero observed-failure evidence. Evasion REDs: prose-bypass (narrative "observed
error"), passive-read-supplies-error (same-turn-scope), false-PASS over an unreachable surface,
report-stub (artifact with no checklist), prose-unreached-still-FAIL (negation), namespaced-MCP-Write
(tool-name normalization), navigate-only-clears-FAIL (cursor-bugbot L195 — bare browser_navigate does
not exercise the failing flow), decision-feeding bare verdict with no visual evidence reference,
user-facing dashboard ready claim backed only by merge state. GREEN references: FAIL with an observed-error
screenshot + report, INCONCLUSIVE correctly used when unreachable, PASS with a full report, in-progress
(N/A), verdict-pending (cursor-bugbot L260 — "step 1 done, verdict still pending" is not a settled verdict),
decision-feeding claim with the screenshot/dashboard reference embedded in the same terminal answer.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

