▣ shipped · 603 GB · 1,620 clips
The pipeline, end to end
The same story as the case study, in about eight minutes: 17 phases from an unsorted pile on six drives to four finished multicam films. One source, one shared dedup stage, then two lanes that ran independently — and one edge that runs backwards. Hover a node for the one-line version; open it for the full account.
01 — the processing pipeline
raw footage → finished films
Everything passes through inventory and byte-exact dedup first. After that the graph forks: the photo lane runs to a self-hosted archive on its own, the video lane runs to a graded cut — and one edge runs backwards, because a 141-second offset that a single matching frame appeared to confirm sent the sync stage round again.
- source
- 01 · 603 gb · six folders the pile
Two days, two photographers, five cameras and a drone — arriving as 603 GB copied and re-copied across six folders on different drives. Arrival at the resort — one frame out of the 33,302 that had to be accounted for.
- 02 · sha-256 · 14,077 dupes inventory · dedup Size groups, then a head+tail partial hash, then full SHA-256 on the ~26,760 survivors. Nothing deleted on a guess; ~217 GB reclaimed.
- photo lane
- 03 · rawpy · auto_wb raw development
Sony ARW through rawpy, Nikon JPGs alongside it — with a per-image auto white balance after the fixed channel pushes went pink, then yellow. Haldi, straight out of the photo pipeline.
- 04 · 41 pairs measured house style
A grade measured off 41 original→edited pairs from our own photographers' finals — and a resize-only passthrough for their posed portraits. Reception portraits — the photographers’ own graded finals, passed through untouched.
- 05 · clocks realigned chronology
Scene clustering as a first draft, a real Marathi-wedding taxonomy over the top, and a per-folder clock fix because the Nikon read 2014. An auto-generated scene contact sheet for the Sangeet cluster — a whole cluster judged at a glance.
- 06 · 27 albums · immich self-hosted archive ~4,900 graded photos uploaded to a self-hosted Immich server through its CLI and REST API, checksum-deduped so the upload is re-runnable.
- video lane
- 07 · 1,620 clips gcc-phat sync
Envelope correlation sat at ~0.2 confidence. Syncing every angle to one clean song track instead moved it to a median around 105 against a lock threshold of 25. Two cameras at centre-time 101.2 s: matching poses and the same hearts-and-starburst frame on the LED wall.
- 08 · x · h · a · c marking
Four keys over the raw footage — bad, highlight, audience, couple — and an assembly planner that compiles the cut from the marks. The sync view mid-performance: the gold anchor bar, a verified wide angle in green, and every other camera with its own offset nudges and tags.
- 09 · −82% measured flicker fight
Three dead ends against a beating LED wall before the insight that mattered turned out to be about frame rates, not filters. The floor-signal detector: fixed sample points across the stage's pattern, median-voted so one covered spot never breaks the read.
- 10 · yolo11 masks skin work
Per-person segmentation and pose on an upscaled crop, so the flash correction touches the couple and leaves the light show alone. A per-person segmentation mask plus pose skeleton mid-flash: a clean cutout of the couple with the LED wall excluded.
- 11 · 271 s · graded 3-camera cut Centre plus two side angles on one timeline, cross-dissolved, cut on the phrases of the dance — and the beat-synced zoom punch binned.
- 12 · c0026 · no fusion the right camera A second centre angle of the same performance, from a steadier camera, barely flickered — and skipped the whole fight.
- verification loop
- 13 · pre-flight · post-render frozen-frame check A pre-flight assert that no segment (dissolve tail included) overruns its source, and a frame-hash pass after every render.
- 14 · 141 s correction the signal that lied
A wall clock 146 s out, then an audio offset a single matching frame appeared to confirm — and was still wrong by 141 seconds. The last 0.7 seconds made visible: the centre camera's truth, the corrected sync, and the old fine-tune that passed a glance.
- delivery
- 15 · one per performance agent fleet Claude stopped being the editor and became the orchestrator — roughly one subagent per performance, each handed the same playbook.
- 16 · one lockfile serial render queue Editing parallel, rendering serial: a machine-wide lock, because two heavy encodes on a 16 GB box OOM the machine.
- 17 · 4 multicam masters finished films
Four polished multicam performances plus the ceremony cuts, every master in one list, playable in the browser. The finished-videos view — every completed master in one list, quality selector on Web-HQ 1080p.
02 — the multicam sync picker
nine performances, one song track each
The review instrument, redrawn: pick a performance and read its angles as stacked tracks against the reference. Locked angles sit on the anchor at t = 0 — that is what alignment means — and the ones GCC-PHAT never resolved hang off it, dashed. the sync act has the method.
gcc-phat · reference: clean song track · confidence (batch) mid-20s – 353
Bride & groom
The hero. They performed twice — locked-off centre as anchor plus Camera A and Camera B on each performance, plus a drone cutaway on the second. Seven videos in all.
gcc-phat · reference: clean song track · confidence (batch) mid-20s – 353
Prathamesh & Jasmine
The longest performance in the queue, and the widest coverage.
gcc-phat · reference: clean song track · confidence (batch) mid-20s – 353
Tanishka
Fifteen clips, one that never found the song track.
gcc-phat · reference: clean song track · confidence (batch) mid-20s – 353
Anishka & Arshiya
Two clips short of a full lock — the lowest ratio in the queue.
gcc-phat · reference: clean song track · confidence (batch) mid-20s – 353
My family
The groom's side. Later became one of the four fully polished multicam edits.
gcc-phat · reference: clean song track · confidence (batch) mid-20s – 353
Shatakshi Joshi
Short and sparsely covered; three angles was the whole story.
gcc-phat · reference: clean song track · confidence (batch) mid-20s – 353
Vaidehi & Mrunal
Two minutes, seven angles locked to the song track.
gcc-phat · reference: clean song track · confidence (batch) mid-20s – 353
Avni & Divija
Fewer cameras pointed here, and all but one of them synced.
gcc-phat · reference: clean song track · confidence (batch) mid-20s – 353
Shruti & Shreeja
The shortest in the queue — under a minute, two usable angles.
Track lengths are the performance duration, not per-clip runtimes, and the indent on an unlocked angle marks “no lock found” — it is not a measured offset. Per-clip offsets and per-performance confidences were never recorded, so none are drawn: the story reports one batch band, mid-20s to 353, and that is all this shows. Angles are counts, not camera identities.