Sub-issue of the 2026-08-10 work-plan tracker. Every rule that must hold on every run becomes a deterministic transform, homed in #172 's write-path choke point (pull it forward from Wave 2 — its Wave-3 trigger F23 fired via intro.zh-cn#285). Gated on D1 (global font mechanism): if global lands, #178 is unnecessary, #141 's injection half collapses, and #182 is the whole remaining job.
D1 (kickoff gate, moved from W0 2026-08-11) — decide the global font mechanism direction (env font + matplotlibrc is the better-verified route; IPython hook needs a verification spike). Determines the fate of Sync applies no localisation rules, so every organically-synced lecture lands with English figure labels and no font config #178 (unnecessary if global), init: i18n-font-config injection is nondeterministic (missed 5 of 37 lectures) and the font path is hard-coded #141 (collapses to emit-nothing), The #107 i18n-preservation guardrail is prompt prose and fails at scale — 21 lectures stripped, 9 now rendering tofu #182 (becomes the whole job). Context: Sync applies no localisation rules, so every organically-synced lecture lands with English figure labels and no font config #178 2026-07-24 comment + project-translation CJK review
The deterministic target-local-read guard is in neither the action bundle nor sync mode, and is blind to URL-form reads #253 — wire the target-local-read guard into the sync path, bundle it (plus a build-time assertion the bundle contains it — today grep -c findTargetLocalReads dist-action/index.js = 0), resolve same-repo raw URLs before the URL skip
The #107 i18n-preservation guardrail is prompt prose and fails at scale — 21 lectures stripped, 9 now rendering tofu #182 — deterministic i18n preservation: pre-write diff of target code cells; re-apply recognised adaptation lines (font registration/rcParams, LaTeX preamble/helpers, localised plot strings); # i18n markers stay a hint, not the signal
Sync carries text.usetex into CJK targets, where LaTeX cannot typeset the labels — a permanent, recurring build break #181 — strip/report text.usetex for scripts LaTeX can't typeset (currently no usetex awareness anywhere in src/)
French guillemets interior NBSP is prompt-only — needs a deterministic transform #217 — per-language typography rule list (fr guillemets interior NBSP; zh no-space around ——), applied pre-heading-map per tech-debt T2·3: Create the write-path choke point: finalizeTranslatedDocument #172 's placement constraints
Sync overwrites localised _toc.yml part captions with English, and nothing detects it #254 /Figure captions ship untranslated: 74 of 237 on lecture-python.zh-cn across 18 lectures (re-measured 2026-08-20; was 85 of 222) #255 shared predicate — one deterministic check: a target-language file must not carry a caption byte-identical to its source (covers _toc.yml part captions and mystnb caption: metadata). Caption translation per D1's outcome; repair of the existing 85 is a separate hand pass
init: i18n-font-config injection is nondeterministic (missed 5 of 37 lectures) and the font path is hard-coded #141 (path half) — font-path convention detection or --font-path (moot if D1 goes global)
Member issues: #141 #178 #181 #182 #217 #253 #255 · structural home #172
Generated by Claude Code
Sub-issue of the 2026-08-10 work-plan tracker. Every rule that must hold on every run becomes a deterministic transform, homed in #172's write-path choke point (pull it forward from Wave 2 — its Wave-3 trigger F23 fired via intro.zh-cn#285). Gated on D1 (global font mechanism): if global lands, #178 is unnecessary, #141's injection half collapses, and #182 is the whole remaining job.
grep -c findTargetLocalReads dist-action/index.js= 0), resolve same-repo raw URLs before the URL skip# i18nmarkers stay a hint, not the signaltext.usetexfor scripts LaTeX can't typeset (currently nousetexawareness anywhere insrc/)——), applied pre-heading-map per tech-debt T2·3: Create the write-path choke point:finalizeTranslatedDocument#172's placement constraints_toc.ymlpart captions and mystnbcaption:metadata). Caption translation per D1's outcome; repair of the existing 85 is a separate hand pass--font-path(moot if D1 goes global)Member issues: #141 #178 #181 #182 #217 #253 #255 · structural home #172
Generated by Claude Code