Quiz me before I merge
Asking for a report with a quiz you must pass turns "I skimmed the diff" into verified understanding — the artifact won't let you feel done until you actually are.
I want to make sure I understand everything that happened in this change before I merge. Give me an HTML report on the export-feature diff — context, intuition, what was done — with a quiz at the bottom that I must pass.
Clip export: what changed and why
A 14-file diff that adds server-side clip export to review threads. Read the three sections below, then pass the quiz. If you can't, you're not ready to merge — and that's the point.
The mental model
One diagram is worth 14 files: where an export request goes now vs. before.
Before this change, "export a clip" meant the browser stitched frames client-side with MediaRecorder and uploaded the result — slow, tab-locked, and broken on Safari. Now the client only requests an export; a new worker renders it server-side from the original media and the client polls a job until a signed download URL appears.
Three non-obvious behaviors this introduces
The parts a diff skim won't tell you. Each one is deliberate — here's the reasoning.
Exports render from the original upload, not the proxy the reviewer watched
media/originals/, never the 720p review proxy. An exported clip can therefore look sharper than what the reviewer saw when they drew their annotations.Export jobs survive a worker crash — via a visibility timeout, not retries
locked_until = now() + 10min. If the worker dies mid-render, no retry fires; the lock simply expires and the next idle worker picks the job up from scratch.Download URLs expire after 24 hours — the export itself lives 7 days
GET /api/exports/:id is valid for 24h, but the underlying object isn't deleted until a 7-day lifecycle rule fires. Re-hitting the endpoint mints a fresh URL with no re-render.Workspace-scoped signed-URL auth. GET /api/exports/:id does no permission check of its own — it reuses the requireWorkspaceMember middleware that already guards every media route. If that middleware's session handling ever changes (there's an open ticket, BL-2214, about guest reviewer sessions), export downloads change with it. Nothing in this diff would flag that.
Six questions before you merge
Cleared to merge
6/6 — you can explain this change to whoever gets paged for it. Standard checklist below.
- ✓Understanding verified (this quiz, 6/6)
- ✓CI green on feature/clip-export · 412 tests
- ✓Migration 0142 reviewed — additive, no backfill
- ○Squash-merge with the summary above as the commit body
- ○Watch export-worker dashboards for 30 min post-deploy
- ○Note BL-2214 dependency in the merge comment
Not yet — re-read these sections
You missed the questions below. The gaps map straight back to the report: