docs(ai): partition ai.md into five subsystem files (verbatim moves)

ai.md 1,308 → 228 lines. No prose rewritten: every block was moved as-is so
nothing could be lost in translation, then replaced by a pointer.

New files:
- docs/ai/environment.md — LAN/SSH + Gitea push recipe, Windows dotnet
  build/run, test-suite map, hermetic real-MainWindow test rule
- docs/ai/product.md — brand/naming, AI transparency, GPL licensing
  prohibitions, free-forever monetization, auth/account assumptions,
  packaging & distribution
- docs/ai/youtube-api.md — go-live ordering, the broadcast-binding fix, the
  private-only lock, health parsing, end-stream pre-flight, Test mode,
  chat insert shape
- docs/ai/overlays.md — social bar, native alert box (animations, clip,
  ticker), chat box conventions
- docs/ai/ui-surface.md — control surface, scene strip, preview rail,
  hotkeys, broadcast drawer, toasts, transitions, brand logo, launch
  geometry, theme/properties conventions

ai.md keeps the response/derivation rules, the architecture table, the four
existing invariant stubs, and one pointer per moved subsystem.
docs/ai/index.md routes every file with a "read when" column.

References falsified by the move were fixed in the same commit: AGENTS.md
build note → environment.md → Run, and the "Related" footers in
frame-pipeline.md / output.md / capture.md now point at the owning files.

Docs-only unit: scope-check run, no build (no source touched).
This commit is contained in:
2026-10-29 11:05:53 -07:00
parent ee3c59210d
commit a311c8feb1
11 changed files with 1204 additions and 1135 deletions
+7 -7
View File
@@ -122,7 +122,7 @@ allowed until a real reading names the culprit.
**Read takes in Release.** The creator launches `dotnet run -c Release`; Debug pixel paths are
several× slower, so a Debug number is not a reading of this pipeline (see
[`ai.md` → Run](../../ai.md#run)).
[`environment.md` → Run](environment.md#run)).
**Derivative check (AGENTS.md):** this is not invented — OBS's own answer to "which source is slow" is
the **Source Profiler**, which reports the *average execution time of each source's tick and render
@@ -793,11 +793,11 @@ Full suite 290/291 passing, the sole failure the pre-existing compositor pixel t
---
## Related in [`ai.md`](../../ai.md)
## Related files
This file owns the compositor and the pump. The neighbours stay in `ai.md`:
This file owns the compositor and the pump. The neighbours live elsewhere:
- **Live encoder + RTMP push** — `IFfmpegEncoder`/`FfmpegEncoder`, `FfmpegArgs`, locator and bundle.
- **Media source** — `MediaVideoSource` (ffmpeg `rawvideo` decode) feeding the pump's resolver.
- **Social bar** and **Native events & alerts** — the overlay strips the compositor blits last.
- **Run** and **Tests** — how to launch in Release and how the suite is run.
- [`output.md`](output.md) — **live encoder + RTMP push**, `IFfmpegEncoder`/`FfmpegEncoder`, `FfmpegArgs`, locator and bundle.
- [`TASKS/task-21-media-source.md`](../../TASKS/task-21-media-source.md) — **media source**, `MediaVideoSource` (ffmpeg `rawvideo` decode) feeding the pump's resolver.
- [`overlays.md`](overlays.md) — **social bar** and **native events & alerts**, the overlay strips the compositor blits last.
- [`environment.md`](environment.md) — **Run** and **Tests**, how to launch in Release and how the suite is run.