Commit graph

2 commits

Author SHA1 Message Date
Natalie
69f80189c6 refactor(mc-combat): read promotions.json via ContentRegistry; fold Rail-2 gate (p3-28)
Both promotion_config() and build_registry() now pull raw bytes from
content::get(Promotions) instead of a crate-local include_str! const. The
embedded fallback moved to the central ContentRegistry, so the Rail-2 gate gains
a registry_owned flag: Check A verifies mc-core/src/content.rs embeds the JSON,
while the XP_THRESHOLDS/HEAL_ON_PROMOTE_FRACTION tombstones still guard
mc-combat. Gate passes; mc-combat/mc-turn/mc-player-api tests green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 09:56:16 -04:00
Natalie
6332d47011 fix(infra): make the DO fleet actually work on real hardware + render host
Real-DO testing surfaced bugs the mocked tests couldn't:
- ssh key: reference shared 'mc-fleet' key via data source, not a duplicate (DO 422s on dup pubkeys).
- cmd_dist_up: fail loudly on failed apply; dist:up waits for cloud-init readiness.
- snapshot cloud-init skips runcmd -> bake authorized_keys (FLEET_PUBKEY) + 'cloud-init clean' before snapshot.
- build user passwordless sudo; apt dpkg-lock race fixed (cloud-init --wait + Lock::Timeout).
- size s-8vcpu-16gb-amd (tier max); creds via PKR_VAR env not argv.
- render host: weston+Mesa baked; ./run dist:render proven (Godot->PNG on DO, no GPU). forge:dns shortcut.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 12:45:29 -04:00