Repository navigation
Makes transcription reproducible. No change to the decode, the selection rules or the retention guard.
Seeding
- The rescue pass decodes at a temperature where the model samples rather than beam-searches, and nothing seeded it. The same recording could publish a different transcript on each run. Measured previously: selection differed on two of eleven recordings between two runs of the same build, and a 67 word swing between two draws of one rescue changed what got published.
- The decoder is now seeded from a stable hash of the job identifier, not from a constant. Draws stay as varied across the archive as before, while each individual recording becomes reproducible. Set RESCUE_SEED_MODE to off to restore the previous behaviour without a rebuild.
- The seed is logged on every pass and on the completion line, so any published transcript can be reproduced exactly.
- Verified on the GPU host: the same recording submitted twice under the same identifier, with the queue discarded between runs, produced byte-identical transcripts and byte-identical timings, on a recording where the rescue fires and is selected.
Retained transcripts
- RESCUE_TRANSCRIPT_DIR keeps both the published and the discarded transcript whenever a rescue runs, along with both sets of counts. Off by default. This is what made the last analysis impossible to finish from stored data.
Why this matters more than it looks
- While the input to a quality rule is an unrecorded random draw, no quality rule can be validated. The seven recoveries measured in 0.6.1 came from draws that will never be drawn again, so they are not a valid baseline for anything measured on this build. A fresh corpus run re-establishes it.
Deliberately not included
- The selection ordering. Analysis of nine refused rescues found that six of them discarded scripture readings the service had already transcribed, and that ranking corroborated content ahead of raw word count would publish five more of them while losing none. That change alters the selection rule and has not been measured on the corpus, which is exactly what this release makes possible.
The public API is unchanged.