Skip to content

P1 pilot: add lingcod_msy_recovery.csv with its manifest#12

Open
mmcky wants to merge 1 commit into
data/restructure-flat-treefrom
datasets/p1-lingcod
Open

P1 pilot: add lingcod_msy_recovery.csv with its manifest#12
mmcky wants to merge 1 commit into
data/restructure-flat-treefrom
datasets/p1-lingcod

Conversation

@mmcky

@mmcky mmcky commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Pilot P1 — local-path static (QuantEcon/meta#338). The first dataset to land in the published tree, and the first manifest written against the schema. Paired with QuantEcon/lecture-python-intro#792, which repoints the lecture.

Stacked on #10 (the Phase 2 restructure) — lectures/ does not exist on main until that merges. Base retargets to main automatically once #10 lands. Review #10 first.

(Supersedes #11, which was opened on a data/… branch. Renamed so both halves of P1 share a branch name per the workspace convention — lecture-python-intro has a stale branch literally named data, and git cannot hold both a ref data and a directory data/. No content change.)

Licence — cleared before adding

RAM Legacy is CC BY 4.0, attribution-only, so rehosting this extract is permitted. How that was established is itself a finding: ramlegacy.org states no licence at all. The authority is the Zenodo record behind its DOI (license: cc-by-4.0, access_right: open), confirmed two ways. "Check the homepage" is not a sufficient licence procedure — so the manifest records when and against what a licence was established. An undated licence claim is not evidence.

What meeting a real file did to the schema

The sketch in #10 was written from a clean example. One actual dataset broke it in three places, each folded back into manifest-schema.yml:

Finding Change
Lingcod is a byte-perfect copy of what the lecture consumes, yet its upstream provenance cannot be re-derived at all integrity splits into migration and upstream. A single verified field would have to overstate or understate this file
The file is constructed but ships no builder — the exact bug AGENTS.md names. The tempting fix is to relabel it verbatim, which buries the gap builder_status: unrecovered, so it stays visible in the generated catalog. One of the constructed-but-unscripted set PLAN Phase 9 tracks
F_over_Fmsy is null in the terminal assessment year — correct, and normal known_nulls, so Phase 5's invariant tests can enforce "no unexpected nulls" without a blanket rule rejecting this file

Integrity

Axis Status Basis
migration verified sha256 fc2f873f… byte-identical to intro's copy, so the repoint cannot change lecture output
upstream unverifiable the extract records no stock id, no database version, no transformation — nothing to re-derive from

Recording unverifiable with a reason is deliberate: PLAN Phase 7 says not to promote a file whose integrity status is unknown, and "we checked, and it cannot be checked" is a known status. Silence would not be.

Data

82 rows, 1928–2009, year / B_over_Bmsy / F_over_Fmsy. Verified readable over https and renders the lecture's figure unchanged.

Part of QuantEcon/meta#338
See QuantEcon/meta#336

The first dataset to land in the published tree, and the first manifest
written against the schema sketch. Consumed by lecture-python-intro's
msy_fishery lecture, which currently reads it from a relative path — so the
downloaded notebook cannot resolve it. The repoint is the paired lecture PR.

Licence established before adding, per AGENTS.md: RAM Legacy is CC BY 4.0,
attribution-only, so rehosting this extract is permitted. Worth recording how
that was found — ramlegacy.org states no licence at all; the authority is the
Zenodo record behind its DOI (license id "cc-by-4.0", access_right "open").

Meeting a real file changed the schema in three ways, all folded back into
manifest-schema.yml:

- integrity splits into `migration` and `upstream`. Lingcod is a byte-perfect
  copy of what the lecture consumes, yet its upstream provenance cannot be
  re-derived at all. One "verified" field would have to overstate or
  understate it; two fields tell the truth.
- `builder_status` records `unrecovered`. This file is constructed but ships
  no builder — the bug AGENTS.md names. The tempting fix is to relabel it
  verbatim, which buries the gap; instead it is now visible in the catalog.
- `known_nulls` declares nulls that are correct. F/Fmsy is null in the
  terminal assessment year, which a blanket no-nulls validation rule would
  wrongly reject.

Part of QuantEcon/meta#338
See QuantEcon/meta#336

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds the first “P1 pilot” dataset to the new published lectures/ tree—lingcod_msy_recovery.csv—together with its sidecar manifest, and updates manifest-schema.yml based on lessons from this first real manifest.

Changes:

  • Extend manifest-schema.yml to split integrity into migration vs upstream, add license.verified, add schema.known_nulls, and introduce builder_status.
  • Add lectures/lingcod_msy_recovery.csv and its manifest lectures/lingcod_msy_recovery.csv.yml.
  • Record the pilot dataset’s provenance, schema, consumers, integrity assessment, and known nulls in the new manifest.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

File Description
manifest-schema.yml Updates the manifest schema template to reflect pilot-driven requirements (integrity split, known nulls, builder status, license verification date).
lectures/lingcod_msy_recovery.csv.yml Adds a full per-dataset manifest (source/license/integrity/schema/consumers/builder fields).
lectures/lingcod_msy_recovery.csv Adds the lingcod MSY recovery time series data used by the consuming lecture.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +110 to +111
builder: null
builder_status: unrecovered # unrecovered | committed | not-applicable
# authority. Attribution is the sole condition and the citation above
# carries it, so rehosting this extract is permitted.

retrieved: null # unrecorded -- see integrity.upstream
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants