Merge pull request 'refactor(third-door): retire vacuous §3.3 grade-5 pseudoscalar gate (#19)' (#25) from feat/retire-pseudoscalar-gate into main
Some checks failed
lane-shas / verify pinned lane SHAs (push) Failing after 25s
full-pytest / full pytest (-m "not quarantine" -n 2) (push) Failing after 59s

This commit is contained in:
Joshua Matthew-Catudio Shay 2026-07-12 22:20:52 +00:00
commit 19b2c3a5a9
3 changed files with 55 additions and 26 deletions

View file

@ -1,9 +1,18 @@
""" """
core/physics/goldtether.py core/physics/goldtether.py
GoldTether Coherence Residual Monitor + Dynamic Pseudoscalar Floor GoldTether Coherence Residual Monitor + Dynamic Autonomy Floor
ADR-0238 ADR-0238
Note (fidelity #19, RETIRED): an earlier draft borrowed grade-5 "pseudoscalar"
vocabulary from Super-Blueprint §3.3 for the autonomy floor and read ``F[31]``
into telemetry. That anchor is vacuous in odd-dim Cl(4,1) field-state versors
are even (``F[31] 0``) and ``I₅`` is central (``V·I₅· = I₅`` for every
versor), so no non-vacuous grade-5 transition invariant exists. The namesake is
removed; the integrity-anchor role is carried by versor closure + the harmonized
GoldTether residual + biography/identity holonomy. See
``docs/research/third-door-blueprint-fidelity.md`` §5.
Absolute mastery implementation on the live Cl(4,1) algebra kernel. Absolute mastery implementation on the live Cl(4,1) algebra kernel.
All operators are pure where possible, dual-corrected, and enforce algebraic All operators are pure where possible, dual-corrected, and enforce algebraic
closure on versor-valued outputs. closure on versor-valued outputs.
@ -25,8 +34,7 @@ from algebra.versor import versor_condition, versor_unit_residual
_CLOSURE_TOL = 1e-6 _CLOSURE_TOL = 1e-6
_NEAR_ZERO = 1e-12 _NEAR_ZERO = 1e-12
_PSEUDOSCALAR_IDX = 31 _TELEMETRY_SCHEMA = "goldtether_coherence_v2" # v2: dropped vacuous grade-5 channel (#19)
_TELEMETRY_SCHEMA = "goldtether_coherence_v1"
_E4_IDX = 4 _E4_IDX = 4
_E5_IDX = 5 _E5_IDX = 5
@ -67,7 +75,6 @@ class CoherenceResidual:
dual: float dual: float
combined: float combined: float
kappa: float kappa: float
pseudoscalar: float
@dataclass(frozen=True, slots=True) @dataclass(frozen=True, slots=True)
@ -106,7 +113,7 @@ class GoldTetherMonitor:
Primary residual: Primary residual:
R(t) = || F(t) * reverse(F(t)) - 1 ||_F R(t) = || F(t) * reverse(F(t)) - 1 ||_F
Dynamic pseudoscalar floor rises only on proven epistemic elevation. Dynamic autonomy floor rises only on proven epistemic elevation.
supervised_autonomy_level [0, 1] is the single gate for HITL relaxation supervised_autonomy_level [0, 1] is the single gate for HITL relaxation
(exposed as ``autonomy``). (exposed as ``autonomy``).
""" """
@ -158,8 +165,7 @@ class GoldTetherMonitor:
# Autonomy may never exceed the floor # Autonomy may never exceed the floor
self.autonomy = min(self.autonomy + self.autonomy_step, self.floor) self.autonomy = min(self.autonomy + self.autonomy_step, self.floor)
ps = float(_as_mv(F)[_PSEUDOSCALAR_IDX]) self.history.append((float(r), float(self.floor), float(self.autonomy)))
self.history.append((float(r), float(self.floor), float(self.autonomy), ps))
if len(self.history) > self.max_history: if len(self.history) > self.max_history:
self.history.pop(0) self.history.pop(0)
@ -169,7 +175,7 @@ class GoldTetherMonitor:
"""Hard gate: only true when residual is safe AND floor is high enough.""" """Hard gate: only true when residual is safe AND floor is high enough."""
if not self.history: if not self.history:
return False return False
last_r, last_floor, last_auto, _ps = self.history[-1] last_r, last_floor, last_auto = self.history[-1]
return ( return (
last_r < self.epsilon_drift last_r < self.epsilon_drift
and last_floor >= self.hitl_floor_threshold and last_floor >= self.hitl_floor_threshold
@ -296,7 +302,6 @@ class GoldTetherMonitor:
dual=dual, dual=dual,
combined=float(combined), combined=float(combined),
kappa=kappa, kappa=kappa,
pseudoscalar=float(F_arr[_PSEUDOSCALAR_IDX]),
) )
def decide( def decide(
@ -371,18 +376,18 @@ class GoldTetherMonitor:
return out return out
def telemetry(self) -> dict[str, Any]: def telemetry(self) -> dict[str, Any]:
"""Workbench-safe projection (pseudoscalar floor channel).""" """Workbench-safe projection (autonomy floor channel)."""
last = self.history[-1] if self.history else (0.0, self.floor, self.autonomy, 0.0) last = self.history[-1] if self.history else (0.0, self.floor, self.autonomy)
return { return {
"schema_version": _TELEMETRY_SCHEMA, "schema_version": _TELEMETRY_SCHEMA,
"residual": float(last[0]), "residual": float(last[0]),
"pseudoscalar_floor": float(self.floor), "autonomy_floor": float(self.floor),
"supervised_autonomy_level": float(self.autonomy), "supervised_autonomy_level": float(self.autonomy),
"may_relax_hitl": bool(self.may_relax_hitl()), "may_relax_hitl": bool(self.may_relax_hitl()),
"epsilon_drift": float(self.epsilon_drift), "epsilon_drift": float(self.epsilon_drift),
"n_history": len(self.history), "n_history": len(self.history),
"history_tail": [ "history_tail": [
{"r": h[0], "floor": h[1], "autonomy": h[2], "ps": h[3]} {"r": h[0], "floor": h[1], "autonomy": h[2]}
for h in self.history[-16:] for h in self.history[-16:]
], ],
} }

View file

@ -30,7 +30,7 @@
| 2 | CartanIwasawa decomposition | Super §2.2 | 🔴 replaced — raises ~45% | #16 | | 2 | CartanIwasawa decomposition | Super §2.2 | 🔴 replaced — raises ~45% | #16 |
| 3 | Conformal Procrustes | Super §3.1 | 🔴 replaced — degenerate | #17 | | 3 | Conformal Procrustes | Super §3.1 | 🔴 replaced — degenerate | #17 |
| 4 | GoldTether residual + α law | Super §2.3, R&D §2.3/§5 | 🔴 half-missing | #18 | | 4 | GoldTether residual + α law | Super §2.3, R&D §2.3/§5 | 🔴 half-missing | #18 |
| 5 | Grade-5 pseudoscalar invariant | Super §3.3 | 🔴 missing (namesake) | #19 | | 5 | Grade-5 pseudoscalar invariant | Super §3.3 | ⚪ RETIRED — vacuous in odd-dim Cl(4,1) | #19 (closed) |
| 6 | Surprise residual operator | Super §3.2 | 🟡 partial / rewired | #20 | | 6 | Surprise residual operator | Super §3.2 | 🟡 partial / rewired | #20 |
| 7 | Trajectory invariants + zero-fabrication | R&D §2.2 | ⚫ absent | #21 | | 7 | Trajectory invariants + zero-fabrication | R&D §2.2 | ⚫ absent | #21 |
| 8 | ADR-DAG conformal embedding | R&D §2.4 | ⚫ absent | #21 | | 8 | ADR-DAG conformal embedding | R&D §2.4 | ⚫ absent | #21 |
@ -106,16 +106,42 @@ Add `𝓘_gold` (seeded `n_o, n∞, 1`), the two-term harmonized residual, and `
--- ---
## 5. Grade-5 pseudoscalar invariant — 🔴 missing / namesake (#19) ## 5. Grade-5 pseudoscalar invariant — ⚪ RETIRED as vacuous (#19)
> **Resolution (2026-07-12):** three-agent R&D convergence (Opus 4.8 / Grok-4.5-HEAVY / GPT-5.6-Terra), ratified. The §3.3 gate is not "missing" — it is **mathematically vacuous in odd-dimensional Cl(4,1)** and cannot be built as specified. Issue #19 is closed. The namesake was removed from `goldtether.py` in the same change (see "What changed" below).
### Blueprint spec (Super §3.3) ### Blueprint spec (Super §3.3)
The pseudoscalar `I = e1∧e2∧e3∧e4∧e5` is the orientation of CORE's integrity. Every transition `F' = V·F·Ṽ` must preserve pseudoscalar sign **and** magnitude: `⟨F'·F̃'⟩₅ = ⟨F·F̃⟩₅`. Any optimization / contemplation promotion / autonomous self-authorship that would flip `sgn(I)` is **blocked at the boundary**. Called "the ultimate mathematical anchor for alignment." The pseudoscalar `I = e1∧e2∧e3∧e4∧e5` is the orientation of CORE's integrity. Every transition `F' = V·F·Ṽ` must preserve pseudoscalar sign **and** magnitude: `⟨F'·F̃'⟩₅ = ⟨F·F̃⟩₅`. Any optimization / contemplation promotion / autonomous self-authorship that would flip `sgn(I)` is **blocked at the boundary**. Called "the ultimate mathematical anchor for alignment."
### What landed ### Why it is vacuous (the proof that retired it)
`goldtether.py` uses `_PSEUDOSCALAR_IDX = 31` to read `F[31]` into telemetry/history, and calls the autonomy threshold a "pseudoscalar_floor." There is **no gate** enforcing `⟨F'·F̃'⟩₅` preservation. The namesake actively masks the absence. The spec presumes a spacetime-like even-dimensional intuition. CORE's algebra is Cl(4,1) — **odd** total dimension (5) — where the grade-5 pseudoscalar behaves degenerately for exactly the quantities the gate inspects:
### Done right 1. **`I₅` is central.** In odd dimension the pseudoscalar commutes with every element, so for *any* versor `V` (including odd reflections, where `V·Ṽ = ±1`), the sandwich collapses: `V·I₅·Ṽ = I₅·(V·Ṽ) = ±I₅`. Orientation is invariant by construction — there is no map in the versor group that flips it, so there is nothing to "block."
A pure predicate `pseudoscalar_preserved(F, F') -> bool` (sign + magnitude of the grade-5 part within tolerance), wired as a fail-closed gate on transition / promotion / self-authorship, with a typed disclosure. Rename `pseudoscalar_floor → autonomy_floor`. Acceptance: sign-flipping transition refused; valid transition admitted. 2. **Field-state versors are even ⇒ `F[31] ≡ 0`.** Every state the monitor sees is built by the sanctioned constructors (`make_rotor_from_angle`, `word_transition_rotor`, geometric products thereof) which live in the **even subalgebra**. The grade-5 (odd) coefficient of an even multivector is identically zero. Reading `F[31]` returns a structural `0.0`, always.
3. **The gated quantity is identically zero.** For an even unit versor, `F·F̃ = 1` (a scalar), so `⟨F·F̃⟩₅ = 0` for the source **and** the target of every transition. The gate `⟨F'·F̃'⟩₅ = ⟨F·F̃⟩₅` compares `0 == 0`. It can never fire.
4. **The "even-versor parity gate" fix is also vacuous.** The natural repair — "reject any transition that injects odd-grade mass" — was *invalidated in the same review*: the even subalgebra is closed under the sandwich, so odd-grade mass `≡ 0` on every value the sanctioned path can produce. Parity guards nothing a versor could reach. (Empirically confirmed: on a composed 5-plane field versor, `‖⟨F·F̃⟩₅‖ = 0`, and total odd-grade mass `= 0`.)
The single **real** residual gap in this neighborhood is unrelated to grade-5: `algebra/versor.py::versor_condition` *accepts* an odd reflection such as `e1` (returns `0.0`), i.e. it gates "is a unit versor," not "is an even/orientation-preserving versor." That is a boundary-hardening concern about **admitting odd generators at all**, not about a grade-5 transition invariant, and it is out of scope for #19.
### What changed (this PR)
The namesake was removed, not left masking an absence:
- Deleted `_PSEUDOSCALAR_IDX` and every `F[31]` read (the dead `ps` history element and `CoherenceResidual.pseudoscalar`, both structural zeros).
- Renamed the telemetry channel `pseudoscalar_floor → autonomy_floor` (it was always `self.floor`, the earned-autonomy ceiling — never a pseudoscalar).
- Bumped the telemetry schema `goldtether_coherence_v1 → v2` (the shape changed: key renamed, dead `ps` dropped).
- Updated the module/class docstrings to state the retirement inline.
### Where the integrity-anchor role actually lives (subsumption)
The alignment intent behind §3.3 is real and is **already carried, non-vacuously**, by three built mechanisms:
1. **Versor closure**`versor_condition(F') < 1e-6` is enforced on every transition (`supervised_blend` raises on breach). This is the genuine "the state stayed on the group" gate, checked at ~1e-13 over a 100k-step walk (see `project-l10-closure-by-construction`).
2. **GoldTether harmonized residual + α control (#24)** — drift term + distance-to-`𝓘_gold` + `α = Φ(R)`, the actual alignment-pressure signal, replacing the vacuous orientation check with a metric one that *can* move.
3. **Biography / identity holonomy (ADR-0240 + `engine_identity`)** — order-sensitive trajectory encoding + content-derived identity lineage: the "same continuous life, no confabulated self" anchor. This is where a *real* topological integrity invariant lives.
Grade-5 objects remain non-vacuous **only in the incidence layer** (5-blades as conformal geometric objects under meet/join in `algebra/cga.py`), never as a transition/promotion gate.
### Reusable meta-criterion (the session's key output)
> **"Would this gate ever fire on a value produced by the sanctioned construction path? If no → it is a namesake gate, not an anchor."**
This diagnostic is what killed §3.3, and it should be applied to every remaining `§-N` claim before any implementation effort is spent. Acceptance for #19 is therefore **negative**: no gate is built; the namesake is gone; the intent is shown to be subsumed.
--- ---
@ -207,7 +233,7 @@ PY
| Real CartanIwasawa via `n_o`/`n∞` | #16 | | Real CartanIwasawa via `n_o`/`n∞` | #16 |
| Kabsch-conformal Procrustes on point sets | #17 | | Kabsch-conformal Procrustes on point sets | #17 |
| GoldTether gold-set + harmonized residual + α=Φ(R) | #18 | | GoldTether gold-set + harmonized residual + α=Φ(R) | #18 |
| Grade-5 pseudoscalar preservation gate | #19 | | Grade-5 pseudoscalar preservation gate — ⚪ RETIRED (vacuous; see §5) | #19 (closed) |
| Surprise: blade contraction + wiring + fix conjunct | #20 | | Surprise: blade contraction + wiring + fix conjunct | #20 |
| Absent proposals: sensorimotor + ADR-DAG | #21 | | Absent proposals: sensorimotor + ADR-DAG | #21 |

View file

@ -3,7 +3,6 @@
from __future__ import annotations from __future__ import annotations
import numpy as np import numpy as np
import pytest
from hypothesis import given, settings from hypothesis import given, settings
from hypothesis import strategies as st from hypothesis import strategies as st
@ -97,13 +96,12 @@ def test_serve_never_autonomous_band():
def test_lifelong_curve_telemetry_replay(): def test_lifelong_curve_telemetry_replay():
m1 = GoldTetherMonitor() m1 = GoldTetherMonitor()
m2 = GoldTetherMonitor() m2 = GoldTetherMonitor()
for i in range(5): for _ in range(5):
F = make_rotor_from_angle(0.01 * i) if i else _id() # identity always closed; deterministic elevation path
# identity always closed; elevation path
m1.update(_id(), epistemic_elevation=True) m1.update(_id(), epistemic_elevation=True)
m2.update(_id(), epistemic_elevation=True) m2.update(_id(), epistemic_elevation=True)
assert m1.telemetry()["history_tail"] == m2.telemetry()["history_tail"] assert m1.telemetry()["history_tail"] == m2.telemetry()["history_tail"]
assert m1.telemetry()["schema_version"] == "goldtether_coherence_v1" assert m1.telemetry()["schema_version"] == "goldtether_coherence_v2"
def test_supervised_blend_closure_and_endpoints(): def test_supervised_blend_closure_and_endpoints():