Skip to content

Task contracts

Which combinations are available?

The active models are falandays and sorn. Both accept the receptor and effector widths declared by the task. They use different local equations and plasticity; selecting the same node count does not equate their mechanism or memory footprint.

TaskReceptorsEffectorsNeural frames per world tickPrimary outcome
Tracking6221track_score
Pong4621hit_rate
CartPole8224fitness
Delayed cue321recall_accuracy
Recall interference321probe_accuracy
Delayed XOR521probe_accuracy
Evidence accumulation321probe_accuracy
Context integration721probe_accuracy
Temporal order421probe_accuracy
Reversal adaptation821adaptation_accuracy
from brainlesslab import TaskSpec
from brainlesslab.tasks import capacity_probe_presets, definition
for kind in ("tracking", "pong", "cartpole_plank_easy", "delayed_cue"):
task = definition(TaskSpec(kind))
print(kind, task.n_inputs, task.n_effectors, task.neural_frames)
print(len(capacity_probe_presets()))

The final line is 64. This count includes five delayed-cue cells and six additional families; it is not 64 independent replications.

Choose the scoring window

Tracking requires at least 2,000 scored ticks and defaults to 2,000. Pong requires at least 6,000 and defaults to 7,200. CartPole uses a 15,000-tick maximum and may terminate earlier. Physical diagnostic runs can be shorter when explicitly marked diagnostic; they do not satisfy the ordinary task protocol.

Probe horizons follow the complete episode schedule. Increasing a delay changes the horizon. A run cannot truncate an episode and still claim its declared accuracy. Probe warm-up is zero.

Task upper bounds are 1 for Tracking, Pong and binary probes, and 15,000 for CartPole. A bound does not imply an implemented controller achieves it. Physical null adjustment requires a matching frozen empirical calibration; binary probes declare chance 0.5.

Continue with task contracts, capacity probes and platform limits.