Compare conditions
A comparison asks whether a declared change affects a task outcome under matched opportunities. Start by naming that change. Freezing recurrent weights, removing input and replacing the controller with random action answer different questions.
Check an ablation example
uv run brainlesslab check python/plans/ablate-delayed-cue.tomlThe example contains a baseline and two plasticity interventions. All targets share the task, horizon and declared world pairing. Run it only after checking the intervention tick and the model’s enabled learning rates:
uv run brainlesslab run python/plans/ablate-delayed-cue.toml --root recordsuv run brainlesslab inspect records/RECORD_IDExpect separate target summaries and paired_raw contrasts against baseline.
The contrast subtracts baseline from intervention within each paired trial, averages
within a block, then compares independent block differences. It retains native task units.
Declare the change directly
from brainlesslab import ( CompositionSpec, EvaluationSpec, NodeSpec, TaskSpec, ablate, resolve,)
plan = ablate( CompositionSpec(NodeSpec("sorn"), TaskSpec("delayed_cue"), count=32), verbs=("freeze_weights", "freeze_plasticity"), tick=9, evaluation=EvaluationSpec(blocks=4, trials_per_block=8, root_seed=52),)resolved = resolve(plan)print([(target.target.id, target.target.interventions) for target in resolved.targets])The tick is one-based and absolute within each trial. The intervention takes effect before that tick’s neural frames. At tick 9, an eight-tick initial cue has ended. Changing the timing changes the scientific comparison.
freeze_weights disables weight adaptation. Falandays target adaptation and SORN
intrinsic threshold adaptation continue. freeze_plasticity disables all declared
adaptation. Neither resets dynamic state at the intervention. A full trial reset restores
the original state and learning flags for the next trial.
The resolver rejects redundant or inapplicable freezes, interventions beyond the horizon, and reservoir interventions attached to direct reference controllers. A zero learning rate is a different initial condition from freezing an adapting model later.
Preserve pairing without assuming identity
pairing_key identifies shared world streams. construction_key identifies
construction streams, and mechanism_key identifies drive streams. Defaults deliberately
match these keys across simple ablation targets. Use explicit keys when another
comparison needs distinct mechanisms or construction.
Matching a construction stream does not prove identical topology after changing a parameter that alters construction. Inspect realised wiring IDs. Stable target, block and trial IDs remain meaningful when execution batch slots change.
For an arbitrary pair of model configurations, create named EvaluationTarget values in
one Plan. The runner automatically emits paired contrasts for ablations against their
baseline and reservoir targets against a matching reference-null target. It does not
invent every possible pairwise comparison.
Report raw paired contrasts separately from null-adjusted uncertainty. A positive contrast supports a difference under this task and protocol. It does not identify a learning mechanism without the appropriate interventions, nor establish general competence.
Continue with evaluation, analysis and calibration and evidence states.