Part of #532. Opened by B68 (#645) §4a, outside its branch table.
Question
Arms that run TransportRule do not reproduce, and the map's own numbers already disagree because of it. Find the source, and decide what discipline readings on this map must follow.
What is measured
B68 (#645) ran a three-run check — A and B identical invocations, C differing only by the construction-time matched-generic null — inside one process:
|
@100 |
@200 |
A vs B, transport |
ΔER 2.30e-02 |
ΔER 2.47e-01 |
A vs B, frozen (no rule at all) |
ΔER 2.60e-05 |
ΔER 2.19e-04 |
| A vs C (construction-time null) |
0.00e+00 |
0.00e+00 |
both vs replicate, separate process |
exact |
exact |
So: the construction-time null is exonerated; an identical command in a separate process reproduces exactly; a second arm built inside one process does not; and the divergence is already present with nothing learning, at 2.6e-05, with TransportRule amplifying it roughly three orders in 200 ticks. agent.run resets the world with an explicit seed, so the stimulus stream is pinned per call — this is an execution-order effect on a trajectory sensitive at the last bit, not a loose seed.
Replicate spread at the horizon, |run − replicate|: the both arm is bit-exact through 5,000 and reads ΔER 3.3e-04 at 20,000; the transport arm is bit-exact through 2,000 and reads ΔER 1.78e-01 at 20,000.
Why it is not academic
The map's amended B62 (#635) entry quotes the transport arm at 5,000 as ER 3.1347 / q 0.0636 / 1.96 dimensions / aud-diff 0.5505. B68's run of the same command at the same rung reads 3.0024 / 0.0543 / 2.03 / 0.5313. Both are honest single runs of byte-identical trajectory code. One of B68's own claims — transport raises the rank above the frozen arm at 20,000 — is 0.203 against a 0.178 spread and does not clear it.
What to read
- The remaining untested difference. B68's C run took the null at construction only;
b62_frozen.py takes it at every checkpoint. Whether a diagnostic that re-assembles three delta/G pairs per reading moves the trajectory it is measuring is the one candidate B68 did not close, and it is cheap to test.
- The source, on the frozen arm, where there is no rule to blame and the divergence is still 2.6e-05 by tick 100. Allocation-order effects on floating-point summation are the leading guess and are not verified;
torch.set_num_threads(1) is already set, and index_add_ appears in restriction.py and tick.py.
- Whether it is fixable at all, and at what cost. A trajectory with a positive Lyapunov exponent under
TransportRule may not be worth pinning; if so the decision is a discipline rather than a fix.
What to decide
- The standing constraint's final form. B68 proposed: a difference between two arms that run
TransportRule is quoted against a replicate of one of them at the same rung, or it is not quoted — and where a rung reproduces bit-exactly, say so.
- Whether existing map entries need re-reading. Several rest on single-run differences between
TransportRule-carrying arms.
Named risks
Plan, don't do — a prototype may build and read, but the deliverable is the discipline, not a patched rig.
Part of #532. Opened by B68 (#645) §4a, outside its branch table.
Question
Arms that run
TransportRuledo not reproduce, and the map's own numbers already disagree because of it. Find the source, and decide what discipline readings on this map must follow.What is measured
B68 (#645) ran a three-run check — A and B identical invocations, C differing only by the construction-time matched-generic null — inside one process:
transportfrozen(no rule at all)bothvs replicate, separate processSo: the construction-time null is exonerated; an identical command in a separate process reproduces exactly; a second arm built inside one process does not; and the divergence is already present with nothing learning, at 2.6e-05, with
TransportRuleamplifying it roughly three orders in 200 ticks.agent.runresets the world with an explicit seed, so the stimulus stream is pinned per call — this is an execution-order effect on a trajectory sensitive at the last bit, not a loose seed.Replicate spread at the horizon,
|run − replicate|: thebotharm is bit-exact through 5,000 and reads ΔER 3.3e-04 at 20,000; thetransportarm is bit-exact through 2,000 and reads ΔER 1.78e-01 at 20,000.Why it is not academic
The map's amended B62 (#635) entry quotes the transport arm at 5,000 as ER 3.1347 /
q0.0636 / 1.96 dimensions / aud-diff 0.5505. B68's run of the same command at the same rung reads 3.0024 / 0.0543 / 2.03 / 0.5313. Both are honest single runs of byte-identical trajectory code. One of B68's own claims — transport raises the rank above the frozen arm at 20,000 — is 0.203 against a 0.178 spread and does not clear it.What to read
b62_frozen.pytakes it at every checkpoint. Whether a diagnostic that re-assembles threedelta/Gpairs per reading moves the trajectory it is measuring is the one candidate B68 did not close, and it is cheap to test.torch.set_num_threads(1)is already set, andindex_add_appears inrestriction.pyandtick.py.TransportRulemay not be worth pinning; if so the decision is a discipline rather than a fix.What to decide
TransportRuleis quoted against a replicate of one of them at the same rung, or it is not quoted — and where a rung reproduces bit-exactly, say so.TransportRule-carrying arms.Named risks
Plan, don't do — a prototype may build and read, but the deliverable is the discipline, not a patched rig.