What & why
examples/audio-mixer-demo's processors still take their configuration as keyword parameters on __init__. Since v0.21.0 (#2226), @processor refuses that signature at decoration, so importing the processor module raises and the example no longer starts.
This is the consumer backlog the agent-readable-processor-catalog change owes at ship (docs/plan/changes/archive/2026-09-13-agent-readable-processor-catalog.md). Per docs/plan/ARCHITECTURE.md §Consumers, a converted consumer's breakage is filed at that consumer and never blocks the engine change.
Design
Each processor below takes one config parameter annotated with a config class, and reads its values off that object. The config class is a dataclass whose fields are today's keyword parameters with their defaults, or a TypedDict. rt.add(..., config={...}) in the app stays as it is: the helper builds the config class from the dict. examples/camera-virtual-camera/processors/shader_effect.py (ShaderEffectConfig) is the in-tree model.
examples/audio-mixer-demo/processors/chord_mixer.py — ChordMixer(voice_gain)
examples/audio-mixer-demo/processors/tone_source.py — `ToneSource(frequency_hz, sample_rate, channels, block_size, amplitude)"
Done means
- Every processor above declares
def __init__(self, config: <ConfigClass>), and no @processor class in the example takes a keyword parameter.
- The example starts against the published wheel and reaches a running graph.
Validation shape
A fresh uv sync in the example, then run it as its README says. The processor modules import without a decoration refusal and the graph reaches Running.
Needs the physical rig?
audio
Non-derivable notes
Examples pin the published wheel, so validation needs a release carrying #2226 and #2228 (v0.22.0 or later). A local maturin develop is undone by uv sync.
What & why
examples/audio-mixer-demo's processors still take their configuration as keyword parameters on__init__. Since v0.21.0 (#2226),@processorrefuses that signature at decoration, so importing the processor module raises and the example no longer starts.This is the consumer backlog the agent-readable-processor-catalog change owes at ship (
docs/plan/changes/archive/2026-09-13-agent-readable-processor-catalog.md). Perdocs/plan/ARCHITECTURE.md§Consumers, a converted consumer's breakage is filed at that consumer and never blocks the engine change.Design
Each processor below takes one
configparameter annotated with a config class, and reads its values off that object. The config class is a dataclass whose fields are today's keyword parameters with their defaults, or a TypedDict.rt.add(..., config={...})in the app stays as it is: the helper builds the config class from the dict.examples/camera-virtual-camera/processors/shader_effect.py(ShaderEffectConfig) is the in-tree model.examples/audio-mixer-demo/processors/chord_mixer.py—ChordMixer(voice_gain)examples/audio-mixer-demo/processors/tone_source.py— `ToneSource(frequency_hz, sample_rate, channels, block_size, amplitude)"Done means
def __init__(self, config: <ConfigClass>), and no@processorclass in the example takes a keyword parameter.Validation shape
A fresh
uv syncin the example, then run it as its README says. The processor modules import without a decoration refusal and the graph reaches Running.Needs the physical rig?
audio
Non-derivable notes
Examples pin the published wheel, so validation needs a release carrying #2226 and #2228 (v0.22.0 or later). A local
maturin developis undone byuv sync.