ai.md is the mandatory read every session; at 2,702 lines / ~64k tokens it costs the whole subsystem history even when the task never touches it. This is a verbatim move, not a compression - nothing is deleted and each stub is written from the moved text. - docs/ai/frame-pipeline.md: 'Frame cadence', 'Per-element composite timing + scene dump', 'What the first instrumented take said', 'Render budget', 'Scene compositor' and 'Live frame pipeline', byte-identical, plus a short 'Related in ai.md' footer and two stale 'below' pointers corrected. - ai.md keeps two stubs carrying the invariants that must not be missed (overlay on every render path, VideoFrame.Epoch, StripPool threads, Release-only render numbers; arrival-stamped rawvideo, non-blocking submit, stop order, burned _outputIndex judge) and links the new file. - docs/ai/index.md + docs/index.md route the split; schema.md inventory lists the new tier. - 4 index-row references and 2 TASKS.md anchors repointed; ai.md's Services row too. Measured: ai.md 63.6k -> 47.1k tokens, 2,702 -> 1,975 lines. Progressive disclosure per schema.md convention 5. No source touched; no push.
1.1 KiB
1.1 KiB
docs/ai — index
Subsystems split out of 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 |
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 |
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.