Architecture Decision Records¶
Decisions that shape SlideStream, recorded so nobody has to reverse-engineer them from code. Backfilled 2026-09 from module docstrings, config comments, and the git history (the repo's visible history starts in the 2.15.x era).
| ADR | Title | Status |
|---|---|---|
| 0001 | Provider registry with fallback chains and strict mode | Accepted |
| 0002 | Layered YAML configuration with ${ENV} expansion |
Accepted |
| 0003 | OpenAI-compatible APIs as the default self-hosted shape | Accepted |
| 0004 | gTTS and text cards are the always-available floor | Superseded by 0012 |
| 0005 | Privacy-first voice cloning (ephemeral, deleted after the run) | Accepted |
| 0006 | Avatar render economics: one GPU clip per deck | Accepted |
| 0007 | Hermetic tests; provider env vars scrubbed | Accepted |
| 0008 | Dual output modes: .mp4 video and editable .pptx deck |
Accepted |
| 0009 | Designed decks via an external Presenton, rasterised for video | Accepted |
| 0010 | SlideStream orchestrates external services through adapters | Proposed |
| 0011 | A project folder holds the pipeline's state | Proposed |
| 0012 | Three-level fallback; Kokoro is the voice floor | Accepted |
| 0013 | Designed decks stay faithful: fidelity check and code slides | Accepted |
| 0014 | Design new slides from the user's own PowerPoint template | Accepted (not yet implemented) |
Format¶
Each ADR is short: Context (the forces), Decision (what we chose), and Consequences (what that costs or enables). New ADRs get the next number and are never edited after acceptance — supersede them with a new record instead.