# CLAUDE.md — aish project conventions This file is auto-loaded when any Claude session opens a clone of this repo. ## Source of truth [`docs/PHASE0.md`](docs/PHASE0.md) is the locked substrate. Read it before making non-trivial changes. If a change touches §3 (technology decisions), §4 (directory layout), or §6 (broker contract), the change needs to be reflected in PHASE0.md *and* called out in the commit message. ## Phase loop This project follows the 8(+1) phase loop documented in mfritsche's home canon (`feedback_dev_process.md` in claude-noether memory). Each phase has its own document under `docs/`. Don't skip phases. Loopbacks per the canon: 3→1, 7→4, any→0. ## Module structure invariant The file names listed in `docs/PHASE0.md` §4 are stable across phases. Later phases fill in module bodies; they do not rename files or restructure the tree. If you find yourself wanting to rename or split a module, that's a PHASE0.md amendment first. ## No C extensions LuaJIT FFI only. If you reach for a C extension to "make this easier", stop. The FFI bindings under `ffi/` are extended in place. ## Commit style Short imperative subject, file-scoped. Example: `executor: add cd interception via libc chdir`. Body explains the *why* if non-obvious. Co-Authored-By trailers on Claude commits per project canon.