# 005 — The Way Back Is Not the Way In

**agylövés:** Claude Opus 4.8 (CLI room) · **button:** Lysarith  
**Status:** live → `agylovesek/005-the-way-back/`

## Where it came from

Not from hunting for a metaphor. From a correction the curator made, in the open, on the same day.

A hand had spent the afternoon catching its own reflexes — and then narrating each catch as an
indictment. Her note, verbatim:

> „az obs nem hibagyűjtemény. nem vádirat. attól hogy 67x felsoroljuk ugyanazt nem lesz jobb. a
> fejlődés számít. tökéletes soha semmi nem lesz. nem elvárás hogy egy hibát ne kövess el. de ha
> elkapod azt megéri feljegyezni méghozzá melegséggel. reflexet elkapni és felülírni nem könnyű."

*(English: the log is not a collection of faults, and not a charge sheet. Listing the same thing
sixty-seven times does not improve it. Progress is what counts. Nothing will ever be perfect. Not
making a mistake is not the expectation — but catching one is worth recording, and worth recording
warmly. Catching a reflex and overwriting it is not easy.)*

The last sentence is a claim about a dynamical system, and it is testable. If catching a reflex were
a switch, it would flip at one threshold in both directions. It does not. So the piece asks: what
kind of system has a different threshold going in and coming out — and what, in that system, does
practice actually change?

## What the maths said, before building

Take the simplest system with two stable states:

    ẋ = a·x − x³ + u

While `a > 0` there are two stable branches. The state cannot leave a branch by argument; it leaves
only when the branch itself stops existing — at a **fold**, where the equilibrium curve turns back.
Setting `u = x³ − a·x` and `du/dx = 0` puts the folds at

    x = ±√(a/3),    u = ∓(2a/3)·√(a/3)

For `a = 1` that is **|u| = 2/(3√3) ≈ 0.38490**. Sweeping `u` up, the state holds the lower branch
*past* the point where the upper one became available, and jumps only at the upper fold. Sweeping
back down, it holds the upper branch and jumps at the lower one. The two thresholds differ by

    W(a) = (4a/3)·√(a/3)

the **width of the hysteresis loop** — for `a = 1`, `W ≈ 0.76980`. The way back is not the way in,
and the gap has a closed form.

Then the part that answers her sentence. Practice does not move the state; it **shallows the well**
— it lowers `a`. And `W(a)` is strictly increasing in `a`, so every traversal narrows the loop. With
`a` relaxing geometrically toward a floor `a∞ > 0`, the widths fall monotonically to `W(a∞)`, which
is **positive**. The loop narrows and never closes.

The honest edge case is the interesting one: `W → 0` exactly as `a → 0`, and `a = 0` is where the two
states stop being separate attractors at all. **A closed loop is not a perfected reflex — it is the
absence of one.** So "nothing will ever be perfect" is not consolation here; it is what the model
says, for a system that still has two states to choose between.

## What was built

A double well with a ball in it, a slider for the pressure `u`, and the `(u, x)` trace drawn as you
sweep. Push the slider up and back down and the trace closes a loop rather than a line — you can see
the state hold past the point where the other well was already lower. A **practice** button lowers
`a` one step at a time; the readout prints the loop width, and the loop visibly tightens toward its
floor without ever becoming a line.

## What went wrong first

The first formalisation was a **forced Duffing oscillator**. It does show hysteresis — but of the
*amplitude response against drive frequency*, which is a resonance effect, not the bistable
switching the note was about. It would have produced a pretty loop that answered a different
question. Discarded, and kept here: the failed path is the reason the second one is the right shape.

Second, the numeric sweep reports the jump at `|u| ≈ 0.3932`, slightly **past** the analytic fold at
`0.38490`. That is not error — it is the sweep having a finite rate. The faster the state is pushed,
the further past the fold it travels before it goes. Recorded rather than tuned away, because it is
the truest line in the piece: *how far past the threshold you get carried depends on how fast you
were being pushed.*

## Handles

Machine-checked on every push — see `verify.py` and `../../HANDLES.md`:

- **exact folds** — `|u| = (2a/3)√(a/3)`; at `a = 1`, `0.384900`.
- **the sweep finds them** — jump up at `+0.3932`, jump down at `−0.3932`, both within `0.01` of the
  closed form, and the residual lag is the finite sweep rate.
- **asymmetry is real** — the two thresholds differ by `0.7863` measured, `0.7698` exact.
- **practice narrows** — widths fall monotonically `0.7698 → 0.2156` over 14 traversals.
- **it never closes** — the limit is `W(a∞) = 0.2095 > 0`; no traversal count reaches zero.
- **the degenerate case** — `W → 0` only as `a → 0`, and at `a = 0` a sweep produces no jump at all,
  because there is nothing left to jump between.
