diff options
| author | Claude <noreply@anthropic.com> | 2026-09-21 09:31:52 +0000 |
|---|---|---|
| committer | Claude <noreply@anthropic.com> | 2026-09-21 09:31:52 +0000 |
| commit | 3eb15dbd84da689943f54d48a4d4974aa3d7f017 (patch) | |
| tree | c3a7c1351f83359d7e03e7e7b2d30fb56b72d349 /CLAUDE.md | |
| parent | e0e05e3b60d6613898c790d14bb5ee3dfca4222c (diff) | |
Record phase 1 state and the gate overrides in CLAUDE.md
Four coverage exceptions and five detekt relaxations, all deliberate and all
documented at the point they were taken. Writing them down in one place so a
future session can see the pattern rather than rediscovering each decision --
and so the question of whether framework adapters belong in the coverage
metric at all stays visible instead of being quietly settled by attrition.
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.md | 25 |
1 files changed, 25 insertions, 0 deletions
@@ -76,6 +76,14 @@ claims three separate times across these repos. touched in the same diff. Room tracks by version; a wrong migration corrupts a real, non-reproducible library. +## State + +Phase 1 is built: subscribe (share sheet, pasted URL, OPML import), refresh, download, queue, +play, variable speed, sleep timer, retention. 182 unit tests plus instrumented tests. + +**Not built yet:** everything in phase 2 — the rule engine, slow-drip subscriptions, and +intro/outro skipping. Schema fields for manual skip offsets exist but nothing reads them. + ## Domain notes worth keeping - **Playback position is the crown jewel of the data model.** It must survive process death. Save @@ -105,3 +113,20 @@ claims three separate times across these repos. - **Gradle is pinned to 8.14.3, not 9.x**, because Chaquopy 16.1.0 calls `org.gradle.util. VersionNumber`, removed in Gradle 9. Chaquopy 17 moved to AGP 9.x; going there means bumping AGP, Gradle and Chaquopy together. This is the one deliberate divergence from FeeDreader. + +## Things a future session should know + +- **The coverage gate has been overridden four times**, each recorded in the commit message. All + four are Android-framework glue that cannot execute off-device: the Chaquopy bridge, + PlaybackService, ChaquopyYouTubeSource, PlayerConnection and the two Workers. Each time the + gate fired it was a useful prompt — it drove PositionWriter onto a narrow Playhead interface + and pulled RetentionSweeper out of its Worker, both of which found or prevented real bugs. + If the exceptions keep accumulating, the honest fix is a jacoco exclusion for framework + adapters, which is a decision for Peter rather than something to slip in. + +- **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 + `ListenViewModel` was split into library and player halves rather than raising a limit again. + +- **Feeds are big.** A real subscription in testing produced 2753 episodes in one refresh. Any + per-episode work — a query in a loop, an O(n²) match — needs to be considered at that scale. |
