docs: two-machine sidecar hygiene — import-before-commit rule, editor-side recovery

CLAUDE.md carries the convention (smoke-gate command, sidecars ship
with sources, pull-before-editor, git clean recovery); the redundant
Tools section leaves persistent-memory.md per the redundancy rule.
Local pre-commit hook on nh3-dev refuses staged-new .gd without a
tracked .uid (hook is unversioned; recreation documented).
This commit is contained in:
2026-08-07 12:07:43 -07:00
parent 45c0c78481
commit fbac09a86a
2 changed files with 15 additions and 10 deletions
+15 -1
View File
@@ -91,7 +91,21 @@ Non-negotiable canon highlights (full rationale in CONCEPT.md):
An upgrade is an operator decision applied to both machines at An upgrade is an operator decision applied to both machines at
once. once.
- Headless verification: `godot --headless` works on nh3-dev for - Headless verification: `godot --headless` works on nh3-dev for
scripts, tests, and imports. scripts, tests, and imports. Smoke gate:
`~/bin/godot --headless --path . res://tests/smoke.tscn` (exit 0
pass / 1 fail; run 3x to catch flakes). After adding scenes/assets,
import first: `~/bin/godot --headless --import --path .`
- **Generated sidecars ship with their sources.** Run the headless
import BEFORE committing new scripts/assets so `.uid` / `.import`
sidecars land in the same commit — otherwise the other machine's
editor mints untracked copies and its next `git pull` refuses to
merge. Enforced on nh3-dev by a local `.git/hooks/pre-commit`
(not versioned — recreate on fresh clones: refuse staged-new `.gd`
without a tracked `.uid`).
- **Two-machine hygiene (Mac editor side):** pull BEFORE opening the
editor after new commits land. If a pull ever refuses over generated
sidecars anyway, they're safe to delete wholesale:
`git clean -f '*.uid'` (add `'*.import'` if named) — then pull.
- GDScript for design iteration; C# reserved for hot paths (none - GDScript for design iteration; C# reserved for hot paths (none
yet). yet).
- 2D, pixel-first: integer scaling, nearest-neighbor filtering - 2D, pixel-first: integer scaling, nearest-neighbor filtering
-9
View File
@@ -14,15 +14,6 @@ mech auto-battler rogue-lite. Design canon lives in the advisor repo (see
CLAUDE.md); this repo builds what canon ratifies. Current mission is the CLAUDE.md); this repo builds what canon ratifies. Current mission is the
greybox falsifier (ROADMAP.md v1) that tests the design's three core bets. greybox falsifier (ROADMAP.md v1) that tests the design's three core bets.
## Tools and conventions
- Smoke gate: `~/bin/godot --headless --path . res://tests/smoke.tscn`
(exit 0 pass / 1 fail; run 3x to catch flakes). After adding new
scenes/assets, import first: `~/bin/godot --headless --import --path .`
- New GDScript files: run the headless import BEFORE committing so
Godot's `.uid` sidecars land in the SAME commit as their scripts (see
Tried and abandoned, 2026-08-07).
## Current state / in-flight ## Current state / in-flight
_As of 2026-08-07:_ _As of 2026-08-07:_