What & why
examples/microphone-reverb-speaker'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/microphone-reverb-speaker/processors/reverb_effect.py — ReverbEffect(room_size, damping, wet_level, dry_level) (the other __init__s in the file belong to helper classes, not processors, and are untouched)
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/microphone-reverb-speaker'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/microphone-reverb-speaker/processors/reverb_effect.py—ReverbEffect(room_size, damping, wet_level, dry_level)(the other__init__s in the file belong to helper classes, not processors, and are untouched)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.