Skip to content

Armenia (am) spec-only country package: engine-free pool-reweight contract (#814) - #816

Merged
MaxGhenis merged 12 commits into
mainfrom
armenia-country-package-814
Aug 29, 2026
Merged

Armenia (am) spec-only country package: engine-free pool-reweight contract (#814)#816
MaxGhenis merged 12 commits into
mainfrom
armenia-country-package-814

Conversation

@MaxGhenis

Copy link
Copy Markdown
Contributor

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-authenticated populace-us support artifact against public Armenian margins referenced from a future ledger-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 the spec/ 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) in F0_CONTRACT_ONLY_KERNEL_IDS, mirroring the BE registration — contract-only vocabulary, never presented as executable producer kernels.
  • Tests: tests/golden/am_country_spec.json golden, test_spec_only_country_packages.py coverage for am/, activation-boundary contracts in test_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) — plus NOTES.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.json is 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 with policyengine-us==1.819.0). An independent pre-push re-run without the us extra tripped three test_us_release_head_to_head_scorer.py tests (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.
  • Focused package/golden/compiler suite: 101 passed. Shared-spec: 1,334 passed, 42 skipped.
  • ruff check, tools/ci_test_groups.py --verify, git diff --check: clean.
  • Changelog entry: 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

@MaxGhenis
MaxGhenis merged commit e0c41b1 into main Aug 29, 2026
23 checks passed
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.

1 participant