From 4f1a007b58ed79abcbcc84befd6a67089d5dfcdd Mon Sep 17 00:00:00 2001 From: Jason Ross Date: Tue, 25 Aug 2026 23:24:54 -0500 Subject: [PATCH] Quote the settled figure, now that the work it was waiting on has landed This PR was opened quoting 81.4%, measured on b53f326. Holding it until #116, #117, #119, #121 and #124 merged was the point: by the time it was ready the number had moved three points, which is the same staleness the entry is about. Measured on 93ebfa6 with ./gradlew :app:jacocoTestReport: LINE 1971/2321 84.9% (81.4% four hours earlier, 69.2% on 2026-08-24) BRANCH 900/1410 63.8% (60.2%, then 53.2%) 454 JVM tests in 67 classes, all green. The note now says the entry went stale while it was open, because that is a better argument for the rule than the rule restating itself. Co-Authored-By: Claude Opus 5 (1M context) --- CLAUDE.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) 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.