# Editor subtree rules

- Define an explicit interaction-state matrix before implementing new editor UI behavior.
- Keep egui rendering thin. Move selection models, transaction planning, path rewriting, material
  resolution, import review, and reusable logic into lightweight modules or crates.
- Test an invariant in its lightest owning crate; do not put it in `editor` merely because the UI
  calls it.
- A small UI change does not justify full-workspace testing.
- Use `cargo check -p editor --lib` through the development lane in the fast loop unless a binary
  target is directly affected.
- Use focused editor tests only for editor-owned behavior.
- Use named native scenarios for interaction and visual acceptance.
- Do not use all-features or hot-reload/dynamic-linking combinations for ordinary editor QA unless
  that feature is under test.
- Screenshots alone do not establish UX completion; exercise the interaction.
- Reuse established editor components and visual language instead of creating bespoke panel
  controls.
- Treat sustainable extension seams and debt-at-the-point-of-change as a feature requirement.
  Inspector and Content Browser shells dispatch; they do not own domain behavior. Do not grow a
  frozen-baseline module, and run `scripts/codex/architecture_audit.py check` after structural UI
  changes.
