summaryrefslogtreecommitdiff
path: root/CLAUDE.md
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-09-26 17:37:33 +0000
committerPeter Stone <thepeterstone@gmail.com>2026-09-26 17:37:33 +0000
commitaa9c0a386f19bb58c50c81fd79d9509d2883cffe (patch)
treef9ede8c3020c3a82e20f565e6c5373cc426b2200 /CLAUDE.md
parent4488a3f49cadcdcd37ce29bedf49d0369983bfb1 (diff)
Skip marked breaks by default, and drop the instrumented-coverage half
Two things. Ad-chapter skipping is on by default, at Peter's request after living with it. It shipped off out of caution, being the one part of the skip feature that removes audio nobody has heard -- but it only ever acts on sections a publisher explicitly marked as not content, never on a guess from a title, and doing that without being asked each time is the point. Migration 5 -> 6 moves existing shows rather than leaving the new default to apply only to new ones. The column's SQL default stays 0 while the Kotlin default becomes true. Room writes every column on insert, so the SQL default is only ever consulted by an ALTER TABLE that has already happened; changing it would mean recreating the table for a value nothing reads. Said so at the field. Two unit tests were leaning on the old default to mean "not opted in". They now say `skipAdChapters = false` explicitly, which is what they meant. Second: enableAndroidTestCoverage is gone again, a day after adding it. It was the "both" half of the coverage change, and measuring it made the trade obvious -- it instruments every class in the debug build, which cost 25MB on the APK (118MB -> 143MB) plus runtime probes, on every sideload, for a report that would be run rarely. I had already published one of those builds. The framework-adapter exclusions carry this on their own; they are what moved the number from 65% to 90%, and what makes a future drop mean something. No permission changes. 428 unit tests green, 6 migration tests on a device, detekt and lint clean, coverage 89.97 -> 90.12. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018AwnALZL6bD4VBtATDVv3B
Diffstat (limited to 'CLAUDE.md')
-rw-r--r--CLAUDE.md14
1 files changed, 8 insertions, 6 deletions
diff --git a/CLAUDE.md b/CLAUDE.md
index 84a7fd5..67b228f 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -136,8 +136,9 @@ out of a possibly-partial MP3, and the JSON path covers the shows that mark chap
- **Ad-chapter skipping trusts `toc: false` and nothing else.** No title matching: a show
discussing its own sponsorship deal has a chapter called "Sponsors" that is the actual
- programme. It is also off by default per show, being the one part of the feature that can
- remove audio nobody has heard.
+ programme. It shipped off by default out of caution and Peter asked for it on after living
+ with it (migration 5 → 6 moves existing shows); it is still per-show and still only ever acts
+ on sections a publisher explicitly marked as not content.
- **Auto-downloads are not retried.** A rule's download that fails is left FAILED rather than
requeued: retrying forever against a 404 would burn the battery, and the failed row is visible
@@ -204,10 +205,11 @@ out of a possibly-partial MP3, and the JSON path covers the shows that mark chap
pulled RetentionSweeper out of its Worker, both of which found real bugs. That value only
survives if the list stays honest.
- `jacocoFullReport` adds instrumented coverage on top, for when you want the fuller picture
- with a device attached. The commit gate deliberately does not read it: device data only exists
- after a device run, so folding it in would make the gate report different numbers for
- identical code.
+ Feeding instrumented coverage into the report as well was tried and abandoned:
+ `enableAndroidTestCoverage` instruments every class in the debug build, which measured at
+ +25MB on the APK (118MB → 143MB) plus runtime probes, on every sideload, for a report that
+ would be run rarely. It would also have made the gate report different numbers for identical
+ code depending on whether a device run happened recently.
- **Detekt config has been relaxed five times**, all documented inline in `config/detekt/detekt.yml`.
Twice the better answer was restructuring instead: `Screens.kt` was split per screen and