Summary#
Style audit of the lecture-python-advanced.myst series.
Audit date: 2026-08-19
Corpus snapshot:
b83d6da399Lectures audited: 68
Average overall score: 7.4 / 10
Average per-category scores: writing 4.6, math 5.8, code 7.3, figures 6.3, references 9.2, links 9.2, admon 10.0
JAX: out of scope — the
qe-jax-*rules targetlecture-jax.Judgment-review coverage: all lectures reviewed.
The lowest-scoring series in the corpus — 7.4 against a corpus mean of 7.7, with 43 of its
68 lectures at HIGH. Every one of those 43 is HIGH on a category floor rather than on its
overall: the lowest overall here is 5.6. The floor is Writing, not Math. Writing
averages 4.6 and sits at or below the ≤ 4 floor in 36 of the 43 HIGH lectures; Math
(5.8) floors 23 of them, Figures (6.3) 7. Writing was 7.3 in 2026-05; the fall to 4.6 is
the judgment layer, which that row does not fold in and this one folds into all 68 lectures,
so it is the series being assessed against more rules rather than a regression. Like for
like, on the evidence layer alone (history_mechanical.csv), Writing here is 7.3 → 7.4 and
Math 6.0 → 6.1. Exactly one full lecture reaches NONE (supply_demand_var, 8.6);
the other four are intro, status, zreferences and troubleshooting.
Most of what is under that Writing floor does not appear in the systemic table above.
qe-writing-008 (53 / 68, 2,223 occurrences) has the largest count in the series and the
lowest audit weight — it is a whitespace rule. The mechanical rules that actually move the
score are far smaller: qe-writing-001 (42 / 68, 155 occurrences) and qe-writing-004
(24 / 68, 109 occurrences), both High weight. The rest is judgment-only and so carries no
mechanical count at all — bold-and-italic use is flagged in 55 of the 68 lectures with 356
findings, clarity in 56, logical flow in 56, visual elements in 60. That is the densest
judgment load of any series, and no sweep touches it.
Math is what makes this series distinctive rather than what makes it worst. 5.8 is the
lowest Math average of any series against a corpus 7.0, and Math is at the floor in 23 of
the 43 HIGH lectures here against 64 of 197 corpus-wide. Two rules carry nearly all of it:
qe-math-002 (20 / 68, 671 occurrences) and qe-math-010 (proposed) (33 / 68, 682 occurrences),
each roughly 42 % of that rule’s corpus-wide total and each at the highest per-lecture
density in the corpus — 34 and 21 occurrences per affected lecture. 648 of the 671
transpose findings and 553 of the 682 operator findings fall inside the 23 Math-floored
lectures, concentrated in the LQ, filtering and robustness material: hs_recursive_models
(5.6, the series minimum and the second-lowest score in the corpus) carries 154 and 76 of
them by itself, robustness 117, doubts_or_variability 148.
A caveat specific to this series. 23 of these 68 lectures share a filename with
lecture-dp, and 18 are byte-identical at this snapshot — three times the
byte-identical overlap between lecture-dp and lecture-python.myst, and the largest in
the corpus. Those 18 hold 1,780 of this series’ 5,605 mechanical findings, and 15 of them
are HIGH here. Their mechanical counts agree exactly across the two series, which is the
check working; the judgment overlays differ in every one of the 18, and 12 land on a
different overall. So for these a finding here and a finding in lecture-dp are the same
finding, and one upstream edit clears both. Whether the corpus totals should de-duplicate
them is still open —
compliance-lecture-style#3.
The other five shared names (cons_news, opt_tax_recur, intro, status,
zreferences) have diverged, so each copy needs its own edit.
Priority distribution#
Priority |
Count |
% |
|---|---|---|
HIGH |
43 |
63.2% |
MEDIUM |
0 |
0.0% |
LOW |
20 |
29.4% |
NONE |
5 |
7.4% |
Top systemic issues across the series#
Ranked by how many of the series’ lectures each rule reaches.
qe-fig-005— Descriptive figure names for cross-referencing — 54 / 68 lectures, 203 occurrences.qe-writing-008— Remove excessive whitespace between words — 53 / 68 lectures, 2223 occurrences.qe-fig-001— Do not set figure size unless necessary — 47 / 68 lectures, 215 occurrences.qe-writing-001— Use one sentence per paragraph — 42 / 68 lectures, 155 occurrences.qe-fig-008— Use lw=2 for line charts — 40 / 68 lectures, 302 occurrences.qe-fig-003— No matplotlib embedded titles — 36 / 68 lectures, 149 occurrences.qe-ref-001— Use correct citation style — 35 / 68 lectures, 93 occurrences.qe-math-010(proposed) — Blackboard \mathbb{P}, \mathbb{E}, \mathbb{V} with braces — 33 / 68 lectures, 682 occurrences.qe-link-002— Use doc links for cross-series references — 26 / 68 lectures, 94 occurrences.qe-writing-004— Avoid unnecessary capitalization in narrative text — 24 / 68 lectures, 109 occurrences.
Clean across the series#
Checked rules with no violation anywhere in the series — the conventions this series already holds to.
qe-admon-002— Use dropdown class for solutionsqe-admon-003— Use tick count management for nested directivesqe-math-007— Use automatic equation numbering, not manual tagsqe-math-012(proposed) — Multiplication via \cdot or juxtaposition, never *
Series-level recommendations#
Writing first — it clears more HIGH lectures than anything else here. 17 of the 43 HIGH lectures have Writing as their only floored category, so they clear on this work alone; a further 15 need it alongside Math. It is three different jobs, cheapest first:
qe-writing-008(53 / 68, 2,223 occurrences) — a scriptable regex sweep, Low audit weight. The largest number in the series and the smallest effect on the score. Worth doing, in its own commit, but it will not lift a lecture off the floor by itself.qe-writing-001(42 / 68, 155 occurrences) andqe-writing-004(24 / 68, 109 occurrences) — both High weight, both reading passes. Splitting a paragraph changes its rhythm, and the capitalisation check is heuristic, so every hit needs an eye.The judgment-only writing rules — bold-and-italic use in 55 of the 68 lectures, clarity in 56, logical flow in 56, visual elements in 60. No script exists, and none can. This is the bulk of the 4.6 and it is a per-lecture reading pass.
Math second — one notation pass over the LQ, filtering and robustness cluster.
qe-math-002(20 / 68, 671 occurrences) andqe-math-010(proposed) (33 / 68, 682 occurrences) are both Very-high weight and both concentrated in the 23 Math-floored lectures, which hold 648 and 553 of those occurrences. Semi-scriptable:'→^\tophas a derivative-prime exception, so a blind substitution is wrong.qe-math-011(proposed) (18 / 68, 95 occurrences) andqe-math-003(15 / 68, 113 occurrences) fall out of the same pass. On its own this clears only the 4 lectures whose sole floor is Math (cagan_rational_expectations,classical_filtering,lucas_asset_pricing_dles,markov_jump_lq) — but combined with item 1 it reaches 36 of the 43.qe-math-010(proposed) andqe-math-011(proposed) belong in the registry before the rewrite, and that part is upstream work. Both are proposed rules rather than registry rules, offered in action-style-guide#18. Rewriting 682 operator occurrences against a rule the PR-time checker does not enforce leaves nothing to hold them in place afterwards.qe-math-010(proposed) is the strongest case in that set of seven, and this series is its single largest concentration — the evidence for adopting it is here.Coordinate the 18 byte-identical lectures with
lecture-dp. 15 of them are HIGH here — 13 Writing-floored, 7 Math-floored — and they include the two largest whitespace sites in the series,calvoat 242 occurrences andcalvo_machine_learnat 193. One edit, two PRs, same subject and title in both repos. Doing them independently doubles the reading and drives the two copies further apart.Figures last. All 7 Figures-floored lectures also have Writing or Math at the floor, so none of them clears on Figures work alone.
qe-fig-001(47 / 68, 215 occurrences) andqe-fig-008(40 / 68, 302 occurrences) are Low-weight mechanical sweeps;qe-fig-005(54 / 68, 203 occurrences) needs a name chosen per figure, andqe-fig-003(36 / 68, 149 occurrences) a caption written per title, so both are reading passes despite being mechanically detected.Start with
hs_recursive_models(5.6), thenentropyandsmoothing(6.0 each) andknowing_forecasts_of_others(6.1) — all four are Writing and Math at the floor together.match_transport(6.1) is the exception in the bottom five: its Math is 9.5 and its floors are Writing and Figures.Not urgent. The series’ only
build_riskrow —qe-math-006inasset_pricing_lph, 2 occurrences — is a bare top-level\begin{align}, which this pass reclassified corpus-wide as a convention outlier rather than a build break.
Lectures ranked by priority (lowest score first)#
Scores are 0–10 per category; Overall is the mean of the in-scope categories, and Priority follows spec §4. A dash means the category is not applicable to that lecture. Click a lecture for its full report.
# |
Lecture |
Writing |
Math |
Code |
Figures |
References |
Links |
Admon |
Overall |
Priority |
|---|---|---|---|---|---|---|---|---|---|---|
1 |
3 |
3 |
— |
— |
8.5 |
8 |
— |
5.6 |
HIGH |
|
2 |
3 |
3 |
— |
7 |
8.5 |
8.5 |
— |
6.0 |
HIGH |
|
3 |
3 |
3 |
7.5 |
5 |
10 |
7.5 |
— |
6.0 |
HIGH |
|
4 |
3 |
3 |
6 |
9 |
7.5 |
8 |
— |
6.1 |
HIGH |
|
5 |
3 |
9.5 |
4.5 |
3 |
8.5 |
8 |
— |
6.1 |
HIGH |
|
6 |
3 |
6 |
7 |
4 |
7 |
10 |
— |
6.2 |
HIGH |
|
7 |
5 |
3 |
7 |
5.5 |
8.5 |
9 |
— |
6.3 |
HIGH |
|
8 |
4 |
4.5 |
7 |
6 |
7.5 |
9 |
— |
6.3 |
HIGH |
|
9 |
3 |
3 |
5.5 |
7.5 |
8.5 |
7.5 |
10 |
6.4 |
HIGH |
|
10 |
3.5 |
4 |
6.5 |
8 |
9 |
7.5 |
— |
6.4 |
HIGH |
|
11 |
5 |
3.5 |
7.5 |
4 |
8.5 |
10 |
— |
6.4 |
HIGH |
|
12 |
3 |
3 |
7 |
4 |
10 |
8.5 |
10 |
6.5 |
HIGH |
|
13 |
5.5 |
3.5 |
7 |
3.5 |
9 |
7.5 |
10 |
6.6 |
HIGH |
|
14 |
3 |
4.5 |
8.5 |
6 |
10 |
7.5 |
— |
6.6 |
HIGH |
|
15 |
3.5 |
5.5 |
7.5 |
6 |
8.5 |
10 |
— |
6.8 |
HIGH |
|
16 |
3.5 |
4 |
7.5 |
5 |
10 |
7.5 |
10 |
6.8 |
HIGH |
|
17 |
3 |
3 |
7.5 |
6.5 |
10 |
7.5 |
10 |
6.8 |
HIGH |
|
18 |
5.5 |
3 |
6 |
5.5 |
8.5 |
10 |
10 |
6.9 |
HIGH |
|
19 |
4 |
6 |
7 |
5.5 |
9 |
7.5 |
10 |
7.0 |
HIGH |
|
20 |
3 |
3 |
7 |
7 |
9 |
10 |
10 |
7.0 |
HIGH |
|
21 |
3 |
7.5 |
7.5 |
4.5 |
10 |
10 |
— |
7.1 |
HIGH |
|
22 |
3.5 |
5.5 |
7.5 |
5.5 |
7.5 |
10 |
10 |
7.1 |
HIGH |
|
23 |
3 |
5.5 |
7.5 |
7 |
8.5 |
8 |
10 |
7.1 |
HIGH |
|
24 |
4 |
5.5 |
7.5 |
4 |
10 |
9 |
10 |
7.1 |
HIGH |
|
25 |
3.5 |
3 |
6 |
8 |
10 |
10 |
10 |
7.2 |
HIGH |
|
26 |
5.5 |
7 |
7.5 |
5 |
8.5 |
10 |
— |
7.2 |
LOW |
|
27 |
5.5 |
4 |
8.5 |
7 |
8.5 |
10 |
— |
7.2 |
HIGH |
|
28 |
4 |
7.5 |
7.5 |
8 |
8.5 |
8 |
— |
7.2 |
HIGH |
|
29 |
5 |
3 |
9 |
3.5 |
10 |
10 |
10 |
7.2 |
HIGH |
|
30 |
4.5 |
5.5 |
5.5 |
5 |
10 |
10 |
10 |
7.2 |
LOW |
|
31 |
4 |
4 |
7 |
6 |
10 |
10 |
10 |
7.3 |
HIGH |
|
32 |
5 |
4.5 |
7 |
4.5 |
10 |
10 |
10 |
7.3 |
LOW |
|
33 |
3 |
8 |
5 |
5 |
10 |
10 |
10 |
7.3 |
HIGH |
|
34 |
3 |
7.5 |
7.5 |
7 |
9 |
10 |
— |
7.3 |
HIGH |
|
35 |
3 |
7.5 |
7 |
6 |
10 |
8 |
10 |
7.4 |
HIGH |
|
36 |
4.5 |
3.5 |
10 |
— |
8.5 |
8 |
10 |
7.4 |
HIGH |
|
37 |
6 |
7 |
6.5 |
6 |
9 |
7 |
10 |
7.4 |
LOW |
|
38 |
4 |
3 |
7 |
9 |
9 |
10 |
10 |
7.4 |
HIGH |
|
39 |
4.5 |
5.5 |
8.5 |
4.5 |
9 |
10 |
10 |
7.4 |
LOW |
|
40 |
4 |
3 |
10 |
7 |
10 |
8 |
10 |
7.4 |
HIGH |
|
41 |
4.5 |
7.5 |
8.5 |
6.5 |
10 |
8 |
— |
7.5 |
LOW |
|
42 |
3 |
9 |
8.5 |
6 |
8.5 |
10 |
— |
7.5 |
HIGH |
|
43 |
4 |
4 |
5 |
9.5 |
10 |
10 |
10 |
7.5 |
HIGH |
|
44 |
4.5 |
5 |
6 |
8 |
9 |
10 |
10 |
7.5 |
LOW |
|
45 |
3 |
8.5 |
7.5 |
7 |
9 |
10 |
— |
7.5 |
HIGH |
|
46 |
4 |
3 |
7.5 |
8 |
10 |
10 |
10 |
7.5 |
HIGH |
|
47 |
5.5 |
8.5 |
7.5 |
5 |
8.5 |
10 |
— |
7.5 |
LOW |
|
48 |
4 |
8.5 |
6.5 |
9 |
8.5 |
10 |
— |
7.8 |
HIGH |
|
49 |
7 |
7 |
9 |
5 |
8.5 |
10 |
— |
7.8 |
LOW |
|
50 |
3 |
6.5 |
8.5 |
8.5 |
10 |
8 |
10 |
7.8 |
HIGH |
|
51 |
4 |
6 |
7 |
8.5 |
10 |
10 |
10 |
7.9 |
HIGH |
|
52 |
6.5 |
5 |
5.5 |
9 |
10 |
10 |
10 |
8.0 |
LOW |
|
53 |
4.5 |
9.5 |
7.5 |
5.5 |
9 |
10 |
10 |
8.0 |
LOW |
|
54 |
5.5 |
8.5 |
6.5 |
7 |
9 |
10 |
10 |
8.1 |
LOW |
|
55 |
6 |
9 |
6 |
7 |
8.5 |
10 |
10 |
8.1 |
LOW |
|
56 |
5 |
9.5 |
7.5 |
5 |
10 |
10 |
10 |
8.1 |
LOW |
|
57 |
6 |
6 |
10 |
5.5 |
10 |
9 |
10 |
8.1 |
LOW |
|
58 |
5.5 |
9.5 |
7 |
5.5 |
10 |
10 |
10 |
8.2 |
LOW |
|
59 |
5 |
10 |
7 |
6.5 |
10 |
9 |
10 |
8.2 |
LOW |
|
60 |
7 |
5.5 |
7.5 |
8 |
10 |
10 |
10 |
8.3 |
LOW |
|
61 |
5.5 |
10 |
7.5 |
6 |
9 |
10 |
10 |
8.3 |
LOW |
|
62 |
6 |
9.5 |
7.5 |
7.5 |
10 |
8 |
10 |
8.4 |
LOW |
|
63 |
3 |
10 |
8.5 |
9.5 |
10 |
10 |
— |
8.5 |
HIGH |
|
64 |
8 |
8.5 |
7.5 |
6 |
10 |
10 |
10 |
8.6 |
NONE |
|
65 |
8.5 |
— |
— |
9 |
— |
9 |
— |
8.8 |
NONE |
|
66 |
10 |
— |
— |
— |
— |
10 |
— |
10.0 |
NONE |
|
67 |
10 |
— |
— |
— |
— |
10 |
— |
10.0 |
NONE |
|
68 |
10 |
— |
— |
— |
— |
10 |
— |
10.0 |
NONE |