check
Judge an existing take without rendering anything — the standalone post-shoot verdict.
open-take check demos/myapp.mp4 # exit 0 = postable, 2 = defective
open-take check demos/myapp.mp4 --no-strict # findings print, exit stays 0check re-runs the post-shoot gates against a take already on disk — the
same verdict make and render apply to their own output, for the take that
got here some other way: an older CLI, a copied working dir, the editor's
Export, or plain "is this still postable?".
What it judges:
- cursor audit — every pointer-landing beat's drawn cursor, template-matched against the compositor's own math (the gate that catches a mis-drawn master before it ships)
- dead opening — unpainted head, measured on the kept capture's pixels
- static tail — a delivered video that ends frozen
- zoom vs payoff — a zoom punched into a global repaint
- skipped steps — re-printed from the capture log; missing beats keep a take unpostable no matter how clean its pixels are
- plan-target warnings — the pre-capture findings recorded in
capture.json(late-bound targets, ambiguous names) re-surface here, so the suspects stay visible after the shoot
The defects block
ANY judged finding — the warn-only tier included — makes check print the
machine-readable report (one JSON object between
--- open-take defects v1 --- and --- end open-take defects ---) and write
it to <name>.take/defects.json; a fully clean verdict removes a stale one.
Exit 1 (could not judge) emits no block and leaves any existing
defects.json untouched — an unjudged run has no verdict to report, and
keeping the last judged report beats replacing it with a partial one.
make and render print the same block on their defective verdicts. Each
entry carries gate, severity, field path, measured values, and the computed
fix where one exists — relay it verbatim to whatever authored the plan (the
skill's repair loop: at most two rounds, fix only what the report names).
Exit codes
| exit | meaning |
|---|---|
| 0 | no error finding, no skipped step — the summary line says ✓ |
| 2 | defective: at least one error finding or skipped step (--no-strict downgrades to warnings and exits 0) |
| 1 | could not judge — a gate never ran (no working ffmpeg, an unreadable file, a capture log that exists but won't parse). "No error found" by a gate that never ran is not a clean bill. |
READ-ONLY by contract
check never rewrites the take — the master, the capture, and the
composition are untouched (defects.json, the verdict's own report file, is
the one thing it writes). When the cursor audit fails,
render is the healing move — it re-renders from the
frozen capture and re-audits (the transient-misdraw class heals on one
re-render; a repeat failure is a real renderer bug). check prints exactly
that hint when it applies.
A take without its capture.json (an old or cleaned working dir) is still
judged: the pixel gates and the cursor audit run; only the coverage checks and
the skipped-step re-print stand down, and check says so.