# 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.