Skip to content

Extending BrainlessLab

Start from the external-project tutorial when an extension does not belong in the package.

Choose the boundary

IntentPublic boundary
Change declared node valuesparameter or preset
Add a different neural substrateReservoir methods and NodeSpec
Reuse sensorimotor organisationbody or embodiment configuration
Add sensing or actionsensor, encoder, readout, actuator, or dynamics method
Add a vector or physical taskTaskSpec and compatible setup
Add a reusable measureanalysis function and registration
Test mechanism necessityregistered ablation

Julia multiple dispatch is the extension mechanism. Registries make implementations discoverable and selectable by name. Do not add a registry only to avoid a clear method.

Node checklist

Declare parameters, ownership, validators, parameter sets, capabilities, equations, tags, and stability. Test port widths, deterministic construction, stepping, readout, reset, and replay. Inspect inference and allocations after correctness is established.

Task checklist

Define observations, actions, timing, reset, horizon, randomised quantities, an optional scalar outcome, anchors, descriptors, gates, and degenerate policies. A task without a scalar outcome can support profiling but cannot enter a scalar benchmark.

Evidence boundary

Focused tests establish software behaviour. They do not establish construct validity, biological fidelity, or useful task performance. Add experimental capability metadata when the feature is discoverable but not part of the core path.

Source: src/core/Interfaces.jl, src/core/Registry.jl, examples/templates/new_project/.