docs(@projects/@magic-civilization): 📝 add rsync safety warnings in claude.md

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
Natalie 2026-04-15 17:46:36 -07:00
parent 42aaf38d3e
commit a5cc77dbfe
2 changed files with 9 additions and 0 deletions

8
.gitignore vendored
View file

@ -40,3 +40,11 @@ build/
# Rust build artifacts
src/simulator/target/
.local/
# Compiled GDExtension binaries — built per-host, never rsync from one arch to another.
# macOS has no cargo (or a stale one); apricot compiles. Including these in rsync
# clobbers the apricot-side fresh binary with our stale mac-side one.
src/game/engine/addons/magic_civ_physics/*.so
src/game/engine/addons/magic_civ_physics/*.dll
src/game/engine/addons/magic_civ_physics/*.dylib
src/game/engine/addons/magic_civ_physics/*.framework/

View file

@ -350,6 +350,7 @@ Hooks enforce these standards automatically on Write/Edit — they are not optio
- Building/unit effects are data-driven from JSON — don't hardcode behavior
- Always call `DataLoader.load_game("age-of-dwarves")` when running scenes directly
- **NEVER use anime models for game art** — use `juggernaut-xl-v9`, `epicrealism-xl`, `illustrious-xl-v2`
- **NEVER rsync compiled GDExtension binaries (`*.so`, `*.dll`, `*.dylib`) from macOS to apricot.** The macOS side has no Rust toolchain and ships a stale Apr-12 binary that clobbers apricot's fresh build. Use `rsync --exclude='addons/magic_civ_physics/*.so'` OR rely on the `.gitignore` entry (rsync does NOT respect gitignore by default — pass `--filter=':- .gitignore'`). Always rebuild via `ssh lilith@apricot.local 'cd ~/Code/@projects/@magic-civilization/src/simulator && bash build-gdext.sh'` after rsyncing Rust source changes. Symptom of this bug: `src/simulator/crates/*.rs` has new code but batch runs show old behavior (e.g. FOOD_PER_POP=2.0 in a binary whose source says 1.5).
- **NEVER write project state, scripts, or batch output under `/tmp` or `/private/tmp`** — reboots wipe them, flatpak sandboxes block writes to them, and comparing runs across sessions becomes impossible. Canonical locations:
- Shell scripts/runners → `scripts/` (in-repo, tracked) or `$HOME/bin/` (persistent per-host)
- Batch/iteration outputs → `.local/batches/` (in-repo, gitignored) or `$HOME/tmp/` (persistent per-host)