From 9bfb99cc58685006c2ced9ae97a2fe48122b475a Mon Sep 17 00:00:00 2001 From: Matt McKay Date: Wed, 12 Aug 2026 17:00:59 +1000 Subject: [PATCH] Corrections from the QuantEcon/workspace-lectures#37 validation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two record defects found by the independent validation, neither caught by the strict audit — it reconciles manifests, migration.yml and the scan, and cannot see a dead annotation key or a wrong number in prose. **Two dead orphan keys.** `scripts/audit_annotations.yml` still carried `lecture-wasm:lectures/_static/lecture_specific/{inequality/usa-gini…, simple_linear_regression/life-expectancy…}` as `mirror-orphan`, with notes saying "wasm's reads intro's copy by URL". Both files were deleted in QuantEcon/lecture-wasm#61 and wasm now reads data-lectures, so the keys name nothing and the notes describe a state that ended. Same class as the `lecture-wasm:lectures/graph.txt` key removed in #77 — these two were missed there because that PR was scoped to graph.txt. **The "8 repos" figure was wrong and no counting rule produces it.** PLAN.md's graph.txt deletion caveat said the blob sits in 8 repos. Re-derived by the validation: **7** hold it byte-identically (4,691 B, sha256 046759fb…), and two more — QuantEcon.jl and QuantEcon.lectures.code — hold a 4,692-byte variant differing by a single trailing space, giving 9 under a looser rule. Corrected to 7 with the variant named, so the next person sweeping does not have to rediscover why the count will not reconcile. The figure mattered because that sentence is the caveat gating a deletion. Strict audit exit 0 with zero warnings; catalog gate green. Both defects, and the reasoning behind the numbers, are recorded on QuantEcon/workspace-lectures#37. --- PLAN.md | 2 +- scripts/audit_annotations.yml | 6 ------ 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/PLAN.md b/PLAN.md index 38713bb..50e3b38 100644 --- a/PLAN.md +++ b/PLAN.md @@ -221,7 +221,7 @@ The remaining work decomposes by **consuming series** rather than by hosting pat | **X — orphan sweep** | 26 committed orphans across 6 repos — dp 10, programming 5, wasm 5, intro 3, python.myst 2, `continuous_time_mcs` 1 | per repo | that repo's repoints landing first | | **Y — consumer interface (`qeld`)** | the `qeld` package, Q1–Q7 of `PLAN-QELD-PACKAGE.md` — audit support, the package, pilots, then adoption by win; QEP graduation stays | — | nothing — re-scoped 2026-08-12 (D11): the DNS → custom domain → URL-sweep sequence this row used to carry is retired | -**`graph.txt` was closed out as a non-migration (2026-08-12).** It is synthetic teaching data — `provenance: toy`, null in every real provenance field — and the shortest-path exercise teaches its format by quoting the first line, so the data has to stay visible on the page. Hosting it here would have put a toy in a registry that exists to carry provenance. Instead `lecture-wasm` stopped fetching intro's committed copy over the network and embeds it with `%%file` like every sibling ([QuantEcon/lecture-wasm#63](https://github.com/QuantEcon/lecture-wasm/pull/63)), which retired the last cross-repo read of that blob anywhere in the organisation. `graph.txt` consequently no longer appears as a scanned dataset at all. Four repos embed it via `%%file` — intro, dp, jax and wasm — and two of those (intro, dp) also commit a copy the cell overwrites before reading, so those two are shadowed orphans; jax and wasm commit none, which is the cleaner shape. The remaining committed copies (`lecture-intro.zh-cn`, the canary, `lecture-python.zh-cn`, `lecture-dp.monorepo`, `ipynb_pdf_constructor`) are read by nothing. Intro's committed copy is now deletable as Track X — but the same blob sits in 8 repos and is regenerated at 17 `%%file` sites, including archived `.rst` ancestors that `gh search code` cannot see, so that deletion needs its own per-repo reader sweep rather than an org-wide sweep. +**`graph.txt` was closed out as a non-migration (2026-08-12).** It is synthetic teaching data — `provenance: toy`, null in every real provenance field — and the shortest-path exercise teaches its format by quoting the first line, so the data has to stay visible on the page. Hosting it here would have put a toy in a registry that exists to carry provenance. Instead `lecture-wasm` stopped fetching intro's committed copy over the network and embeds it with `%%file` like every sibling ([QuantEcon/lecture-wasm#63](https://github.com/QuantEcon/lecture-wasm/pull/63)), which retired the last cross-repo read of that blob anywhere in the organisation. `graph.txt` consequently no longer appears as a scanned dataset at all. Four repos embed it via `%%file` — intro, dp, jax and wasm — and two of those (intro, dp) also commit a copy the cell overwrites before reading, so those two are shadowed orphans; jax and wasm commit none, which is the cleaner shape. The remaining committed copies (`lecture-intro.zh-cn`, the canary, `lecture-python.zh-cn`, `lecture-dp.monorepo`, `ipynb_pdf_constructor`) are read by nothing. Intro's committed copy is now deletable as Track X — but the same blob sits in **7** repos byte-identically (a further two, `QuantEcon.jl` and `QuantEcon.lectures.code`, hold a 4,692-byte variant differing by one trailing space) and is regenerated at 17 `%%file` sites, including archived `.rst` ancestors that `gh search code` cannot see, so that deletion needs its own per-repo reader sweep rather than an org-wide sweep. `lecture-dp`, `lecture-jax` and `continuous_time_mcs` are **not data consumers** — dp's 10 committed files are inherited orphans, jax embeds `graph.txt` via `%%file`, and continuous_time_mcs has one orphan scratch file. They appear only in Track X. diff --git a/scripts/audit_annotations.yml b/scripts/audit_annotations.yml index dd05da1..4e02934 100644 --- a/scripts/audit_annotations.yml +++ b/scripts/audit_annotations.yml @@ -319,12 +319,6 @@ committed_unreferenced: lecture-dp:lectures/_static/lecture_specific/pandas_panel/realwage.csv: kind: orphan note: inherited copy; the consuming lectures live in other repos and now read data-lectures - lecture-wasm:lectures/_static/lecture_specific/inequality/usa-gini-nwealth-tincome-lincome.csv: - kind: mirror-orphan - note: wasm's inequality reads intro's copy by URL - lecture-wasm:lectures/_static/lecture_specific/simple_linear_regression/life-expectancy-vs-gdp-per-capita.csv: - kind: mirror-orphan - note: wasm's simple_linear_regression reads intro's copy by URL lecture-wasm:lectures/datasets/GDP_per_capita_world_bank.csv: kind: mirror-orphan note: orphan in intro, mirrored into wasm