Skip to content

fix(runner): quality tiers that measured nothing WARN instead of false-green PASS - #62

Merged
QuintinBotes merged 1 commit into
mainfrom
fix/tier-measured-nothing
Jul 10, 2026
Merged

fix(runner): quality tiers that measured nothing WARN instead of false-green PASS#62
QuintinBotes merged 1 commit into
mainfrom
fix/tier-measured-nothing

Conversation

@QuintinBotes

Copy link
Copy Markdown
Owner

Part 2 of the false-green audit follow-up (after #60 core gate + #61 Action fail-closed). Each quality tier reported 0 failures → PASS when it actually ran but measured/found nothing — "did not measure" must not read as "no problems". All WARN-direction (no currently-passing merge is newly blocked).

Tier "Measured nothing" signal Before After
perf / Lighthouse routes audited but every metric unreadable (0 CTRF tests) PASS WARN
load / k6 run issued zero requests (http_reqs === 0) PASS WARN
component runner collected 0 tests (nothing matched) PASS WARN
api / pact no interactions verified (no contracts found) PASS WARN
i18n no locales compared (default missing / nothing to compare) PASS WARN
CUJ (cli) gate enabled but 0 CUJ defs loaded (bad cuj.dir) PASS WARN

Notable: k6 with zero requests spuriously passes every threshold (absent metrics normalize to 0), so its guard runs first. Signature tweaks are backward-compatible — evaluatePerfBudgetGate's auditedRouteCount is defaulted, and i18n's measurement arg is optional — so existing callers/tests are unchanged.

Tests (TDD)

7 new/adjusted tests (component + i18n empty-report cases updated to WARN; new WARN test per tier) plus positive controls that real measurements still PASS. Full barrier: 1334 tests, typecheck, build, lint. Action bundle unchanged.

This closes the systemic false-green audit set from #60 (16 findings → all addressed across #60/#61/this PR).

🤖 Generated with Claude Code

…e-green PASS

Part 2 of the false-green audit follow-up (#60, #61). Each quality tier reported
"0 failures → PASS" when it actually ran but measured/found nothing — "did not
measure" must not read as "no problems". All WARN-direction:

- perf/lighthouse: routes audited but every metric unreadable (runtime-error
  report → 0 CTRF tests) → WARN. evaluatePerfBudgetGate gains an auditedRouteCount
  arg (defaulted, so existing calls are unchanged); the caller passes results.length.
- load/k6: the run issued zero requests (http_reqs === 0) → WARN. Missing latency/
  error metrics normalize to 0 and spuriously pass every threshold, so the guard
  runs first. evaluateLoadGate now takes the normalized summary.
- component: runner collected 0 tests (grep matched nothing / none discovered) → WARN.
- api/pact: no interactions verified at all (no contracts found) → WARN.
- i18n: gate gains an optional measurement arg — comparedLocaleCount === 0
  (default locale missing / nothing to compare) → WARN. Backward-compatible.
- cli/cuj-gate: gate enabled but 0 CUJ definitions loaded (bad cuj.dir) → WARN.

TDD: 7 new/adjusted tests (component + i18n empty-report cases updated; new WARN
tests for each tier) plus positive controls that real measurements still PASS.
Full barrier green: 1334 tests, typecheck, build, lint. Action bundle unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@QuintinBotes
QuintinBotes merged commit 8589a60 into main Jul 10, 2026
6 checks passed
@QuintinBotes
QuintinBotes deleted the fix/tier-measured-nothing branch July 10, 2026 23:05
QuintinBotes added a commit that referenced this pull request Jul 10, 2026
Correctness patch bundling the false-green gate audit (#60, #61, #62): 16
empty/degenerate gate paths that returned a green PASS now signal honestly —
WARN-direction throughout, except the GitHub Action which fails closed to BLOCK.

Bumps all workspace package versions 0.4.0 → 0.4.1 and cuts the CHANGELOG section.

Co-authored-by: Claude Opus 4.8 (1M context) <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.

1 participant