Metric Spec
Primary Metrics
1) Search Efficiency (K)
K = log10(tau_blind / tau_agent)tau_blindis the mediantau_proxyacross runs withpolicy=blindandmemory=offfor the same(scenario, backend).tau_agentis per-runtau_proxyfor directed policies.
tau_proxy is computed as:
tau_proxy = cumulative_goal_distance + 0.05 * cumulative_energy
where each term is accumulated across all simulation steps.
Primary DeltaK compares memory=on against memory=off. The memory=inertial_control condition is reported as an explicit control to separate damping-only persistence from history-dependent material memory.
2) Memory Retention Index (MRI)
For imprint runs only:
- detect pulse window by
abs(drive_signal) >= 0.5 * max(abs(drive_signal)) - baseline: pre-pulse
com_x - pulse response: mean
com_xduring pulse - tail response: mean
com_xin first post-pulse window MRI = (tail - baseline) / (pulse - baseline)
Interpretation:
MRI > 0: persistent trace after pulseMRI ~= 0: no measurable retention
3) Hysteresis Loop Area (HLA)
For hysteresis runs only:
- treat
(drive_signal(t), com_x(t))as a closed trajectory - compute normalized contour area via discrete line integral
- normalize by
(drive span * response span)
Interpretation:
HLA > 0: path dependence- larger values indicate stronger history dependence
Confidence Intervals
- Bootstrap medians with 2000 resamples.
- 95% CI reported as
[low, high]. - If every seed yields the same value, report
kind=exactwithlow = high = medianinstead of pretending there is a stochastic interval.
Damage Recovery Index (DRI)
For damage runs only:
- read
damage_stepfrom the runmetarecord - baseline: mean
goal_distancein the pre-damage window - spike: mean
goal_distanceimmediately after damage - tail: mean
goal_distancein the final window DRI = (spike - tail) / (spike - baseline)
Interpretation:
DRI > 0: recovery after perturbationDRI ~= 0: little net recoveryDRI < 0: damage trace persists or worsens
Acceptance Criteria
HLA.low > 0MRI.low > 0- At least 2 scenario/backend groups with
DeltaK_on_vs_off.low > 0, whereDeltaK_on_vs_off = K_memory_on - K_directed_off.
Control-Separation Readout
- Report
DeltaK_on_vs_inertial_control = K_memory_on - K_inertial_control. - Track whether at least 2 scenario/backend groups have
DeltaK_on_vs_inertial_control.low > 0.