From 2cadbbf5ab12d3963418a9c77105d45e95542ee1 Mon Sep 17 00:00:00 2001 From: Peter Stone Date: Thu, 29 Oct 2026 08:22:02 +0000 Subject: Say what the length gap can and cannot see The declared-versus-served gap bounds only the advertising a CDN inserted into this copy, which is not all the advertising in it. A show that bakes its sponsor reads into the file it publishes has no gap at all and can still be a third adverts: The 404 Media Podcast declares within 11 seconds of what it serves and carries Mack Weldon, Incogni and Warby Parker reads in the middle of it. So finding more than the gap implies is not over-reporting. The first reading of a "728%" line in the live log was that the detector had gone wrong, and it had not -- every one of those candidates is a real host-read advertisement. The readout now says which case it is instead of printing a percentage that invites the wrong conclusion. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_018AwnALZL6bD4VBtATDVv3B --- server/cmd/listend/main.go | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) (limited to 'server') diff --git a/server/cmd/listend/main.go b/server/cmd/listend/main.go index d93325d..c21d65a 100644 --- a/server/cmd/listend/main.go +++ b/server/cmd/listend/main.go @@ -564,8 +564,14 @@ func giveBackAttempts(episodes []*store.Episode) { adAccounting describes what was found against what the lengths say is there. The declared-versus-served gap comes from the feed and the file rather than from any detector, -which makes it the one number able to contradict one. Every other readout in this project that -reported only what it found turned out to be hiding something. +which makes it the one number able to contradict one. + +It bounds only the advertising a CDN *inserted* into this copy, which is not all the advertising +in it. A show that bakes its sponsor reads into the file it publishes has no gap at all and can +still be a third advertisements -- The 404 Media Podcast declares within 11 seconds of what it +serves and carries Mack Weldon, Incogni and Warby Parker reads in the middle of it. So finding +more than the gap implies is not over-reporting, and saying so in the readout matters: the first +reading of a "728%" line was that the detector had gone wrong, and it had not. */ func adAccounting(e *store.Episode, found []transcript.Candidate) string { var total int64 @@ -577,12 +583,19 @@ func adAccounting(e *store.Episode, found []transcript.Candidate) string { how = "by subtracting the publisher's master" } gap := e.DurationMs - e.DeclaredDurationMs - if gap <= 0 { - return fmt.Sprintf("%d ad candidate(s) %s, %s; nothing was inserted into this copy", + switch { + case gap <= 0: + return fmt.Sprintf("%d ad candidate(s) %s, %s; nothing was inserted into this copy, "+ + "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)) + 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) } - return fmt.Sprintf("%d ad candidate(s) %s, %s of the %s inserted (%d%%)", - len(found), how, clock(total), clock(gap), total*100/gap) } // pendingRecognition is every mirrored episode still without words, newest first. -- cgit v1.2.3