The roadmap

Build the thing being wrapped, before the wrapper.

Every milestone is sequenced to keep a working artifact at each step. Status here is derived from IMPLEMENTATION-STATUS.md — when the code moves, this page moves.

Overall 4/8 milestones · 31/45 deliverables
70%
  1. M0

    Specification

    Done

    Decisions recorded, contracts defined, standards set. Everything starts here.

    100%
    spec
    • Architecture & decisions (ADRs)
    • Contracts: stack.toml schema, versioning
    • Quality & governance standards
  2. M0.5

    Governance in force

    Done

    The rules that bind every repo, standing up before the first line of code.

    100%
    spec
    • 50-governance accepted
    • spec-check workflow (citation gating)
    • Repo templates + Spec: trailer
    • OVERRIDES.md (append-only)
    • Spec-side CI (dup-ID, link resolution)
    • Branch protection on all repos
  3. M1

    media-stack works standalone

    Done

    The 19-service Compose stack, usable with bare docker compose — no Rust involved.

    • compose.yml + per-profile fragments
    • stack.toml manifest
    • .env.example, every var documented
    • Storage overlay (NAS)
    • Service configs (recyclarr, homepage, caddy)
    • CI: parity + per-form config + lints
    • Standalone README
  4. M2

    Core: manifest, compose driver, CLI

    Done

    Headless core. Every capability reachable as a plain, scriptable subcommand.

    100%
    lemonfiber
    • Workspace + cargo-dist scaffold
    • stack.toml parser + validation (compile-time schema check)
    • Embedded assets (include_dir! + --stack-dir)
    • Platform detection (macOS / Linux / Linux-Desktop / WSL2)
    • Compose command builder (pure, golden-tested)
    • Form closure + composition (B1-R4, B1-R5)
    • up / down / restart / ps / logs / pull
    • .env read/write (comment- and order-preserving)
    • config get/set/show (with secret redaction)
  5. M3

    Setup wizard + doctor

    In progress

    The product thesis: guided setup and diagnostics that prove things work.

    • doctor — Check trait, remedy per finding C1-R1..R12
    • VPN leak test (exec gluetun + client, compare IPs)
    • Preflight / Environment check (Docker present vs unreachable, Compose ≥ min) A2-R9
    • Empirical hardlink test (create / stat / inode + link-count) C5-R1
    • Storage-mode detection (fs type, network mount, exFAT, WSL2) C5-R2
    • Credential validation against live services A3-R1..R4
    • VPN port-forward validation + ProtonVPN NAT-PMP guidance A3-R8
    • Prerequisites / account guidance (dependency map before credentials) A1-R1..R13
    • Wizard state machine (resumable, review-before-write, non-interactive guard) A2-R1..R15
    • Jellyfin native-mode + PUID/PGID offers (platform-aware) A2-R6
  6. M4

    Seed

    In progress

    Wire services to each other and record it, turning config from precious into reproducible.

    • service::Client port (Servarr shape)
    • Servarr-shape adapter (identity, register client/root folder)
    • Seed orchestration (skip-if-absent, preserve operator edits)
    • Change journal (read-back + undo)
    • Download-client / root-folder / Prowlarr / Bindery / Jellyfin→Seerr wiring D1-R7
  7. M5

    TUI

    Planned

    A second surface over the same core — a terminal dashboard (ratatui).

    • ratatui surface over core
  8. M6

    Release engineering

    In progress

    Signed, multi-platform releases and a generated Homebrew formula.

    • cargo-dist scaffold
    • CI hardening (OpenSSF, CodeQL, Scorecard)
    • Signed multi-platform release automation
    • Generated Homebrew formula

Want the full argument behind each decision? The canonical roadmap and the 795-requirement spec spell out the why for every one.