Specs¶
Specs live in the project wiki, not in this repository.
A spec is a point-in-time decision record: written once, true of a moment, read
later for its conclusions. Keeping them here buried the living documentation they
sat beside, so they moved. Contributor guides, engineering standards and testing
conventions stay in docs/, because those change with the code.
| Spec | Title | Status |
|---|---|---|
| 0001 | afmpeg: pure-Go FFmpeg on a virtual filesystem | APPROVED |
| 0002 | the FFmpeg→WASI build pipeline | REJECTED |
| 0003 | the afero ↔ wazero vfs bridge | IMPLEMENTED |
| 0004 | the runtime & public API (Run / Probe) |
IMPLEMENTED |
| 0005 | the ffmpeg command builder | IMPLEMENTED |
| 0006 | hardening roadmap (deferred) | IMPLEMENTED |
| 0007 | the libav-direct engine + the ffmpeg-wasi project | IMPLEMENTED |
| 0008 | performance strategy (spike) | IMPLEMENTED |
| 0009 | cmd/afmpeg CLI (deferred, value unproven) |
DRAFT · blocked |
| 0010 | signed, release-aware module acquisition | IMPLEMENTED |
| 0011 | WKD key distribution + the embedded↔WKD cross-check | IMPLEMENTED |
| 0012 | feature-parity roadmap (toward a complete standalone offering) | APPROVED |
| 0013 | remux & stream copy | IMPLEMENTED |
| 0014 | seeking & time ranges | IMPLEMENTED |
| 0015 | container coverage | IMPLEMENTED |
| 0016 | native codec batch | IMPLEMENTED |
| 0017 | native filter batch | IMPLEMENTED |
| 0018 | LGPL encoder expansion | IMPLEMENTED |
| 0019 | text & subtitles | IMPLEMENTED |
| 0020 | metadata & chapters | IMPLEMENTED |
| 0021 | frame extraction op | IMPLEMENTED |
| 0022 | the build & distribution matrix | IMPLEMENTED |
| 0023 | HEVC & AV1 (heavy codecs) | IMPLEMENTED |
| 0024 | input demuxer options, forced/raw formats & stream selection | IMPLEMENTED |
| 0025 | A/V sync & frame-rate control | IN REVIEW |
| 0026 | engine hot-path performance | IMPLEMENTED |
| 0027 | runtime security hardening | IMPLEMENTED |
| 0028 | native backends (the hardware-acceleration escape hatch) | IMPLEMENTED |
| 0029 | meson cross-compile toolchain | IMPLEMENTED |
| 0030 | WASM threading strategy (wazero: stay single-threaded, fork for threads, or supplement) | DRAFT |
| 0031 | job progress reporting | IMPLEMENTED |
| 0032 | engine progress side-channel (0031 phase B) | IMPLEMENTED |
| 0033 | native progress side-channel (0031 phase B for Backend B) | DRAFT · blocked |
| 0034 | Fraction source precedence (progress correctness) | IMPLEMENTED |
| 0035 | engine builds on a merge request (ffmpeg-wasi CI evidence before the tag) | IMPLEMENTED |
| 0036 | engine test suite (the instrument for the n9 bump) | IMPLEMENTED |
| 0037 | engine test suite phase D: parity and the IPC host | IMPLEMENTED |
| 0038 | the engine on FFmpeg n9.0.1 | IMPLEMENTED |
| 0039 | the native driver's filesystem boundary (the pre-pass; could not fail closed) | REJECTED |
| 0040 | the native driver sandbox (opt-in Landlock; the case for optional did not survive review) | REJECTED |
| 0041 | the IPC protocol's missing primitives (read failure, rename, and asking what exists) | IMPLEMENTED |
| 0042 | fontconfig, the hls/dash demuxers, and the filesystem surface | IMPLEMENTED |
| 0043 | the native driver's filesystem boundary, replacing 0039 and 0040 (patch the file protocol, Landlock on by default) | IMPLEMENTED |
| 0044 | the engine must finish: liveness as a dataflow invariant rather than a deadline; read before 0043, not after | IMPLEMENTED |
| 0045 | which encoder an option is for: per-kind encoder option maps, and the CLI option names the docs teach that the engine has never had | IMPLEMENTED |
Referring to a spec¶
By number and name, "0020, the explainable-cull spec", never by date. The number is a stable handle; a date is not something anyone remembers.
Writing a new one¶
Claim the next number first, then draft against the canonical shape. See the
spec-driven-development skill in the phpboyscout marketplace.