etr: implement five-zone bistable axis + snap-across flips (26/0/1)

Replaces the single restoring spring with Anja's radial map: SNAP_IN(<7)
/ SOFT(7-17) / BAND(17-35) / INCOH(35-45) / SNAP_OUT(>45), unstable
watersheds at 7 and 45. Basin restores toward band centre 26 with a weak
SOFT gain (0.25) and firmer INCOH gain (0.5). A snap flips to the
opposite pole, landing just past the opposite watershed (inner -> opp.
SOFT; outer -> opp. INCOH) then recovering. Realises L7 (flips only via
snap zones — through 0 or over the wrap) and L8. Lone PEND: L5 coupling.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015hmgREHNsxYCuim33yUF2c
This commit is contained in:
Claude
2026-06-17 05:35:09 +00:00
parent c53a92d811
commit e9088c98c9
4 changed files with 198 additions and 106 deletions
+15 -14
View File
@@ -20,9 +20,10 @@ engine, and *not* migration. The axes:
Handles the stress PS+/Eth-Int generate.
## 2. Status / certainty
**SCAFFOLD — `RESTORE_GAIN` fitted** (`run_etr_tests.sh` → **14 PASS / 0 FAIL / 2 PEND**; the 2 PEND
are L5 active coupling and L7). Full law + status in `../../src/endocrine/etr/etr_invariants.md`
(this spec defers to it).
**SCAFFOLD — five-zone axis fitted** (`run_etr_tests.sh` → **26 PASS / 0 FAIL / 1 PEND**; the lone PEND
is L5 active coupling). The bistable five-zone law (snap / soft-pull / band / incoherency / snap) is
implemented and tested, incl. L7 snap-flips. Full law + status in
`../../src/endocrine/etr/etr_invariants.md` (this spec defers to it).
## 3. Language & location
GNU Octave · `src/endocrine/etr/` (`etr.m`, `test_etr.m`, `run_etr_tests.sh`, `etr_invariants.md`).
@@ -38,8 +39,9 @@ R wrapper `src/endocrine/driver_etr.R` bridges into the Drive-Box.
actions** — it persuades (above), only the agent decides (A1).
## 5. Interface contract
- `etr_init(coord) -> s` · `etr_axis_wrap(v)` · `etr_axis_restoring_dir(v)` ·
`etr_step(s, drift, stress) -> s'` · `etr_status(s) -> per-axis {BELOW|IN_BAND|ABOVE}`.
- `etr_init(coord) -> s` · `etr_axis_wrap(v)` · `etr_axis_zone(v)` · `etr_axis_restoring(v)` ·
`etr_axis_snap(v)` · `etr_step(s, drift, stress) -> s'` ·
`etr_status(s) -> per-axis {SNAP_IN|SOFT|IN_BAND|INCOH|SNAP_OUT}`.
- Inputs: **drift** (from A3/A6 via G1, AI-originated) + **stress** (G1 mediator). Output: coord + status,
surfaced through A1 `drive_snapshot`.
@@ -47,20 +49,19 @@ R wrapper `src/endocrine/driver_etr.R` bridges into the Drive-Box.
Drift + stress are fed in — *stub:* `etr_step(s, [dx dy dz], 0)` (already how tests run). Fully standalone today.
## 7. Invariants / laws
Defer to `etr_invariants.md` (L1 wrap ±50 C5 · L2 bands [17,35] C5 · L3 opposition C5 · L4 AI-drift C4 ·
L5 cross-axis coupling via stress C1 · L6 Z-path C3 · L7 no-zero-cross C2 · L8 mechanism C2).
Defer to `etr_invariants.md` (L1 wrap ±50 C5 · L2 bands [17,35] C5 · L3 five-zone restoring C5 ·
L4 AI-drift C4 · L5 cross-axis coupling via stress C1 · L6 Z-path C3 · L7 snap/flip C3 · L8 mechanism C3).
## 8. Build steps (remaining)
1. **Fit `RESTORE_GAIN`** → the 2 red tests (magnitude + band-convergence) go green.
2. Confirm **L8** (restoring = force vs cost) and **L7** (no-zero-crossing) → promote from PEND.
3. Define **L5** coupling (the stress→cross-axis mapping; G1) → replace the identity stub.
4. Wire R↔Octave (driver_etr.R ↔ etr.m) for the Drive-Box (A1) — and the larger medium (D2).
1. ~~Fit the restoring force~~ **DONE** — five-zone law (SOFT/INCOH gains + snap landings) green; L7 + L8 realised.
2. Define **L5** coupling (the stress→cross-axis mapping; G1) → replace the identity stub (the lone PEND).
3. Wire R↔Octave (driver_etr.R ↔ etr.m) for the Drive-Box (A1) — and the larger medium (D2).
## 9. Tests
`bash src/endocrine/etr/run_etr_tests.sh` (currently 12/2/2 — the 2 reds are the to-fit work).
`bash src/endocrine/etr/run_etr_tests.sh` (now **26/0/1** — the lone PEND is L5 active coupling).
## 10. Open items
- `RESTORE_GAIN` curve (C1) · L5 coupling mapping (C1, shared with G1) · L7/L8 confirmation (C2)
· R↔Octave bridge transport (C1, shared with A1/C3/D2).
- L5 coupling mapping (C1, shared with G1) · R↔Octave bridge transport (C1, shared with A1/C3/D2).
*(Restoring law + gains + snap landings now fitted; L7/L8 realised.)*
- **The injection-rendering** (A1-L5): how ETR's coord/status is phrased into the slot so it reads as the
extremely convincing existential-temporal injection (not a bare `status=` line) — ties to A6 + D2.