Repository navigation
Conversation
Collaborator
Author
|
Not ready to merge. The fresh review found that combine now refuses sessions with a manifest but no |
Refuse a VTT only on the marks a failed or interrupted run leaves: a chunk checkpoint, or a current-version manifest without a vtt record naming it. A folder with no manifest, or one from an older cache version, is combined as before.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
combobulator combine <session>(the glob path, with no explicit VTT list) now raisesCombineErrornaming every VTT left by a run that failed or was interrupted, and writes nothing. The newpipeline_cache.is_vtt_unfinisheddecides from the VTT's folder alone: the track is refused when the folder holds a chunk checkpoint (<stem>_progress.jsonl), or a current-version (3) manifest without avttrecord naming the VTT. A folder with no manifest, or a manifest from an older cache version, predates these records and is combined as before, unchecked. Batch runs are unchanged: they pass the exact VTTs they produced.AGENTS.md(the "Partial transcription is a failure" invariant) says how both kinds of session behave.Why
When some chunks fail, whisper still writes the track's VTT and only
process_fileraises, after the write. A manual combine, whichsession-envtells the owner to run after editing labels, globbed every*.vttand merged that transcript with gaps without an error.Review follow-up: the first version required a
vttrecord, so it also refused sessions made before cache version 3 (no manifest, or a version 1 or 2 manifest), which finished but have no such record. Version 3 brought both the per-stage records and the chunk checkpoint (407b74e), and every finished version 3 run writes thevttrecord, so those marks tell a failed or interrupted run apart from an old session. No override flag is added: with the old-session case handled, a refused track is one whose run really did not finish, and rerunning it is the fix.Left out: the stale-sibling scenario (two folders matching one username, e.g.
3-cadderlyand7-cadderly, both match as whole tokens). A manual combine merges both. Refusing that would also refuse a session that really has two tracks for one speaker, which batch runs accept, so it needs a decision on whether two tracks per username are supported. It is not changed here. The check also cannot compare fingerprints with the current config, because a manual combine has no input audio, and a version 3 session folder moved to another path is refused because the record names absolute paths.Closes #74
How you checked it
test_glob_refuses_a_track_whose_run_did_not_finish(tests/test_combine.py), interrupted and failed-chunk cases: both fail withcombine.pyfrommain, pass with the fix.test_glob_combines_a_track_from_before_stage_records, no manifest and a version 2 manifest: both fail on the previous head of this branch, pass now.make lint,make typecheck,make test-fast(300 passed, 9 deselected): exit 0.CI's
python -m buildnot run locally:buildis not installed in the venv; the change touches no packaging.Slow inference tests not run: the change is in combine only, outside the audio pipeline.
A bug fix comes with a test that fails without it
Docs match how it works now
No secrets or private information