diff --git a/CLAUDE.md b/CLAUDE.md index ae0ea82..ce5cf09 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -130,8 +130,8 @@ install for code that can never run — and on API 37 the full APK does not fit - The `model` package is excluded from `ReturnCount` and `CyclomaticComplexMethod` only. It is the decision layer, where one branch is one documented user-visible outcome and the metric counts answers rather than complexity. Every other rule still applies there. -- **Coverage is reported, not gated** — **81.4% of lines (1847/2268), 60.2% of branches**, - measured 2026-08-25 with `./gradlew :app:jacocoTestReport`, against 417 JVM tests in 60 classes. +- **Coverage is reported, not gated** — **84.9% of lines (1971/2321), 63.8% of branches**, + measured 2026-08-26 with `./gradlew :app:jacocoTestReport`, against 454 JVM tests in 67 classes. **Every figure this file carried before 2026-08-24 was an artifact, roughly half the real one.** Robolectric loads classes through its own sandbox classloader with no source location, JaCoCo @@ -148,10 +148,11 @@ install for code that can never run — and on API 37 the full APK does not fit was punishing exactly the tests that were hardest to write. Two things still hold. A floor needs a baseline that has settled, and this one has not: it moved - 39 points in a single build change on 2026-08-24, then another 12 as the #52 test push landed — - 69.2% -> 81.4% line, 53.2% -> 60.2% branch — while the denominator grew 2194 -> 2268, because the - same push added production code of its own. And **re-measure before quoting** — that instruction - is the only reason either move was caught. + 39 points in a single build change on 2026-08-24, then another 16 as the #52 test push and the + fixes it turned up landed — 69.2% -> 84.9% line, 53.2% -> 63.8% branch — while the denominator + grew 2194 -> 2321, because that work added production code of its own. And **re-measure before + quoting**: this entry was written quoting 81.4%, measured four hours earlier, and was already + three points stale by the time it was ready to merge. - **Testable code is not done until it is tested.** If a piece is unit testable, it gets unit tests before it counts as done. If it is e2e testable, it gets e2e tests. Both clauses apply — a change that is both needs both.