# Roadmap ## Phase 0 — Baseline Inspect repository/toolchain, verify Makefile and minimal executable, document dependencies. No system changes without permission. Baseline implementation: headless startup/shutdown executable, core tests, separate debug build, optional FLTK shell build, and header dependencies. See [BUILD.md](BUILD.md) for toolchain, commands, licensing and limitations. ## Phase 1 — C core and offline processing Graph data structures, validation, cycle detection, topological ordering, preallocated buffers, test oscillator, gain and offline render tests. Implemented: mono ports, transactional cycle rejection, independent compiled plans, precomputed input routing, oscillator/gain/meter/output, deterministic variable-block tests and lifecycle/error coverage. See AUDIO_ENGINE.md for API limits and compatibility behavior. ## Phase 2 — Real-time backend Choose and implement a Linux backend. Document callback semantics, start/stop, device errors, shutdown, and safe graph publication. Implemented: optional JACK-compatible mono backend, explicit audio port routing, format/xrun/loss status, start/stop/reopen, and bounded pending/retired plan handoff using lock-free atomics. Hardware-independent failure/concurrency tests and a 30-second software-loopback run pass. See decision 0004 and AUDIO_ENGINE.md. Physical hardware playback/endurance and live server-loss recovery remain unverified; GUI engine controls are implemented in Phase 3. ## Phase 3 — FLTK shell Main window, transport controls, view switching, backend status, clean startup and shutdown through the C API. Implemented: dark FLTK shell, Play/Stop/Reconnect, view/menu shortcuts, backend state/format/xrun/process status, persistent command errors, timer-based refresh and retirement collection, and callback-safe close/retry. Mock-backend GUI tests and live GUI/JACK start/stop/reconnect/close tests pass under Xvfb. Sequencer, mixer and project-file actions remain placeholders; initial graph is silent. See GUI.md. ## Phase 4 — Modular editor Draw nodes/ports/edges; create, move and connect nodes; reject invalid edges; safely submit edits to the C core. Implemented: scrollable node/port/wire canvas; add/select/move/delete nodes; drag connections, select/delete wires, and show invalid-edit feedback. C owns stable IDs, read-only snapshots and transactional edits. Exact accepted graph snapshots are submitted to the backend; prepared/queued/active state is exposed through revision acknowledgements. Core/render, GUI rollback, mouse smoke and live adoption tests pass. See GUI.md and AUDIO_ENGINE.md. Preset parameters, mono-only processing, fixed canvas and no persistence/undo/zoom remain limits. ## Phase 5 — Project and sequencer Versioned persistence, stable IDs, tracks, clips, timeline, selection, zoom, scrolling, and transport synchronization. Implemented: bounded version-1 project persistence with transactional loads and temporary-file/fsync/rename saves; stable track/clip/node IDs; silent regions; track and region creation/deletion, selection, move/trim, timeline zoom/scroll; sample-counted playhead, pause/resume and stopped seek. Project/graph arrangement roundtrips, malformed-input, GUI rollback/gesture and live transport tests pass. See PROJECT_FORMAT.md and GUI.md. Constant tempo/4/4, silent metadata regions, no undo, asset playback, MIDI or persisted GUI layout are explicit limits. ## Phase 6 — Audio clips and recording Audio import/playback, recording through bounded buffers, missing-asset handling, no file I/O in callbacks. ## Phase 7 — MIDI and instrument MIDI input/events/clips, simple internal instrument, note-off/panic handling, then a basic piano roll. ## Phase 8 — Mixer and editing Gain/pan, meters, mute/solo, automation, undo/redo, keyboard workflow. ## Phase 9 — Extensibility and release Native node API, evaluate plugin hosting, licensing review, packaging, installation tests, performance and recovery tests. Do not skip phases without documenting why and preserving acceptance criteria.