# docs/ai — index Subsystems split out of [`ai.md`](../../ai.md) (2026-10-26) so a session pays only for the subsystem its task touches. The split is a **verbatim move**: history, traps and measurements are unchanged, and `ai.md` keeps a short stub carrying the load-bearing invariants plus a link here, so no rule is reachable only from a file you forgot to open. Read the file whose row matches the task. There is no required reading order. | File | Covers | Read when | |------|--------|-----------| | [`frame-pipeline.md`](frame-pipeline.md) | Render budget & measurement (`FrameCadence`, per-element composite timing, scene dump), `SceneCompositor` design + `StripPool`, and `FramePump` from scene snapshot to encoder (pacing, pool/paste caches, backpressure, teardown, health stats) | Touching the compositor, the render loop, per-frame cost, `Services/Encoder/*`, or debugging dropped/juddering frames | | [`capture.md`](capture.md) | The locked Background layer (screen/game/window capture, WinRT GraphicsCapture interop), the webcam seam + `CameraManager` sessions, MediaPipe background effects, and the vertical 9:16 tier's per-scene camera placement | Touching any frame source, the Background row, camera acquisition/conflicts, background effects, or vertical-tier camera geometry | ## Split-out yet to come The remaining `ai.md` blocks are being moved in staged units (capture, YouTube/alerts/auth, product, UI patterns/theming, audio/recording/encoder). Add the row when the file lands; do not create empty placeholders.