You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Fixed
A title-slide greeting voiceover now survives clm voiceover extract (#242).
The title slide is generated by the j2 header / header_de / header_en
macro and carries no slide_id of its own; the greeting voiceover attaches by
the slide_id="title" convention. Previously extract wrote the companion
cell with no for_slide (its backward owner-walk skipped the j2 macro), so the
build merge dropped the narration — a hard error under --fail-on-error/CI —
and clm voiceover inline stranded it. Both sides now recognize the title
macro (reusing is_title_macro_cell / TITLE_SLIDE_ID): extract stamps for_slide="title", and the build merge / inline anchor a for_slide="title"
(or legacy slide_id="title" with no for_slide) voiceover to the title slide,
matching the inline-build output byte-for-byte. Companions extracted before the
fix merge without a re-extract. Adding slide_id to the macros (the issue's
alternative) is neither necessary nor sufficient — the merge runs before j2
expansion and the worker strips slide_id/for_slide from output.
load_worker_config no longer poisons the global config singleton (#223).
Applying CLI --workers overrides mutated get_config().worker_management —
a process-global singleton — in place, so a build/test that resolved to Docker
mode permanently flipped default_execution_mode to "docker" for every later
call in the process; a subsequent override-free build then built a Docker
executor with no image and raised ValueError: Docker execution mode requires 'image'. Order-dependent under pytest-xdist, so it surfaced as a rare CI
flake. The loader now deep-copies (model_copy(deep=True)) before applying
overrides, so each call is self-contained and the shared default can't be
poisoned.
Added
clm slides sync now reconciles a committed mismatched-id twin instead of
only refusing it (#228, strategy B). When a committed split pair shares a slide_id but gave one slide a different id on each half (e.g. a per-half assign-ids), sync previously refused the ambiguous both-directions bucket to
avoid silently doubling the slide (#226). With a correspondence verifier
available (the default --verify-cold-pairs when $OPENROUTER_API_KEY / $OPENAI_API_KEY is set), sync now cross-pairs the suspects by content
correspondence (the cheap Haiku verifier) and, for a confirmed twin, rewrites
the divergent id so both halves share one (EN-authority) — no manual fix needed.
Leftover suspects with no confirmed twin use a direction-guarded hybrid:
single-direction → cross-add the genuinely-distinct slide; both-direction →
defer. No provider or an unconfirmed pair → refuse, exactly as before (never
bakes a wrong id). Surfaced as a reconcile proposal in the plan / --json /
dry-run.