From 176845146c28c5d8d37bfccc38757795a82d33fc Mon Sep 17 00:00:00 2001 From: Matt McKay Date: Wed, 12 Aug 2026 10:44:44 +1000 Subject: [PATCH] Flip life-expectancy and usa-gini to repointed (wave A4) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit All four consumers now read raw.githubusercontent.com/QuantEcon/data-lectures/main/lectures/, so the two A4 records move landed -> repointed and both manifests gain their consumers. THIS PR IS THE WAVE'S ACCEPTANCE TEST, not bookkeeping after it. Run locally in both directions against the four now-merged consumer repos, before pushing: status: landed -> exit 1, 2 warnings ("marked landed but some consumer already reads data-lectures") status: repointed -> exit 0, 0 warnings So the red window was real, opened when the first consuming PR merged, and this closes it. A non-zero strict audit also skips the Pages deploy, and Pages serves lectures/ as well as the dashboard, so the served data tree would have gone stale alongside it. Repoints recorded: QuantEcon/lecture-python-intro#834, QuantEcon/lecture-wasm#61, QuantEcon/lecture-intro.zh-cn#294, QuantEcon/test-actions-lecture-intro#56. All four consumers are recorded per manifest, not the two the scan can see — the convention set by the P3 fold. lecture-intro.zh-cn and test-actions-lecture-intro are outside SCAN_REPOS, so migration.yml and the manifests are the only place they exist. Safe because build_audit derives its own consumer list from the scan and never asserts on the manifest's; the audit's own count for these two files stays 2. The generated lecture-python-intro.notebooks mirror is a FIFTH reference-holder and is deliberately not listed: nobody repoints it, and it self-heals after intro's next publish tag. Recorded as a comment in both manifests so the omission reads as a decision rather than an oversight. Post-flip figures: migrated 24 -> 26, committed_files 43 -> 41 (lecture-wasm deleted its two mirror-orphans in its repoint PR), orphans unchanged at 26, CATALOG.md "26 read by lectures today" with no awaiting-repoint remainder. consumed-file-check: 26 manifests, 27 files hash-checked, 0 errors. Catalog freshness gate green. WHAT THIS DOES NOT DO: nothing is deleted. lecture-python-intro still holds the only live copy of both files, and deleting them is gated on FOUR publishes — intro, lecture-intro.zh-cn and the canary are all tag-gated, and merging a repoint changes main, not a published site. lecture-wasm self-heals on merge. Track A's third item, graph.txt, is untouched and is not a data-lectures migration at all. --- CATALOG.md | 6 ++-- .../life-expectancy-vs-gdp-per-capita.csv.yml | 22 ++++++++----- .../usa-gini-nwealth-tincome-lincome.csv.yml | 20 ++++++++---- migration.yml | 32 ++++++++++++++++--- 4 files changed, 59 insertions(+), 21 deletions(-) diff --git a/CATALOG.md b/CATALOG.md index f6ab1d0..a39368b 100644 --- a/CATALOG.md +++ b/CATALOG.md @@ -6,7 +6,7 @@ The dataset registry, **auto-generated** from the sidecar manifests (`lectures/*.yml`). Do not edit by hand — run `python scripts/build_catalog.py`. A dataset appears here once it has a manifest, which may be before its consuming lectures are repointed — an empty **Used by** column means the file is here and documented but no lecture reads it from this repo yet. Files still to migrate are tracked in [PLAN.md](PLAN.md). -**26 datasets** · 24 read by lectures today, 2 awaiting repoint · 111.9 MB total · 21 permitted / 5 restricted redistribution +**26 datasets** · 26 read by lectures today · 111.9 MB total · 21 permitted / 5 restricted redistribution | Dataset | Class | Source | Licence | Redist. | Integrity | Builder | Size | Used by | | --- | --- | --- | --- | --- | --- | --- | --- | --- | @@ -28,14 +28,14 @@ The dataset registry, **auto-generated** from the sidecar manifests (`lectures/* | [**japan_deaths_by_age.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/japan_deaths_by_age.csv)
Japan — deaths by single year of age, 2023 | constructed | [United Nations, Department of Economic and Social Affairs, Population Division — World Population Prospects 2024](https://population.un.org/wpp/downloads) | CC BY 3.0 IGO | ✅ permitted | ✅ verified | ✅ committed | 1.7 KB | [lecture-python-intro · observed_distributions.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/observed_distributions.md)
[lecture-python-intro · fitting_distributions.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/fitting_distributions.md) | | [**japan_earthquakes.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/japan_earthquakes.csv)
Japan region — earthquakes of magnitude 5 and above, 2000-2024 | constructed | [Advanced National Seismic System (ANSS) Comprehensive Earthquake Catalog (ComCat), US Geological Survey](https://earthquake.usgs.gov/earthquakes/search/) | US Government work — public domain | ✅ permitted | ✅ verified | ✅ committed | 172.8 KB | [lecture-python-intro · fitting_distributions.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/fitting_distributions.md) | | [**japan_population_by_age.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/japan_population_by_age.csv)
Japan — population by single year of age, 2024 | constructed | [Population Estimates, Statistics Bureau of Japan, Ministry of Internal Affairs and Communications](https://www.stat.go.jp/english/data/jinsui/index.html) | Japan Statistics Bureau terms of use | ✅ permitted | ✅ verified | ✅ committed | 1.3 KB | [lecture-python-intro · prob_dist.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/prob_dist.md) | -| [**life-expectancy-vs-gdp-per-capita.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/life-expectancy-vs-gdp-per-capita.csv)
Life expectancy vs GDP per capita — Our World in Data grapher export | verbatim | [Our World in Data — "Life expectancy vs. GDP per capita" grapher](https://ourworldindata.org/grapher/life-expectancy-vs-gdp-per-capita) | | ✅ permitted | ⇄ diverged | n/a (verbatim) | 2.0 MB | — | +| [**life-expectancy-vs-gdp-per-capita.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/life-expectancy-vs-gdp-per-capita.csv)
Life expectancy vs GDP per capita — Our World in Data grapher export | verbatim | [Our World in Data — "Life expectancy vs. GDP per capita" grapher](https://ourworldindata.org/grapher/life-expectancy-vs-gdp-per-capita) | | ✅ permitted | ⇄ diverged | n/a (verbatim) | 2.0 MB | [lecture-python-intro · simple_linear_regression.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/simple_linear_regression.md)
[lecture-wasm · simple_linear_regression.md](https://github.com/QuantEcon/lecture-wasm/blob/main/lectures/simple_linear_regression.md)
[lecture-intro.zh-cn · simple_linear_regression.md](https://github.com/QuantEcon/lecture-intro.zh-cn/blob/main/lectures/simple_linear_regression.md)
[test-actions-lecture-intro · simple_linear_regression.md](https://github.com/QuantEcon/test-actions-lecture-intro/blob/main/lectures/simple_linear_regression.md) | | [**lingcod_msy_recovery.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/lingcod_msy_recovery.csv)
Pacific Coast lingcod — biomass and fishing pressure relative to MSY | constructed | [RAM Legacy Stock Assessment Database](https://www.ramlegacy.org/) | CC BY 4.0 | ✅ permitted | ⚠️ unverifiable | ⚠️ unrecovered | 2.3 KB | [lecture-python-intro · msy_fishery.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/msy_fishery.md) | | [**longprices.xls**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/longprices.xls)
Price levels in four hard-currency countries, 1600-2000 | verbatim | [Sargent and Velde, "The Big Problem of Small Change" — supporting data](https://press.princeton.edu/books/hardcover/9780691116358/the-big-problem-of-small-change) | | ✅ permitted | ⚠️ unverifiable | n/a (verbatim) | 379.5 KB | [lecture-python-intro · inflation_history.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/inflation_history.md)
[lecture-wasm · inflation_history.md](https://github.com/QuantEcon/lecture-wasm/blob/main/lectures/inflation_history.md) | | [**mpd2020.xlsx**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/mpd2020.xlsx)
Maddison Project Database 2020 — GDP per capita and population, 1 CE to 2018 | constructed | [Maddison Project Database, version 2020](https://www.rug.nl/ggdc/historicaldevelopment/maddison/releases/maddison-project-database-2020) | CC BY 4.0 | ✅ permitted | ⇄ diverged | ⚠️ unrecovered | 1.7 MB | [lecture-python-intro · long_run_growth.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/long_run_growth.md)
[lecture-wasm · long_run_growth.md](https://github.com/QuantEcon/lecture-wasm/blob/main/lectures/long_run_growth.md) | | [**nom_balances.npy**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/nom_balances.npy)
French Revolution — monthly nominal assignat balances, 1789-1796 | constructed | unrecorded | | ✅ permitted | ⚠️ unverifiable | ⚠️ unrecovered | 1.4 KB | [lecture-python-intro · french_rev.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/french_rev.md)
[lecture-wasm · french_rev.md](https://github.com/QuantEcon/lecture-wasm/blob/main/lectures/french_rev.md) | | [**realwage.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/realwage.csv)
OECD real minimum wages — 32 countries, 2006–2016 | constructed | [OECD — Real minimum wages (RMW)](https://stats.oecd.org/Index.aspx?DataSetCode=RMW) | CC BY 4.0 | ✅ permitted | ⚠️ unverifiable | ⚠️ unrecovered | 118.7 KB | [lecture-python-programming · pandas_panel.md](https://github.com/QuantEcon/lecture-python-programming/blob/main/lectures/pandas_panel.md)
[lecture-python.myst · pandas_panel.md](https://github.com/QuantEcon/lecture-python.myst/blob/main/lectures/pandas_panel.md) | | [**us_adult_heights.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/us_adult_heights.csv)
United States — adult standing height by sex, NHANES 2015-2018 | constructed | [National Health and Nutrition Examination Survey (NHANES), US Centers for Disease Control and Prevention, National Center for Health Statistics](https://www.cdc.gov/nchs/nhanes/index.htm) | US Government work — public domain | ✅ permitted | ✅ verified | ✅ committed | 123.1 KB | [lecture-python-intro · prob_dist.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/prob_dist.md)
[lecture-python-intro · observed_distributions.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/observed_distributions.md)
[lecture-python-intro · fitting_distributions.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/fitting_distributions.md) | -| [**usa-gini-nwealth-tincome-lincome.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/usa-gini-nwealth-tincome-lincome.csv)
US Gini coefficients — net wealth, total income and labour income, 1950-2016 | constructed | [Derived from SCF_plus_mini.csv (this repo), an extract of the SCF+ panel](https://github.com/QuantEcon/data-lectures/blob/main/lectures/SCF_plus_mini.csv) | | ✅ permitted | ⚠️ unverifiable | committed-frozen | 1.2 KB | — | +| [**usa-gini-nwealth-tincome-lincome.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/usa-gini-nwealth-tincome-lincome.csv)
US Gini coefficients — net wealth, total income and labour income, 1950-2016 | constructed | [Derived from SCF_plus_mini.csv (this repo), an extract of the SCF+ panel](https://github.com/QuantEcon/data-lectures/blob/main/lectures/SCF_plus_mini.csv) | | ✅ permitted | ⚠️ unverifiable | committed-frozen | 1.2 KB | [lecture-python-intro · inequality.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/inequality.md)
[lecture-wasm · inequality.md](https://github.com/QuantEcon/lecture-wasm/blob/main/lectures/inequality.md)
[lecture-intro.zh-cn · inequality.md](https://github.com/QuantEcon/lecture-intro.zh-cn/blob/main/lectures/inequality.md)
[test-actions-lecture-intro · inequality.md](https://github.com/QuantEcon/test-actions-lecture-intro/blob/main/lectures/inequality.md) | --- diff --git a/lectures/life-expectancy-vs-gdp-per-capita.csv.yml b/lectures/life-expectancy-vs-gdp-per-capita.csv.yml index 7ef7f7c..c9da0d4 100644 --- a/lectures/life-expectancy-vs-gdp-per-capita.csv.yml +++ b/lectures/life-expectancy-vs-gdp-per-capita.csv.yml @@ -165,13 +165,19 @@ schema: Population (historical estimates): 4984 Continent: 61871 -consumers: [] - # Empty at `landed`, populated when wave A4's repoints merge. FIVE - # reference-holders, not the two the audit can see: lecture-python-intro, - # lecture-wasm, lecture-intro.zh-cn, QuantEcon/test-actions-lecture-intro, - # and the generated lecture-python-intro.notebooks mirror. Each consuming - # `.md` holds TWO executable reads — the `data_url` literal and a second - # `read_csv(data_url, usecols=cols)` further down. - +consumers: + # All four repointed 2026-08-12. lecture-intro.zh-cn and the canary are + # outside the audit's SCAN_REPOS, so they are recorded here or nowhere. + # The generated lecture-python-intro.notebooks mirror is a fifth + # reference-holder; it self-heals after a publish tag and is not a repo + # anyone repoints, so it is deliberately not listed. + - repo: QuantEcon/lecture-python-intro + file: lectures/simple_linear_regression.md + - repo: QuantEcon/lecture-wasm + file: lectures/simple_linear_regression.md + - repo: QuantEcon/lecture-intro.zh-cn + file: lectures/simple_linear_regression.md + - repo: QuantEcon/test-actions-lecture-intro + file: lectures/simple_linear_regression.md builder: null builder_status: not-applicable diff --git a/lectures/usa-gini-nwealth-tincome-lincome.csv.yml b/lectures/usa-gini-nwealth-tincome-lincome.csv.yml index 774b5c2..4c2b5bd 100644 --- a/lectures/usa-gini-nwealth-tincome-lincome.csv.yml +++ b/lectures/usa-gini-nwealth-tincome-lincome.csv.yml @@ -115,12 +115,20 @@ schema: date_range: {start: 1950, end: 2016} known_nulls: {} # none — the builder drops nulls before computing -consumers: [] - # Empty at `landed`, populated when wave A4's repoints merge. FIVE - # reference-holders, not the two the audit can see: lecture-python-intro, - # lecture-wasm, lecture-intro.zh-cn, QuantEcon/test-actions-lecture-intro, - # and the generated lecture-python-intro.notebooks mirror. - +consumers: + # All four repointed 2026-08-12. lecture-intro.zh-cn and the canary are + # outside the audit's SCAN_REPOS, so they are recorded here or nowhere. + # The generated lecture-python-intro.notebooks mirror is a fifth + # reference-holder; it self-heals after a publish tag and is not a repo + # anyone repoints, so it is deliberately not listed. + - repo: QuantEcon/lecture-python-intro + file: lectures/inequality.md + - repo: QuantEcon/lecture-wasm + file: lectures/inequality.md + - repo: QuantEcon/lecture-intro.zh-cn + file: lectures/inequality.md + - repo: QuantEcon/test-actions-lecture-intro + file: lectures/inequality.md builder: builders/usa-gini-nwealth-tincome-lincome.ipynb # `committed-frozen`, not `committed`, on three independent grounds — any one # of which would rule out `committed`: diff --git a/migration.yml b/migration.yml index 99374d9..5ac63be 100644 --- a/migration.yml +++ b/migration.yml @@ -491,17 +491,29 @@ datasets: life-expectancy-vs-gdp-per-capita.csv: pilot: A4 - status: landed + status: repointed prior_pattern: own-repo landed: pr: QuantEcon/data-lectures#74 date: 2026-08-12 - repoints: [] + repoints: + - repo: QuantEcon/lecture-python-intro + pr: QuantEcon/lecture-python-intro#834 + date: 2026-08-12 + - repo: QuantEcon/lecture-wasm + pr: QuantEcon/lecture-wasm#61 + date: 2026-08-12 + - repo: QuantEcon/lecture-intro.zh-cn + pr: QuantEcon/lecture-intro.zh-cn#294 + date: 2026-08-12 + - repo: QuantEcon/test-actions-lecture-intro + pr: QuantEcon/test-actions-lecture-intro#56 + date: 2026-08-12 cutover: null usa-gini-nwealth-tincome-lincome.csv: pilot: A4 - status: landed + status: repointed # Second-order: built from SCF_plus_mini.csv, which landed in #62. That # dependency is why this file waited for P3 rather than moving with the # other intro statics. @@ -509,7 +521,19 @@ datasets: landed: pr: QuantEcon/data-lectures#74 date: 2026-08-12 - repoints: [] + repoints: + - repo: QuantEcon/lecture-python-intro + pr: QuantEcon/lecture-python-intro#834 + date: 2026-08-12 + - repo: QuantEcon/lecture-wasm + pr: QuantEcon/lecture-wasm#61 + date: 2026-08-12 + - repo: QuantEcon/lecture-intro.zh-cn + pr: QuantEcon/lecture-intro.zh-cn#294 + date: 2026-08-12 + - repo: QuantEcon/test-actions-lecture-intro + pr: QuantEcon/test-actions-lecture-intro#56 + date: 2026-08-12 cutover: null # Planned waves that have not landed anything here yet. `datasets` names the