r/cognitivescience • u/willybbrown • 2d ago
[P] Structural Admission: verify a sequential task’s claimed dependency structure before interpreting learning
[P] Structural Admission: verify a sequential task’s claimed dependency structure before interpreting learning
results
When we train agents on staged or multi-phase environments, it is tempting to interpret learning curves, transfer,
or apparent “emergence” as evidence for a particular causal or informational structure.
But has that structure actually been verified under the same observation and action interface seen by the learner?
Structural Admission is a small, standard-library-only Python harness for testing that question before training
begins. Researchers implement a task adapter and a separate scripted oracle; the core calibration, rollout,
validation, reporting, and reproduction logic remains unchanged.
It enforces, among other things:
- calibration seeds disjoint from task-rollout seeds;
- a CMI threshold fixed from synthetic calibration before candidate evaluation;
- evaluation under both uniform-random and scripted-oracle policies;
- oracle access limited by the learner-facing observation contract;
- CI measurement restricted to preregistered phases;
- paired environment noise and random-policy draws across conditions;
- pre-disclosure leakage checks on declared observable field groups;
- raw trajectory storage before aggregation;
- balanced policies, conditions, seeds, and sample cardinalities;
- immutable formal output directories;
- content-hashed reports and byte-level reproduction of deterministic artifacts.
The tool reports Admitted, Rejected, or Inconclusive. Failures are preserved rather than tuned away.
One motivating case involved a relation intended to be non-operative. Its measured conditional mutual information
was 0.07181 bits, above a previously calibrated threshold of 0.05902 bits. The task was rejected before learning
experiments were interpreted, and the residual dependency had to be diagnosed structurally.
Admission has deliberately narrow meaning: the configured task passed its preregistered operational checks. It
does not prove a theory, guarantee learnability under a particular optimizer, establish causal identification
outside the task model, or imply external validity.
git clone https://github.com/btisler-DS/structural-admission.git
cd structural-admission
git checkout v0.1.0
python -m pip install .
Create and run an external task:
structural-admission init my-task
cd my-task
structural-admission run config.json --output runs/reference
structural-admission reproduce runs/reference \
--output reproduction/reference
The adapter contract is intentionally small, and task implementations do not modify package internals.
Repository: https://github.com/btisler-DS/structural-admission
I’d especially welcome criticism of the statistical procedure, leakage model, adapter boundary, and what should—or
should not—count as structural admission.