The installer guarantees faithful plumbing (directories, files, merged settings). Naturalization is the only model-driven step, and it is strictly about project facts — never folder/plumbing setup. This split is the whole fix for "Claude won't set up the structure faithfully": the model is never asked to do plumbing, so it cannot skip it.
engsys install --into . # deterministic: structure + content + merged config
↓
/naturalize # model: fill project facts, replace placeholders
↓
engsys verify --into . # confirm nothing drifted
- The fenced
PROJECT-FACTSregion ofCLAUDE.md(between theENGSYS:PROJECT-FACTS:START/ENDmarkers).engsys updateregenerates everything outside this region and never overwrites what's inside. <naturalize: ...>/<proj>/<rg>/<env>/<suffix>placeholders that packs left in.mcp.json, hooks, and the spliced CLAUDE.md fragments.- The project's
engsys.config.yamlnaturalize:block (model_strategy, hook_patterns, invariants) — edit there and re-runengsys updaterather than hand-editing generated files.
- Directory creation or file moves. If structure is missing, that's an installer bug — report it.
- Agent personas, command bodies, skills (managed, drift-tracked files). Stack
differences belong in packs, selected via config — not in edits to a
persona. If Melvin feels "too generic," the fix is a richer
cloud-architecture-<cloud>pack in engsys, not a per-project edit. - Content outside the PROJECT-FACTS fence in CLAUDE.md.
High-signal, verifiable, and the kind of thing that breaks correctness or trust if ignored. Examples drawn from real projects:
- The exact pre-push/precheck command and what it runs.
- Hard invariants ("eval must hold before ship", "restart the API after ingest", "never log card data", editorial red lines).
- Where architecture docs and ADRs live; the spec-of-record file.
- Runtime/version constraints that bite (JDK mismatch, Node version, no iOS CI).
Keep it tight. Link to docs/ for depth. Don't restate what the packs already
carry, and don't invent stack details you didn't verify in the repo.