→ all versions of this pipeline
Six checks now, not five. The five that measure quality all pass, and a sixth was added after the last review: it checks that the new file is the same episode, whole, with nothing missing. The comparison against the version this would replace found nothing that got worse. That comparison is a hard rule in the pipeline: it refuses to ship a file that scores lower than the one already published, even if the new file passes on its own.
Every one of those numbers is measured on the actual delivered mp3 file, after encoding, not on the working audio inside the pipeline.
The seven missing seconds are found, and they are now in the file. The last version of this page ended with an open question: the published episode ran about seven seconds longer than anything in the archive, and nobody knew what was in them. They were the show's opening. The pipeline was building the episode without one and every quality check still passed, because a missing opening is not a quality fault — the file is simply the wrong artifact. That gap in the checks is closed. The pipeline now attaches the opening, and the sixth check above would refuse to ship an episode that lost it again.
This is the part that is genuinely new since you last looked.
A replacement episode has to open the way the published one opens. That is a fact to read off the published file, not a choice to make again. So the head of the published episode was compared against every opening in the library, and the answer was not close: the Sting matched at 1.00 out of a possible 1.00, and the other two scored below zero, meaning they do not resemble it at all. The bar for accepting a match without asking you is 0.80. Anything under that and the pipeline stops and hands the choice to you, because a wrong opening is exactly the kind of mistake that ships quietly.
The score is a correlation: 1.00 means the two shapes rise and fall together perfectly, 0.00 means no relationship, and a negative number means they move against each other. It compares the loudness shape over time rather than the raw waveform, so a difference in level or in mp3 encoding between the two files cannot throw it off.
This run it passed. Its last fraction of a second measures -54.8 dBFS — quiet, but real sound, a room rather than nothing.
That check is not routine paranoia. The sting in the old library ends in 522 milliseconds of digital zero: not a quiet room, literally no signal at all. The voiced opener had that trimmed off years ago; the sting never was, and it rode into every episode built from it. You can hear the consequence in the file that is live today, and you can hear that it is gone in the new one, two paragraphs down. The pipeline now reads from a repaired copy of the opener library, so this episode needed no patching — the fault was fixed at the source rather than papered over once per episode. The audit stays in place because an asset used eighty times carries its defect eighty times, and the cheapest place to catch that is before it is used, not after.
The raw recording begins with a sliver of digital silence before the first sound — 27 milliseconds of true zero, sitting inside a 55 millisecond stretch that reads as silence to the detector. Completely harmless for as long as it is the first thing in the file, because nobody can hear silence before the audio starts. The moment an opening goes in front of it, that same silence lands in the middle of the episode, between the sting and the first word, and becomes audible. It was filled with room tone taken from the quietest half-second of this same episode, measured at -58.8 dBFS. Room tone is the specific hiss of one room, one microphone and one evening, so a stock hiss underneath a specific recording would be heard immediately as a join.
In the published file the opening's silent tail and the story's silent head sit back to back, and together they make one continuous 680 millisecond hole starting at 6.50 seconds — a square-edged one, where the sound stops dead instead of fading. In the new master that region measures zero holes and zero milliseconds of digital zero. So does every other second of the file.
The pale blue block is the opening. The red block on the top row is the 680 millisecond hole in the file that is live today. The green sliver on the bottom row is the filled head of the story in the new master. There is nothing else marked on the bottom row because there is nothing else to mark.
Listen to the handover from the opening into the first words, in both files. Each button plays about six seconds.
On a phone speaker in a noisy room this may be hard to catch. On headphones it is the moment where the room disappears completely for two thirds of a second and then snaps back as the first word arrives.
The opening arrives already mastered to the level it was designed at. If it were included when the episode's overall volume is set, every correction would quietly drag the opening away from that level. So the levelling stage works on the story only, and the final audit then measures the whole episode, opening included, because that is the file people get.
Three versions of the same episode. Play any of them straight through.
These are the spots where a sudden peak, mostly one of the children shouting or laughing, was held down so it would not jolt a child who is already drifting off. Nothing was ever pushed up, only held down, and never by more than 6 dB. Together they cover 49.5 seconds, which is 9.0 percent of the story.
The pale blue block at the left edge is the opening, the first 7.03 seconds. No moment falls inside it.
Each button plays only that moment, with 2 seconds of run-up so you hear what leads into it, and stops half a second after it ends. The third button plays the new version and then the old one back to back, which is the fastest way to tell whether you can hear the difference at all.
The times shown are positions in the new master, so they include the 7.03 seconds of opening at the front. The pipeline's own record lists these moments against the raw story instead, which is why every time here is 7.03 seconds later than the number in the record further down the page. When you press "hear it before", the old file is seeked further on again, because its copy of the story sits later inside it — usually by 0.08 of a second, but not everywhere, so the seek for each of these 28 moments was measured separately rather than assumed. The five moments where the two files are further apart than usual say so above their buttons.
"Up to" is literal. The volume slides down over 0.6 seconds, sits at the stated depth across the middle of the moment, then slides back up over 0.6 seconds. Only the middle is held by the full amount, which is exactly why the change itself does not register as an event.
In plain words, comparing the three files.
The original recording arrived clean. The audit of the raw phone recording found exactly one flaw in nine minutes: a 55 millisecond gap of silence right at the top, before the recording properly starts — the one the head fill above dealt with. Nothing else. No dropouts, no clicks, no repeated fragments. That is why the repair stage had nothing to do and did nothing. A second, entirely separate detector built by other people, Essentia 2.1b6.dev1389 (standard mode), was run over the same recording as a check on our own detector, and it reached the same conclusion: independent detector agrees the recording is clean. It found zero clicks and zero dropouts of its own. It does not see our gap at the top, which is expected, because that one sits before the recording starts rather than inside it. The pipeline treats that second opinion as advice, never as a gate.
The published version has real damage in it. Running the same detector over the Auphonic file that is live today turns up 396 holes of digital silence where the room tone vanishes completely, 9.0 seconds of pure zero in total. 74 of those have square edges, meaning the sound stops dead rather than fading, which is the kind you can actually hear as a small click or a hiccup. It also has 6 duplicated fragments, short pieces of audio repeated — and every one of them repeats at the same 0.43 second distance, which is the signature of a misaligned paste rather than of somebody genuinely saying something twice. Plus 3 further micro gaps. Pointing the independent Essentia click detector at it turns up 5 click hits, but they cluster at only two distinct places, 0:32.4 and 7:04.0 — the rest are the same instant reported more than once. The same detector finds 0 in the new master and 0 in the raw original.
The figures for the raw original come from the pipeline's own record. The ones for the new master and for the published version were measured while this page was being built, by running the pipeline's own detector and the Essentia detector over both files, because the pipeline only ever compares delivery checks against the published file and does not audit it for damage. One caveat the pipeline itself records: a raw hole count overstates audible damage, because most holes are gated near-silence sitting inside a pause. The number that matters is the square-edged subset, 74.
The life in the recording survived. Loudness range, a measure of how much the volume moves between the quiet parts and the loud parts, measured in LU or loudness units, is the number that tells you whether a story still breathes or has been ironed flat. The raw recording measures 12.2. The new master delivers 10.8. The published Auphonic version was squashed to 6.8, close to half the movement. That difference is the reason to replace it.
Volume is set for Apple Podcasts. The new master delivers −16.5 LUFS as heard. LUFS is the standard unit for how loud something actually feels to a listener rather than how big the waveform is, and Apple asks for −16.0 give or take 1, so this sits inside the window. "As heard" matters here: the file is mono, and a mono file played through two speakers sounds about 3 dB louder than the meter reading for one channel, so the pipeline measures it the way it will be heard rather than the way it is stored. The file-only reading is −19.6.
Nothing is near the ceiling. True peak is −2.7 dBTP. dBTP means decibels true peak, that is, the highest level the sound reaches once it is turned back into an actual waveform in the listener's player, including the little overshoots that mp3 encoding creates but a plain waveform view never shows. The ceiling for this pipeline is −1.0, and −2.7 leaves comfortable room. Zero samples hit full scale.
The lengths, if you want to check the arithmetic. The raw story is 550.208 seconds. The opening is 7.03. Together that is exactly 557.238, which is the length of the new master. The published file is 557.264, so the two differ by 0.026 of a second — that residue is mp3 encoder padding, the few silent samples an encoder adds at the edges, and it is far inside the 0.5 second tolerance the check allows. Same episode, same opening, same length.
The old file's timeline does not run straight. Lining the two files up against each other two seconds at a time, the published one normally carries the story 0.08 of a second behind the new one, steadily, for about 84 percent of the episode. In three stretches it does not. In each one it slips further behind, holds there for around half a minute, and then snaps back:
The biggest of them covers almost exactly the span where all six duplicated fragments were found, between 1:06.4 and 1:34.0 of that file, and its size is close to their shared repeat distance of 0.43 seconds. Read together that is not a mystery: audio was pasted into that stretch of the published file, pushing everything after it late, and taken back out at the end of it. It is the same class of fault as the holes, seen from a different angle. The new master does not do this — checked at 54 points spread across the episode it tracks the raw recording at a flat 7.03 seconds throughout, never out by more than 0.167 of a millisecond.
Measured while this page was built, by sliding an eight second window along both files and finding, at each step, the shift that makes their loudness shapes line up best. Inside those stretches the match at the usual 80 ms collapses to almost nothing while the match at the value shown stays above 0.9, so these are real displacements in the file, not the measurement wandering.
The holding down was not done in one shot. It was measured, applied, then measured again.
Before anything was touched, the loudest three second stretch of the episode sat 7.0 LU above the episode's own average level. The bedtime limit is 5. After the 28 holds were applied, the same measurement came back at 4.6, inside the limit, so no second round of cuts was needed.
Setting the overall volume afterwards also took two goes. The first raised it by 3.1 dB and landed at -16.2 LUFS, which is 0.2 off target. The second used 3.3 dB and landed exactly on -16.0. Encoding to mp3 shifts it a further 0.5, which is why the delivered file measures −16.5 rather than −16.0, and the pipeline checks that after encoding rather than before.
45 events, in order: what happened, where in the audio, when it ran, which tool did it and which version of that tool, and the exact settings it used. Swipe the table sideways on a phone to reach the later columns. The wording in the "what happened" column is the pipeline's own, written as it ran, not rewritten afterwards; anything in it that reads as code is explained in the glossary below.
One thing to know about the "where" column. The pipeline records most of its work against the story, which is how it was working at the time, before an opening existed. Those positions are shown here converted to where they land in the delivered file, which is 7.03 seconds later, with the number the pipeline actually wrote underneath.
| # | What happened | Where in the delivered file | When (UTC) | Tool | Settings used |
|---|---|---|---|---|---|
| 1 | sha256 of preservation_master Fingerprinted the file worked | whole file | 2026-08-07 12:53:30 | python 3.14.6 | algorithm SHA-256 |
| 2 | preservation_master matches Checked the file had not changed worked | whole file | 2026-08-07 12:53:30 | python 3.14.6 | — |
| 3 | baseline audit of the raw capture Checked the audio worked | whole file | 2026-08-07 12:53:35 | python 3.14.6 | findings hole 1 loudness integrated lufs -18.3, lra lu 12.2, true peak dbtp -0.3, max short term lufs -11.3, max momentary lufs -7.1, dualmono yes damage found here belongs to the recording, not to us |
| 4 | second opinion from Essentia: independent detector agrees the recording is clean Checked the audio worked | — | 2026-08-07 12:53:41 | Essentia 2.1b6.dev1389 (standard mode) | ran yes tool Essentia 2.1b6.dev1389 (standard mode) gaps ours 1, theirs 0, agreed 0, only ours 1, only theirs 0 clicks ours 0, theirs 0, agreed 0, only ours 0, only theirs 0 verdict independent detector agrees the recording is clean advisory only — a disagreement is never a gate |
| 5 | accepted-residuals register read: 0 entries for t06, 0 findings marked ACCEPTED-DO-NOT-REFLAG Made a decision worked | — | 2026-08-07 12:53:41 | python 3.14.6 | register /Users/amitmdev/VoiceLab-PVC/shmili-catalog/accepted-residuals.json entries for episode 0 findings suppressed 0 accepted none contract only Amit reopens an entry |
| 6 | 1 findings recorded before planning Checked the audio worked | — | 2026-08-07 12:53:41 | python 3.14.6 | classes hole |
| 7 | fix plan written Made a decision worked | — | 2026-08-07 12:53:41 | python 3.14.6 | batches 1 queued for amit 0 |
| 8 | denoise gate: run Made a decision worked | — | 2026-08-07 12:53:41 | python 3.14.6 | source rms dbfs -22.73 threshold -28 why below the threshold the full denoise over-cleans |
| 9 | rumble cut at 120 Hz (whole file) Changed the audio worked | — | 2026-08-07 12:53:42 | ffmpeg 8.0.1 | filter highpass=f=120 why the voice carries essentially nothing below it |
| 10 | combined-file check Checked the audio worked | — | 2026-08-07 12:53:45 | python 3.14.6 | findings before hole 1 findings after hole 1 untouched identical not recorded |
| 11 | startle: held a loud moment down by 1.0 dB Changed the audio worked | 0:08.6 → 0:09.4 recorded as 1.6–2.4 s of the story |
2026-08-07 12:53:48 | ffmpeg 8.0.1 | cut db -1 ramp s 0.6 reduction only yes max cut allowed db 6 likely a child yes why bedtime gate: a jump after quiet narration wakes a child |
| 12 | startle: held a loud moment down by 1.8 dB Changed the audio worked | 0:12.8 → 0:13.7 recorded as 5.8–6.7 s of the story |
2026-08-07 12:53:48 | ffmpeg 8.0.1 | cut db -1.8 ramp s 0.6 reduction only yes max cut allowed db 6 likely a child yes why bedtime gate: a jump after quiet narration wakes a child |
| 13 | startle: held a loud moment down by 0.6 dB Changed the audio worked | 0:21.6 → 0:22.2 recorded as 14.6–15.2 s of the story |
2026-08-07 12:53:48 | ffmpeg 8.0.1 | cut db -0.6 ramp s 0.6 reduction only yes max cut allowed db 6 likely a child yes why bedtime gate: a jump after quiet narration wakes a child |
| 14 | startle: held a loud moment down by 2.0 dB Changed the audio worked | 0:24.2 → 0:25.2 recorded as 17.2–18.2 s of the story |
2026-08-07 12:53:48 | ffmpeg 8.0.1 | cut db -2 ramp s 0.6 reduction only yes max cut allowed db 6 likely a child yes why bedtime gate: a jump after quiet narration wakes a child |
| 15 | startle: held a loud moment down by 3.0 dB Changed the audio worked | 0:26.5 → 0:28.5 recorded as 19.5–21.5 s of the story |
2026-08-07 12:53:48 | ffmpeg 8.0.1 | cut db -3 ramp s 0.6 reduction only yes max cut allowed db 6 likely a child yes why bedtime gate: a jump after quiet narration wakes a child |
| 16 | startle: held a loud moment down by 4.2 dB Changed the audio worked | 0:29.5 → 0:32.0 recorded as 22.5–25 s of the story |
2026-08-07 12:53:48 | ffmpeg 8.0.1 | cut db -4.2 ramp s 0.6 reduction only yes max cut allowed db 6 likely a child yes why bedtime gate: a jump after quiet narration wakes a child |
| 17 | startle: held a loud moment down by 4.0 dB Changed the audio worked | 1:11.7 → 1:13.8 recorded as 64.7–66.8 s of the story |
2026-08-07 12:53:48 | ffmpeg 8.0.1 | cut db -4 ramp s 0.6 reduction only yes max cut allowed db 6 likely a child yes why bedtime gate: a jump after quiet narration wakes a child |
| 18 | startle: held a loud moment down by 1.0 dB Changed the audio worked | 1:39.2 → 1:40.0 recorded as 92.2–93 s of the story |
2026-08-07 12:53:48 | ffmpeg 8.0.1 | cut db -1 ramp s 0.6 reduction only yes max cut allowed db 6 likely a child yes why bedtime gate: a jump after quiet narration wakes a child |
| 19 | startle: held a loud moment down by 3.8 dB Changed the audio worked | 1:45.4 → 1:47.7 recorded as 98.4–100.7 s of the story |
2026-08-07 12:53:48 | ffmpeg 8.0.1 | cut db -3.8 ramp s 0.6 reduction only yes max cut allowed db 6 likely a child yes why bedtime gate: a jump after quiet narration wakes a child |
| 20 | startle: held a loud moment down by 4.0 dB Changed the audio worked | 2:51.1 → 2:52.7 recorded as 164.1–165.7 s of the story |
2026-08-07 12:53:48 | ffmpeg 8.0.1 | cut db -4 ramp s 0.6 reduction only yes max cut allowed db 6 likely a child yes why bedtime gate: a jump after quiet narration wakes a child |
| 21 | startle: held a loud moment down by 1.7 dB Changed the audio worked | 2:56.7 → 2:57.8 recorded as 169.7–170.8 s of the story |
2026-08-07 12:53:48 | ffmpeg 8.0.1 | cut db -1.7 ramp s 0.6 reduction only yes max cut allowed db 6 likely a child yes why bedtime gate: a jump after quiet narration wakes a child |
| 22 | startle: held a loud moment down by 2.1 dB Changed the audio worked | 3:23.1 → 3:24.2 recorded as 196.1–197.2 s of the story |
2026-08-07 12:53:48 | ffmpeg 8.0.1 | cut db -2.1 ramp s 0.6 reduction only yes max cut allowed db 6 likely a child yes why bedtime gate: a jump after quiet narration wakes a child |
| 23 | startle: held a loud moment down by 3.1 dB Changed the audio worked | 6:42.1 → 6:43.3 recorded as 395.1–396.3 s of the story |
2026-08-07 12:53:48 | ffmpeg 8.0.1 | cut db -3.1 ramp s 0.6 reduction only yes max cut allowed db 6 likely a child yes why bedtime gate: a jump after quiet narration wakes a child |
| 24 | startle: held a loud moment down by 3.7 dB Changed the audio worked | 6:43.4 → 6:45.0 recorded as 396.4–398 s of the story |
2026-08-07 12:53:48 | ffmpeg 8.0.1 | cut db -3.7 ramp s 0.6 reduction only yes max cut allowed db 6 likely a child yes why bedtime gate: a jump after quiet narration wakes a child |
| 25 | startle: held a loud moment down by 1.4 dB Changed the audio worked | 6:57.0 → 6:58.0 recorded as 410–411 s of the story |
2026-08-07 12:53:48 | ffmpeg 8.0.1 | cut db -1.4 ramp s 0.6 reduction only yes max cut allowed db 6 likely a child yes why bedtime gate: a jump after quiet narration wakes a child |
| 26 | startle: held a loud moment down by 3.5 dB Changed the audio worked | 6:58.1 → 7:00.7 recorded as 411.1–413.7 s of the story |
2026-08-07 12:53:48 | ffmpeg 8.0.1 | cut db -3.5 ramp s 0.6 reduction only yes max cut allowed db 6 likely a child yes why bedtime gate: a jump after quiet narration wakes a child |
| 27 | startle: held a loud moment down by 2.6 dB Changed the audio worked | 7:14.5 → 7:16.6 recorded as 427.5–429.6 s of the story |
2026-08-07 12:53:48 | ffmpeg 8.0.1 | cut db -2.6 ramp s 0.6 reduction only yes max cut allowed db 6 likely a child yes why bedtime gate: a jump after quiet narration wakes a child |
| 28 | startle: held a loud moment down by 0.3 dB Changed the audio worked | 7:19.1 → 7:19.3 recorded as 432.1–432.3 s of the story |
2026-08-07 12:53:48 | ffmpeg 8.0.1 | cut db -0.3 ramp s 0.6 reduction only yes max cut allowed db 6 likely a child yes why bedtime gate: a jump after quiet narration wakes a child |
| 29 | startle: held a loud moment down by 0.3 dB Changed the audio worked | 7:21.4 → 7:21.6 recorded as 434.4–434.6 s of the story |
2026-08-07 12:53:48 | ffmpeg 8.0.1 | cut db -0.3 ramp s 0.6 reduction only yes max cut allowed db 6 likely a child yes why bedtime gate: a jump after quiet narration wakes a child |
| 30 | startle: held a loud moment down by 4.2 dB Changed the audio worked | 7:47.9 → 7:51.2 recorded as 460.9–464.2 s of the story |
2026-08-07 12:53:48 | ffmpeg 8.0.1 | cut db -4.2 ramp s 0.6 reduction only yes max cut allowed db 6 likely a child yes why bedtime gate: a jump after quiet narration wakes a child |
| 31 | startle: held a loud moment down by 6.0 dB Changed the audio worked | 7:51.7 → 7:53.4 recorded as 464.7–466.4 s of the story |
2026-08-07 12:53:48 | ffmpeg 8.0.1 | cut db -6 ramp s 0.6 reduction only yes max cut allowed db 6 likely a child yes why bedtime gate: a jump after quiet narration wakes a child |
| 32 | startle: held a loud moment down by 0.7 dB Changed the audio worked | 8:03.1 → 8:03.9 recorded as 476.1–476.9 s of the story |
2026-08-07 12:53:48 | ffmpeg 8.0.1 | cut db -0.7 ramp s 0.6 reduction only yes max cut allowed db 6 likely a child yes why bedtime gate: a jump after quiet narration wakes a child |
| 33 | startle: held a loud moment down by 1.4 dB Changed the audio worked | 8:07.2 → 8:08.1 recorded as 480.2–481.1 s of the story |
2026-08-07 12:53:48 | ffmpeg 8.0.1 | cut db -1.4 ramp s 0.6 reduction only yes max cut allowed db 6 likely a child yes why bedtime gate: a jump after quiet narration wakes a child |
| 34 | startle: held a loud moment down by 5.8 dB Changed the audio worked | 8:08.5 → 8:10.1 recorded as 481.5–483.1 s of the story |
2026-08-07 12:53:48 | ffmpeg 8.0.1 | cut db -5.8 ramp s 0.6 reduction only yes max cut allowed db 6 likely a child yes why bedtime gate: a jump after quiet narration wakes a child |
| 35 | startle: held a loud moment down by 1.2 dB Changed the audio worked | 8:37.0 → 8:37.8 recorded as 510–510.8 s of the story |
2026-08-07 12:53:48 | ffmpeg 8.0.1 | cut db -1.2 ramp s 0.6 reduction only yes max cut allowed db 6 likely a child yes why bedtime gate: a jump after quiet narration wakes a child |
| 36 | startle: held a loud moment down by 2.9 dB Changed the audio worked | 8:52.9 → 8:54.2 recorded as 525.9–527.2 s of the story |
2026-08-07 12:53:48 | ffmpeg 8.0.1 | cut db -2.9 ramp s 0.6 reduction only yes max cut allowed db 6 likely a child yes why bedtime gate: a jump after quiet narration wakes a child |
| 37 | startle: held a loud moment down by 1.5 dB Changed the audio worked | 8:56.4 → 8:57.4 recorded as 529.4–530.4 s of the story |
2026-08-07 12:53:48 | ffmpeg 8.0.1 | cut db -1.5 ramp s 0.6 reduction only yes max cut allowed db 6 likely a child yes why bedtime gate: a jump after quiet narration wakes a child |
| 38 | startle: held a loud moment down by 1.6 dB Changed the audio worked | 9:08.7 → 9:09.7 recorded as 541.7–542.7 s of the story |
2026-08-07 12:53:48 | ffmpeg 8.0.1 | cut db -1.6 ramp s 0.6 reduction only yes max cut allowed db 6 likely a child yes why bedtime gate: a jump after quiet narration wakes a child |
| 39 | opener asset audit (opening-sting-96k_-3.0dB.mp3): clean Checked the audio worked | — | 2026-08-07 12:53:52 | ffmpeg 8.0.1 | opening opening-sting-96k_-3.0dB.mp3 duration s 7.03 tail peak dbfs -54.8 head peak dbfs -12.4 tail is digital silence no integrated lufs -21.8 true peak dbtp -11 pass yes why a digital-silence tail in this asset once propagated into 66 masters; the asset is checked, not just the episodes |
| 40 | filled 27 ms of silence at the start of the story Changed the audio worked | 0:07.0 → 0:07.1 recorded as 0–0.027 s of the story |
2026-08-07 12:53:52 | ffmpeg 8.0.1 | filled yes head silence s 0.027 room tone rms dbfs -58.8 why inaudible while it is the head of the file; becomes a dead spot between the opening and the first word once an opening is attached |
| 41 | levelled to -16.0 LKFS (measured dual-mono, as heard) Set the overall volume worked | — | 2026-08-07 12:54:04 | ffmpeg 8.0.1 | measured before lufs -19.1 target -16 final gain db 3.3 dualmono measurement yes peak ceiling dbfs -2.5 why limiter a flat trim would drop loudness by the same amount and miss the target rounds round 1, gain db 3.1, limiter engaged yes, measured lufs -16.2, error lu 0.2, peak dbfs -2.5 / round 2, gain db 3.3, limiter engaged yes, measured lufs -16, error lu 0, peak dbfs -2.5 |
| 42 | sha256 of delivered Fingerprinted the file worked | whole file | 2026-08-07 12:54:08 | python 3.14.6 | algorithm SHA-256 |
| 43 | delivered audit: all checks pass Checked the audio worked | whole file | 2026-08-07 12:54:08 | ffmpeg 8.0.1 | bitrate 96k PASS loudness target: measured lufs as heard -16.5, measured lufs file only -19.6, target -16, tolerance 1 PASS true peak: measured dbtp -2.7, ceiling -1 PASS startle: max short term lufs -12, over integrated lu 4.5, limit lu 5 PASS encode: codec mp3, sample rate 48000, channels 1, bit rate kbps 96 PASS clipping: samples at full scale 0 |
| 44 | sha256 of production_master Fingerprinted the file worked | whole file | 2026-08-07 12:54:09 | python 3.14.6 | algorithm SHA-256 |
| 45 | refuse-to-ship-lower comparison Made a decision worked | — | 2026-08-07 12:54:11 | python 3.14.6 | comparable yes previous loudness target yes, true peak yes, startle yes, encode yes, clipping yes new loudness target yes, true peak yes, startle yes, encode yes, clipping yes regressions none structural previous duration s 557.264, new duration s 557.238, difference s -0.026, tolerance s 0.5, pass yes, why same length, so it is the same episode ship yes |
Each one fingerprinted with SHA-256, a checksum that changes completely if even one byte of the file changes, so it can be proved later that the file is the same one.
| File | What it is | Size | Fingerprint |
|---|---|---|---|
| preservation master TLV Mall 19.m4a the story only, as recorded, with no opening in front of it |
aac, 48 kHz, mono, 550.208 s | 4,715,678 bytes | 223cc397051bb344… |
| delivered ep-t06.mp3 the opening and the story together, the file that would be published |
mp3, 48 kHz, mono, 557.238 s | 6,687,692 bytes | 8da862236865666d… |
| production master t06-production-master.wav the levelled story at full quality, kept without the opening on it |
pcm_s24le, 48 kHz, mono, 550.208 s | 79,230,054 bytes | 7a23422797075b33… |
One run, opened 2026-08-07 12:53:30 UTC and closed 2026-08-07 12:54:11 UTC, on Amits-Mac-mini.lan, operator amitmdev. The record follows the PREMIS vocabulary, a standard used by archives and libraries for describing what was done to a preserved file and by what. The "new master" player at the top of this page is byte for byte the delivered file listed above (checked, they match).
Two small gaps in the record, worth knowing rather than worth worrying about. The join itself — the moment the opening and the story became one file — has no entry of its own; it happens inside the delivery step, so the record shows the repair and then the delivered file, without a line for the handover between them. And the production master kept for later is the story on its own, without the opening, so rebuilding a different delivery from it would mean attaching the opening again.