- README, .gitignore, CLAUDE.md (project conventions) - docs/PHASE0.md — full Phase 0 manifest (locked substrate) - 10 root .lua modules + 4 ffi/ bindings, all stubs raising NotImplemented with module-scoped responsibilities matching the manifest - config.lua wired to current dirac/hossenfelder endpoints (qwen-coder-7b snappy/32k + cloud via OpenRouter through hossenfelder) File names match docs/PHASE0.md §4 exactly. Module bodies fill in across later phases; the tree shape is locked. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1.3 KiB
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 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.