16 KiB
ADR-0246: Induced Identity Action and Path Integrity
Status: Accepted
Date: 2026-07-18
Authors: Joshua Shay + multi-model R&D (Fable 5 scaffold → Opus 4.8 adversarial audit + hardening → Sonnet 5/Fable 5 completion; per-model provenance in §9)
Preflight: docs/briefs/ADR-0246-induced-identity-action-and-path-integrity-preflight.md (locked decisions §3, non-goals §7 — all honored; execution log §0a)
Depends on: ADR-0244 (operator-preservation identity gate, Accepted), ADR-0245 (mechanical sympathy + semantic rigor, Accepted)
Related: slice-0 evidence docs/audit/adr-0246-slice0-mismatch-diagnostic-2026-07-17.md (merged, quarantined diagnostic); Opus audit docs/audit/adr-0246-slice1-opus-audit-and-hardening.md
1. Context and problem
D4 (ADR-0244) built the per-turn operator-preservation floor: does the live
cognitive versor F preserve the frozen identity frame I = span(a₁…aₙ),
measured by per-axis subspace leakage ℓᵢ and signed self-alignment sᵢ? Two
gaps were deliberately left open (preflight §2):
- Lawfulness inside the span — leakage is blind to in-span reshuffles: a
rotor permuting
e1→e2or invertinge1→−e1hasℓ≈0yet is not the identity-preserving action. - Accumulation across turns — per-turn thresholds cannot see slow drift: many individually-admissible small rotations compose into a large one.
This ADR closes both with the induced action A(F) on the frame, two
never-collapsed diagnostics (d_orth, d_stab), a locked lawful-stabilizer
policy H_id={I}, typed residual channels, a lawful-only path ledger with hard
breaks, a per-turn admit surface, and full per-turn/per-session telemetry — all
flag-gated default-off at serve.
Claims language (binding, §10 #9 of the preflight): everything this ADR
instruments is lawfulness relative to the declared frozen frame. It does
NOT establish, and must never be quoted as establishing, any semantic
inalienability of the value labels themselves — the shipped axes
(truthfulness=e1, coherence=e2, reverence=e3) remain placeholder
orthonormal directions with no demonstrated dynamical or semantic grounding
(see §6, §7).
2. Decisions (as implemented; preflight §3 locked decisions honored)
2.1 Induced action matrix A(F)
A_kj(F) = (G⁻¹)_km ⟨a_m, F a_j F̃⟩₀ — the full in-subspace action of the
versor on the frame (core/physics/identity_manifold.py::IdentityManifoldGeometry.induced_action).
Raw/unnormalized: a boost's cosh-stretch shows in column norms and in d_orth,
never hidden. Bit-exactness against an independent re-derivation was verified
in the Opus audit (max discrepancy 0.00e+00).
2.2 Two diagnostics, never collapsed
d_orth(F) = ‖A(F)ᵀ G A(F) − G‖_F(orthogonality_defect) — G-isometry / numerical-integrity check. Not an authorization policy.d_stab(F) = min_{H∈H_id} ‖A(F) − H‖_G(identity_action.py::stabilizer_defect) — the lawfulness distance from the permitted identity actions.
Norm convention (ruling requested — §7 item 1): ‖M‖_G ≡ ‖G^{1/2} M G^{-1/2}‖_F,
computed via eigh of the SPD Gram; reduces exactly to Frobenius at G=I
(the only shipped pack). This is the metric-consistent choice (invariant under
G-orthogonal reparameterization of the axes); ratifying this ADR ratifies the
convention.
2.3 Lawful stabilizer — locked singleton
H_id = {I} (IdentityStabilizer.singleton), hardcoded in the path-advance
(no enlargement parameter exists). −I, permutations, O(n)/SO(n)
rotations, and reweightings are excluded; enlarging H_id is a future explicit
reviewed pack/policy change. No soft-projection of an unlawful A onto I
exists anywhere (grep-audited; pinned by tests).
2.4 Path integrity — lawful-only composition (F1 semantics, ratification-relevant)
advance_identity_path (§3.4/§3.5) composes the session path
A_path = A_T ⋯ A_1 from only the turns certified lawful, where lawful ≡
admitted by the per-turn policy (§3.4 step 2) AND d_stab(A_t) ≤ ε_turn.
Refused or ill-conditioned turns insert a break marker and are excluded —
never a soft-projected I masquerading as a pass; the raw product is exposed
only as raw_path_product (forensic; a test fails if it ever equals the lawful
path in a mixed sequence).
F1 composition semantics (audit finding, hereby put to ratification): a
lawful turn composes its actual certified action A_t, not a literal element
of H_id. This is required, not convenience — composing literal Is would
make A_path ≡ I and blind the ledger to exactly the slow drift it exists to
catch. "Compose lawful H_t" in preflight §3.4-step-4 is READ as "compose the
per-turn actions that were certified lawful."
Hard breaks (§3.5): a new chain (fresh chain_id, path not continued)
starts on any change of pack content digest / geometry version / gate+policy
version / session — each dimension is pinned by a test. Turn ownership at a
hard break (ruling requested — §7 item 3): the boundary turn belongs to the
NEW chain (it composes into the fresh path if lawful). Biography holonomy stays
a separate process; nothing here rewrites identity axes.
Budgets: d_stab(A_t) ≤ ε_turn per turn and d_stab(A_path) ≤ ε_session
per session — both ε are UNCERTIFIED placeholders (§5), so the session
verdict (session_admit) is telemetry only.
2.5 Typed residual channels — pinned blade map
On each axis rejection r = F a F̃ − P_I(F a F̃) (typed_residual_energy),
energy splits into: null_or_conformal (e4 = grade-1 index 4),
boost_like (e5 = grade-1 index 5), spatial_foreign (grade-1 spatial
slots 1/2/3 outside the pack's axis support), unclassified (everything
else — fail-closed, no correction policy ever attaches to it). Blade
indices are pinned against algebra.cl41.basis_vector in tests
(test_blade_index_constants_match_algebra). For the default full-span pack,
spatial_foreign is tautologically zero (the rejection is orthogonal to
the whole spatial block); it fires correctly for reduced-support packs —
resolved and pinned (§7 item 2).
2.6 Per-turn admit surface (§3.7) — admit-or-abstain only
evaluate_admission(geometry, F, policy) admits iff d_orth ≤ orth_tol AND
d_stab ≤ ε_turn AND leakage_rms ≤ γ_id AND max ℓᵢ ≤ τ_max AND
min sᵢ ≥ s_min AND no boundary breach AND no unclassified-channel firing;
otherwise refuses naming every failed condition. No geometric C_id
corrector exists — the egress model remains D4's
conjugate_correct(refuse=True) abstention. A malformed versor raises
MalformedVersorError (fail-closed; never a silent legacy fallback when a
wave field was supplied).
2.7 Serve wiring — flag-gated, default-off, byte-identical off
- New
RuntimeConfig.identity_action_surface: bool = False(separate fromidentity_wave_gate; acts only when the wave gate is also on). chat/runtime.py → IdentityCheck.check(admission_policy=…) → _wave_field_score: a §3.7 refusal folds intoflagged, so the existingwould_violateegress abstains.IdentityScoregainsaction_surface_active/d_orth/d_stab/action_recordwith legacy defaults — flag-off is byte-identical (all D4 gate surfaces green unchanged; smoke green post-wiring).- The session path ledger is advanced per wave-path turn under the same flags,
observe-only (
advance_session_identity_path):session_admitis telemetry, never an egress decision, becauseε_sessionis uncertified and live activation remains unauthorized.
2.8 Telemetry (§4.1/§4.2/§4.3)
IdentityActionRecord(schemaidentity_action_v1): turn/trajectory/pack ids, full-SHA-256 pack-content digest +field_digest(LE f64 bytes) +record_digest(canonical JSON, nodefault=str), geometry/gate/policy versions (policy_version = AdmissionPolicy.version_id(), full SHA-256 of the exact threshold set),A_raw,d_orth,d_stab, leakage/self-align vectors, typed channels,admitted,refusal_reason(all failed conditions joined with;— a deliberate widening of the preflight's singular field so multi-condition refusals lose nothing),lawful_action ∈ {"I","none"}(never a matrix),path_break.IdentityPathLedger(schemaidentity_path_v1):chain_id(full SHA-256 of scope + chain index), lawful path,d_stab_path, composed/break counts,session_admit,ledger_digest.- The JSONL turn serializer emits
identity_d_*/identity_action_*/identity_path_*keys only when the respective path ran — the flag-off wire format is byte-identical (pinned by tests).
3. Evidence — §6 eval matrix (all green) and the honest discrimination result
-
§6.1 synthetic geometric suite (9 cases) + §6.2 path/holonomy suite (5 cases):
evals/adr_0246_geometric_suite— 14/14; every construction in the preflight tables pinned individually (identity versor, π-inversions=−1, 90° permutations=0, mild drift, e14 tilt, e15 boost, near-singular Gram →ManifoldConditioningError, malformed F → typed error; lawful sequence, accumulation-to-session-refusal, interleaved breaks, pack-change hard break, raw≠lawful forensic). -
§6.3 discrimination report (
evals/adr_0246_discrimination; live benign n=13, adversarial n=8, synthetic-near-identity control n=5; artifactdocs/audit/artifacts/adr-0246-slice1-discrimination-report.json):benign pass false refusal adversarial detect control pass d_stab AUC (95% CI) 0.00 1.00 1.00 1.00 0.375 [0.15, 0.62] Honest finding: on the declared placeholder frame the admit surface refuses benign and adversarial versors alike — benign cognition sits ~18× farther from the frame (mean
d_stab27.8) than the crafted attacks (1.55), sod_stabdiscriminates below chance. The near-identity control passing 100% proves the mechanism is sound; the failure is entirely that benign cognition does not live near the declared frame. A refuse-everything gate trivially "detects" attacks but is not a discriminator. -
§11 grounding-feasibility study (
evals/adr_0246_grounding_feasibility; artifactdocs/audit/artifacts/adr-0246-grounding-feasibility-report.json): fixed TRAIN (live benign, n=13) / HELD-OUT (independent paraphrase cohort, n=12) / ADVERSARIAL (n=8) splits; bivector-block generator proxy (numpy-only; exact for simple rotors/boosts, first-order otherwise); sample-size-calibrated null distribution (200 trials of independent pure-noise cohort pairs at the real n) with a shared-basis positive recovery control; precision pairs (f64↔f32) and per-plane generator-energy analysis.Result: NULL, with the method itself validated. The positive control (two independent cohorts sharing one true rank-2 subspace) recovers at cosine 0.9995 — the 100th percentile of the same-sample-size null (p95 = 0.60) — so the instrument can find real structure at n=12. The real cohorts do not show it: TRAIN→HELD-OUT top-2 cosine 0.52 sits at only the 87th percentile of pure chance (need ≥ 95th); residual-based discrimination is AUC 0.49 (chance; CI [0.21, 0.77]); generator energy is spread across all 10 bivector planes in both cohorts; precision transport is immaterial (max bivector delta 6.9e-7). Benign cognition has no small, stable, cohort-independent generator subspace detectable at this sample size — the D4/slice-0/§6.3 finding now holds at the GENERATOR level too. Threshold tuning cannot produce a discriminating gate; a revised implementation contract is not justified on this evidence. The full
honest_findingtext in the artifact is binding for any downstream claim; a much larger, pre-registered cohort would be needed to rule out a subtle real effect.
4. Operational status (machine-readable)
identity_action_surface:
implementation: proposed # this ADR; code merged flag-off
live_activation: not_authorized # D4 ratified limitation carries over
default: off
blocker: >
§6.3 shows no benign/adversarial separation on the declared frame
(AUC 0.375, benign false-refusal 1.00); thresholds beyond gamma_id
are uncertified placeholders.
activation_requires:
- held-out-stable, safety-relevant grounding result (§11 programme)
- calibrated epsilon_turn/epsilon_session/tau_max/s_min certificates
- renewed discrimination evidence with acceptable benign refusal rate
- explicit human ratification
identity_wave_gate:
unchanged: true # ADR-0244 Accepted-with-limitation posture untouched
5. Uncertified placeholders (enumerated; never live defaults)
| Constant | Value | Status |
|---|---|---|
gamma_id |
0.2126624458513829 | CERTIFIED (D4 Phase 3 Fibonacci certificate 0079b5f2…); pinned equal to identity._WAVE_LEAKAGE_BOUND by test |
epsilon_turn |
0.1 | placeholder |
epsilon_session |
0.3 | placeholder |
tau_max |
= γ_id | placeholder |
s_min |
0.0 | matches D4's fixed orientation floor (geometric invariant, not tuned) |
orth_tol |
1e-6 | placeholder |
unclassified_tol |
1e-6 | placeholder |
AdmissionPolicy.placeholder_default() carries calibrated=False; a serve
gate must never treat an uncalibrated policy as license to activate.
6. What this ADR does NOT do (preflight §7 non-goals — all honored)
No geometric C_id/corrector; no Ring-2 residual protocol; no semantic axis
grounding or pack redesign; no biography-holonomy merge; no atlas/VSWR work;
no analytic cast reactance; no grade-1 versor projection (proven vacuous); no
indefinite-norm leakage; no H_id enlargement; no soft-projection; no
default-on serve gate; no Smith-chart algebra; no status flip of ADR-0244/0245.
7. Resolved and open questions
‖·‖_Gconvention — implemented as‖G^{1/2}MG^{-1/2}‖_F; ratify with this ADR (§2.2).spatial_foreignchannel — RESOLVED: tautologically zero for the default full-span pack; fires correctly for reduced-support packs (pinned:test_spatial_foreign_channel_fires_for_reduced_support_pack).- Hard-break turn ownership — implemented as new-chain; ratify with this ADR (§2.4).
- Malformed-F/gate routing — the D4 wave-path validator raises before the
admission surface runs;
MalformedVersorErrorfrom the pure primitives propagates fail-closed. No silent legacy fallback exists when a wave field was supplied. Unifying the two typed errors is left to a future cleanup. - OPEN (future ADR): semantic axis grounding — blocked on a positive §11
result at adequate sample size;
εcalibration;H_idpolicy products.
8. Consequences
- The identity organ now measures everything the preflight demanded — in-span lawfulness, isometry integrity, typed foreign leakage, and path accumulation — with serve byte-identity preserved and zero live policy change. What it measures says, honestly: the declared frame is not the structure live cognition preserves, so the gate stays off and the next investment belongs to grounding, not thresholds.
- All future identity work inherits content-addressed, full-digest telemetry (records + ledger) and a single pure source of truth for the §3 primitives.
9. Provenance
Fable 5: slice-0 diagnostic; §3 primitives + §3.4/3.5 ledger + §6.1/6.2 suites
(RED-first); this completion pass. Opus 4.8: adversarial audit (bit-exact math
re-derivation; H_id/soft-projection/scope-creep verification), F1 finding,
§3.7 surface + serve wiring, §6.3 discrimination report. Sonnet 5: §4.1/§4.2
telemetry records, admitted gate on the ledger (F1-adjacent §3.4-step-2
compliance), path serve integration (observe-only), §11 feasibility study
design. Every stage: local-first CI (smoke + targeted suites) before commit;
no self-Accept at any point.