# Source-Format Support Matrix (YSD-0108)

Compiled 2026-07-18 at working-tree commit `33956eb359`. For each source family
YSD-0108 names: the concrete formats, what the repository can really do today
(with evidence), and what the workspace must add. Status vocabulary follows the
proposal §5.1 legend. `ffmpeg`/`ffprobe` binaries are present on the dev box
(`/usr/bin/ffmpeg`, `/usr/bin/ffprobe`).

| #   | Family                  | Formats                                                                            | Existing capability                                                                                                                                                                                                                                                                                   | Status                                                                | Serves                                                 |
| --- | ----------------------- | ---------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- | ------------------------------------------------------ |
| 1   | Film/video              | mp4, mov, mkv, webm, avi, mxf, ts; H.264, H.265, VP8/9, AV1, ProRes, DNxHD         | Real ffmpeg execution: `libs/shared/encoding` (`imf-delivery`, `timeline-assembly`), `libs/shared/live-media` (`neith-ffmpeg-transcoder`, `ffmpeg-hls-dash-packager`); aja type vocabulary (`VideoCodec`, `ContainerFormat`, `ColorSpace`, `PixelFormat`); aja probe/scene-detection is **simulated** | implemented-primitive (decode/transcode) + fixture-backed (analysis)  | YSD-5001, YSD-1030 walking skeleton                    |
| 2   | Audio                   | aac, mp3, opus, vorbis, pcm, ac3; stems/mixes                                      | `libs/shared/encoding/src/audio-analysis.ts` (real DSP), euterpe analysis libraries (no service/persistence)                                                                                                                                                                                          | implemented-primitive (analysis code) / partial (no anchored outputs) | YSD-5001, Section 9 sound lens                         |
| 3   | Subtitles               | SRT, WebVTT                                                                        | References in aja `metadata-extraction.ts`/`types.ts`, sophia `accessibility-manager.ts`, euterpe `lyric-video`                                                                                                                                                                                       | partial (parsing scattered, no shared subtitle-track contract)        | YSD-2027 MediaTrack, YSD-2072 line/word anchors        |
| 4   | Transcripts             | timestamped transcript envelopes; ASR outputs                                      | `libs/sophia/ingestion/src/adapters/video-transcript.ts` (`VideoTranscriptAdapter`, `VideoTranscriber` seam — real anchor pattern, no bundled ASR)                                                                                                                                                    | implemented-primitive (anchoring) / seam (ASR)                        | YSD-2029 anchors, YSD-5xxx transcript ingest           |
| 5   | Images/stills           | PNG, JPEG, WebP (web-standard set)                                                 | yemaya `Asset` (`AssetType.IMAGE`, checksum/thumbnail/preview), isis generation outputs, oshun `asset-preview-pipeline` Studio surface                                                                                                                                                                | partial (asset handling; no region-anchor study support)              | YSD-2079 still-image anchors, YSD-22009 region pinning |
| 6   | Documents               | text/markdown strong; PDF absent                                                   | nisaba document/passage/edition stack (Prisma `Passage`, `CanonicalReference`, W3C selectors) is production-grade for text; **no PDF parser found** in nisaba/sophia                                                                                                                                  | implemented-primitive (text) / missing (PDF, page-image)              | YSD-2078 document anchors                              |
| 7   | Storyboards             | image sequences + panel/page structure                                             | No dedicated support; composes from families 5 + 6                                                                                                                                                                                                                                                    | missing (as a first-class kind)                                       | YSD-2078 panel anchors                                 |
| 8   | Telemetry               | JSON event streams; versioned schemas                                              | `apps/v2/telemetry-schema-migrations` (additive/breaking compat), `player-behavior-heatmaps`, `telemetry-session-reconstruction`, `telemetry-privacy-compliance`; bellona `telemetry-hooks`                                                                                                           | product-specific (no cross-game contract)                             | YSD-5008, Section 12 Tier B/C                          |
| 9   | Creator-owned 3D assets | glTF, USD, FBX, OBJ, Alembic                                                       | `libs/neith/assets/crates/neith-asset-import` (`GltfImporter, UsdImporter, FbxImporter, ObjImporter, AlembicImporter`), `neith-engine-interchange` (materials/skeleton/LOD/texture translation), on-box OpenUSD `pxr` runtime (venv, `OSHUN_USD_PYTHON`); phase-170 fail-loud Alembic/.ztl seams      | implemented-primitive (Rust crates; no workspace adapter/sandbox)     | YSD-2080 anchors, YSD-0165 adapter, Section 9.13       |
| 10  | Level scenes            | engine scenes/levels (.uasset via bridges, Blender/Godot/Unity scenes), USD stages | `libs/neith/scene/crates` (`neith-scene-graph`, `neith-world`, `neith-level-stream`), maya engine-core crates, bellona `bridge-{blender,godot,unity,unreal}` apps, on-box headless .uasset authoring (2026-06-18 record)                                                                              | implemented-primitive (engine side) / missing (study exposure)        | YSD-2081 anchors, YSD-0158 bridge reuse                |
| 11  | Commentary              | commentary audio tracks, director/creator commentary                               | No dedicated kind; families 1/2/4 primitives apply; creator-statement epistemic identity does not exist yet                                                                                                                                                                                           | missing (as epistemic kind)                                           | YSD-5009, YSD-2107 creator statement                   |
| 12  | Paratext                | interviews, making-ofs, talks, art books, patch notes, dev diaries                 | nisaba text stack applies; no ingestion or creator-statement typing                                                                                                                                                                                                                                   | missing (as first-class ingest)                                       | YSD-5009, Section 11                                   |

## Cross-cutting requirements the matrix implies

- **Parser sandboxing (YSD-4093/4095):** families 1–3, 5–7, 9, 10 all parse
  untrusted bytes; ffmpeg/image/3D parsers must run behind the quarantine +
  resource-limit envelope before any workspace exposure. The neith Rust
  importers are memory-safe but still need decompression/complexity limits (mesh
  complexity, archive depth).
- **Simulated-path quarantine (YSD-1007):** aja probe/scene-detection stays
  `unsupported` behind the adapter until rewired to the real `shared/encoding`
  ffmpeg primitives — the shared libs, not aja's simulated code, are the decode
  foundation.
- **Provider/streaming sources are not a format family:** provider content is
  link-only playback (YSD-4009, YSD-5004) — deliberately absent from this matrix
  because no bytes are parsed.
- **Frame-rate identity (YSD-2003):** family 1 support must carry rational frame
  rates and drop-frame timecode; the aja types lack both (integer fps
  assumptions) — flagged for the Section 2 contracts.
- **Capability discovery (YSD-2007):** every family maps to explicit
  supported/unsupported/unavailable responses per source class; "in the repo
  somewhere" is not "supported" until wired through an adapter with conformance
  tests (YSD-0163).
