2.1 KiB
2.1 KiB
Instructions for the AI coding agent
This file is the working contract for AI-assisted development in this repository. Read it and inspect the repository before editing.
Rules
- Make small, buildable changes and run the relevant tests after each change.
- Do not replace or remove existing behavior without explaining why.
- Keep audio engine, DSP, project model, graph, persistence, and public core APIs in C (C99 baseline).
- Keep FLTK and GUI code in C++ only. The GUI must call the core through C headers.
- Use C
snake_case; prefer explicit ownership and small functions. - Validate pointers, sizes, IDs, enum values, and allocation results.
- Never allocate/free memory, perform file I/O, log, block on a mutex, or call GUI APIs from an audio callback.
- Do not mutate a graph while the audio thread is traversing it. Prepare and publish a safe immutable execution plan.
- Do not add dependencies without explaining the need, license, maintenance status, and build impact.
- Do not claim incomplete features are implemented. Distinguish prototype, stub, and finished behavior.
- Do not copy energyXT code, artwork, or proprietary resources.
- Before a task, briefly state the plan and affected files. After it, report files changed, commands run, test results, and limitations.
Definition of done
- Builds with warnings enabled.
- Relevant tests pass.
- Error paths and cleanup are handled.
- Documentation is updated when APIs or behavior change.
- No unrelated functionality is removed.
- Unverified behavior is reported honestly.
First task
Run cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug, cmake --build build --parallel, and ctest --test-dir build --output-on-failure. Inspect compiler and pkg-config availability. Do not install packages or alter system configuration without permission. Report current state and propose the next smallest step.
Roadmap
Follow docs/ROADMAP.md in order. The initial implementation should improve the graph and offline engine before introducing hardware audio I/O, recording, MIDI, or external plugin hosting.