04 · Behaviour · Controlled worlds

Do not put the answer in the experiment.

A runner for testing whether a small local model adapts through repeated interaction without weight updates, hidden solution hints, or software quietly doing the reasoning.

The validity boundary

The Golden Rule is architectural.

“Never solve in software a problem the experiment is meant to discover” determines the module graph. World owns deterministic truth. Perception exposes a read-only contract. Observation renders only model-visible state. Policy is optional and independently selectable. Observer may inspect ground truth for analysis but cannot feed it back into decisions.

Opaque on purpose

Generated rooms and entities use opaque identifiers. The observation boundary exposes affordances and visible consequences without semantic names that would reveal the puzzle. A strict action parser accepts only the supported protocol. Action results distinguish whether state changed, whether the attempted action actually succeeded, and what energy it cost.

Procedural generation has a solver, but the solver validates world reachability; it is not available to the model. That difference matters. An unsolvable seed is a broken fixture. A solvable world that the model fails to escape is valid experimental evidence.

One model, controlled context

The native model layer owns a shared llama.cpp session for a batch. Exact-token KV-prefix reuse is the normal path; --fresh-context remains the reproducibility reference because cache reuse changes logits. Run provenance records which mode was used. Prompt reconstruction and lifecycle counts are explicit so model state does not leak accidentally between conditions.

Memory is an independent variable

Tiered memory implementations range from no memory through factual observed-state/action experience to optional policy signals. Experiments compare matched conditions and preserve the exact model-visible boundary. Decision telemetry and scheduled self-reports are observer-only: useful for later analysis, never new hints injected into the episode.

The project has already found reasons to be cautious. Historical prompts were unguided; later goal-conditioned work makes the objective explicit without supplying strategy or hidden progress. Semantic transition history did not establish switch-transition awareness in its bounded gate. Poor behaviour stays in the record instead of being tuned away until the graph looks nice.

Implementation is not a conclusion

The world, perception, memory, native inference, generation, observer, CLI, software renderer, and experiment runners exist and have unit/compliance coverage. Research conclusions are narrower. Several milestone systems are implemented while matched live experiments remain outstanding or deferred. That split is the point: a green unit test can prove an invariant, not emergent adaptation.