Skip to content

ci: changed-lines coverage report -- diff-cover over Go+Vitest lcov (goal 0109 phase 2a) - #245

Merged
alicoding merged 2 commits into
mainfrom
diff-coverage-gate
Aug 18, 2026
Merged

ci: changed-lines coverage report -- diff-cover over Go+Vitest lcov (goal 0109 phase 2a)#245
alicoding merged 2 commits into
mainfrom
diff-coverage-gate

Conversation

@alicoding

Copy link
Copy Markdown
Owner

The clean-as-you-code counterpart to #239's gocognit gate: a PR-only diff-coverage job reports how much of the PR's changed lines the unit layers cover — Go coverprofile (reused from test-go via artifact, converted with gcov2lcov) + Vitest's new lcov reporter, fed to diff-cover against the merge base.

Deliberately informational (continue-on-error, outside ci-gate): this repo's layering proves components in e2e rather than unit tests, so an industry-default fail-under would fail honest UI PRs. The floor gets set later from a track record of real PR numbers — the same measure-then-promote shape as the bridge-smoke job. Rejected alternatives and licence notes are in the goal file (go-test-coverage: aggregate-not-line + GPL; jscpd v5: Rust rewrite).

Verified locally end to end; workflow lints clean (actionlint + the yaml check).

🤖 Generated with Claude Code

https://claude.ai/code/session_01FW5GkkAG8du7tNdYLk2zSd

…goal 0109 phase 2a)

Vitest emits lcov alongside text; test-go uploads its coverprofile;
a new PR-only diff-coverage job converts it via gcov2lcov and runs
diff-cover against the PR's merge base over both reports.
INFORMATIONAL (continue-on-error, outside ci-gate): this repo's
layering proves components in e2e, not unit tests, so an
industry-default fail-under would fail honest UI PRs -- the floor
gets set from a track record of real PR numbers, the same
measure-then-promote shape as the bridge smoke job. Verified locally
end to end (gcov2lcov 21k-line lcov; diff-cover runs clean).

Claude-Session: https://claude.ai/code/session_01FW5GkkAG8du7tNdYLk2zSd

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@alicoding
alicoding enabled auto-merge (squash) August 18, 2026 19:26
…resh-cache lint

The fetch-depth:0 change invalidated the lint action's cache and a
fresh staticcheck pass lost t.Fatal's noreturn fact under the CI
build config (CGO_ENABLED=0/Go 1.25), flagging three latent
guard-then-deref sites in test files that every cached run had
passed. Explicit returns make the control flow analyzer-independent.

Claude-Session: https://claude.ai/code/session_01FW5GkkAG8du7tNdYLk2zSd

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@alicoding
alicoding merged commit 4ddb20a into main Aug 18, 2026
27 of 28 checks passed
@alicoding
alicoding deleted the diff-coverage-gate branch August 18, 2026 19:43
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