You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Consumer side of the Chronicle raw-microdata identity ADR (PolicyEngine/chronicle docs/adr-chronicle-raw-microdata-identity.md, PR and implementation issue opened today in that repo): every raw microdata input Microcosm builds from should resolve to one witnessed Chronicle registration, by hash, and the build should fail closed when local bytes differ.
Current state (verified 2026-09-02 on origin/main d2b3149)
Pins that do exist live in four places: these manifests, the ASEC raw-stage checkpoint metadata (us_runtime/asec_checkpoint.py validates per-source sha256/member_sha256), code constants (us_runtime/weeks_unemployed.py), and tools/build_us_multispine_pool.py --*-sha256 arguments. No shared registry, no licence record, no witnessed fetch time.
Proposal
Every *_microdata artifact entry in a country source_stages.json carries sha256 and a chronicle_artifact reference (source_id, package_id, year, sha256, and the R2 key when bytes exist). The raw-only doctrine (microcosm#530, UK dataset build: full migration from policyengine-uk-data (master epic) #665 scope ruling) already requires pinning the raw licensed asset; this makes the pin a shared, witnessed one.
source_manifest.py validates the new fields; the source runtime records the resolved registrations in the build manifest / Logbook next to the Chronicle consumer-artifact pin it already records.
A fail-closed gate: local bytes (or the checkpoint's recorded per-source hashes) must equal the registered sha256; mismatch stops the build with the publisher, vintage, and both hashes in the message.
Licensed and restricted files (FRS, SPI, BE-SILC, IRS PUF) reference hash-only registrations. Bytes stay where they are today (licensed environments, private HF repos); nothing about data access changes.
Consumer side of the Chronicle raw-microdata identity ADR (PolicyEngine/chronicle
docs/adr-chronicle-raw-microdata-identity.md, PR and implementation issue opened today in that repo): every raw microdata input Microcosm builds from should resolve to one witnessed Chronicle registration, by hash, and the build should fail closed when local bytes differ.Current state (verified 2026-09-02 on origin/main d2b3149)
sha256us/source_stages.jsonpublic_microdataus/source_stages.jsonversioned_derived_microdatauk/source_stages.jsonlicensed_microdatauk/source_stages.json,uk/hmrc_income_source_stages.jsonprivate_microdatabe/source_stages.jsonrestricted_microdataPins that do exist live in four places: these manifests, the ASEC raw-stage checkpoint metadata (
us_runtime/asec_checkpoint.pyvalidates per-sourcesha256/member_sha256), code constants (us_runtime/weeks_unemployed.py), andtools/build_us_multispine_pool.py --*-sha256arguments. No shared registry, no licence record, no witnessed fetch time.Proposal
*_microdataartifact entry in a countrysource_stages.jsoncarriessha256and achronicle_artifactreference (source_id,package_id,year,sha256, and the R2 key when bytes exist). The raw-only doctrine (microcosm#530, UK dataset build: full migration from policyengine-uk-data (master epic) #665 scope ruling) already requires pinning the raw licensed asset; this makes the pin a shared, witnessed one.source_manifest.pyvalidates the new fields; the source runtime records the resolved registrations in the build manifest / Logbook next to the Chronicle consumer-artifact pin it already records.Acceptance
*_microdataentries withoutsha256+chronicle_artifactacross all country manifests; a contract test enforces it.Related: #530, #665 (workstream E), #204, #814, #836 (node identity), chronicle#143 (bucket name migrating; reference whichever bucket is current).