You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Aftercare (#156) judges real completed jobs across the actual library at scale — a far richer signal than the synthetic-clip arena (Tuning Lab). It is, in effect, the real-world tuning lab. This epic turns that signal into action: requeue bad jobs with better settings, iterate, and converge toward the best achievable subtitle — capturing real (file, language, config) -> quality data the whole time (the firehose passive-tuning #95 / federated #124 want).
Grounding finding (2026-06-09)
Testing aftercare on a real foreign-language library showed CPS issues on nearly every job (271-644 per file). Investigated a flagged file (Hellground S01E07): median CPS 21.6 (borderline-normal for translated dialogue), but a tail of sub-second cues — e.g. "You lied to me all this time." (29 chars) shown for 0.26s, "No." for 0.06s. So:
It is REAL, not a threshold artifact.
Root cause = micro-duration cues from segmentation (subgen CUSTOM_REGROUP / word-timing), NOT text density. CPS is the symptom; cue duration is the cause (these also trip too_short).
It is systemic (config-level), so it hits the whole library — which is precisely why a tuning loop, not per-file luck, is the answer.
Two leverage points
Aggregate config insight (fleet-level, highest leverage): aftercare aggregates → "X% of your jobs trip CPS via sub-second cues -> your regroup/segmentation default is producing micro-cues; here is a better one." One config change fixes the library. This is the real-world tuning lab at the fleet level.
Per-file iterative "Improve" (user-facing): a flagged file -> try a better config -> re-judge -> keep iterating.
North star: greedy hill-climb + lock (Judd)
Iterate a file (or a language profile): change a config lever -> re-transcribe -> judge with the aftercare judges -> if it improved, LOCK that change -> move to the next lever -> repeat -> converge toward "as good as it gets" (zero detected failures now; true accuracy once the QE judge #123 lands) or until the user stops. Coordinate-descent over the config space, scored by real output.
Design questions to work through (brainstorm -> spec before building)
Where do candidate settings come from? failure-mode heuristics (CPS/too-short -> merge-short-cues / regroup; repeats -> repetition_penalty / no_repeat_ngram_size / lower temp) -> Tuning Lab learned per-language winners (Tuning Lab: global recipe leaderboard (overall recipe ranking) #146) -> a small real-file sweep judged by aftercare.
Convergence target & stop: "no detected failures", a score target, no-improvement plateau, max attempts, or explicit user Stop. Per-file vs per-language-profile (lock at the language level so one convergence fixes many files).
Guardrails (hard): every attempt is a full GPU transcription (minutes). Cap attempts, surface GPU cost, never auto-loop without a ceiling. Suggest -> cap -> gate (existing rule).
The insight
Aftercare (#156) judges real completed jobs across the actual library at scale — a far richer signal than the synthetic-clip arena (Tuning Lab). It is, in effect, the real-world tuning lab. This epic turns that signal into action: requeue bad jobs with better settings, iterate, and converge toward the best achievable subtitle — capturing real
(file, language, config) -> qualitydata the whole time (the firehose passive-tuning #95 / federated #124 want).Grounding finding (2026-06-09)
Testing aftercare on a real foreign-language library showed CPS issues on nearly every job (271-644 per file). Investigated a flagged file (Hellground S01E07): median CPS 21.6 (borderline-normal for translated dialogue), but a tail of sub-second cues — e.g. "You lied to me all this time." (29 chars) shown for 0.26s, "No." for 0.06s. So:
CUSTOM_REGROUP/ word-timing), NOT text density. CPS is the symptom; cue duration is the cause (these also triptoo_short).Two leverage points
North star: greedy hill-climb + lock (Judd)
Iterate a file (or a language profile): change a config lever -> re-transcribe -> judge with the aftercare judges -> if it improved, LOCK that change -> move to the next lever -> repeat -> converge toward "as good as it gets" (zero detected failures now; true accuracy once the QE judge #123 lands) or until the user stops. Coordinate-descent over the config space, scored by real output.
Design questions to work through (brainstorm -> spec before building)
Attempt 2/5 · CPS 644->120 · repeats 6%->1% · score 41->78, live progress, improving/plateaued state, Stop.(file, language, config) -> aftercare scoreis a federated data point (Capture a structured media/subtitle data DB (local-rich, transmit-anonymous) #95). This is the operations firehose feeding Epic: federated tournament tuning loop (crowd-sourced per-language config refinement) #124/Tuning Lab: global recipe leaderboard (overall recipe ranking) #146.Relationships
Builds on #156 (aftercare). Supersedes/absorbs #165 (open-in-Tuning-Lab from aftercare = the seed). Feeds #95 (passive capture), #124 (federated loop), #146 (leaderboard). Gated for "perfect" on #123 (QE).
Status: v2 epic — needs a proper brainstorm -> spec pass before implementation.