Summary
naturalize.invariants is documented in engsys.config.example.yaml ("project hard rules appended to CLAUDE.md project facts") but is never consumed by the renderer — the values go nowhere.
Evidence
engsys.config.example.yaml: invariants: [] # project hard rules appended to CLAUDE.md project facts
lib/render.js (renderClaudeMd): reads nat.project_facts, nat.model_strategy, hook patterns — there is no reference to nat.invariants anywhere in lib/ or install.
Repro
Install into a project with:
naturalize:
invariants:
- "Never commit *.campfile.json saves — they carry the real camper roster."
The generated CLAUDE.md contains no trace of the invariant (found during a real install into eric-sabe/campOS).
Suggested fix
Either render invariants into the PROJECT-FACTS seed (e.g. an **Invariants (hard rules).** bullet list appended after project_facts), or remove the key from the example config so users don't declare rules that silently evaporate. Rendering it seems right — invariants are exactly the facts you want machine-seeded on every fresh install rather than re-typed.
🤖 Generated with Claude Code
Summary
naturalize.invariantsis documented inengsys.config.example.yaml("project hard rules appended to CLAUDE.md project facts") but is never consumed by the renderer — the values go nowhere.Evidence
engsys.config.example.yaml:invariants: [] # project hard rules appended to CLAUDE.md project factslib/render.js(renderClaudeMd): readsnat.project_facts,nat.model_strategy, hook patterns — there is no reference tonat.invariantsanywhere inlib/orinstall.Repro
Install into a project with:
The generated
CLAUDE.mdcontains no trace of the invariant (found during a real install intoeric-sabe/campOS).Suggested fix
Either render invariants into the PROJECT-FACTS seed (e.g. an
**Invariants (hard rules).**bullet list appended afterproject_facts), or remove the key from the example config so users don't declare rules that silently evaporate. Rendering it seems right — invariants are exactly the facts you want machine-seeded on every fresh install rather than re-typed.🤖 Generated with Claude Code