summaryrefslogtreecommitdiff
path: root/CLAUDE.md
diff options
context:
space:
mode:
Diffstat (limited to 'CLAUDE.md')
-rw-r--r--CLAUDE.md13
1 files changed, 13 insertions, 0 deletions
diff --git a/CLAUDE.md b/CLAUDE.md
index f0b6412..d838416 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -296,6 +296,19 @@ by default and correct; it is simply waiting for a publisher who marks breaks.
71% and 105%. First time in this project that detection has been checked against external
ground truth and agreed.
+ **Detection runs once per batch, not once per poll.** `Show.DetectedBatch` holds the set of
+ episode ids the last completed pass examined; `pollOne` skips detection when the batch is
+ unchanged. Without it the server re-derived identical results every cycle -- 4.5 hours of work
+ against a two-hour poll interval, so it never idled. The batch is the unit because every
+ result depends on which other episodes it was compared against, so one arrival or one pruning
+ must re-run all of them. `Episode.DetectedAtUnix` cannot serve as this gate: it is only set
+ for episodes that appear in `result.Offsets`.
+
+ **Do not filter breaks by partner count or run length.** It looks obviously right -- 40% of
+ breaks have one partner and a 5s median -- and it is wrong: measured against the declared
+ length gap it drops agreement from 67% to 43%. Detection already under-reports. Table in
+ `docs/detection-findings.md`.
+
Breaks are published as ranges into `episode_midrolls`, which `MidrollSkip` and
`PlayheadPolicy` already read -- no playback changes, no migration. Two guards publish nothing
rather than something wrong: an episode whose matches cover over 35% of it, and any single