Independent validation of the migration work landed on 2026-08-06. Everything below was verified during the work by the same agent that did it — this issue exists so it can be checked by someone who was not.
Bias to test for: most claims here were verified by running scripts/build_audit.py, which is also the tool the work was built around. A validation pass should confirm reader-facing outcomes independently of that tool wherever possible — fetch the URLs, open the notebooks, read the published pages.
What landed
| Repo |
PRs merged |
data-lectures |
#36, #38, #41, #43, #44 |
lecture-python-intro |
#823, #824 (#825 open) |
lecture-wasm |
#52, #53 |
workspace-lectures |
#22 |
Issues opened: #35, #37, #39, #40, #42 here; workspace-lectures#23. Closed: #20. Rewritten: #8, workspace-lectures#14.
Publishes: publish-2026aug06 (set 1), publish-2026aug06b (set 2).
1. Reader-facing outcomes — check these first, without the audit tool
Two datasets moved. The claim is that no reader-visible output changed and nothing 404s.
Known live-site history worth confirming is now clean: between set 1 merging and publish-2026aug06, the published long_run_growth notebook pointed at a deleted file and returned 404. That window is closed, but it is the single clearest thing to verify independently.
2. Data integrity — the claim is byte-identity
Every repoint asserted the served bytes are identical to what the lecture used before.
3. The mpd2020.xlsx provenance finding — the highest-value claim to re-test
Claim: the file is not a pristine Maddison release. All 21,682 data rows match upstream, but three header labels on the Regional data sheet were edited locally, and long_run_growth depends on them via header=(0,1,2).
This one matters because it determines the dataset's class (constructed, not verbatim) and is recorded as the first entry in the upstream-delta register (#39).
4. Manifests — 8 written in #38
5. Tracker consistency
6. The two blind spots — verify they are real, and that the counts are right
#42 — the audit cannot see prose references. Claim: 12 references ({download} directives, markdown file links, directory links) point at files the migration will delete, and none fails any build.
Repoint rule 3 — the published site lags main. Claim: 7 of 9 manifest repos publish on a publish* tag, with gaps up to 29 days.
7. Decisions to sanity-check before they are built on
These were settled today and Track A's remaining work depends on them.
8. Things deliberately not done
Confirm each was a decision rather than an oversight.
Where the reasoning lives
PLAN.md (tracks, repoint rules, phases) · AGENTS.md (working rules) · #8 (scaffolding checklist) · workspace-lectures#14 (workspace tracker) · workspace-lectures#23 (next work plan). PR descriptions carry the per-change reasoning and are the best record of why each decision was made.
Independent validation of the migration work landed on 2026-08-06. Everything below was verified during the work by the same agent that did it — this issue exists so it can be checked by someone who was not.
Bias to test for: most claims here were verified by running
scripts/build_audit.py, which is also the tool the work was built around. A validation pass should confirm reader-facing outcomes independently of that tool wherever possible — fetch the URLs, open the notebooks, read the published pages.What landed
data-lectureslecture-python-introlecture-wasmworkspace-lecturesIssues opened: #35, #37, #39, #40, #42 here; workspace-lectures#23. Closed: #20. Rewritten: #8, workspace-lectures#14.
Publishes:
publish-2026aug06(set 1),publish-2026aug06b(set 2).1. Reader-facing outcomes — check these first, without the audit tool
Two datasets moved. The claim is that no reader-visible output changed and nothing 404s.
intro.quantecon.org/long_run_growth.htmlandinflation_history.htmlrender, figures intactdata-lecturesand succeed{download}link forchapter_3.xlsxininflation_history— it should serve the spreadsheet, not 404inflation_history— should reach data-lectures'CATALOG.mdKnown live-site history worth confirming is now clean: between set 1 merging and
publish-2026aug06, the publishedlong_run_growthnotebook pointed at a deleted file and returned 404. That window is closed, but it is the single clearest thing to verify independently.2. Data integrity — the claim is byte-identity
Every repoint asserted the served bytes are identical to what the lecture used before.
mpd2020.xlsx,longprices.xls,chapter_3.xlsx: fetch fromgithub.com/QuantEcon/data-lectures/raw/main/lectures/<file>and comparesha256againstintegrity.sha256in its sidecar manifestlecture-python-intro's git history (git show <pre-merge-sha>:lectures/datasets/<file> | shasum -a 256)sha256values were not simply copied from the file they describe without an independent check3. The
mpd2020.xlsxprovenance finding — the highest-value claim to re-testClaim: the file is not a pristine Maddison release. All 21,682 data rows match upstream, but three header labels on the
Regional datasheet were edited locally, andlong_run_growthdepends on them viaheader=(0,1,2).rug.nl/ggdc/historicaldevelopment/maddison/data/mpd2020.xlsxand diff cell-by-cell againstlectures/mpd2020.xlsx4OWZWHTE5HXBBF4XLCCQTGDXY4HXOGOK) should be unchanged across snapshots from 2021-01-10 to 2026-01-02, i.e. predating the 2023-03-23 commit that added our copylong_run_growth's regional-data outputThis one matters because it determines the dataset's
class(constructed, notverbatim) and is recorded as the first entry in the upstream-delta register (#39).4. Manifests — 8 written in #38
filenamematches the sidecar's own name (noteload_manifests()keys onfilename, so a typo makes a manifest silently invisible)mpd2020.xlsxconstructed;longprices.xls/assignat/dette/fig_3verbatim;chapter_3.xlsxconstructed(hand-transcribed from print);caron.npy/nom_balances.npyconstructedwithbuilder_status: unrecovered.npyfiles claim no recoverable provenance. Re-test that: they should not be extractable from any column of the committed Sargent–Velde workbookssheets:blocks match what the lectures actually read —read_asshould reproduce the recorded shapepositional_reads: trueis set on the three French Revolution workbooks, which are read withheader=Noneplususecols/skiprows/nrows5. Tracker consistency
migration.ymlreads 13repointed/ 5landed; the 5 are exactly thefrench_revfilesrepointedrecord names the PRs that actually did the repointingCATALOG.mdis current (python scripts/build_catalog.pythengit diff --exit-code)scripts/build_audit.py all --strictpasses onmain6. The two blind spots — verify they are real, and that the counts are right
#42 — the audit cannot see prose references. Claim: 12 references (
{download}directives, markdown file links, directory links) point at files the migration will delete, and none fails any build.build_audit.pygenuinely does not report themfrench_rev.md:60-62(both repos) are still outstanding — they are set 3's problemRepoint rule 3 — the published site lags
main. Claim: 7 of 9 manifest repos publish on apublish*tag, with gaps up to 29 days.7. Decisions to sanity-check before they are built on
These were settled today and Track A's remaining work depends on them.
sources/-plus-plain-git storage design changesSCF_plus.dtais 99.1 MiB — within 0.9 MB of the hard block, and has no lecture consumergenerating_mini.mdreads its input fromhigh_dim_dataover the network — confirm, because archiving that repo without repointing it re-introduces a legacy-repo dependency silentlystr— notstring, notobject. Affects every future manifestdata.quantecon.orgis an AWS load balancer with no healthy targets — 503 on every hostname, not a live service8. Things deliberately not done
Confirm each was a decision rather than an oversight.
data.quantecon.orgis promoted (Licensing: record-and-track policy, and the per-dataset inventory for migration #35)business_cycle.mddumps (Do the business_cycle .md dumps belong in the published lectures/ tree? #13) — recommendation posted, decision not takenconsumers[].repo,source.doi,source.file_url,schema.sheetsand others are used by manifests but undocumented inmanifest-schema.ymlWhere the reasoning lives
PLAN.md(tracks, repoint rules, phases) ·AGENTS.md(working rules) · #8 (scaffolding checklist) · workspace-lectures#14 (workspace tracker) · workspace-lectures#23 (next work plan). PR descriptions carry the per-change reasoning and are the best record of why each decision was made.