magicciv/.project
autocommit cd339ff7dd feat(p2-57c): wire production-quality consumer into the live spawn path
Closes p2-57c bullet-2's apply half and p2-57b's pipeline live-loop gap.

- mc_units::UnitStats gains a flattened CombatStats { hp, max_hp?, attack,
  defense, ranged_attack, range } (serde-default; the unit JSON already
  authors these — the catalog was dropping them on load).
- mc-turn processor::resolve_spawn_combat resolves a spawning unit's base
  combat line from the units catalog BY unit_id, then applies the stamped
  QualityTier delta from combat_balance.quality_deltas (Rail 2). Both
  try_spawn_unit and spawn_unit_typed call it.
- Fixes a latent live bug: try_spawn_unit hardcoded 60/12/1 on EVERY unit
  type, so queued non-warriors spawned with warrior stats.

Honest scope: the apply half is now live; the stockpile->tier STAMP source
(per-city typed ResourceStockpile p2-57a + per-unit gating p2-57b) is not
wired into process_city_production, so live units carry quality:None today.
Bullet 2 stays partial (apply proven; stamp-source half gated on infra).

Tests (apricot): mc-turn 235 lib, mc-units 12, mc-city 262, mc-combat 217,
mc-core 143; new quality_spawn_live_processor 3/3; cargo check --workspace 0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 15:43:38 -07:00
..
designs feat(@projects/@magic-civilization): add mcts telemetry service and parity tests 2026-05-16 07:26:37 -07:00
experiments feat(@projects): reorganize combat and economy systems 2026-04-27 02:59:49 -07:00
future-games
handoffs docs(docs): 📝 Update Phase 3 military communications and resources documentation with handoff notes for data schema drift 2026-05-26 02:21:14 -07:00
history docs(history): 📝 Add markdown entry documenting the "odd-q axial consistency" fix in project history 2026-05-26 02:21:13 -07:00
objectives feat(p2-57c): wire production-quality consumer into the live spawn path 2026-06-04 15:43:38 -07:00
reports fix(@projects/@magic-civilization): 🐛 update objective status tracking and priorities 2026-05-05 10:42:21 -04:00
screenshots feat(@projects/@magic-civilization): add survival scorecard tooling 2026-05-29 19:47:24 -06:00
tasks
team-leads feat(sprites): OSS standin coverage p2-23..27 (536 PNGs) + xi-v11 charter 2026-06-04 04:40:14 -07:00
AGE-OF-DWARVES-FEATURES.md feat(@projects/@magic-civilization): update tech-tree and mcts service implementation 2026-04-25 22:48:40 -07:00
audio-sourcing-checklist.md feat(@projects): add combat calculator & unit objectives system 2026-04-27 01:04:12 -07:00
audio-status.md feat(@projects): add audio system integration 2026-04-28 16:57:48 -04:00
CHANGELOG.md docs(core): 📝 document technical audit findings and AI milestones in CHANGELOG.md 2026-05-26 02:21:13 -07:00
FINISH_GAME1_PLAN.md docs(plan): finish-game1 gap analysis (28 objectives) + plan of record 2026-06-04 14:50:59 -07:00
gdlintrc.local
README.md
ROADMAP.md
SCREENSHOT_REGISTRY.md feat(@projects/@magic-civilization): add phase-13 claudio-vs-ai gameplay screenshots 2026-05-12 12:34:36 -07:00
TERMINOLOGY.md

.project/ — Directory Map

Build-process docs for Magic Civilization. Each file owns exactly one responsibility. Status of work-in-flight is tracked only in objectives/ (SSoT).

File / dir → responsibility

Path Responsibility Rule
README.md This map Maintained by hand when structure changes
ROADMAP.md Phase sequence + scope per milestone Never carries status; references objective IDs only
TERMINOLOGY.md Glossary (terms, acronyms, design vocabulary) Facts only, no status
CHANGELOG.md Dated narrative events (append-only) References objective IDs; never restates status
objectives/ Single source of truth for current state One .md per objective, YAML frontmatter status: field
objectives/README.md Dashboard index (grouped by P0/P1/P2) Generated by tools/objectives-report.py — do not hand-edit
tasks/milestones/ Per-milestone work packages (scoping docs) HOW, not WHAT-DONE
tasks/topics/ Cross-cutting topic work (balance tuning etc.) HOW, not WHAT-DONE
tasks/deferred/ Parked work packages HOW, not WHAT-DONE
handoffs/ Agent-to-agent context transfer YYYYMMDD_slug.md
history/ Archived one-off docs (reports, snapshots, obsolete plans) YYYYMMDD_slug.md; immutable once filed
reports/batches/ Autoplay batch output Tool artifacts
reports/simulation/ Simulator reports Tool artifacts
reports/screenshots/ Proof screenshots Tool artifacts
future-games/ Game 2 design drafts Out of scope for Game 1
gdlintrc.local Local gdlint overrides Config

Invariants

  1. Status lives in objectives/*.md frontmatter, nowhere else.
  2. ROADMAP, CHANGELOG, tasks/ may reference objective IDs; they may not restate status.
  3. objectives/README.md is machine-generated from frontmatter. Regenerate after any objective edit: python3 tools/objectives-report.py.
  4. history/ is append-only. Archived files get a YYYYMMDD_ prefix and are never edited in place; if a superseding doc is needed, create a new one.

Quick regen

python3 tools/objectives-report.py     # rebuilds objectives/README.md from frontmatter