Commit 23c6245
* FIX: execution and doc failures from the Anaconda 2026.07 cache build
Resolves the four failures reported in #182. All four are target-side
defects; the English source is healthy in every case.
likelihood_bayes — the font block called `mpl.font_manager.fontManager`
and `plt.rcParams` before `import matplotlib.pyplot as plt`. Newer
matplotlib no longer imports `font_manager` as a side effect of
`import matplotlib`, so this raised AttributeError (and would have
raised NameError on `plt`). Moved the pyplot import above both uses.
An audit of the font block across all 69 lectures found this the only
file with either ordering hazard.
kalman_2 — a `.text()` annotation drew the covariance matrix with
`\begin{bmatrix}`, which matplotlib mathtext cannot render (it supports
no LaTeX environments). Rewritten as `\left[ \substack{...} \right]`,
which renders an equivalent bracketed 2x2 matrix under mathtext, using
`\;` as the column separator rather than `&`. This keeps the
drop-usetex standard from #22 intact with no loss of information.
The lecture's other `\begin{bmatrix}` uses are inside `{math}` blocks,
rendered by MathJax, and are unaffected.
sir_model — the header directive had lost its argument: `{raw}` instead
of `{raw} jupyter`. The other 50 lectures carrying this directive kept
theirs.
ak_aiyagari — the file carried a stray fence at line 38 followed by a
duplicated copy of the original frontmatter, and a doubled closing
fence at EOF. The stray opener ran to line 56, swallowing both the H1
title and the `_admonition/gpu.md` include, which is what produced the
13 "headings start at H2" warnings. Removed both strays; the file's
fence structure now matches the English source exactly (122). The
`translation.title` field was also corrupt ("V, σ, μ") and has been set
to the lecture title. An edition-wide sweep found no other file with
unbalanced fences.
The last two are content corruption introduced in translation and
warrant engine issues against action-translation; they are not covered
by the existing #107/#115/#116/#117 set.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* CI: align build safety with the English source repo
Resolves #184. Brings ci.yml's execution safety in line with
lecture-python.myst, which is the standard the fleet builds to.
- `-n -W --keep-going` on the sphinx-tojupyter build. Previously this
step ran with no flags, so a notebook whose cells raised still exited
zero and the job went green. That is how the two execution breaks in
#182 (likelihood_bayes, kalman_2) reached main with passing CI.
- Upload Execution Reports (Download Notebooks), so a failure in that
step leaves a traceback artifact. Previously there was none, which is
why #182 had to be diagnosed from the weekly Build Cache workflow's
artifact rather than from CI directly.
- Clear stale Sphinx environment (`rm -rf _build/.doctrees`) before the
builds, matching the source repo. The equivalent was present here only
as a commented-out note.
The HTML artifact is renamed `execution-reports` -> `execution-reports-html`.
This is required, not cosmetic: upload-artifact@v7 runs with
`overwrite: false`, so adding a second upload under the same name would
collide when both steps fail in one run. The new names match the source
repo's convention (-notebooks / -latex / -html).
The PDF/LaTeX build is left commented out — see the issue for why that
one needs a human decision rather than mechanical alignment.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* CI: set -eo pipefail on the sphinx-tojupyter step
Addresses Copilot review feedback on #185.
`shell: bash -l {0}` is a custom shell spec, so GitHub does not inject
`-eo pipefail` — it only does that for the bare `shell: bash` shorthand,
which expands to `bash --noprofile --norc -eo pipefail {0}`. Without it,
this step's exit code is that of the trailing `cp`, so a failing
`jb build` was masked.
`--keep-going` made that worse rather than better: it forces Sphinx to
emit output despite the errors, so the .ipynb files exist, `cp` succeeds,
and the step goes green. The flag added in this PR to surface failures
was producing the artifacts that hid them.
Scope is exactly one step — an audit of ci.yml shows every other step is
either single-command (its exit code is the command's) or uses the
default shell, which does carry `-e`.
Note the English source repo lecture-python.myst has the byte-identical
pattern, so this is inherited from the standard rather than introduced
here, and it deviates from the strict parity this PR set out to
establish. Reported upstream so the standard can catch up.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent ebdf378 commit 23c6245
1 file changed
Lines changed: 17 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
47 | 47 | | |
48 | 48 | | |
49 | 49 | | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
50 | 53 | | |
51 | 54 | | |
52 | 55 | | |
| |||
63 | 66 | | |
64 | 67 | | |
65 | 68 | | |
66 | | - | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
67 | 76 | | |
68 | 77 | | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
69 | 84 | | |
70 | | - | |
71 | | - | |
72 | | - | |
73 | 85 | | |
74 | 86 | | |
75 | 87 | | |
| |||
78 | 90 | | |
79 | 91 | | |
80 | 92 | | |
81 | | - | |
| 93 | + | |
82 | 94 | | |
83 | 95 | | |
84 | 96 | | |
| |||
0 commit comments