feat(observer): surface coherence — unity horizon + a real 'how' gradient (#412)#465
Merged
Merged
Conversation
…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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 classifiesequilibrium, neverconverged.|x| == 0keeps H = 0 — that IS the formula's limit at the home point.howimplemented, 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, sohow is x at Lreads 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.eigspins both decisions with 10 checks incl. the equilibrium-at-horizon classification andhow∈ [0,1]. SPEC'showexample (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 thehowformula at the pin bump like every semantics train.Gates: release 2594/2594, ASan+UBSan
detect_leaks=12594/2594.Closes #412
🤖 Generated with Claude Code