Problem (one or two sentences)
CI currently runs pnpm test:coverage (a single monolithic task); after slicing, it must run test:coverage:merge to trigger all slices and produce the merged report, and needs a guard to prevent silently uploading an empty or missing report to Codecov.
Context (who is affected and when)
The Codecov upload step in .github/workflows/code-qa.yml:74 expects src/coverage/lcov.info. This path is produced by the merge task added in #117. The upload step itself does not need to change — only the step that generates the file. This is the final step in the coverage-slicing work tracked in #47 and depends on #117.
Desired behavior (conceptual, not technical)
CI runs pnpm turbo run test:coverage:merge --filter=zoo-code instead of pnpm test:coverage. A post-step validates the merged report is present and non-empty before upload. On a commit touching only src/api/, CI logs show cache hits for the four unaffected slices.
Constraints / preferences (optional)
- The Codecov upload path (
src/coverage/lcov.info) must not change.
- Baseline to beat: ~8m24s for the full coverage step on an Ubuntu runner (from CI run
25606102845).
- Record new CI runtime and cache-hit rates in the PR notes as evidence.
Request checklist
Acceptance criteria (optional)
- CI passes end-to-end.
- A commit touching only
src/api/ shows cache hits for test:coverage:core, test:coverage:services, test:coverage:misc, and test:coverage:dist.
lcov --summary src/coverage/lcov.info exits 0 and reports non-zero covered lines.
Proposed approach (optional)
- Replace
run: pnpm test:coverage with run: pnpm turbo run test:coverage:merge --filter=zoo-code in code-qa.yml.
- Add a step:
run: lcov --summary src/coverage/lcov.info (exits non-zero if file is missing or has 0 covered lines).
- Verify the Codecov upload step is unchanged.
Trade-offs / risks (optional)
lcov may not be pre-installed on the GitHub Actions Ubuntu runner; add an install step if needed.
- The first CI run after merging will be a full cache miss; subsequent runs will show partial hits.
Parent issue: #47
Depends on: #117
Problem (one or two sentences)
CI currently runs
pnpm test:coverage(a single monolithic task); after slicing, it must runtest:coverage:mergeto trigger all slices and produce the merged report, and needs a guard to prevent silently uploading an empty or missing report to Codecov.Context (who is affected and when)
The Codecov upload step in
.github/workflows/code-qa.yml:74expectssrc/coverage/lcov.info. This path is produced by the merge task added in #117. The upload step itself does not need to change — only the step that generates the file. This is the final step in the coverage-slicing work tracked in #47 and depends on #117.Desired behavior (conceptual, not technical)
CI runs
pnpm turbo run test:coverage:merge --filter=zoo-codeinstead ofpnpm test:coverage. A post-step validates the merged report is present and non-empty before upload. On a commit touching onlysrc/api/, CI logs show cache hits for the four unaffected slices.Constraints / preferences (optional)
src/coverage/lcov.info) must not change.25606102845).Request checklist
Acceptance criteria (optional)
src/api/shows cache hits fortest:coverage:core,test:coverage:services,test:coverage:misc, andtest:coverage:dist.lcov --summary src/coverage/lcov.infoexits 0 and reports non-zero covered lines.Proposed approach (optional)
run: pnpm test:coveragewithrun: pnpm turbo run test:coverage:merge --filter=zoo-codeincode-qa.yml.run: lcov --summary src/coverage/lcov.info(exits non-zero if file is missing or has 0 covered lines).Trade-offs / risks (optional)
lcovmay not be pre-installed on the GitHub Actions Ubuntu runner; add an install step if needed.Parent issue: #47
Depends on: #117