Canonical ADRs under docs/adr/; thin redirects under docs/decisions/ for
Issue #10 path compatibility. Documents dual GoldTether ontology, residual
namespaces, HITL curve, and Spin left-composition blend geodesic.
Base: forgejo/main @ dbd44a2a
5.7 KiB
ADR-0238: GoldTether-Modulated Supervised Autonomy + Dynamic Pseudoscalar Floor
Status: Proposed
Date: 2026-07-11
Branch: r&d/generalized-agent
Parent tracking: #10 · Issue #11
Owners: CORE Labs / R&D
Canonical path: docs/adr/ (not historical docs/decisions/)
Related:
- ADR-0010 Identity Physics
- ADR-0006 Field Energy (distinct residual namespace)
- ADR-0055 / ADR-0056 / ADR-0080 Contemplation + reviewed promotion
- ADR-0175 Calibrated Attempt-and-Eliminate
- ADR-0199 Cross-Domain Learning Arena (
GoldTetherprotocol — different contract) - ADR-0239 Conformal Procrustes + Surprise Dual
- ADR-0240 Analogical Transfer + Biography Holonomy
Depends on: Cl(4,1) closure (algebra/versor.py), manifold slerp (algebra/rotor.py)
Acceptance path: green tests/test_adr_0238_goldtether.py + smoke/algebra lanes + Josh review.
1. Context
CORE needs a coherence tether that modulates autonomy without violating HITL defaults, one-mutation-path review, or algebraic closure. Issue #10/#11 name this the GoldTether-modulated supervised autonomy envelope with a dynamic grade-5 pseudoscalar floor.
Dual ontology (mastery refinement)
| Name | ADR | Contract |
|---|---|---|
| Arena GoldTether | ADR-0199 | is_correct / gold_answer — independent truth for practice scoring |
| Coherence GoldTether | this ADR | residual + dynamic floor + practice/serve autonomy bands |
Shared metaphor (gold as anchor). Different types, different modules. Implementation lives in core/physics/goldtether.py as GoldTetherMonitor / CoherenceResidual — never shadows core.learning_arena.protocols.GoldTether.
Problem
Without a geometric autonomy envelope, either:
- autonomy is premature (unsafe serve-path self-action), or
- supervision is unstructured (no residual, no floor, no dual-correction blend).
2. Decision
2.1 Harmonized residual
drift = |ps(current) − ps(reference)| (grade-5 / magnitude)
geometric_distance = || reverse(ref) * current − 1 ||_F
combined = w_drift * drift + (1 − w_drift) * normalize(geo)
kappa = 1 / (1 + combined / floor) # monotone; scales blend only
Named config only: decay_N, w_drift, floor_init, critical_ratio, practice_autonomy_enabled, serve_supervised_blend_authorized.
Residual namespaces (non-negotiable):
- ADR-0006
EnergyProfile.coherence_residual— thermodynamic class input - ADR-0238
CoherenceResidual.combined— autonomy tether - ADR-0239
procrustes_residual/ surprise residual — structural transfer
Do not conflate.
2.2 Dynamic pseudoscalar floor
- Initialized at
floor_init(primal retained forever under decay). - Updated only on practice successes with residual < current floor.
- Decay window
decay_Nkeeps recent residuals; floor never drops below half primal. - Serve mode never promotes the floor.
- Telemetry schema:
goldtether_coherence_v1(value, sign, n_samples, recent_residuals, config).
2.3 Autonomy envelope
| Band | Condition | Practice | Serve |
|---|---|---|---|
AUTONOMOUS |
R < floor | only if practice_autonomy_enabled |
never |
SUPERVISED_BLEND |
R ≤ critical | default below/mid band | only if serve_supervised_blend_authorized |
FAIL_CLOSED |
R > critical or serve default | yes | default |
HITL phase-out is a measured curve, not a flag flip. Self-review gates are documented; they are not auto-proven by this ADR.
2.4 Supervised blend (dual-correction)
R = word_transition_rotor(source, target) # = target * reverse(source)
R^α = rotor_power(R, α)
out = R^α * source # Spin left-composition
assert versor_condition(out) < 1e-6
# α=0 → source; α=1 → target (unit versors)
Mastery correction: sandwich conjugation R^α * source * reverse(R^α) is the wrong geodesic for state interpolation (it maps the identity to itself). Left composition on the rotor group is the dual-correction surface that lands exactly on the endpoints.
No Euclidean lerp on multivector coefficients. No hot-path unitize repair.
2.5 Implementation surface
- Module:
core/physics/goldtether.py - Types:
GoldTetherConfig,CoherenceResidual,AutonomyBand,AutonomyDecision,PseudoscalarFloorState,GoldTetherMonitor,OperatingMode - Proof tests:
tests/test_adr_0238_goldtether.py
3. Consequences
Positive
- Geometry-first autonomy modulation without stochastic fallback.
- Serve remains fail-closed by default (HITL preserved).
- Pseudoscalar floor is a first-class telemetry channel for lifelong coherence curves.
- Explicit dual ontology prevents Arena vs Coherence confusion under review.
Risks / mitigations
| Risk | Mitigation |
|---|---|
| Residual conflation with energy residual | Distinct type names + ADR text + tests |
| Premature autonomy | practice_autonomy_enabled=False default; serve never autonomous |
| Drift repair disguised as blend | Blend only via rotor_power / transition rotors |
Non-goals
- Auto-promotion of SPECULATIVE → COHERENT
- Replacing ADR-0199 arena GoldTether
- Approximate recall or sampling
4. Proof obligations
- G-1 Replay: identical (current, reference, config, sequence) → identical residual/floor/decision telemetry.
- G-2 Closure: every
supervised_blendoutput hasversor_condition < 1e-6. - G-3 Serve never returns
AUTONOMOUS. - G-4 Floor updates only on practice success below floor.
- G-5 Arena GoldTether protocol tests remain green unchanged.