What Quality Assurance Looks Like in an Automated Pipeline
Automated processing without automated QA is just fast failure. How anelo validates output at every stage of the pipeline.
The promise of an automated pipeline is speed. The risk is that speed amplifies mistakes. A manual artist processing one frame per minute catches their own errors by looking. An automated pipeline processing thirty frames per second has no eyes — unless you build them in.
Quality assurance in anelo is not a gate at the end. It is a set of per-stage checks that run after every processing step, before the output reaches the next stage.
Frame-level validation
Every frame-producing stage runs output validation before writing to disk. The checks are specific to what the stage produces:
Depth estimation checks for NaN and infinity values (numerical instability), degenerate range (the entire depth map is effectively flat), and alignment with the source frame dimensions. A depth map that is mostly NaN is not a subtle error — it will produce garbage stereo output. Catching it here prevents wasted computation downstream.
Upscaling checks for black frames (GPU driver faults that produce all-zero output), mosaic artifacts (the tiling pattern from internal model architecture leaking through), and output resolution correctness (the output should be exactly N times the input, not approximately). A corrupted upscaled frame that gets interpolated and then stereo-converted becomes six corrupted frames in the final output.
Interpolation checks for color shift (the interpolated frame's mean luminance deviating significantly from the source frames), black frame insertion (RIFE occasionally produces black output on high-motion pairs), and frame count correctness (a 2x interpolation of 100 frames should produce exactly 200 frames, not 199 or 201).
Stereo validation checks that the left and right eyes are not identical (which would mean the stereo synthesis had no effect), not wildly different (which would mean the disparity computation went wrong), and that disoccluded regions were actually inpainted (not left as black strips).
Failure thresholds
Individual frame failures do not kill the pipeline. A single bad frame in a thousand-frame video is recoverable — the frame is replaced with a fallback (typically the source frame or a duplicate of the previous good frame) and logged. But if the failure rate exceeds a threshold — currently 20% of frames in any single stage — the stage fails and the pipeline halts. This prevents the pipeline from producing a video that is 80% artifacts.
A lower threshold — 2% — triggers a warning without halting. The output is still produced, but the job report flags the degradation so the user can review it.
Comfort budget
For stereo output specifically, the disparity (the horizontal shift between left and right eyes) is checked against a comfort budget derived from perceptual research. If the nearest objects in a frame exceed a comfortable viewing threshold, the disparity is clamped before stereo synthesis. The user can override this for artistic reasons, but the default protects against output that would cause eye strain in a VR headset.
The output contract
Every job produces an outputs_index.json file that lists all deliverables with metadata: resolution, frame rate, stereo format, and a quality score indicating whether any degradation occurred during processing. A fully clean pipeline run scores 1.0. A run with 5% fallback frames scores 0.95. This score is visible to the user so they can make an informed decision about whether to use, re-run, or adjust the output.
The principle is simple: an automated pipeline that cannot tell you when something went wrong is worse than a manual process that is slower but visible. Speed without honesty is not a feature.