From 5a9b1db3c647fa4a2be8a852fff23f0ec7047121 Mon Sep 17 00:00:00 2001 From: Peter Stone Date: Thu, 29 Oct 2026 09:30:21 +0000 Subject: 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 Claude-Session: https://claude.ai/code/session_018AwnALZL6bD4VBtATDVv3B --- server/cmd/listend/main.go | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) (limited to 'server') 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 } -- cgit v1.2.3