Skip to content

Add CI, Kotlin/Swift dashboard, and repo-consistency cleanups - #4

Merged
rollinsio merged 1 commit into
mainfrom
chore/repo-hardening
Jul 2, 2026
Merged

Add CI, Kotlin/Swift dashboard, and repo-consistency cleanups#4
rollinsio merged 1 commit into
mainfrom
chore/repo-hardening

Conversation

@rollinsio

Copy link
Copy Markdown
Owner

What

An audit-driven cleanup pass — the highest-value gaps found in a full repo review:

  • CI (.github/workflows/ci.yml): the repo's thesis is regression-catching test quality, but nothing ran its own tests. The workflow runs all three pytest suites (benchmark tooling, test-quality skill, results-dashboard skill — 146 tests) plus scripts/sabotage_check.py (9/9 curated mutations) on every push/PR.
  • Kotlin/Swift dashboard (docs/kotlin-swift-results.html + examples/kotlin-swift-results.png): the most-promoted result (all 18 arms beat baseline) was the only one without an interactive dashboard. Generated from the committed scorecard with the bundled results-dashboard skill; linked from the README alongside the Python and JS/Go dashboards.
  • Scorer footgun removed: score_cross_language.py still listed the six Kotlin/Swift repos unscoped (tests_dir="."), but the committed matrix was scored by the manifest-driven, module-scoped score_kotlin_swift_matrix.py. Rescoring them via the cross-language script would merge contradictory baselines into that scorecard. Dropped, with a comment pointing at the real scorer.
  • CHANGELOG accuracy: the C.1 fix claimed "the instruments now agree" — they don't: score.py catches mock.patch(...) via a mock.patch alternative while aggregate_results.py matches the literal unittest.mock (which doesn't fire on from unittest import mock). Reworded to state the remaining divergence.
  • reports/ framing: the coverage-driven control's index showed a mostly-"Worse" verdict matrix with no hint it is the control — a reader landing there saw the tool losing 8 of 9 with nothing tying it to the 9/9 quality result. Added a framing note up top.
  • Hygiene: moved the orphaned baseline_summary.md into reports/ and linked it; clarified README's 185 → 59 A.2 claim (coverage-arm vs quality-arm totals, not vs baseline); fixed SKILL.md's two stale python|js|go-only mentions (the skill supports Kotlin + Swift); marked gen_prompts.py / verify_run.sh as historical coverage-control tooling.

Verification

  • pytest tests/ .claude/skills/test-quality/tests/ .claude/skills/results-dashboard/tests/ → 146 passed, 4 xfailed (the exact CI invocation)
  • python scripts/sabotage_check.py → 9/9 mutations caught
  • Dashboard rendered and screenshotted from a real browser (chart + 18-arm matrix verified visually)

🤖 Generated with Claude Code

https://claude.ai/code/session_011BDzS3SyE6Sh3GE4nnSoWN

- Add a GitHub Actions workflow running all three pytest suites
  (benchmark tooling + both bundled skills) plus the sabotage check.
- Generate the missing Kotlin/Swift interactive dashboard
  (docs/kotlin-swift-results.html) from the committed scorecard, with a
  static preview in examples/ and README links alongside the other two.
- Drop the Kotlin/Swift repos from score_cross_language.py: the
  committed matrix was scored by the manifest-driven, module-scoped
  score_kotlin_swift_matrix.py, and rescoring them here (whole-repo,
  unscoped) would merge contradictory baselines into the cross-language
  scorecard.
- Correct the CHANGELOG claim that the C.1 instruments "now agree" —
  score.py and aggregate_results.py still match different textual forms
  of the stdlib mock.patch idiom.
- Frame reports/ as the coverage-driven control up front, so its
  mostly-"Worse" verdict matrix reads as the motivation for the quality
  experiment rather than a contradiction of it.
- Move the orphaned baseline_summary.md into reports/ and link it;
  clarify README's 185→59 A.2 claim (coverage-arm vs quality-arm, not
  vs baseline); fix SKILL.md's two stale python|js|go-only mentions;
  mark gen_prompts.py and verify_run.sh as historical coverage-control
  tooling.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011BDzS3SyE6Sh3GE4nnSoWN
@rollinsio
rollinsio merged commit 3f89c3e into main Jul 2, 2026
1 check passed
@rollinsio
rollinsio deleted the chore/repo-hardening branch July 2, 2026 03:06
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