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.
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.
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.
The parts a diff skim won't tell you. Each one is deliberate — here's the reasoning.
media/originals/, never the 720p review proxy. An exported clip can therefore look sharper than what the reviewer saw when they drew their annotations.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.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.
6/6 — you can explain this change to whoever gets paged for it. Standard checklist below.
You missed the questions below. The gaps map straight back to the report: