Skip to main content

Part IV — Baselines (rules that never break)

These are the invariants. If code, docs, or habits contradict them, the baseline wins.

  1. The map stores facts; rules decide. No walkability, cost, hazard, or LoS verdict ever lives in map data.
  2. Render never feeds back. No rule or map datum may depend on what the render layer does.
  3. No derived storage. Anything computable from the map (surfaces, adjacency) is computed or cached, never serialized.
  4. Append-only catalog. Materials are added, never reordered or removed; maps reference them by index.
  5. Versioned formats, loud failure. Every binary format carries a schema version; loaders reject mismatches, never silently repair.
  6. Deterministic. Everything derived from (map, seed) reproduces identically given the same inputs.
  7. One tunable movement module. The climb thresholds live in one place, not scattered constants.
  8. Layered, one-way. Data and logic never import rendering; scripts stay focused; no circular dependencies.
  9. Tests gate every change. ./run_tests.sh must pass before anything lands.
  10. Docs change first. When a rule changes: update this bible / MAP_RULES.md first, then the code, then the wiki mirror.