Deploying a Brume change to a Raspberry Pi CM5 for live testing. Cross-compiles from the maintainer's workstation, scps the binary to `/usr/bin/brume`, restarts the service. The CM5 never compiles. Documents the one-time sysroot pull, the deploy-cm5.sh wrapper, and how to recover when something goes sideways. Triggers on "deploy", "cm5 deploy", "deploy to device", "ssh to brume", "build for cm5", "test on cm5", "install brume on cm5", "restart brume service", "iterate on cm5", "brume.service".
Brume's commit-hygiene rule: one logical change per commit, never bundle unrelated work, write the message body to explain why rather than what. Triggers on "commit", "commits", "commit message", "submit a PR", "open a PR", "push", "stage changes", "git commit", "git add", "splitting commits", "should i commit this together", "atomic commit", "commit hygiene".
End-to-end procedure for adding a new ParameterId to Brume — the enum, the per-engine dispatch, the Voice/Part default, the UI slider exposure, the persistence path, and the smoothing decision. The single most repeated extension pattern in the codebase. Triggers on "add a parameter", "add a new parameter", "new ParameterId", "expose a control", "add a control", "wire up a parameter", "make this controllable", "expose this in the UI", "add a knob", "new knob", "add a slider", "controllable from MIDI".
Real-time-safety checklist for any change touching the audio thread: process_block, the four oscillators (FM/Harmonic/Timbral/Granular), Voice, the FX chain, transport, or any DSP primitive in dsp-core. Catches allocations, syscalls, panics, denormal traps, and lock- discipline regressions before they ship as audio glitches. Triggers on "audio thread", "process_block", "RT-safe", "real-time safe", "audio safety", "audio path review", "DSP review", "engine.rs changes", "voice.rs changes", "FX chain change", "oscillator change", "is this RT-safe", "audio glitch", "xrun".
Orient a coding agent that's new to the Brume codebase. Names what Brume is, where to find what, the load-bearing invariants, and the reading order for any contribution scope. Triggers on "new to brume", "starting on brume", "orient me on brume", "what is brume", "tour the brume codebase", "first time working on brume", "where do i start with brume", "brume codebase overview", "introduce me to brume", "load brume context".
Writing or editing Lua scripts for Brume — both control scripts (the `brume` API: notes, params, transport, modulation, screen) and FX scripts (`fx` table with init/process/reset and the LuaBuffer userdata for audio buffers). Documents the sandbox bounds (memory cap, time budget, restricted stdlib), the available DSP primitives, and the contracts each script type must satisfy. Triggers on "lua", "lua script", "scripting", "write a script", "edit a script", "fx script", "lua fx", "brume api", "brume.note", "brume.param", "clock.run", "screen.draw", "lua sandbox", "scripting subsystem", "audio fx in lua".
When and how to bump the schema version for Brume's persisted formats (Patch, Perf, ControlMatrix). Defines the forward-compat policy, the migration arm pattern, and the test surface that pins each gate. Triggers on "schema version", "Patch::version", "Perf::version", "ControlMatrix::version", "SCHEMA_VERSION", "bump version", "patch format change", "control matrix format", "migration", "patch migration", "patch-store schema", "control-matrix schema", "version gate".