Armenia (am) spec-only country package: engine-free pool-reweight contract (#814) - #816
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes nothing; first implementation PR for #814.
What this adds
The Armenia (
am/) spec-only country package — the third greenfield country after Belgium and the NZ plan — as a declarative contract only: an engine-free, NZ-style pool reweight of a pre-built, to-be-authenticatedpopulace-ussupport artifact against public Armenian margins referenced from a futureledger-am.am/package:country_package.json,source_stages.json,target_references.json(8 solver-eligible references across demography, household structure, consumption, labour, earnings, pensions, family benefit — Ledger references only, zero embedded values),gates.json(11 release-blocking gates, BE greenfield posture, no parity gates — no incumbent exists),geography_spine.json+release_contract.json(populace_am_{year}.h5, public boundary — ILCS and all target sources are openly disseminated by ArmStat), and thespec/bundle (sources, catalogs, vintages, geography, spine).spec_engine/resolver.py: registers the Armenia kernel ids (load_populace_us_support_pool,assign_am_marz,clone_assign_communities,am_community_geography_gate) inF0_CONTRACT_ONLY_KERNEL_IDS, mirroring the BE registration — contract-only vocabulary, never presented as executable producer kernels.tests/golden/am_country_spec.jsongolden,test_spec_only_country_packages.pycoverage foram/, activation-boundary contracts intest_country_spec.py(runtime activation is forbidden while any table-level harvest placeholder stands in for multiple source cells).docs/armenia-country-package-814/:HARVEST.md— the Chronicle/ledger-am handoff contract (per-fact provenance requirements; stale-value quarantines, e.g. the Jan-2022 pensioner count is marked evidence-not-target; a no-cross-currency doctrine — no US amount reaches an AMD margin through implicit exchange-rate multiplication) — plusNOTES.md(decisions and BE deviations) and the planning journal.Provenance posture
Every donor record remains a US support record; per-record support-stratum and donor-country provenance must survive calibration and release, and nothing downstream may describe them as Armenian microdata. Geography is the 2022-census system (10 marzes + Yerevan; 71 consolidated communities post-amalgamation) with no invented community list — assignment is uniform within the target-assigned marz pending the community-distribution harvest. No
support_spine.jsonis declared because the current shared schema would falsely describe this package's input as raw-ASEC construction; authentication of the donor artifact belongs to the source contract.Verification
uv run pytest packages/microcosm-build: 6,556 passed, 45 skipped, 0 failed (locked env withpolicyengine-us==1.819.0). An independent pre-push re-run without theusextra tripped threetest_us_release_head_to_head_scorer.pytests (untouched by this branch); all 16 pass once the extra is synced — they appear to run rather than skip when the US engine is absent, a pre-existing marker-guard gap, noted here rather than fixed.ruff check,tools/ci_test_groups.py --verify,git diff --check: clean.changelog.d/814-armenia-country-package.added.md.Not in this PR (tracked on #814)
ledger-am fact packages (the demographic core is already harvested with sha256 provenance from the ArmStat statbank API — census-2022 population by marz × sex verified against the official 2,932,731 total), the shared geography/source-coverage runtime generalizations (#263/#265 lineage), the calibration run, and the rules leg (TheAxiomFoundation/rulespec-am, corpus-first, content-free until an
am-rulespec-*release exists).Open questions for maintainer review are listed at the top of
NOTES.md— the sharpest one: which immutable populace-us artifact + licence is authoritative for the donor pool.🤖 Generated with Claude Code