Skip to content

System map

BrainlessLab separates a study’s meaning from its execution placement. This lets a declared protocol retain its identities while compatible work is divided into batches. It does not make every backend or arithmetic policy equivalent.

NodeSpec + TaskSpec + count + input_gain
-> CompositionSpec
CompositionSpec + stable IDs + controller + interventions
-> EvaluationTarget
targets + EvaluationSpec + NumericalPolicy + question + operation
-> Plan
Plan -> resolve -> validated ports, defaults and horizons
Plan + ExecutionSpec -> execute -> EvaluationResult
EvaluationResult -> task_outcome / offline decode / portable record

Assign one responsibility to each value

ValueOwns
NodeSpecModel family and local equation/construction parameters
TaskSpecTask family and task options
CompositionSpecModel/task combination, node count and input gain
EvaluationTargetStable condition ID, stream keys, controller and interventions
EvaluationSpecBlocks, trials, construction scope, horizon, warm-up and seed partition
NumericalPolicyDtype, strict ordered arithmetic and versioned RNG
PlanTargets, operation, question, version and evidence state
ExecutionSpecBackend, admitted batching, memory, cache, threads and recording

The resolver validates the assembled specification. Host construction creates seeded wiring and world tapes. Quadrants advances neural and task state. NumPy performs construction and bounded offline decoding. Returned snapshots own their host storage.

Inspect the layers without executing

Terminal window
uv run brainlesslab check python/plans/delayed-cue.toml

Expect JSON containing the original request and resolved targets. The command does not advance state or generate a research result. To execute, use run or the public execute function with a reviewed execution policy.

Keep batches separate from scientific identities

Stable stream identities derive from the scientific specification. The scheduler groups work with compatible task family, model, port widths and numerical policy, then admits it against managed memory and recording budgets. It can split a group into smaller batches without changing target, block, trial, wiring or feature identities.

More slots may improve throughput. They do not enlarge the independent sample in an already declared plan. If one trajectory cannot fit, the runner fails before constructing its world rather than silently reducing node count or changing the protocol.

Check trial status, realised world identities and wiring IDs when comparing batch sizes. Exact same-policy equality is a software gate; CPU64 and Metal32 require a separate numerical qualification because their arithmetic differs.

A result contains per-trial statuses and outcomes, block summaries and provenance. Optional recording adds sparse probe events or development replay frames. The task’s label truth stays outside the online controller.

A complete record or a successful kernel test does not promote a study. Biological interpretation, sealed confirmation, source conformance and backend qualification each need their own evidence.

Continue with evaluation, records, interfaces and runtime performance. Earlier components are linked from version history.