Skip to content

feat(observer): surface coherence — unity horizon + a real 'how' gradient (#412)#465

Merged
InauguralPhysicist merged 2 commits into
mainfrom
fix-412-observer-coherence
Jul 7, 2026
Merged

feat(observer): surface coherence — unity horizon + a real 'how' gradient (#412)#465
InauguralPhysicist merged 2 commits into
mainfrom
fix-412-observer-coherence

Conversation

@InauguralPhysicist

Copy link
Copy Markdown
Collaborator

Two settled decisions closing OBSERVER.md's Rough Edges — see the commit message for the full rationale.

Unity horizon: the |x| == 1.0 → entropy 0 special case inverted the formula's own smooth maximum (H = 1.0 at p = 0.5). Dropped. An exactly-placed 1.0 now reads like its neighbors: a flat run there classifies equilibrium, never converged. |x| == 0 keeps H = 0 — that IS the formula's limit at the home point.

how implemented, not removed: 1 - min(1, |dH|/dh_zero) — deadband-normalized settledness of the last observed step, sharing the converged window's settle threshold. Chosen over removal because (a) it is a genuinely well-defined 0–1 gradient of the entropy trajectory, and (b) it is a pure function of the already-recorded dH, so how is x at L reads identically from existing tape history — no tape format change, no #411 version bump. Removal would have renumbered interrogate kinds (bytecode ABI + ouroboros frontend + consumer fallout) for less value.

Fallout handled: test_observer_park settled on 1.0 incidentally (value-agnostic intent — repointed at 0.001); new test_observer_coherence.eigs pins both decisions with 10 checks incl. the equilibrium-at-horizon classification and how ∈ [0,1]. SPEC's how example (skip-marked) now states the truth. Consumer classification shifts (anything settling on exactly ±1.0) are bump-time territory for the verify-before-bump sweep; the ouroboros AOT mirrors the how formula at the pin bump like every semantics train.

Gates: release 2594/2594, ASan+UBSan detect_leaks=1 2594/2594.

Closes #412

🤖 Generated with Claude Code

InauguralPhysicist and others added 2 commits July 6, 2026 22:47
…ient (#412)

Two settled decisions, closing OBSERVER.md's Rough Edges:

1. Unity is the HORIZON. entropy_of_num special-cased |x| == 1.0 to 0 —
   the opposite of the formula's own value there (H = 1.0, the smooth
   maximum) — so a value placed exactly at 1.0 reported converged
   immediately while 1.0000001 read maximally entropic. Special case
   dropped; |x| == 0 keeps H = 0 (the formula's home-point limit). A
   flat run at 1.0 now classifies equilibrium (steady, high entropy),
   never converged.

2. 'how' is a real 0-1 gradient: deadband-normalized settledness of the
   last observed step, 1 - min(1, |dH|/dh_zero), where dh_zero is the
   same settle threshold the converged window uses. Pure in the
   recorded dH — so 'how is x at L' reads identically from tape history
   (no tape format change) and the live/at parity pin in test_temporal
   holds by construction. It measures the ENTROPY trajectory like
   where/why; value-channel readings stay report_value's job (#294).
   The old 1 - entropy/last_entropy was degenerate (the observer
   refreshes last_entropy on every push: always 0 or 1).

The #383 sub-item was already struck (observer_slots.verdict() landed
in #437; the doubted divergence did not reproduce).

test_observer_park.eigs settled on 1.0 incidentally — repointed at the
home region (0.001); its park-reset intent is value-agnostic. New
test_observer_coherence.eigs pins both decisions (10 checks). ouroboros
AOT mirrors the 'how' formula at the next pin bump (aot_rt reads the
same recorded dH), like every semantics train.

Gates: release 2594/2594, ASan+UBSan detect_leaks=1 2594/2594.

Closes #412

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…semantics

The corpus gate did its job: 4 of 13 programs diverged, each traced to
the two decided changes before regenerating —
- EigenScript__structural_observer: prev_dH shifted by EXACTLY 1.0 (a
  structure member sits at 1.0; horizon entropy 0 -> 1.0)
- dynamics__solve: Gauss-Seidel 10 -> 11 iters / power iteration 5 -> 6
  (iterates converge toward [1,1,1] — entropy near the ridge changed)
- dynamics__physics: one x-column predicate flag (samples at the ridge)
- iLambdaAi__test_interrogative_spec: 'how' prints the real gradient
  (0 -> 1; the interrogative arithmetic sum follows)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@InauguralPhysicist InauguralPhysicist merged commit 8aa44ab into main Jul 7, 2026
17 checks passed
@InauguralPhysicist InauguralPhysicist deleted the fix-412-observer-coherence branch July 7, 2026 04:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Observer surface coherence: implement or remove 'how'; decide |x|=1.0; fold in #383

1 participant