diff options
| author | Peter Stone <thepeterstone@gmail.com> | 2026-10-29 10:15:10 +0000 |
|---|---|---|
| committer | Peter Stone <thepeterstone@gmail.com> | 2026-10-29 10:15:10 +0000 |
| commit | 300d0fc58e355a3f6d6347f8def633867d416339 (patch) | |
| tree | 934e7ee4e27d2e567b22fb0199951610bc6f02ef /server/cmd | |
| parent | 5a9b1db3c647fa4a2be8a852fff23f0ec7047121 (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/cmd')
| -rw-r--r-- | server/cmd/listend/main.go | 13 |
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) |
