Skip to content

Lock coverage-floor gate at measured coverage (epic top-off) - #670

Merged
fpigeonjr merged 1 commit into
masterfrom
gh-637-lock-coverage-floor-gate-at-90-qasp-target-epic-to
Sep 1, 2026
Merged

Lock coverage-floor gate at measured coverage (epic top-off)#670
fpigeonjr merged 1 commit into
masterfrom
gh-637-lock-coverage-floor-gate-at-90-qasp-target-epic-to

Conversation

@fpigeonjr

@fpigeonjr fpigeonjr commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

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 locks
the ratcheting coverage-floor.json gate at that measured coverage
via 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.json on this branch):

Metric Before After
statements 53.56% 88.73%
branches 39.77% 78.65%
functions 50.31% 85.90%
lines 52.84% 88.72%

This is a pure coverage-floor.json bump commit — no spec or source
changes. coverage-floor.json is otherwise off-limits to feature/spec
PRs 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)

  • Documentation / configuration update → Apply maintenance label

How to Test

  1. npm ci && npm ci --prefix test-app
  2. npm --prefix test-app test — runs the full spec suite via Vitest with coverage, producing test-app/coverage/coverage-summary.json.
  3. node scripts/check-coverage.mjs test-app/coverage/coverage-summary.json — confirms the coverage floor gate passes against the newly-locked floors.
  4. 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

  • Branch name follows convention (e.g. gh-<number>-<slug>)
  • PR title starts with a verb in the imperative mood
  • I have self-reviewed my own code
  • format:check passes (npm run format:check)
  • lint passes (npm run lint)
  • build passes (cd test-app && npm run build)
  • Tests pass and coverage is reported (cd test-app && npm test)
  • If this change requires a documentation update, I have updated it accordingly
  • If there are dependent changes, they have been merged and published in downstream modules

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
@fpigeonjr fpigeonjr added the maintenance Repo maintenance / tooling label Sep 1, 2026
@fpigeonjr fpigeonjr self-assigned this Sep 1, 2026
@fpigeonjr
fpigeonjr requested a lite review from Copilot September 1, 2026 15:19
@fpigeonjr
fpigeonjr marked this pull request as ready for review September 1, 2026 15:20
@fpigeonjr
fpigeonjr requested a review from a team as a code owner September 1, 2026 15:20

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread coverage-floor.json
@fpigeonjr
fpigeonjr merged commit de7bf49 into master Sep 1, 2026
8 checks passed
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

maintenance Repo maintenance / tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Lock coverage-floor gate at 90% QASP target (epic top-off)

3 participants