summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-10-29 10:15:10 +0000
committerPeter Stone <thepeterstone@gmail.com>2026-10-29 10:15:10 +0000
commit300d0fc58e355a3f6d6347f8def633867d416339 (patch)
tree934e7ee4e27d2e567b22fb0199951610bc6f02ef /server
parent5a9b1db3c647fa4a2be8a852fff23f0ec7047121 (diff)
Do not claim to know why subtraction ran over
Nine episodes subtracted against their publishers' masters land between 82% and 110% of what the declared-versus-served gap implies, and all but one are over. The readout said the excess was advertising baked into what the publisher serves, which the gap cannot see. That was a guess, and on inspection it is wrong at least some of the time. Heavyweight "#70 Cayden" is over by 46 seconds across four candidates. Its first candidate opens on `Today's episode, "Caiton."` and `[MUSIC]` -- a title card and a music sting, neither of which is advertising and neither of which appears in a publisher's written transcript either. Subtraction answers "not in the master", which is a superset of "advertising": whisper's own [MUSIC] and `>>` markers qualify too. So the readout now states the overrun and names both possible causes instead of picking one. Tightening the edges is a separate piece of work and needs to be measured in both directions -- the same lesson MinRunSamples taught, where improving one show doubled a false positive on another. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018AwnALZL6bD4VBtATDVv3B
Diffstat (limited to 'server')
-rw-r--r--server/cmd/listend/main.go13
1 files changed, 10 insertions, 3 deletions
diff --git a/server/cmd/listend/main.go b/server/cmd/listend/main.go
index 6dd3c65..d45f890 100644
--- a/server/cmd/listend/main.go
+++ b/server/cmd/listend/main.go
@@ -589,9 +589,16 @@ func adAccounting(e *store.Episode, found []transcript.Candidate) string {
"so anything found is baked into what the publisher serves",
len(found), how, clock(total))
case total > gap:
- return fmt.Sprintf("%d ad candidate(s) %s, %s against %s inserted -- the excess is "+
- "advertising baked in rather than inserted, which the length gap cannot see",
- len(found), how, clock(total), clock(gap))
+ // Deliberately does not say why it is over. Two causes look identical here and the
+ // first guess was the wrong one: advertising baked into what the publisher serves,
+ // which the gap cannot see, and candidate edges reaching past the advertisement.
+ // Subtraction answers "not in the master", which is a superset of "advertising" --
+ // a title card, a music sting and whisper's own [MUSIC] markers are all absent from a
+ // publisher's written transcript too. Checked on Heavyweight "#70 Cayden", where a
+ // 134-second candidate opens on `Today's episode, "Caiton."` and `[MUSIC]`.
+ return fmt.Sprintf("%d ad candidate(s) %s, %s against %s inserted -- over by %s, "+
+ "which is either baked-in advertising or candidate edges reaching too far",
+ len(found), how, clock(total), clock(gap), clock(total-gap))
default:
return fmt.Sprintf("%d ad candidate(s) %s, %s of the %s inserted (%d%%)",
len(found), how, clock(total), clock(gap), total*100/gap)