Spec — Back-catalogue ops

2026-refresh › back-catalogue-ops · feature · created 2026-08-05 · spec · plan.html

Every fix to existing footage that needs no microphone: ~35 context cards rendered and stitched, the dossier-timestamped trims cut, the 720p catalogue upscaled, audio levelled, and the async imports assembled — batch, manifest-driven, resumable — until every kept lecture has a finished, conformant file (or is provably fine untouched). Runs entirely without Asim except spot reviews; uploads belong to udemy-publish.

Problem

P1~70 of the final course's lectures are existing footage carrying known, catalogued defects — the flags and reviews target exactly these.
The dossiers verdict every lecture: dated claims needing a corrective card (~35), dead or wrong seconds needing cuts (~15), the rest importing as-is. Every finding, timestamp and severity is already on file — this task is execution, not analysis.
P2The catalogue is visually and audibly inconsistent — 720p beside 1080p, loudness varying era to era.
2016/async masters are 720p; 2019 and new material are 1080p. Measured loudness differs by lecture (−14.6 here, −16 there). Students notice at every boundary.
P3Seventy render jobs cannot be artisanal — hand-run one-offs won't survive retries, redesigns or a second course.
Card copy changes, a design revision, one bad render — any of these must mean re-running a batch, not reconstructing folklore. The July pipeline scripts exist; the batch layer above them doesn't.

Solution at a glance

J0A manifest turns the dossier verdicts into finished files. One machine-readable manifest maps every kept lecture to its route (card · trim+card · upscale-only · as-is) and its inputs; the batch renders cards from the copy files, cuts from dossier timestamps, upscales, levels loudness, and emits conformance-checked finals into the course's media folder — idempotent and re-runnable at any time.

RouteWhat happens
card35corrective "2026 UPDATE" card rendered from copy file, stitched to the front
trim + card15dossier-cited seconds cut, card if the dossier demands one
upscale / level only~20lanczos 720p→1080p and/or loudnorm; content untouched
as-isrestproven untouched on Udemy; listed in the manifest as deliberate no-ops

Job stories

J1 · When the batch runs

J1.1Every card corrects exactly what its dossier flagged — copy written to the canonical register, rendered from the design-system template P1Catalogued defectscards are the fix for dated claims
Copy formula (canonical examples exist for IIFE, hoisting, Promise.all): headline names what changed; bullets state the 2026 truth; last line says why the lecture still earns its place. Every claim in card copy is verified by execution before render.
J1.2Every cut is cited — an edits log records file, in/out timestamps, and the dossier line justifying it P1Catalogued defectscuts execute dossier verdicts
Word-level Scribe timestamps make cuts precise; no cut exists without its written justification.
J1.3Every output passes conformance — 1080p30, limited range, AAC 48k, −16 LUFS, automatically checked P2Inconsistent catalogueone delivery spec for everything P3Seventy jobsthe check is part of the batch
The existing conform-check gates the batch; failures name themselves rather than shipping.
J1.4Re-running is always safe — the batch is idempotent; changing one card re-renders one lecture, not an afternoon P3Seventy jobsmanifest-driven, resumable
Manifest + content-hashing (or timestamps) skip finished work; a design revision late in the day is a re-run, not a crisis.

J2 · When Asim reviews

J2.1I spot-review samples, not seventy files — batches arrive as small review sets spanning every route, watch-and-approve P1Catalogued defectsthe fixes still need his eye
Per batch: a handful of clips (card joins, cut points) presented in one review page; approval is recorded, flags trigger fixes and a re-run.

J3 · When publish day comes

J3.1The manifest answers for every lecture — each triage row maps to a finished file or a deliberate no-op; zero unaccounted P3Seventy jobspublish needs a complete inventory
udemy-publish consumes the manifest directly — upload list, replaced-vs-new lecture mapping, durations.

Constraints

Deferred to plan

The definitive per-route lecture lists
Why it must wait: the production sheet still carries the deprecated tier framing; the plan reconciles triage + sheet + the August pivots into the manifest (which lectures card vs trim vs no-op, exact counts).
Whether untouched KEEPs get re-levelled audio
Why it must wait: needs measurement across the catalogue (spot checks found ~1.4 LU spread). Options: leave untouched (zero risk) · re-upload levelled versions (consistency, more replacements). QA data decides.

Decisions

Cards + trims over re-recording — the July strategy stands
Re-recording is the last resort; the dated-but-correct catalogue is fixed by cards and cuts. The slide lectures are the exception and live in slides-reskin.
Upscale = lanczos 1080p + light sharpen for the 720p catalogue
Decided 2026-08-04 from the A/B Asim reviewed; Real-ESRGAN rejected as unnecessary risk to screencast text.
Event-loop card content comes from the Node-24 verification
The claim register was re-run in July; cards cite what actually prints, not what the 2018 narration assumed.

Estimated files / edits

Size: M–L (batch volume, small surface) — manifest + batch runner in packages/scripts/, ~35 card copy files, edits log, review pages; outputs to courses/adv-js/media/out/.