# Renderer Rules - `renderer/` draws the current `ImageDocument` plus read-only editor overlays. - `renderer.ts` is the renderer entrypoint/orchestrator only; keep it small. - Extract feature rendering into focused files such as `artboard.ts`, `checkerboard.ts`, `layers.ts`, or backend helpers. - Do not place shape drawing, shader setup, hit testing, cache management, or feature-specific rendering loops directly in `renderer.ts`. - Rendering backend details, e.g. WebGL objects, stay isolated here. - Do not mutate document or editor state directly. - Renderer interactions may emit intents/events only; callers translate them into commands. - Do not import React components or view code. - Do not leak backend objects into `core/`, `commands/`, `editor/`, or React state. - Cache only derived rendering data; authoritative state lives in `core/` and `editor/`.