Single-pass video captioners fail the LLM-Judge on two predictable axes: hallucinated details (accuracy) and style labels that sound right but read wrong (tone). SEV-Cap addresses both structurally. Stage 1 samples keyframes with ffmpeg and transcribes audio locally with faster-whisper (CPU, baked into the image). K=3 independent vision extractions run on Kimi K2.6 via Fireworks AI, conditioned on frames and transcript. Following Farquhar et al. (Nature 2024), atomic facts are clustered by bidirectional entailment using the NLI judge. Per-fact support across samples yields a semantic-entropy signal. Facts appearing in fewer than 2 of 3 extractions are treated as confabulations and rejected before captioning. Stage 2 generates all four captions from the verified fact sheet. The generator never sees the video, preventing unverified details from leaking in. Each caption set passes two gates: (A) grounding—every concrete claim must be entailed by the fact sheet; (B) blind style lineup—captions are label-stripped, shuffled, and re-identified as their intended style with confidence ≥3/5. Failures are repaired through one Self-Refine loop (Madaan et al., NeurIPS 2023) using judge feedback. The scoring container targets linux/amd64 on ghcr.io with an argument-free entrypoint and an anytime algorithm: a valid draft for every clip is written immediately and upgraded in place with atomic writes, using a per-clip timeout so the harness always receives complete JSON. Every clip JSON includes rejected high-entropy facts, lineup verdicts, and retry history. Kimi K2.6 (Fireworks serverless) is the default extractor, entailment judge, caption writer, lineup judge, and refiner—a single VLM+text stack. Gemma 4 26B (on-demand, scale-to-zero) is available via an env-var override for the Gemma bonus track, with automatic Kimi fallback if the deployment is cold or unstable. A Streamlit demo lets users upload clips and inspect captions and the verification report live.
Category tags: