Commit graph

79 commits

Author SHA1 Message Date
Natalie
e9e8a8220c docs(agents): teach specialists the DigitalOcean fleet is the RUN host
New cloud-dx-do.md (dist:*/forge:* verbs, setup state, gotchas: size tier,
exfil autoMode gate, always dist:down, linux-only .so). Wired into the CLAUDE.md
router, specialist-preamble (all specialists), canonical-commands banner, and the
instructions README index/tree.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 13:55:03 -04:00
Natalie
655d25e2c1 docs(@projects/@magic-civilization): 🛡️ Rail-2 — document the two-path content divergence + track an enforcement gate
rust-source-of-truth.md: add the "two-path divergence" rule to the canonical
content store section. Content reaches the sim two ways — in-game (GDScript
DataLoader reads JSON at runtime, projection.rs:41) and headless (Rust falls back
to a compile-time include_str!/hardcode copy, dispatch.rs:410). A balance constant
hardcoded in a crate is both a Rail-2 violation and a silent second copy that
drifts from the JSON — and headless is where the AI trains. Rule: grep
public/resources + public/games/**/data for a JSON home before adding a numeric
balance const; if it exists, LOAD it (OnceLock+include_str!, never std::fs in
shared sim code). References the p3-28 ContentRegistry endgame.

p3-28: add the matching "Rail-2 verify gate (enforcement)" acceptance bullet —
tools/check-no-rust-hardcoded-content.py + a verify step to catch the next
hardcode, best landed alongside the ContentRegistry.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 09:47:43 -04:00
Natalie
236a5058e5 feat(@projects/@magic-civilization): 📣 orchestration transparency — announce specialist start/finish
Adds a narration convention so the user SEES the orchestration (and can verify parallelism at a
glance): whoever orchestrates emits a "▶ Dispatching [parallel|sequential] (N): agent(task)…" start
line and a "✓/✗ agent — outcome · proof" finish line per specialist. "parallel" must match behavior
(one message, multiple Agent calls). Milestone/decision/blocker also go out-of-band via TTS(ravdess02)
/ PushNotification; per-dispatch stays text-only (TTS every spawn = noise). Wired into the playbook
(agents-task-map.md), the team-lead agent, and the finish-game-1 skill's reporting section.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 06:09:18 -04:00
Natalie
6e3d9b2fd2 feat(@projects/@magic-civilization): 🔎 session bootloader leaves a verifiable trace
The hook left no trace, so 'did the bootloader fire this session?' was unverifiable. Now every fire
(a) stamps the orientation header with 'bootloader fired <UTC>' (visible in-context) and (b) appends
a line to .local/last-session-orient (gitignored breadcrumb) — so verification is one command:
cat .local/last-session-orient. Answers the 'how do I know it bootloaded?' question deterministically.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 06:00:28 -04:00
Natalie
f1fda3c18a feat(@projects/@magic-civilization): 🎮 add /finish-game-1 skill — autonomous Game-1 completion driver
Replaces the ad-hoc "/loop finish game 1" with a durable skill that captures both the mission and the
method. Encodes: the 3-part definition of done (scope complete + headless sim complete + Rail-1
getState unification), the per-iteration loop (orient → load rails → pick → classify → implement →
verify-by-type → commit → continue), the stop-and-ask conditions (balance/scope/architecture/render-
host = owner's call), and the guardrails this session paid for (verify premises, Rust drives, eliminate
don't fix the orchestrator, no stubs, don't gold-plate). Chains the tooling built this session
(session-orient → specialist-preamble → code-layering → orchestration).

First project skill; creates tooling/claude/dot-claude/skills/. Available next session (skills load at
session start).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 05:41:57 -04:00
Natalie
54d7f8f630 docs(@projects/@magic-civilization): 🧭 tooling — encode getState/never-reconcile + verify-premises lessons
Final agent-tooling pass folding in this session's hardest-won lessons (previously only in my memory):

code-layering.md:
- anti-pattern #4 "fixing the orchestrator instead of eliminating it" (the swap→extract→FFI drift;
  the fix is usually DELETE the GDScript path, let Rust compute + UI render getState()).
- anti-pattern #5 "UI holding state / calling logic instead of reading getState()".
- principles rewritten: (1) Rust drives everything — divergence is a bug to DELETE, never reconcile;
  (2) the UI is a pure view of getState() (render/act/end_turn, GdPlayerApi is the reference);
  (3) single-source LOGIC not necessarily STATE — but never two state copies in ONE running game.

specialist-preamble.md (always-loaded core):
- verify rule gains "verify architectural PREMISES before committing to a plan" (the 3-turn drift,
  collapsed by one grep of view.rs).
- layering rule gains the Rust-drives / UI-is-a-view-of-getState one-liner.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 05:38:43 -04:00
Natalie
8628ea7d88 feat(@projects/@magic-civilization): 🧭 add SessionStart bootloader — live project orientation for fresh sessions
No project bootloader existed: a new session/agent booted with only the static CLAUDE.md router and
had to manually dig for current state. Adds a SessionStart hook (session-orient.sh) that injects a
LIVE orientation every session — the dynamic counterpart to the static router:

- In-flight objectives (partial/stub from objectives.json) — where to resume
- Blocked count + last 5 commits + unpushed-commit warning (94 right now; forge down)
- Verify-before-trusting reminder + tooling entry-points (preamble / orchestration / code-layering)

State is read live every run (objectives.json + git) — never embedded, so it can't go stale
(the same anti-drift principle the agent tooling enforces). Read-only, <2s, never breaks the
session (any error → exits 0). Dual-mode: hook JSON by default, `--human` prints markdown for
manual mid-session re-orientation (`bash .claude/hooks/session-orient.sh --human`).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 04:57:33 -04:00
Natalie
97c153f71f docs(@projects/@magic-civilization): 🧑‍🔧 restructure specialist agents — shared DRY core + per-agent delta + orchestration playbook
Specialist agents had ZERO shared instruction layer — each inlined its own knowledge, none
referenced the rails/layering/verification rules, so the same mistakes recurred. Restructured
into a DRY shape grounded in the bugs this session surfaced:

NEW specialist-preamble.md — the shared core every specialist loads first. Six commandments,
each earned by a real violation: (1) verify-don't-infer incl. docs/memory drift (the rust-source
false claims), (2) code-layering (formula vs orchestration vs presentation vs content vs type),
(3) prove-it by output type (cargo test / headless loop / golden-repin / render-proof), (4) stay
in scope (Game 1, no gold-plating disabled systems), (5) objective state = pointer+protocol not
embedded, (6) safety/workflow (build-output, atomic commits, worktree-fork→file-extraction).

agents-task-map.md rewritten as the orchestration PLAYBOOK (not just a lookup): dispatch-vs-inline,
parallel-by-default, the mandatory verify gate per output type, the worktree-fork integration rule,
"specialists return data not prose". Fixed the phantom mc-magic row (Game 2/3, no crate).

All 13 agents converted to thin shared-core pointer + domain delta (fault line + domain docs +
how-to-verify), each fault line drawn from a real drift risk for that specialist. Router + README +
CLAUDE.md agents section updated.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 04:42:23 -04:00
Natalie
40dbe84415 docs(@projects/@magic-civilization): 🧭 agent tooling — add code-layering decision guide + fix rust-source-of-truth drift
Better-guide-agents pass, grounded in this session's architecture review (GDScript turn-logic
divergence, rules leaked into mc-core). Two-pronged:

NEW `code-layering.md` — the decision PROCEDURE that was missing (the Rails state the rule; agents
still drifted because there was no "where does this code go?" procedure). Classifies every change as
formula/orchestration/presentation/content/shared-type, gives each one home, mandates grep-before-
reimplement, uses biomes as the template, records the real anti-patterns hit. Wired into the
always-loaded router + README index.

FIX `rust-source-of-truth.md` drift (it was actively misleading agents):
- "AI exception (one of one)" CONTRADICTED Rail-1 → recast as tech-debt; GdAiController DOES exist
  (api-gdext/src/ai.rs:333), dispatch via mc_player_api::controllers.
- crate table listed phantom `mc-magic` + claimed BiomeRegistry in mc-core (false) → accurate
  pure-logic-vs-orchestrator table; mc-core = shared TYPES, no rules.

