oven+recap: remote recap-build pipeline driven by audience configs
Oven side:
- recap-builder.mjs builds a recap mp4 from a single audience config (e.g. jeffrey-73h-2026-05-02). Same job/log/SSE shape as native-builder.mjs / papers-builder.mjs so the dashboard can render it without special-casing.
- recap-git-poller.mjs auto-triggers a build when recap/audience/*.mjs changes land on origin/main.
- server.mjs adds /recap-build endpoints (list, get, SSE stream, mp4 download, manual POST trigger, cancel) gated by OS_BUILD_ADMIN_KEY, and starts the recap git poller alongside the native + papers ones.
- deploy.fish scps the two new builder files to /opt/oven/.
Recap pipeline:
- New audience configs: jeffrey-24h-2026-05-01.mjs, jeffrey-73h-2026-05-02.mjs.
- New tooling: chat-fetch.mjs, gen-photos.mjs, test-slide.mjs.
- scout.mjs touch-up.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>