summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-10-29 09:30:21 +0000
committerPeter Stone <thepeterstone@gmail.com>2026-10-29 09:30:21 +0000
commit5a9b1db3c647fa4a2be8a852fff23f0ec7047121 (patch)
treeeb00338a591b0b76f3ad0fa3e2a360a97a6f8de7
parent7f61aa9fe4b1b0f2f46138bc09c0c88aa67b4b5d (diff)
Recognise the episodes whose answer checks itself first
Recognition was working strictly newest-first, so the seventeen episodes holding the publisher's ad-free master sat behind 259 that do not. Those seventeen are the only ones where the result validates itself: subtracting the master found 4:20 of the 4:15 the lengths imply on Darknet Diaries and 3:32 of 3:29 on Heavyweight. Everything else falls back to reading the ad copy, which across the first nineteen real episodes found 0%, 0%, 15% and 29% of what the lengths say is there -- and on a show that bakes its sponsor reads in, found 2:13 where the lengths can see nothing at all. Useful as a hint, not as a measurement. So the budget goes where the result can be trusted first, and stays newest-first within each group. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018AwnALZL6bD4VBtATDVv3B
-rw-r--r--server/cmd/listend/main.go22
1 files changed, 19 insertions, 3 deletions
diff --git a/server/cmd/listend/main.go b/server/cmd/listend/main.go
index c21d65a..6dd3c65 100644
--- a/server/cmd/listend/main.go
+++ b/server/cmd/listend/main.go
@@ -598,7 +598,19 @@ func adAccounting(e *store.Episode, found []transcript.Candidate) string {
}
}
-// pendingRecognition is every mirrored episode still without words, newest first.
+/*
+pendingRecognition is every mirrored episode still without words, best first.
+
+An episode holding the publisher's ad-free master comes first, whatever its date. Recognising
+one of those produces an answer that checks itself: subtraction found 4:20 of the 4:15 the
+lengths imply on Darknet Diaries and 3:32 of 3:29 on Heavyweight. Recognising anything else
+leaves the ad copy to be read, which across the first nineteen real episodes found 0%, 0%, 15%
+and 29% of what the lengths say is there. Spending the budget where the result can be trusted
+first is worth more than spending it in date order.
+
+Newest first within each group, because an episode about to be played is worth having words for
+before one from the back of a catalogue.
+*/
func (w *worker) pendingRecognition() []*store.Episode {
var pending []*store.Episode
for _, show := range w.state.Shows() {
@@ -608,8 +620,12 @@ func (w *worker) pendingRecognition() []*store.Episode {
}
}
}
- sort.Slice(pending, func(i, j int) bool {
- return pending[i].PublishedUnix > pending[j].PublishedUnix
+ sort.SliceStable(pending, func(i, j int) bool {
+ left, right := pending[i], pending[j]
+ if (left.MasterCues > 0) != (right.MasterCues > 0) {
+ return left.MasterCues > 0
+ }
+ return left.PublishedUnix > right.PublishedUnix
})
return pending
}