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.
19 lines
1.1 KiB
Markdown
19 lines
1.1 KiB
Markdown
# 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 |
|
|
|
|
## 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.
|