@failure A cell here can drive its prediction error to zero, and `CONTEXT.md`'s **disagreement** says that state is unreachable — *never fully cleared*. The sandbox's dynamics are exactly reproducible: perfect uniform-density cylinders, an exact frictionloss constant per puck, no break-in, no speed dependence, and a deterministic solver, so repeated identical pushes from an identical snapshot give bit-identical outcomes. Real pucks give 1.6–12.5% translation std with at least three modes and per-action noise varying by an order of magnitude. So the architecture is motivated by dynamics as the site of epistemic pressure while being proved on a world whose dynamics are fully learnable in principle, and a success here may be the exploitation of reducible structure that no real dynamics offers. Recognisable as a cell whose residual falls to the arithmetic floor and stays there with no irreducible component — the state ADR-0007's *tolerated, not represented* floor is written on the assumption of.
@cutoff uncut
@discovered docs/research/018-sandbox-citations.md §2.6, minted in #609's grilling session
The statement this problem is drawn from
docs/research/018-sandbox-citations.md §2.6 — "The sandbox is more deterministic than the phenomenon it stands for" states it, quantifies it against the hardware literature, and filed it in the register the citation pass had available:
"The spec makes reproducibility a feature, and for debugging it plainly is one. But it means the sandbox offers a deterministic dynamics-learning problem while being motivated by dynamics as the site of epistemic pressure. A cell here can in principle drive its prediction error to zero; a cell in the real version of this world provably cannot. Given CONTEXT.md's disagreement — 'never fully cleared' — a world in which it can be fully cleared is a weak proving ground for that claim."
It called this "an unstated consequence rather than a defect", which was the right register for a citation pass and is why it sat unminted: only a grilling session mints a problem (ADR-0029). This is that session. §2.6 also notes the gap widens rather than narrows at ballistic speeds, where the real phenomenon's variability is higher.
One of §2.6's two remedies was adopted, and it is the one that does not fix this
§2.6 offered two ways to buy back uncertainty without giving up snapshot/restore:
- (a) Resample per-puck frictionloss from a narrow distribution at each
reset() — "a genuinely unmodellable component and a genuinely inferable-from-contact one." Not adopted. This is the one that would supply irreducible error.
- (b) Make frictionloss a function of position. Adopted, and it is now
CONTEXT.md's Friction field: "a property of the world, not a random draw — so the same push at two places gives two outcomes while snapshot and restore stay bit-exact." Its Avoid list carries stochastic friction and domain randomisation deliberately.
So the variety landed and the irreducibility did not. (b) makes the same push at two places differ; it does not stop a cell that has learned the field from predicting either one exactly.
Why this is uncut, and what would cut it
No rig on main offers a metric this failure fires on. The four checked: floor_split.py offers wander_over_named_floors and wander_share_of_floor; driven_settling.py offers draining_effective_rank, draining_effective_rank_opening, draining_edge_share and tau_wander_over_loop. None reports a residual or a prediction error against an irreducible component, which is the quantity this problem is about.
Writing a measurement bar on a metric that does not exist would put a cutoff nothing can fire on into the register — "the register's second loud section wearing a plainer disguise", in docs/agents/registers.md's own words. So this is admitted loud instead. What would cut it is a rig reporting a cell's residual against an irreducible floor; a later grilling session can cut this the day one exists.
The cost of fixing it, which is why it is not simply a task
Bit-exact snapshot and restore is load-bearing for this project's central instrument. ADR-0021's paired counterfactual — a perturbed run minus an unperturbed run forked from a common state — depends on it, and the ADR notes the sandbox supports the fork "with no special mode". B43 (#609) has since built the sensorimotor dependence measure on that same fork, and established that the determinism is already shaping what can be measured: a dependence measure conditioned on the situation reads its ceiling by construction and is vacuous, which is why B43 marginalises the situation instead and makes the configuration sweep the noise model.
So per-reset() resampling is not free even in the form §2.6 proposed: it must be seeded and replayable or the fork dies with it. That is a real design cost, and it is the reason this is a problem carrying a cutoff rather than a chore.
What this is not
Not the architecture-side question. Whether the rule or the parameterisation wants a stochastic element — to break the degeneracy B59 (#631) found an objective cannot rank, or to make B42 (#605)'s collapse cost something — is B65 (#639) on map #532, and is in scope there. This problem is about the world, which #532 rules out of scope by name ("Enriching the sandbox").
Not the noisy-TV failure. 018's §on Burda et al. records that this sandbox's determinism designs out the entropy-seeking pathology — "pucks are deterministic rigid bodies, there is no noise channel" — and points at §2.6 for the overshoot. Any remedy re-opens that exposure and should say so.
The statement this problem is drawn from
docs/research/018-sandbox-citations.md§2.6 — "The sandbox is more deterministic than the phenomenon it stands for" states it, quantifies it against the hardware literature, and filed it in the register the citation pass had available:It called this "an unstated consequence rather than a defect", which was the right register for a citation pass and is why it sat unminted: only a grilling session mints a problem (ADR-0029). This is that session. §2.6 also notes the gap widens rather than narrows at ballistic speeds, where the real phenomenon's variability is higher.
One of §2.6's two remedies was adopted, and it is the one that does not fix this
§2.6 offered two ways to buy back uncertainty without giving up snapshot/restore:
reset()— "a genuinely unmodellable component and a genuinely inferable-from-contact one." Not adopted. This is the one that would supply irreducible error.CONTEXT.md's Friction field: "a property of the world, not a random draw — so the same push at two places gives two outcomes while snapshot and restore stay bit-exact." Its Avoid list carries stochastic friction and domain randomisation deliberately.So the variety landed and the irreducibility did not. (b) makes the same push at two places differ; it does not stop a cell that has learned the field from predicting either one exactly.
Why this is
uncut, and what would cut itNo rig on
mainoffers a metric this failure fires on. The four checked:floor_split.pyofferswander_over_named_floorsandwander_share_of_floor;driven_settling.pyoffersdraining_effective_rank,draining_effective_rank_opening,draining_edge_shareandtau_wander_over_loop. None reports a residual or a prediction error against an irreducible component, which is the quantity this problem is about.Writing a
measurementbar on a metric that does not exist would put a cutoff nothing can fire on into the register — "the register's second loud section wearing a plainer disguise", indocs/agents/registers.md's own words. So this is admitted loud instead. What would cut it is a rig reporting a cell's residual against an irreducible floor; a later grilling session can cut this the day one exists.The cost of fixing it, which is why it is not simply a task
Bit-exact snapshot and restore is load-bearing for this project's central instrument. ADR-0021's paired counterfactual — a perturbed run minus an unperturbed run forked from a common state — depends on it, and the ADR notes the sandbox supports the fork "with no special mode". B43 (#609) has since built the sensorimotor dependence measure on that same fork, and established that the determinism is already shaping what can be measured: a dependence measure conditioned on the situation reads its ceiling by construction and is vacuous, which is why B43 marginalises the situation instead and makes the configuration sweep the noise model.
So per-
reset()resampling is not free even in the form §2.6 proposed: it must be seeded and replayable or the fork dies with it. That is a real design cost, and it is the reason this is a problem carrying a cutoff rather than a chore.What this is not
Not the architecture-side question. Whether the rule or the parameterisation wants a stochastic element — to break the degeneracy B59 (#631) found an objective cannot rank, or to make B42 (#605)'s collapse cost something — is B65 (#639) on map #532, and is in scope there. This problem is about the world, which #532 rules out of scope by name ("Enriching the sandbox").
Not the noisy-TV failure.
018's §on Burda et al. records that this sandbox's determinism designs out the entropy-seeking pathology — "pucks are deterministic rigid bodies, there is no noise channel" — and points at §2.6 for the overshoot. Any remedy re-opens that exposure and should say so.