finish_check
Verify a delivered file against project timeline specs—duration, chapters, loudness, black, holds, and transcription—to surface faults before sign-off.
Instructions
Check a delivered file against this project's timeline —
verify/check_frames/check_black/film_check for a file an
external mix pass produced, not one of proofcut's own renders.
final carries a cold open and/or holds concatenated on outside proofcut,
so every position this reports is in final's own absolute seconds.
prepend_seconds defaults to this project's stored head length; holds
defaults to its stored holds, resolved live and offset the same way —
pass either explicitly (an empty holds list included) to check a file
against a different set than what is currently stored.
Eight checks, none individually fatal to the others: stream/chapter/
duration agreement against the timeline's own arithmetic; loudness
(report only); blackdetect, with a run explained only when it falls
inside the prepend or a hold's own span; each hold's own span
transcribed and its seam levels measured; a windowed transcription of
final diffed against the timeline's expected words, with every heard
word inside the prepend or a hold filtered out first; every dropped run
re-cut and re-transcribed on its own to catch a windowed-pass false miss
at a window stitch (boundary_misses, recovered — a run that still
cannot be found stays in missing, a real fault); and a self-repeat
scan over the same filtered transcript. faults/ok aggregate all of
it, and every run is logged (finishlog) so proofcut review serve can
show a WARN badge keyed to the file's own sha256.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| fps | No | The frame grid the timeline's arithmetic is counted on. Defaults to the rate `export` would have picked. | |
| path | No | The project directory to act on. Omit it — the usual case — when this server is bound to a project (started as `proofcut -C DIR mcp`, or inside a project; `ping` says which): it then resolves to that one bound project, a relative path resolves against it, and a path outside it is refused by name. Unbound, `path` is the whole address and omitting it refuses rather than guessing. | |
| final | Yes | The delivered file to check — one an external mix pass produced, not a proofcut render. Every position reported is in this file's own absolute seconds. | |
| holds | No | The holds to expect in `final`, resolved and offset the same way the stored ones are. Defaults to the project's own; pass a list (an empty one included) to check against a different set. | |
| pix_th | No | blackdetect's pixel threshold: how dark a pixel counts as black. | |
| window | No | Length of each transcription window, in seconds. | |
| clip_id | No | Diff against one transcript's expected words rather than all of them. | |
| overlap | No | How far each window overlaps the one before, in seconds. | |
| language | No | Force a language code for the transcription. | |
| recheck_pad | No | How much to pad a dropped run when re-cutting it for its own transcription — the pass that separates a real miss from a false one at a window stitch. | |
| windowed_model | No | The whisper model for the windowed transcription of `final`. A deliberately small one is the default, since the windowed pass runs over twice the audio. | |
| prepend_seconds | No | How much runs before the timeline's first frame in `final` — a cold open concatenated on outside proofcut. Defaults to the project's stored head length. | |
| transcript_path | No | An existing transcription of `final`, to diff again without re-transcribing. | |
| black_min_duration | No | Shortest black run to report, in seconds. | |
| duration_tolerance | No | How far `final`'s duration may sit from the timeline's own arithmetic before it is a fault, in seconds. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||