game-systems + godot-engine agents point at code-layering at the fault lines they own.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 04:29:29 -04:00
Natalie
f8eadc9119 feat(@projects/@magic-civilization): 😊 p3-26 B1 — surface computed happiness_pool in view_json
project_resources hardcoded happiness_pool: 0 (a stub from before the happiness phase
existed). Now that process_happiness_phase computes player.happiness each turn, surface it
in the PlayerView so the headless view exposes it end-to-end (compute → projection → view).
mc-player-api 135/0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 15:50:30 -04:00
Natalie
afa7613fd8 feat(@projects/@magic-civilization): 🌍 p3-26 B8 — seismic + impact + tsunami event categories
Three geological natural-event categories (parallel agent port, extracted file-only onto
current main — the agent worktree forked from a stale base, so a branch merge was unsafe;
events.rs is a clean superset verified to compile + test against current HEAD):
- seismic — shifts tile elevation over a radius (with falloff).
- impact (asteroid) — T1-4 crater (biome/elevation/moisture/quality + local heat + aerosol);
  T5 extinction (global aerosol injection). Magic/anchor/resource-spawn deferred (Game-3).
- tsunami — floods coastal land (moisture/quality/reef_health), skips open water.

Each: apply_X + dispatch_X + match arm in process_events + tests. Configs already present
(seismic/impact/tsunami.json) + auto-loaded via the headless harness, so they dispatch in
process_climate_phase with no extra wiring. mc-climate 61/0; mc-turn builds.
6/12 categories live (wildfire/drought/volcanic/seismic/impact/tsunami).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 15:31:19 -04:00
Natalie
5b3dcd56dc chore(@projects/@magic-civilization): 🔧 prune 7 stale agent worktree gitlinks
Stale May 31–Jun 8 agent worktrees, all behind main with no unique work
(every change landed or superseded). Removed checkouts, branches, and the
accidentally-committed gitlink entries.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 09:50:19 -05:00
Natalie
3ebe54f387 feat(@projects/@magic-civilization): mark sprite pipeline as complete
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-10 04:09:08 -07:00
Natalie
c88e136469 fix(@projects): 🐛 update deployment and guide workflows
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-10 03:38:03 -07:00
Natalie
c1f44e0a83 feat(@projects/@magic-civilization): complete city script view conversion
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 11:32:55 -07:00
Natalie
efd65a4a86 chore(@projects): 🔧 add claude worktree symlink
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 07:52:52 -07:00
Natalie
5f3446e4a2 chore(@projects/@magic-civilization): 🔧 add claude worktree symlink
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 06:58:06 -07:00
Natalie
a6ec2abb3a fix(@projects): 🐛 update soil derivation status and date
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 05:09:26 -07:00
Natalie
d0a74e5122 fix(@projects/@magic-civilization): 🐛 update world simulation docs and objectives
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-07 19:34:57 -07:00
autocommit
8a7c26ff12 chore(tooling-specific): 🔧 Update bridge-cse_01UCbE4p6FXAuiDrQ5WSWyTh submodule state for toolchain integration
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-06 22:19:32 -07:00
Natalie
5953f4f465 merge(magic): integrate bridge-cse branch into main — p2-74 design tokens + p2-65 mc-state crate + sprites/gallery
Full integration of worktree-bridge-cse_01Nnt (54 commits) into main.
Conflicts (17) resolved: adopt branch's p2-65 GameState->mc-state crate move
across mc-ai/mc-core/mc-player-api/mc-turn; keep main's design-token theme
system (build-ui-theme.py, tile_info_panel.gd) and main's newer p0-26b evidence.

