Why
Microcosm's hermetic tests carry publisher facts as hand-copied JSONL excerpts of the UK consumer feed (packages/microcosm-build/tests/fixtures/uk_target_reference_feed_rows.jsonl, documented as "public rows copied from consumer_facts_uk.jsonl"). The PolicyEngine/microcosm#834 port needs one more such excerpt: the 126 rows of hmrc-tax-free-childcare-march-2026 (9 annual-unique children with used accounts, 9 government top-up, 108 monthly used-account counts), to prove in CI that Microcosm's tax_free_childcare_spend_routed_share series equals sum(monthly children with used accounts) / annual-unique children / 12 recomputed from Chronicle's own facts. #219 rightly refused to store that share in Chronicle; the derivation is Microcosm's, the facts are Chronicle's, and the lockstep between the two should be checked against Chronicle's bytes rather than a copy someone typed.
Under the doctrine #221 states for raw microdata (consumers reference a witnessed Chronicle artifact by hash), the excerpt should be a Chronicle artifact by identity, not a copy.
Request
Publish hash-pinned per-package consumer artifacts for public source packages:
build_source_suite(package_id, out, year=...) already builds per-package suites (it is what tests/test_childcare_source_packages.py exercises), so the gap is a published, stable location plus the package-naming manifest fields, not a new build path.
First consumers
Until the artifact exists, Microcosm's lockstep test reads the same rows from its pinned UK feed when present and skips otherwise, so the check is never green by fiat.
Why
Microcosm's hermetic tests carry publisher facts as hand-copied JSONL excerpts of the UK consumer feed (
packages/microcosm-build/tests/fixtures/uk_target_reference_feed_rows.jsonl, documented as "public rows copied from consumer_facts_uk.jsonl"). The PolicyEngine/microcosm#834 port needs one more such excerpt: the 126 rows ofhmrc-tax-free-childcare-march-2026(9 annual-unique children with used accounts, 9 government top-up, 108 monthly used-account counts), to prove in CI that Microcosm'stax_free_childcare_spend_routed_shareseries equalssum(monthly children with used accounts) / annual-unique children / 12recomputed from Chronicle's own facts. #219 rightly refused to store that share in Chronicle; the derivation is Microcosm's, the facts are Chronicle's, and the lockstep between the two should be checked against Chronicle's bytes rather than a copy someone typed.Under the doctrine #221 states for raw microdata (consumers reference a witnessed Chronicle artifact by hash), the excerpt should be a Chronicle artifact by identity, not a copy.
Request
Publish hash-pinned per-package consumer artifacts for public source packages:
build-consumer-artifact --package <package_id>(orbuild-suite) output written to the consumer bucket at a stable key, e.g.consumer/<source_id>/<package_id>/<artifact_sha256>/{manifest.json,consumer_facts.jsonl};package_id, the Chronicle source commit, the artifact sha256 and the fact row count, so a downstream can vendor the two files undertests/fixtures/chronicle/<package_id>/and assert the sha;build_source_suite(package_id, out, year=...)already builds per-package suites (it is whattests/test_childcare_source_packages.pyexercises), so the gap is a published, stable location plus the package-naming manifest fields, not a new build path.First consumers
hmrc-tax-free-childcare-march-2026(the routed-share derivation lockstep) anddfe-funded-early-education-childcare-2026(the five childcare target rows).dft-bus05i-revenue-support-2025once the Add 2023-2026 UK facts and restore source vocabulary #202 re-land is on main (the England / London / England-outside-London reconciliation fixture).Until the artifact exists, Microcosm's lockstep test reads the same rows from its pinned UK feed when present and skips otherwise, so the check is never green by fiat.