Skip to content

orbit lab: drop the record_history opt-out once EigenScript#827 lands, and re-point planted fault 1 #24

Description

@InauguralPhysicist

Follow-up to the rung-1 UI ladder (#20), specifically the memory-gated
bifurcation slice (#23).

What changes upstream

EigenScript#827 — temporal assignment history is unbounded and arms on dead
code
— is fixed by InauguralSystems/EigenScript#829. Two things we depend on
here go away:

  1. The history is now bounded by program TEXT, not by runtime. Entries a
    backward query can never reach are pruned at append time, so a render loop
    that reassigns the same names every frame keeps a handful of entries and
    pins a handful of values instead of growing without bound. Measured
    upstream: a live prev of loop at 1.6M iterations went 203,008 kB → 2,944 kB
    (the no-temporal-query floor), flat in iteration count.
  2. Arming is per-name, not whole-program. physics.eigs' single prev of
    in the never-called frame_velocity demo no longer arms recording for the
    whole program — it arms only the name that query mentions. The dead-code
    repro went 53,120 kB → 2,944 kB.

Semantics are unchanged, so nothing about our temporal reads shifts.

What that breaks here

orbit.eigs:707 calls record_history of 0 for the lifetime of a lab window
session (restored at :729), with a long comment at :691 explaining why. That
workaround becomes unnecessary — but more importantly, planted fault 1 in
tests/test_bif_mem.sh:205 will stop failing
:

T1=$(plant hist "    local hist_was is record_history of 0" \
                "    local hist_was is record_history of 1")

It flips the opt-out on and requires the gate to reject the resulting build. Once
#827 is fixed, turning history back on no longer produces the 3.9 MB/frame
growth, so the fault is caught by nothing and the gate's self-test goes green for
the wrong reason — a planted fault that can no longer be planted is a gate that
has quietly stopped discriminating.

The work

  • Bump the EigenScript pin to the release carrying EigenScript#829.
  • Remove the record_history of 0 / record_history of hist_was pair and the
    :691 comment block from _run.
  • Replace planted fault 1 with one that still bites. The gate's job is to
    catch per-frame retention in the bifurcation view; it needs a fault that
    actually reintroduces unbounded growth on the fixed runtime — e.g. removing
    the chart's chart_trim / series cap, or the build-once sweep guard's
    companion. Do not simply delete fault 1: the gate would then be validated by
    one fewer fault than it was designed around.
  • Verify the memory gate still passes on a clean build and still fails on
    every remaining planted fault, per the gate's own self-test contract.

Blocked on EigenScript#829 landing and a release cut. Not urgent — the current
workaround is correct and costs nothing; the risk is only that the gate silently
weakens if the pin moves before this is done.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions