Skip to content

fix(CI-CD): don't treat a shard's zero-mutant files as a failure - #163

Merged
baxyz merged 1 commit into
mainfrom
fix-mutation-shard-zero-mutant-files
Sep 8, 2026
Merged

fix(CI-CD): don't treat a shard's zero-mutant files as a failure#163
baxyz merged 1 commit into
mainfrom
fix-mutation-shard-zero-mutant-files

Conversation

@baxyz

@baxyz baxyz commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Summary

  • The first real sharded run (2026-09-08T10:49Z, after feat(CI-CD): shard mutation-dashboard.yml so its runtime stops scaling with the helper count #162) failed at the merge step: 20 files across all 4 shards were reported "missing," when in fact Stryker simply omits any file with zero mutable code (pure type/interface declarations) from its files map entirely.
  • Verified against main's own pre-sharding baseline: it already excludes the exact same 20 files (helpers/type/*.ts, and a handful of types.ts/_types.ts files) — 296 of 316 total mutable files, not a sharding-specific issue.
  • merge-shards.ts no longer treats an absent file as an error; it's counted and logged as a zero-mutant skip instead. The shard-artifact-count check (catching a shard that fails before it can even upload) is untouched — that's the actual failure signal, since Stryker only ever writes its report in one complete shot at the end of a run.
  • Re-verified locally with the same fixture-based tests as feat(CI-CD): shard mutation-dashboard.yml so its runtime stops scaling with the helper count #162, plus a new case mixing a zero-mutant file into a shard's manifest.

Test plan

  • pnpm run typecheck / pnpm run lint clean
  • Local fixture tests: zero-mutant file skipped without error; missing-shard-artifact still hard-fails
  • Next push-to-main run completes end-to-end (all shards + aggregate succeed, baseline commits)

🤖 Generated with Claude Code

The very first sharded run failed: merge-shards.ts required every file in a
shard's manifest to have an entry in that shard's report, but Stryker omits a
file from `files` entirely when it has no mutable code — confirmed against
main's pre-sharding baseline, which already excluded the same 20 files
(pure type/interface declarations under helpers/type/, plus a handful of
types.ts/_types.ts files elsewhere), 296 of the 316 mutable files total.

A shard whose job genuinely fails never produces mutation.json at all —
Stryker writes the whole report in one shot at the end, so there's no partial
version to misread — and that failure mode is what the shard-artifact-count
check already catches. This was verified against the actual failed run's
logs (2026-09-08T10:49Z) before writing the fix, and re-verified locally
against the same fixtures used for the original merge script tests.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

✅ PR Validation Passed

All checks passed!


📋 Pipeline Status

Job Status
🔢 Version passing
🏗️ Build passing
🧪 Tests passing
📝 Lint passing
📘 TypeCheck passing
🔐 Security Audit passing
🧾 Conventional Commits passing
🔗 Coherency passing

📊 Code Coverage

Overall Coverage: 100.0% — Target reached! 🎯

Metric Progress Coverage
Lines ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 100%
Branches ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 100%
Functions ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 100%
Statements ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 100%

🧬 Mutation Testing

⏭️ Mutation Testing: skipped


🌐 Runtime Compatibility

Runtime Compatibility: 3/3 — All runtimes passed!

Runtime Status
🟩 Node.js 26 (LTS) v26.8.1
🦕 Deno 2.8.3
🍞 Bun 1.4.2

🔄 Runtime compatibility is informational only and does not block the PR


⏱️ Benchmarks

⏭️ Benchmarks: skipped


ℹ️ About this report
  • 🎯 Coverage Target: 100% for all metrics
  • 🧬 Mutation Testing: powered by Stryker (non-blocking)
  • ⏱️ Benchmarks: powered by Vitest Bench (non-blocking)
  • 🔄 This comment updates automatically with each push
  • 📈 Coverage is measured using Vitest + v8

🤖 Generated by @helpers4 CI • 2026-09-08

@baxyz
baxyz merged commit 1c4885d into main Sep 8, 2026
16 checks passed
@baxyz
baxyz deleted the fix-mutation-shard-zero-mutant-files branch September 8, 2026 11:00
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