magicciv/.project/objectives/p3-05d-economy-axis-catalog.md
Natalie 72076031d6 feat(@projects/@magic-civilization): complete upgrade target bridge and tests
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-05-14 21:32:27 -07:00

2.5 KiB

id title priority status scope category owner created updated_at completed_at blocked_by follow_ups
p3-05d Economy axis civics catalog p3 done game1 civics unassigned 2026-05-03 2026-05-14 2026-05-14
p3-05a

Completion (4/4 acceptance bullets ✓)

Context

The Economy axis in public/games/age-of-dwarves/docs/civics/CIVICS.md covers the wealth-distribution model: Communal Stores, Tribute Economy, Mercantile Markets, Industrial Capitalism, Planned Economy. Each axis choice modulates inequality (p3-07a), trade yields, and stockpile turnover.

Acceptance

  • ✓ Five files under public/resources/civics/economy/*.json matching the names above with the standard schema. Authored 2026-05-14: communal_stores.json, tribute_economy.json, mercantile_markets.json, industrial_capitalism.json, planned_economy.json.
  • ✓ Shared schema public/games/age-of-dwarves/data/schemas/civic.schema.json accepts axis: "economy" modifier subset (inequality_amplifier, trade_yield_pct, stockpile_decay_pct, gold_yield_pct, tribute_extraction_pct, market_radius_bonus). All 5 Economy files validate Draft 2020-12.
  • python3 tools/validate-game-data.py now scans public/resources/civics/ via the new validate_civics method. Run on 2026-05-14: civics block reports 15/15 PASS (5/5 Economy among them). Validator cross-checks declared axis vs directory name and enforces id uniqueness across axes. Pre-existing terrain/substrate failures (89) are unrelated.
  • cargo test -p mc-core --test civics_catalog test_load_economy_catalog (loader test lives in mc-core/tests/civics_catalog.rs since mc-civics crate is not yet authored — per the objective's "or -p mc-core" allowance) passes 2026-05-14 — typed deserialisation into CatalogCivic using mc_core::civic::CivicAxis::Economy, with invariants on file count (5), is_starting (exactly 1), expected ids (communal_stores, tribute_economy, mercantile_markets, industrial_capitalism, planned_economy), and modifier value types. Test suite: 4 passed, 0 failed.

Source-of-truth rails

  • Rust crate: mc-civics (shared loader from p3-05b).
  • JSON path: public/resources/civics/economy/*.json (per p1-40 SSoT).
  • mc-core wrapper: Civic struct, CivicAxis::Economy.

Out of scope

  • Other axis catalogs — p3-05b, p3-05c.
  • Modifier application — p3-05e.
  • Inequality cascade — p3-07a/b.

References

  • public/games/age-of-dwarves/docs/civics/CIVICS.md
  • Parent: p3-05a
  • Siblings: p3-05b, p3-05c, p3-05e