Workspace: 2624 tests pass; 5 pre-existing/environmental failures inherited from
main (constructor_smoke capping test, five_players_overflow, 3x gpu_rollout_parity)
— zero regressions introduced by the merge. api-gdext (GDExtension) compiles.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 01:04:16 -07:00
autocommit
1336dc73d0 deps-upgrade(bridge-cse): ⬆️ Update bridge-cse submodule to latest commit for improved tooling stability
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-04 22:02:06 -07:00
autocommit
f5c4ee9c30 chore(tooling): 🔧 Update Claude bridge submodule reference for development tooling
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-04 20:50:49 -07:00
autocommit
bcf72d34b8 deps-upgrade(bridge-cse): ⬆️ Update bridge-cse submodule reference to ensure compatibility with latest version in tooling/claude/dot-claude/worktrees/
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-04 19:26:25 -07:00
autocommit
cc66e7a24c deps-pin(claude): 📌 Pin Claude tooling dependency version for stable development
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-04 19:02:04 -07:00
autocommit
b7768d2680 chore(claude): 🔧 Update submodule reference path for Claude tooling's worktree bridge
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-04 18:41:15 -07:00
autocommit
3d83f4781c chore(bridge-cse): 🔧 Update submodule reference to ensure correct version alignment
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-04 17:34:39 -07:00
autocommit
f50d9c197d chore(claude): 🔧 Update bridge-cse submodule reference in Claude tooling
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-04 14:55:47 -07:00
autocommit
2166ca9bf0 chore(bridge-cse): 🔧 Update submodule reference to ensure correct version for bridge-cse component
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-04 12:30:00 -07:00
autocommit
b239ed41e1 chore(claude): 🔧 Update bridge-cse submodule reference to pin version or commit hash
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-04 12:06:01 -07:00
autocommit
334ca2fbfd chore(bridge-cse): 🔧 Update submodule reference in worktrees directory
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-04 11:49:33 -07:00
autocommit
3f49f98395 deps-upgrade(claude-bridge): ⬆️ Update Claude bridge submodule to latest version with fixes and new features
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-04 10:10:10 -07:00
autocommit
5c97ce3f9f chore(bridge-cse): 🔧 Update submodule reference to point to latest stable version
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-04 08:19:53 -07:00
autocommit
f88e9b072e feat(sprites): OSS standin coverage p2-23..27 (536 PNGs) + xi-v11 charter
- 536 game-icons.net CC-BY-3.0 standins fill every renderer slot (units/buildings/wonders/city-tiers), id-keyed flat layout
- LICENSES.md (536 ledgered rows, SHA256), STANDINS.md, sprite-license-audit passes
- build_standins.py rewritten data-driven off manifest + icon_rules.json (replaces mapping.json)
- juggernaut-xi-v11 added to approved model list (charter + 2 instruction modules), operator decision
- objectives p2-23..27 + p2-22: partial (standin coverage; final art deferred)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 04:40:14 -07:00
autocommit
80b519ecf3 chore(claude): 🔧 Update dot-claude config for bridge CSE environment
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-03 22:24:23 -07:00
Natalie
7c33434676 feat(tooling): add claude agent worktrees
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-02 21:16:32 -07:00
autocommit
6a256be8a0 chore(claude): 🔧 Update config settings in settings.json for Claude tooling
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-05-26 02:21:14 -07:00
autocommit
09119c5186 feat(claude): Update agent configurations and batch scripts for Claude AI agents to improve worktree management and batch processing
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-05-26 02:21:13 -07:00
autocommit
a4453da4bb docs(claude): 📝 Update CLAUDE.md with clearer examples, usage cases, and error handling for the Claude tool
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-05-26 02:21:13 -07:00
autocommit
05db83146c docs(claude): 📝 Update Claude AI roadmap and plan documentation in CLAUDE.md
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-05-26 02:21:13 -07:00
autocommit
15b11a0929 chore(claude): 🔧 Update environment variables and parameters for Claude agent instance ab92d53de9e5a7618
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-05-26 02:21:13 -07:00
autocommit
6b7d66d8ac chore(claude): 🔧 Update agent-a397679d7776133d4 configuration settings
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-05-26 02:21:12 -07:00
autocommit
29757bf9ea docs(game-engine): 📝 Update player API and AI controller documentation with new methods, clarifications, and tooling references
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-05-26 02:21:12 -07:00
autocommit
47ca06f270 chore(claude): 🔧 Add 'tooling/' directory to allowed paths in structure enforcement hook
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-05-26 02:21:11 -07:00
Natalie
e2fdd69823 feat(@projects/@magic-civilization): add procedural city/unit overlay test
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-05-10 13:18:51 -07:00
Natalie
32217fa356 fix(@projects/@magic-civilization): 🐛 mark async batch protocol as complete
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-05-07 07:34:48 -07:00
Natalie
6216d97a76 feat(@projects/@magic-civilization): add async smoke test script
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-05-05 14:12:23 -04:00
Natalie
30959d86ae docs(tooling): 📝 add fresh scratch dir setup instructions
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-05-03 05:52:40 -04:00
Natalie
d967b80e20 feat(@projects): mark batch freshness objective as complete
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-05-03 04:23:51 -04:00
Natalie
de9989d43b feat(@projects/@magic-civilization): update biome economy coupling milestone date
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-05-02 21:19:23 -04:00