Lock coverage-floor gate at measured coverage (epic top-off) - #670
Merged
fpigeonjr merged 1 commit intoSep 1, 2026
Merged
Conversation
Statements 88.73%, branches 78.65%, functions 85.90%, lines 88.72% — re-measured after all preceding coverage epic slices (#627-#636) merged. None of the four metrics reach the 90% QASP target yet (branches lags furthest at 78.65%); locking the floor at current measured coverage per #637's shortfall-documentation path rather than blocking on the remaining gap. Refs #637
There was a problem hiding this comment.
Pull request overview
This PR updates the repository’s ratcheting coverage gate by raising the committed thresholds in coverage-floor.json, intending to “lock” the coverage floor at a higher measured level.
Changes:
- Raises the global coverage floor thresholds in
coverage-floor.json(statements/branches/functions/lines).
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
pgill-flex
approved these changes
Sep 1, 2026
13 tasks
fpigeonjr
added a commit
that referenced
this pull request
Sep 1, 2026
master has been red since #670 merged. The failure is the coverage-floor gate, not a test failure — all 1377 specs pass: statements 88.57% (floor 88.73%) branches 78.57% (floor 78.65%) functions 85.74% (floor 85.90%) lines 88.55% (floor 88.72%) Cause is a merge-order collision between #668 and #670. #668 (merged 11:21) added the Playwright component-render harness, including two test-app build-tooling files — dedupe-packages.ts and esbuild/dedupe-angular-plugin.ts. Both run inside the bundler, so no spec can ever execute them, but coverage.all walks the project and they weren't in coverage.exclude, so they landed in the report at 0% (14 statements, 4 branches, 4 functions, 14 lines of pure denominator). #670 (merged 11:24) then locked the floor at coverage measured on a branch cut from 081088f — before #668 — so its denominator never saw those files. Each PR was green on its own; master got the union. Extend coverage.exclude to cover both files, matching the rationale already documented for src/main.ts, app.module.ts, environments/** and playwright.config.ts: keep harness/build scaffolding that has nothing to do with the library under test out of the denominator. Verified against the failing run's coverage artifact that dropping exactly these two files restores statements 88.73 / branches 78.65 / functions 85.90 / lines 88.72 — at or above every floor, so coverage-floor.json is untouched (and per AGENTS.md, lowering the floor to go green isn't an option). Refs #637
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Final top-off slice for the test-coverage epic (#576): re-measures
coverage now that all preceding coverage-epic spec PRs (#627–#636,
plus the later #649–#660 slices) have merged into
master, and locksthe ratcheting
coverage-floor.jsongate at that measured coveragevia
npm run coverage:bump, per #637.None of the four metrics reach the 90% QASP stretch target yet
(branches lags furthest); per #637's shortfall-documentation path,
this locks the floor at what's actually achieved rather than blocking
on the remaining gap. A follow-up issue should be filed for closing
the branches gap if the team wants to keep chasing 90%.
Coverage floors, before → after (measured via
test-app/coverage/coverage-summary.jsonon this branch):This is a pure
coverage-floor.jsonbump commit — no spec or sourcechanges.
coverage-floor.jsonis otherwise off-limits to feature/specPRs per the ratchet policy documented in
scripts/check-coverage.mjs;this PR is that dedicated bump commit the policy calls for.
Motivation and Context
Closes #637
Type of Change (Select One and Apply Label)
maintenancelabelHow to Test
npm ci && npm ci --prefix test-appnpm --prefix test-app test— runs the full spec suite via Vitest with coverage, producingtest-app/coverage/coverage-summary.json.node scripts/check-coverage.mjs test-app/coverage/coverage-summary.json— confirms the coverage floor gate passes against the newly-locked floors.node scripts/check-coverage.mjs --bump test-app/coverage/coverage-summary.json— confirms the floors in this PR already match current measured coverage exactly (reports "Floors already at or above current coverage; nothing to bump").Expected result: coverage gate passes with statements 88.73% / branches 78.65% / functions 85.90% / lines 88.72%, matching the floors committed in
coverage-floor.json.Screenshots (if appropriate)
N/A — config-only change, no UI/behavioral changes.
Checklist
gh-<number>-<slug>)format:checkpasses (npm run format:check)lintpasses (npm run lint)buildpasses (cd test-app && npm run build)cd test-app && npm test)