Commit graph

863 commits

Author SHA1 Message Date
Shay
c3aed13bbe feat(reader-arc): frame-anchored compare recognizer (verb-free + polarity blocklist)
Increment 1 reader half. Re-anchor the two multiplicative-comparison frame
regexes on the closed-class frame ('<factor> as many/much <unit> as <REF>')
instead of the _comparison_anchor_verb() whitelist: the verb slot becomes a
verb-free bounded connector, 'as much' joins 'as many'. Admission is now
open-class for safe verbs (scored/wrote/caught/taught/…), gated by the frame.

One closed class is NOT frame-neutral — polarity-inverting/depletion verbs
(lose/spend/give/sell/win/donate/pay/eat/drop/lend): in a compare frame they
make the compared quantity a loss, so actor=factor×reference reads backwards
→ wrong>0. _COMPARE_POLARITY_BLOCK excludes exactly that set (the sanctioned
fallback; the frame is the gate for every other verb). Pins the wrong=0
guards in test_adr_0131_G2a + test_recognizer_comparative_inject.

Develop-on-tune / measure-once held. Footprint over 500 official cases: tune
byte-identical (0 divergences, wrong=0, PARSED=3); measure 1 divergence
(0441 'Zig wrote four times as many books as Flo') which advances
frame-refusal -> question-refusal (sanctioned delta) but does not solve — the
binding wall is the shared summation-question layer. X=15 measured delta=0.
Ruling per the funnel-conditioned escalation rule: mass is in shared layers,
so the next increment is shared-layer (summation-question reader), not a
practice escalation and not more compare frames. wrong=0 held on tune (261),
measure (239), smoke (176).
2026-07-18 19:35:23 -07:00
Shay
da663d1007 docs(reader-arc): pre-register escalation rule + refusal-histogram pin + reframe
Pre-registration before the shared-layer edit (PR ruling), all in the record:

1. Refusal-histogram baseline (tune, n=261): 'no injection' = 196/261 (75%) —
   a SHARED bottleneck across every family, not a compare defect; 48 statement,
   9 question, 3 PARSED (compare). Pinned; assert stable-or-explained after —
   only sanctioned delta = compare 'no injection' -> PARSED, disclosed.
2. Funnel-conditioned escalation rule (pre-committed): X=15 miss read via the
   funnel — compare-specific mass -> practice ruling; shared-layer mass ->
   shared-layer design increment (NOT practice). Load-bearing: practice cannot
   learn past a deterministic wall (better candidates still cross the same
   pipeline), so shared bottlenecks are design work regardless of X.
3. Reframe recorded: compare is the first slice of a larger reader project
   (reader parses ~1% of real GSM8K; 'no injection' 75% is a shared wall).
   Not scope creep — the arc seeing its true size.
2026-07-18 17:42:02 -07:00
Shay
7c28bb0ba4 docs(reader-arc): record 'reader was waiting on the compiler' — intentional guard
Code archaeology before treating 'no injection' as a defect: it is a DELIBERATE
narrowing, not broken code. recognizer_anchor_inject.py's discrete-count injector
refuses comparative surfaces with the explicit comment 'Refuse here until a real
compare_multiplicative operation can be emitted' (~L324) and 'does not create any
new admitting path' (~L460). The lockstep thesis of the arc in the code's own
history: the reader refused compare shapes to protect wrong=0 + ADR-0191
completeness because nothing downstream could compile them. The compiler tier
this increment shipped IS that operation -> the fix is LIFTING a now-obsolete
guard whose reason has shipped, not patching injection.
2026-07-18 17:31:08 -07:00
Shay
4a5d0f460d docs(reader-arc): compare increment per-layer attrition funnel (diagnostic)
Instrument-first (PR #76 ruling): before touching the parser, measure where the
61 compare-marked TUNE cases die. Funnel: 57/61 die pre-enumeration; of those,
**45 at the injection layer** ('recognizer matched but produced no injection'),
8 'no admissible candidate for statement', 3 'expected exactly one question
sentence'; 3 solve today.

Finding: the leverage is INJECTION (45/61), not the candidate regexes (which
fire on clean clauses but the real multi-clause sentences never reach them) nor
segmentation writ large. Injection is an EMITTER, so the sanctioned fix is
making it inject compare candidates the recognizer already matches — never
loosening the round-trip gate. Fix order by measured mass: injection (45) ->
statement-admissibility (8) -> question-sentence (3). Tune-only development;
single measure run at the end with refusal-by-reason + delta.
2026-07-18 17:25:26 -07:00
Shay
09172da204 docs(reader-arc): fold PR #76 amendments into compare increment plan; X=15 ratified
Four amendments (Shay, #76 review) folded:
1. Summation registers-driven (NEW CODE): summation orders by program.seeds
   (initial_state) today, so a compare-DEFINED register (no seed) is silently
   excluded from the total — all 5 real cases are totals. Fix: sum all registers
   at solve time, deterministic order (seed order then definition order);
   compile-side validation admits defined entities as answer targets with unit
   propagation from the reference. Pin: defined register in the certified sum.
2. Compare record spec: record identifies the reference entity + binds the
   reference state digest via the existing conditional operand_source_digest
   (non-compare/non-summation digests unchanged); deterministic re-verification
   reconstructs the dilation's source register from records alone.
3. Tune/measure split pinned deterministically (sha256(id)-ordered) FIRST,
   before any grammar work, documented + fixed in advance.
4. 'N times more than' pinned to N× as a disclosed convention; gold mismatches
   tracked as recorded findings, never silent wrongs.

X = 15 ratified as the arc escalation threshold (spike §7.3 updated). §6 risks
reclassified (risk 4 -> new code §3.1; risk 1 -> pinned convention §4). Build
proceeds under this ruling — no separate re-ruling.
2026-07-18 16:07:41 -07:00
Shay
c88e52c6a9 docs(reader-arc): compare_multiplicative increment plan (increment 1, for ruling)
First increment of the reader design-first arc (dev2 spike §7). Design-first,
for ruling before build.

Ground truth (5 real holdout_dev compare parses): one entity seeded, the other
DEFINED by actor = factor x reference (Comparison, direction times/fraction);
unknown = total -> existing 2b summation closes them once compare is solvable.

Compiler tier: cross-register affine definition actor := factor x reference
(dilate reference STATE by -ln factor, write to actor register). Two new bits
designed explicitly: reads-one-register-writes-another; actor is DEFINED not
seeded (compare introduces the register). NO conservation pin (compare creates,
doesn't move — transfers conserve, compare doesn't). fraction direction folded
in; compare_additive is a later increment. Immediate effect: corridor real-reach
0/500 -> the compare parses that already exist (loop-works proof).

Reader grammar family: reader emits compare for ~5/500 (narrow phrasings);
incidence ~20% (~100/500) -> broaden compare templates; most of the delta.

Measurement: holdout_dev only, wrong=0 floor, sealed untouched, tuned/measured
DISJOINT split, delta vs X=15. Risks: 'N times more' ambiguity, garbled entity
spans, ordering, defined-register-in-summation.

Nothing built; increment PR ships after this plan is ruled on.
2026-07-18 15:54:43 -07:00
Shay
25762614c0 docs(dev2-spike): restructure per ruling — reader design-first, practice = backup
Supersedes the practice-loop recommendation (§7/§10): the arc is the reader,
DESIGN-FIRST — per-family increments, grammar family + compiler tier in LOCKSTEP
(§2 proves they can't move separately: the 5 real compare_multiplicative parses
die at the affine compiler today). Each increment = own smoke-gated PR with a
measured holdout_dev delta, wrong=0 floor, sealed test untouched.

- Increment order: compare_multiplicative FIRST (reader already emits it →
  0/500 to >0 immediately, cheapest end-to-end proof), then §3 frequency order
  (rate → fraction → compare_additive → partition).
- Escalation threshold X PROPOSED = 15 new-correct/holdout_dev per full family
  increment (Shay rules with the merge); below it → practice-lane ruling.
  Rationale: families carry 20-31% incidence, a paying design converts far more.
- Practice loop demoted to PAPER-DESIGN backup (§7.4) with leverage analysis:
  verifier = Tier-1/2 compiler stack, audit = certificate chains, consolidation
  = prepare→validate→commit generalized, hygiene = ADR-0119 sealing; genuinely
  new = candidate generator + consolidation store. Four §7 constraints carry
  over verbatim.
- Design-first work IS the backup's curriculum (§7.6): refusal taxonomies,
  tagged incidence, labeled (parse,compile,execute,gold) tuples are artifacts.
§5 floors/scoreboard + §6 sequencing affirmed unchanged; errata merge with this.
2026-07-18 15:48:13 -07:00
Shay
639616b3e5 docs(dev2-spike): errata + two-instrument reframe + incidence + reader-arc design
Folds in Shay's rulings on the spike:
- ERRATA sections added to ADR-0249, ADR-0250, and both acceptance-evidence docs
  (statuses stay Accepted): corpus label 'real GSM8K dev holdout' -> 'CORE-authored
  GSM8K-style corpus (ADR-0119.2)'. Mechanism claims (wrong=0, PARITY, conservation,
  atomicity, chain-of-custody, 200/200) all stand; reframe not retraction. Covers the
  #74 review comment that repeated the label. (Also fixed ADR-0250 evidence status ->
  RATIFIED, which the ratification housekeeping missed.)
- Two instruments named + never-blended scoreboard: authored = mechanism-correctness
  (200/200 stands as that); official holdout = generalization (5/500 symbolic / 0/500
  corridor). public/dev-1 floors relabeled MECHANISM floors, composition-disclosed.
- Censored-incidence fix: parse-INDEPENDENT tagging of 100 official cases (documented
  heuristic). 70/100 carry frontier markers (rate 31, fraction 28, compare_mult 20) ->
  (c) refuted, frontier COMMON not rare; the table is the reader-arc curriculum by
  real-world frequency.
- Reader-practice-loop design with the four non-negotiable constraints (real held-out
  data only; wrong=0 gates consolidation; sealed test untouched; holdout_dev split
  disjoint from the measured metric). Sequencing: capability->practice->calibration->
  serve; reader is the critical path for all three; serve-landing de-prioritized (0/500).

Spike verdict for ruling; nothing built.
2026-07-18 15:37:01 -07:00
Shay
ab5c663eb3 docs(research): dev-holdout-2 / frontier-measurement spike — verdict
Headline correction: evals/gsm8k_math/dev + public are CORE-AUTHORED GSM8K-style
(ADR-0119.2), NOT real GSM8K. The compiler's 200/200 is on authored, mostly
depth-1, frontier-free problems — a mechanism validation, not real-GSM8K
capability. ADR-0249/0250 'real GSM8K' language needs correcting.

Draw-protocol trace: train_sample + holdout_dev + sealed-test = real GSM8K
(deterministic seeded draws); dev/public = authored.

Real measurement (end-to-end on 500 real holdout_dev): Reader A parses 5/500
(1%, refuses 495); my compiler solves 0/500; the 5 parsed are all
compare_multiplicative (frontier), refused by the affine compiler. Corroborates
holdout_dev's historical 'real GSM8K capability 0%'.

Verdict: (a) DOMINANT — frontier + real GSM8K are READER-gated (99% parse-refusal);
(b) confirmed as authoring bias in dev/public; (c) refuted — frontier is common,
not rare. Sequencing: reader is the biggest bucket; more compiler tiers = capability
without inputs; serve-landing premature. Reader-practice-loop NAMED as leading
next-arc (reader = first learnable component; attempt-parse->compile->execute->
gold-check, wrong=0-gated on held-out real data; generalization-preserving).
Public-seal approved with authored-not-real + composition (depth/kinds) disclosure.

Spike verdict for ruling; nothing built.
2026-07-18 15:24:18 -07:00
Shay
b87cd46cf7 chore(adr-0250): ratify Accepted + fold in PR #74 review findings
Ratification: ADR-0250 Status Proposed->Accepted; §10 ruling record stamped
(Shay, citing the acceptance-evidence pack as-is; full-holdout 50/50 wrong=0
affirmed; next arc = seal dev-holdout-2, dev-1 pinned as regression floor).

Review findings (Shay, PR #74, non-blocking):
1. Instrument module docstring updated from 'Three deterministic domains' +
   'GSM8K NOT ingestible / no compiler' to the four-domain post-0250 reality
   (arithmetic-chain solves the full dev holdout; frontier surfaced in scope).
2. Restored per-case refusal reasons: _corridor_and_baseline now raises
   MultiRegisterError (not bare None); the domain loop records refusal.reason
   and distinguishes graph_parse_failed. 'Recorded, never silently dropped'
   stays literal (0 rows at refused=0, but the path is honest).
3. Tightened the Tier-1 try to wrap compile_turn_program only (execute outside),
   so a future typed execute raise surfaces as a Tier-1 failure instead of
   silently rerouting into Tier-2 and masking a regression; added the note that
   Tier-2 fails closed on non-convergence while Tier-1 records-only, gold
   comparison binding wrong=0 on both.

10/10 instrument pins green.

[Verification]: uv run python -m pytest tests/test_adr_0249_arithmetic_lift.py tests/test_generalized_lift_instrument.py -q
2026-07-18 15:07:29 -07:00
Shay
e6439bb70f feat(adr-0250): instrument routes Tier-2 + ADR-0250 (Proposed) — arc closure
Instrument: the arithmetic-chain domain now routes each real GSM8K dev case to
Tier-1 (single-accumulator) or Tier-2 (multi-register / summation) and compares
the corridor to a symbolic fold of the SAME compiled program. Recorded coverage
moves 26/50 -> 50/50, 0 refused, PARITY (wrong=0) — the measurement catching up
to the capability. Scope note corrected (full holdout closed; remaining frontier
= derived-operand transfers + non-affine kinds + >5-atom deduction, all 0 on this
holdout). Updated the ADR-0249 instrument test pins (26->50, refused 24->0).

ADR-0250 (Status Proposed, no self-Accept; §10 ruling awaits Shay) + acceptance
evidence: multi-register model, relative conservation, atomicity, certified
summation, chain-of-custody, and the full-holdout 50/50 wrong=0 result.

10/10 instrument pins green.

[Verification]: uv run python -m pytest tests/test_adr_0249_arithmetic_lift.py tests/test_generalized_lift_instrument.py -q
2026-07-18 14:43:40 -07:00
Shay
bae16cf607 docs(research): Tier-2 multi-entity arithmetic design spike
Action 1: multi-register product-of-lines model + coupled-translator transfers
+ transfer-conservation invariant (verified in-tree: Ruth/Sara + 200 random
transfers, conservation & per-register exactness ~6e-11). Transactional
atomicity via immutable register snapshots (prepare-validate-commit; no partial
mutation, no rollback).

Action 2 finding (probe on the 24 refused GSM8K dev cases): ALL 24 are
constant-operand multi-entity (20 contain a transfer). Unknown split: 18
single-entity (pure 2a -> 26/50->44/50), 6 total-like (need certified summation
= 2b certified-decode staging on REAL data -> up to 50/50). Derived-operand
transfers (half-of-X) = 0 on this holdout (synthetic-only, guarded).

Tier-2b certified-decode staging + chain-of-custody (Shay's Q): certificate
psi_digest anchor + operand_certificate_id in the TurnRecord + deterministic
re-execution/live gate — no trusted-Python assumption.

§7 rulings RESOLVED (Shay): certified summation turn; ship 2b designed+guarded;
conservation pin = hard-reject. ADR-0250 (Proposed) to follow.
2026-07-18 14:01:15 -07:00
Shay
ebfdc8b461 docs(adr-0249): ratify ADR-0249 ACCEPTED (Shay, commit 220039f7)
Stamp the §10 ruling record: Status Proposed→Accepted; four design rulings
affirmed; honest-by-construction measurement (0 wrong / 26 correct / 24 refused
on real GSM8K, PARITY vs symbolic fold) affirmed as the definitive outcome.
Next arc selected: Tier-2 arithmetic (multi-entity/transfer/rate/comparison/
fraction). Acceptance-evidence status updated to RATIFIED. Doc-only.
2026-07-18 13:25:39 -07:00
Shay
d65fb8cf36 docs(adr-0249): ADR-0249 (Proposed) + acceptance evidence — arc closure
ADR-0249 documents the reader→Hamiltonian compiler (P1-P5): thesis (composition
= certified turn sequences), the five components, anti-hollow discipline, the
Ring-2 non-mutating correction, three-tier reproducibility, Tier-1 scope +
recorded frontier, and the honest-measurement done-when. Status Proposed — no
self-Accept; §10 ruling record awaits Shay.

Acceptance evidence: phases + merge SHAs, the real GSM8K dev-holdout result
(26/50 Tier-1 ingestible, wrong=0, PARITY vs symbolic fold, 24 multi-entity
refused = recorded frontier), in-tree algebra + CNF-soundness verification, the
design corrections applied, and the honest open register.
2026-07-18 13:10:01 -07:00
Shay
0926a78ccb feat(adr-0249): P1 conformal quantity kernel
Numbers as null points on the Cl(4,1) conformal line; add/scale by known
constants as translator/dilator versor sandwiches (affine Tier-1 scope).
Projective scale-invariant decode absorbs the dilator's conformal weight.

Reproducibility (spike §4.6 Tier 2): all construction explicit f64 (guards the
cl41 silent-f32 fallback); golden-bytes canary pins embed_quantity(3.0) SHA-256
for cross-hardware drift detection. Fail-closed QuantityKernelError on
non-finite input and degenerate conformal weight.

Spike doc: §8 rulings recorded RESOLVED (all four approved); §4.6 three-tier
byte-identity analysis added (LAPACK degenerate-eigenspace bound made explicit).

35/35 pins green.

[Verification]: uv run python -m pytest tests/test_adr_0249_quantity_kernel.py -q
2026-07-18 12:04:28 -07:00
Shay
5738252c37 docs(research): reader→Hamiltonian compiler design spike — opening record
Composition = certified turn sequences: compile problems into turn programs
of small relation-Hamiltonians chained through the Ring-2 path ledger, not
one big matrix (the ≤5-atom ceiling IS the 32-blade basis). Quantity kernel:
conformal line embedding + translator/dilator transport, verified exact
in-tree against algebra/cl41.py (dilator sign convention + projective decode
pinned). All bindings verified: ProblemHamiltonian contract, reader IRs
(MathProblemGraph, meaning_graph→to_deductive_logic), governing ADRs
(0243 §2.2/§4.2, 0244 §2.7-2.8, 0245 §2.2-2.4/§3, 0012, 0175/0191-0193),
prior art reconciled (ADR-0217 R2 front-end, field wedge INV-27 intact).
Next ADR number: 0249. Implementation P1-P5 gated on §8 rulings.
2026-07-18 11:52:40 -07:00
Shay
6ff73aa7a5 docs(research): plan record — mark EXECUTED/merged, add missed Phase-4 DONE marker
Orthogonal doc-only correction: the merged copy's Phase-4 header lacked its
DONE marker (sed pattern mismatch) and the Status line predated ratification.

[Verification]: Smoke suite passed locally (139s, 176 passed) on 31f1a824.
2026-07-18 11:27:02 -07:00
Shay
d44c39c35c docs: accept ADR-0246, 0247, 0248 and update packet
Approved via explicit human ratification.
2026-07-18 11:18:51 -07:00
Shay
62a72deba0 feat(evals): seams S4+S5 — generalized-lift instrument + ports/handoff evidence
S4: evals/generalized_lift_instrument.py — corridor vs symbolic baseline on
identical compiled problems, independent truth-table gold, honest-NULL
protocol, no-silent-caps (GSM8K non-ingestibility RECORDED as the
composition frontier). Live results: propositional PARITY (corridor 10/10 =
ROBDD 10/10, wrong=0 guard HELD), constrained-recognition LIFT +9 (relax+
readback 9/9 vs constraint-blind argmax 0/9; round-trip agreement 1.0),
multimodal-completion PARITY (vision token already resonates with the
audio partial — measured, disclosed).

S5: evals/lift_evidence_handoff.py — two REAL certified turns through
IdentityPort+PrecisionPort (Ring-2) and coordinate_handoff (Ring-3),
off-serving, flags untouched: identity-action turn PROCEEDs, frame-rotating
turn ABSTAINs with typed port-attributed reason (d_stab>epsilon_turn); both
replay chains verify. Evidence doc: docs/handoff/ADR-0246-Acceptance-
Evidence.md (for Shay's §8 rulings — no self-Accept). Plan doc phases 0-5
marked DONE.

[Verification]: Smoke suite passed locally (129s, 176 passed); 147 passed
across all touched+adjacent suites.
2026-07-18 10:34:26 -07:00
Shay
fcea2d3a4f docs(research): intelligence-loop arc opening record — plan + Spark-audit adjudication
Claim-by-claim adjudication of the two Google Spark audit PDFs against
main @ 54659b76 (most claims closed by the 2026-07-17 waves; two
recommendations rejected as doctrine violations), plus the phased
homestretch plan (S1-S3 seams, generalized-lift instrument, ADR-0246/47/48
acceptance evidence). Source PDFs included for provenance.
2026-07-18 08:14:29 -07:00
Shay
05ae8cb1b4 feat(ring2-ring3): multi-port residual protocol + integrity-coordinated handoff
Rings 2 and 3 of the ADR-0246 preflight §9, built exactly as the brief bounds
them. ADR-0247 + ADR-0248 both **Proposed** — no self-Accept.

Ring 2 (core/ports/residual_protocol.py — ADR-0247):
  the 7-stage shared control grammar: witness -> typed residual decomposition
  -> permitted operator selection -> bounded operation or abstention ->
  re-certification -> action decision -> append-only replay record.
  Port-agnostic (no registry, no unified scheduler — §7 non-goal #2 honored);
  v1 operators are ZERO-BOUND only (nonzero fails closed — no-silent-correction
  doctrine); unaccounted residual fails closed; re-certification RAISES on
  witness drift during a zero-bound pass; replay chain is append-only,
  full-SHA-256 content-addressed, tamper-evident (verify_replay_chain).
  NOTE: named core/ports/ because core/protocol/ is the existing CTP v0 wire
  format (collision checked before naming).

Ring 2 adapters (core/ports/adapters.py): IdentityPort (ADR-0246 grade-1
  geometry; typed channels travel IN the witness so decompose is a pure
  re-shaping, no hidden state; admit = evaluate_admission, single source of
  truth) + PrecisionPort (ADR-0244 §2.5 cast transport; ServingState subjects)
  — two genuinely non-identical native geometries + a synthetic third port
  proving grammar agnosticism.

Ring 3 (core/ports/integrity_handoff.py — ADR-0248):
  the coordination seam ('Integrity coordinates handoffs; it does not replace
  content-bearing cognition'): fuses Ring-2 port decisions + existing
  EpistemicState/NormativeClearance into content-free proceed/hedge/abstain
  (conjunctive, strongest-restriction-wins; fail-closed on missing/invalid
  evidence; binds replay-chain tip digest; handoff itself content-addressed).
  Weak epistemic standing hedges (mirrors hedge doctrine) — only integrity
  violations silence a turn. OBSERVE-ONLY: no serve consumer yet; that is a
  future flag-gated unit. Remaining Ring-3 programme honestly listed open
  (world-model, governed-learning consumption, discourse widening).

Both pure/deterministic/off-serving (A-04 pinned); brief §0a/§9 updated.

[Verification]: uv run core test --suite smoke -q => 176 passed; Ring 2/3 +
ADR-0246 suites + D4 gate surfaces => 125 passed (28 new Ring-2/3 pins);
run log docs/audit/artifacts/ring2-ring3-runlog.txt
2026-07-17 23:56:01 -07:00
Shay
45539e62d5 feat(adr-0246): completion — §4.1 records, path serve integration, §11 feasibility (honest NULL), ADR body Proposed
Final Ring-1 unit (Sonnet 5 handoff scope, completed by Fable 5). Stacked on
feat/adr-0246-slice1-hardened. ADR stays Proposed — no self-Accept; packet §8
RULING PENDING for Shay.

§4.1/§4.2 telemetry:
  + IdentityActionRecord (schema identity_action_v1): full-SHA-256 field/record/
    pack-content digests (LE f64, canonical JSON, no default=str),
    policy_version=AdmissionPolicy.version_id(), A_raw + all measures, admitted,
    multi-condition refusal_reason (';'-joined — documented widening),
    lawful_action in {I,none}, path_break
  + manifold_content_digest + GEOMETRY_VERSION/GATE_VERSION (§3.5 scope keys)
  + IdentityScore.action_record; JSONL serializer emits identity_action_*/
    identity_path_* keys ONLY when the paths ran (flag-off wire byte-identical)
§3.4 step-2 compliance (F1-adjacent):
  + advance_identity_path(admitted=) — a policy-refused turn breaks even with
    small d_stab (was a real gap: leakage-refused turns could compose); pinned
Path serve integration (OBSERVE-ONLY):
  + advance_session_identity_path: scope from manifold digest + version ids;
    runtime advances the session ledger only when identity_wave_gate AND
    identity_action_surface are on; instance lifetime = session boundary;
    session_admit is telemetry, never egress (epsilon_session uncertified)
§11 grounding-feasibility study (evals/adr_0246_grounding_feasibility):
  fixed TRAIN(13)/HELD-OUT(12)/ADVERSARIAL(8); bivector generator proxy
  (numpy-only); SAMPLE-SIZE-CALIBRATED null (200 noise-pair trials at real n)
  + shared-basis positive control (a real bug caught RED: per-call fresh bases
  made the positive pair meaningless at 0.53). RESULT: honest NULL with the
  method validated — positive control 0.9995 (100th pctile, null p95 0.60) but
  real cross-cohort cosine 0.52 = 87th pctile of chance; AUC 0.49 [0.21,0.77];
  generator energy spread across all 10 planes; precision immaterial (6.9e-7).
  No stable generator subspace at this n; threshold tuning cannot discriminate.
ADR + packet:
  + docs/adr/ADR-0246-induced-identity-action-and-path-integrity.md (Proposed;
    F1 semantics + ||.||_G convention + turn-ownership + refusal_reason rulings
    requested; binding claims language 'lawfulness relative to the declared
    frozen frame'; honest §6.3 + §11 numbers; machine-readable operational
    status: live_activation not_authorized, both flags default-off)
  + docs/audit/adr-0246-acceptance-packet-2026-07-17.md (§10 checklist, §8 PENDING)
  + spatial_foreign uncertainty RESOLVED + pinned (tautologically zero for the
    full-span default pack; fires for reduced-support packs)

[Verification]: uv run core test --suite smoke -q => 176 passed; full battery
(all 9 ADR-0246 suites + D4 identity surfaces + gamma calibration +
identity_gate + telemetry) => 228 passed; §6.1/6.2 eval 14/14; §11 artifact +
run log under docs/audit/artifacts/.
2026-07-17 23:36:41 -07:00
Shay
47e7eb4e65 feat(adr-0246): Opus audit + §3.7 admit surface + serve wiring + §6.3 discrimination
Opus 4.8 audit of Fable's slice-1 scaffold + authorized hardening (Step 2).
Stacked on feat/adr-0246-slice1-scaffold. Not a PR, not merged, no status flip.

AUDIT (Step 1) — VERDICT PASS. Re-derived A(F)/d_orth/d_stab/typed channels from
§3.1/3.2/3.6 independently: BIT-EXACT vs impl (0.00e+00). Confirmed in code (not
just comments): H_id={I} locked (singleton hardcoded, no enlargement path); path
composes lawful only, refused=break marker, never raw, never soft-I; no §7 scope
creep; serve byte-identity. Finding F1 (doc, not bug): composition uses the raw
CERTIFIED action (required for §6.2 accumulation, else A_path≡I detects nothing) —
now documented for ADR ratification.

HARDENING (Step 2):
  §3.7 pure surface (identity_action.py): AdmissionPolicy (calibrated flag),
    evaluate_admission (admit-or-abstain, no corrector); CERTIFIED_GAMMA_ID pinned
    == identity._WAVE_LEAKAGE_BOUND; all other bounds UNCERTIFIED placeholders.
  §3.7 SERVE WIRING (Steps 2.1/2.2): new default-off flag identity_action_surface
    (config); threaded chat/runtime -> check -> _wave_field_score; refusal folds
    into flagged -> existing would_violate/conjugate_correct abstains; IdentityScore
    gains action_surface_active/d_orth/d_stab (legacy defaults). Flag-off is
    byte-identical (D4 gate surfaces green unchanged; smoke 176 post-wiring).
  §6.3 DISCRIMINATION REPORT (evals/adr_0246_discrimination) — HONEST numbers:
    benign pass 0.00, false refusal 1.00, adversarial detect 1.00, control pass
    1.00; d_stab AUC 0.375 (95% CI [0.15,0.62]) — BELOW chance. Benign cognition
    sits ~18x farther from the frame (mean d_stab 27.8) than the attacks (1.55).
    The gate refuses everything and does NOT discriminate; must stay off; usable
    separation needs the §11 grounding work, not threshold tuning. Claims language
    enforced: 'lawfulness relative to the declared frozen frame', NOT 'semantic
    inalienability'.
  Ledger raw-sneak hardening test (Step 2.3): mixed lawful/refused sequence must
    equal the lawful sub-product, fails if raw sneaks into A_path_lawful.

Handoff to Sonnet: §4.1 per-turn record, path-ledger serve integration, ADR-0246
body + acceptance packet (Proposed, no self-Accept), §11 grounding-feasibility.

[Verification]: uv run core test --suite smoke -q => 176 passed (post-wiring);
ADR-0246 suites 80 passed; egress wiring + D4 gate surfaces 47 passed
(byte-identity); §6.1/6.2 eval 14/14; discrimination report numbers above.
See docs/audit/adr-0246-slice1-opus-audit-and-hardening.md + run log.
2026-07-17 22:51:46 -07:00
Shay
ed54dddacb draft(adr-0246): slice-1 scaffold — §6.1/§6.2 eval suite + malformed-F guard
BOUNDED AUTONOMOUS SCAFFOLD DRAFT (Fable 5) — not a PR, not merged, no status
flip, no main push. For Opus 4.8 + Shay audit before anything proceeds toward main.
Stacked on the verified §3-primitives + §3.4/3.5-ledger stack (reuse, not re-derive;
all descend from main @ 04d67ca5).

Adds (directive steps 3-4):
  + evals/adr_0246_geometric_suite/  runnable §6.1 synthetic geometric suite
    (identity, pi-inversion, 90deg-permutation, mild drift, alien tilt e14,
    boost e15, near-singular Gram, malformed F) + §6.2 path/holonomy suite
    (lawful sequence, small-rotation session accumulation, interleaved refuse,
    pack-change hard break, raw!=lawful forensic). 14/14 cases pass.
  + tests/test_adr_0246_geometric_suite.py  pins every case + explicit §6.1 pins
    (pi-inversion s=-1, 90deg s=0, near-singular Gram error, malformed-F error)
  + identity_manifold.py: MalformedVersorError + _validate_versor guard on
    induced_action / typed_residual_energy (§6.1 fail-closed on malformed F)
  + docs/handoff/adr-0246-slice1-scaffold-notes.md  placeholder list, §5-§7
    uncertainties, constraint-compliance record, explicit Opus/human TODOs
  + docs/audit/artifacts/adr-0246-slice1-scaffold-runlog.txt  actual run output

Constraints honored: H_id={I} only; no soft-projection of unlawful A; path
composes lawful actions only (never raw product); no C_id corrector; chat/runtime,
flags, D4 gate wiring untouched (A-04 quarantine pinned); no discrimination report,
no ADR body, no claims language (deferred TODO: Opus/human); D4 plan not modified.
epsilon_turn/epsilon_session are UNCERTIFIED PLACEHOLDERS, never baked into a
module default (PathBudget is caller-supplied) — flagged in notes + run log.

[Verification]: uv run core test --suite smoke -q => 176 passed;
python -m evals.adr_0246_geometric_suite => 14/14 all_passed;
ADR-0246 suites + adjacent D4 identity surfaces => 114 passed (see run log).
2026-07-17 22:09:32 -07:00
Shay
6efe4ad80c feat(adr-0246): §3.4/§3.5 lawful-only identity-path ledger (pure, off-serving)
Second Ring-1 unit per the brief. Stacked on feat/adr-0246-induced-action-primitives.

core/physics/identity_action.py:
  + PathBudget            two-level budget (epsilon_turn, epsilon_session)  (§3.4)
  + IdentityChainScope    pack/geometry/policy/session/biography scope key   (§3.5)
  + IdentityPathLedger    immutable path snapshot; full-SHA-256 chain_id +
                          ledger_digest (LE f64 bytes, no default=str)       (§4.2/§4.3)
  + advance_identity_path fold one turn: lawful iff d_stab<=epsilon_turn;
                          only lawful turns compose; refused turns are break
                          markers (path_break), never soft-projected I;
                          scope change = hard break onto a fresh chain
  + raw_path_product      forensic-only (proves lawful product != raw product)

Enforces the §3.4 doctrine: lawful-only composition; no soft-projection of an
unlawful action onto I (non-goal #11); raw and lawful kept separate. Hard breaks
on every scope dimension (§3.5). Pure numpy+identity_manifold; off-serving; no
gate/threshold/axis/H_id/flag change (identity_wave_gate stays default-off).
Gate admit-surface wiring + eval matrix are subsequent units (brief §0a).

[Verification]: uv run core test --suite smoke -q => 176 passed;
tests/test_adr_0246_path_ledger.py 16 passed (RED-first, incl. small-rotation
session-accumulation, hard-break on each scope dim, raw!=lawful forensic pin,
immutability); identity surfaces (induced_action, mismatch-diagnostic,
identity_manifold, identity_gate_wave) 85 passed together.
2026-07-17 21:55:24 -07:00
Shay
4941cf188e feat(adr-0246): §3 induced-action primitives (pure, off-serving)
First implementation unit of ADR-0246 Ring-1 per the preflight brief §3/§13.
Promotes the induced-action apparatus from the slice-0 eval prototype into pure,
tested geometry — the single source of truth both the future gate surface and the
§11 grounding-feasibility study will consume.

core/physics/identity_manifold.py:
  + induced_action(versor)        A(F) = G^-1 · <a_k, F a_j F~>_0   (§3.1)
  + orthogonality_defect(versor)  d_orth = ||A^T G A - G||_F        (§3.2)
  + typed_residual_energy(versor) e4/e5/spatial_foreign/unclassified (§3.6)
  + orthogonality_defect_of_action / SPATIAL_GRADE1_INDICES / E4,E5 index pins
core/physics/identity_action.py (new, pure):
  + IdentityStabilizer (locked singleton H_id={I}, §3.3)
  + stabilizer_defect  d_stab = min_H ||A - H||_G                   (§3.2)
    G-weighted norm reduces to Frobenius at G=I (default pack)
evals/adr_0246_mismatch_diagnostic: rewired to delegate to the canonical
  primitives (removes the duplicate prototype copies; drops unused import).

Scope: off-serving (algebra-only, A-04 quarantine, pinned by test); no gate,
threshold, axis, H_id, corrector, or flag change. identity_wave_gate stays
default-off. Path ledger (§3.4/3.5), gate admit surface (§3.7), and the eval
matrix + §11 feasibility study are subsequent units (brief §0a records the
sequencing). No self-Accept.

[Verification]: uv run core test --suite smoke -q => 176 passed;
tests/test_adr_0246_induced_action.py 12 passed (RED-first);
identity surfaces (mismatch-diagnostic rewired, identity_manifold, identity_gate
wave/runtime/eval, gamma_calibration) 87 passed.
2026-07-17 21:36:57 -07:00
Shay
b9c54e7713 feat(adr-0246): slice 0 — benign nominal-frame mismatch diagnostic (evidence-only)
Diagnostic-only first slice of the ADR-0246 programme: classify WHY benign
trajectories mismatch the declared identity frame, using the preflight brief
§3 instruments implemented eval-side (induced action A(F), d_orth, d_stab vs
locked H_id={I}, typed e4/e5/unclassified residual channels, plane occupancy).
No gate, threshold, axis, flag, or corrector changes; serving untouched.

Verdict (docs/audit/adr-0246-slice0-mismatch-diagnostic-2026-07-17.md):
all 25 live benign/paraphrase turns = foreign_leakage; precision transport
immaterial (<=3.6e-5); path accumulation ruled out (per-turn d_stab already
0.15-813); declared frame statistically unspecial vs 32 random control frames
=> semantic coupling absent, confirming + sharpening the D4 root cause.
Two benign sub-populations resolved: 18/25 boost-involved (e5, non-isometric),
7/25 pure e4 conformal tilts (near-isometric).

[Verification]: uv run core test --suite smoke -q => 176 passed;
tests/test_adr_0246_mismatch_diagnostic.py 16 passed; adjacent identity
surfaces (gamma_calibration, identity_manifold, identity_gate wave/runtime/
eval) 75 passed. Gate surface pinned untouched (flag default-off,
_WAVE_LEAKAGE_BOUND unchanged).
2026-07-17 21:00:11 -07:00
Shay
5027adf8cb docs(adr-0244-d4): RATIFIED — ADR-0244 + ADR-0245 Proposed→Accepted (Joshua Shay)
Governance flip carrying Joshua Shay's ratification provenance inline (ruling
2026-07-17: "Ratify both"). Anti-self-Accept guard satisfied — status flips are
authorized by explicit human ruling, not self-issued.

- ADR-0245 → **Accepted** (clean): mechanical-sympathy + semantic-rigor §3 gate
  green — parity, f32 467× speedup, 0-LAPACK-on-repeat, collision-resistance.
- ADR-0244 → **Accepted as an implemented mechanism** with a RATIFIED
  live-activation limitation: identity_wave_gate stays default-off and live
  activation is NOT authorized. Acceptance covers the operator-preservation
  manifold, fail-closed gate capability, γ_id calibration, telemetry, and
  lifecycle contracts — not a production flip. The Phase-3 calibration explicitly
  did NOT authorize activation (benign traffic not separable at the nominal
  frame; best balanced error 0.346). Activation is blocked pending a separately
  ratified ADR-0246 (induced action, lawful stabilizer, path integrity,
  semantic-frame discrimination) + renewed discrimination evidence + acceptable
  benign refusal rate + explicit human ratification.

Governance additions (per the ruling): both ADR status lines carry
"Accepted — ratified by Joshua Shay … acceptance-packet" (provenance-guard
format); ADR-0244 header carries the Operational-status limitation paragraph + a
machine-readable identity_wave_gate: ledger block (implementation: accepted /
live_activation: not_authorized / default: off); both packet §8 RULING RECORDs
RATIFIED with the "not safe-to-activate" caveat prominent. Plan doc Phase 6 → DONE.

[Verification]: smoke 176 passed; provenance/ADR pins + all ADR-0244/0245 tests
503 passed (both-Accepted-with-provenance format enforced). Docs-only.
2026-07-17 20:28:18 -07:00
Shay
d459cfaf7c docs(adr-0244-d4): Phase 6 — D10 acceptance packets for both ADRs (ruling PENDING)
Two D10-pattern acceptance packets submitted for Joshua's ruling:
- docs/audit/adr-0244-acceptance-packet-2026-07-17.md
- docs/audit/adr-0245-acceptance-packet-2026-07-17.md

Each is an evidence dossier (§1 claim→built→evidence→verdict table, §2 deviations,
§3 deferred, §4 gate results, §5 requested action). §8 RULING RECORD is PENDING and
both ADR status lines remain **Proposed** — the anti-self-Accept guard forbids me
flipping status without explicit ratification, so I have NOT.

The ADR-0244 packet §5 foregrounds the one caveat shaping the ruling: the identity
wave-gate is BUILT + VALIDATED but NOT live (identity_wave_gate=False; Phase-3
live-non-separation, best balanced error 0.346) — validated scaffolding pending
ADR-0246, not a live gate. The ADR-0245 §3 gate is complete (parity, f32 467×
speedup, 0-LAPACK, collision-resistance).

Plan doc Phase 6 → PACKETS DELIVERED, awaiting ratification. All build phases
(0-5) complete; the only remaining step is the human ratification gate.

[Verification]: Phase 5 gate green — smoke 176; fast lane 12032 passed / 25
skipped (core_rs built → Rust-parity + f32-speedup ran live). Docs-only commit;
both ADRs Proposed (provenance guard unaffected).
2026-07-17 20:14:57 -07:00
Shay
8ef80daa04 docs(adr-0244-d4): Phase 5 COMPLETE — §2.7/§2.9/§2.10 + ADR-0245 §3 gate
Plan doc (scope tables + Phase 5 status/resume + progress log + dashboard) and
ADR-0245 status map updated: §2.3 residual done (5a), §2.9 proven (5b), §2.10
audited (5c), §3 acceptance gate all four legs green (5d). Also corrected the
Phase-4 SHA reference (17ec6eee → 918aa843, amend lag). Next: Phase 6 close-out;
all build phases (0-5) complete.
2026-07-17 20:03:02 -07:00
Shay
918aa843b1 feat(adr-0244): Phase 4 — governed f64→f32 serving-boundary cast (§2.5 / 0245 §2.2)
The single explicit, fail-closed f64→f32 down-cast at the certified lifecycle
egress. serving_cast(psi_steady, certificate, verdict) -> ServingState in
core/physics/cognitive_lifecycle.py:

- Casts ONLY a state that validates as a finite 32-vector, matches its
  certificate psi_digest, and was verdict.admitted — an uncertified, refused, or
  digest-mismatched state is never served.
- Precision-checks the f32 result (cast_error = max|f64-f32|, unit norm) and
  fails closed on an f32 precision cliff (f32_precision_insufficient) rather than
  serving a silently-degraded state.
- Keeps f64 as the source of truth: psi_steady and the psi_digest content-address
  chain are untouched; ServingState carries provenance back (source_psi_digest,
  certificate_id, measured cast_error) for audit. f64 stays inside
  relaxation/eigendecomp — this is the one place f32 appears (ADR-0245 §2.2
  mechanical sympathy).

Satisfies both ADR-0244 §2.5 and ADR-0245 §2.2 (one contract, two ADRs). Measured
on a real certified outcome: cast_error ~1.2e-8, unit_norm_f32 ~0.99999998.
Off-serving (A-04 guard: chat.runtime never imports it). ADR-0245 status map +
plan doc updated.

[Verification]: smoke 176 passed; fast lane 11907 passed / 109 skipped (-n auto,
not quarantine/slow); 10 targeted serving-cast tests passed.
2026-07-17 19:43:37 -07:00
Shay
33bbfa0b06 docs(adr-0244-d4): correct Phase 3 SHA ref to f3702ad4 (post-amend) 2026-07-17 19:26:03 -07:00
Shay
f3702ad437 feat(adr-0244): Phase 3 — γ_id calibration (certified; live flag flip BLOCKED)
D4 Phase 3 (§2.4). Calibrates the wave-gate leakage bound γ_id via the
bracketed-local Fibonacci section search and emits a content-addressed tuning
certificate (evals/adr_0244_gamma_calibration/). Two results, kept separate:

1. The search certifies γ* = 0.2126624458513829 (cert 0079b5f2…) separating
   the geometric attack signal — in-subspace rotors admitted, axis→e4/e5
   tilt/boost attacks flagged (inversions excluded: ~0-leakage, handled by the
   orientation floor). Pinned as identity._WAVE_LEAKAGE_BOUND; the wave path is
   decoupled from alignment_threshold (legacy path + hedge bands keep it).

2. The same bound does NOT separate real live traffic. Measured on the engine,
   benign final_state.F versors do not preserve span(e1,e2,e3): leakage
   0.14–0.81 (mean 0.55), self-align to −0.52, 12/13 benign false-refused at
   γ*, best balanced error 0.346. The calibration certifies
   flag_flip_authorized=False → identity_wave_gate stays OFF.

Root cause: the shipped value axes (truthfulness=e1, coherence=e2,
reverence=e3) are nominal basis vectors, not dynamically-preserved eigenmodes;
the field evolution gives the identity subspace no dynamical anchoring. The fix
is the ADR-0246 induced-identity-action programme (preflight brief merged). The
wave gate is validated, correctly-off scaffolding — not a live gate. A slow
drift-guard test canaries any future engine change that starts preserving
identity.

Off-serving (evals/ + tests); flag-off byte-identity preserved. ADR §4a +
plan doc + memory updated with the finding.

[Verification]: smoke 176 passed; fast lane 11897 passed / 109 skipped (-n
auto, not quarantine/slow); 59 targeted gate/calibration tests passed.
2026-07-17 19:24:47 -07:00
Shay
074fe5278f Merge PR #63: ADR-0246 preflight brief onto completed D4 Phase 2
Lands docs/briefs/ADR-0246-induced-identity-action-and-path-integrity-preflight.md
(Shay 6e3ccd88, docs-only, +505) on top of main-with-full-Phase-2 (b440b92b).

The PR branched from c7e2b3b6 (pre-2c); this merge reconciles it with the
completed Phase 2 (2a 1c7ea26e / 2b c7e2b3b6 / 2c c0ff4720) so the post-D4
ADR-0246 planning baseline sits on the finished integrity floor. The brief
adds one new file under docs/briefs/ (no code, no ADR status flip, no
governance change) — verified read in full before merge; clean auto-merge
(no path overlap with Phase 2).

[Verification]: content verified (505-line docs-only planning brief, authored
by Shay, consistent with ADR-0244 §4a + D4 plan); merge adds only the brief
file; b440b92b already passed the full fast lane.
2026-07-17 17:31:15 -07:00
Shay
b440b92b39 docs(adr-0244-d4): Phase 2 COMPLETE (2c c0ff4720); dashboard → Phase 3
[Verification]: docs-only tracker update referencing the already-gated
2a/2b/2c landings (1c7ea26e / c7e2b3b6 / c0ff4720).
2026-07-17 17:22:33 -07:00
Shay
6e3ccd88cd docs(adr-0246): preflight brief — induced identity action + path integrity
Freeze the post-D4 planning baseline for the next identity ADR series:
lawful stabilizer H_id={I}, induced action A(F), d_orth/d_stab split,
lawful-only path composition with hard ledger breaks, typed residual
channels, admit-or-abstain only, and explicit non-goals (no geometric
C_id, no multi-port framework in this slice).

Implementation starts only after D4 Phase 6 (or explicit waiver). Does
not expand or interrupt the live ADR-0244 D4 arc.

[Verification]: Smoke suite passed locally (314s, 176 passed)
2026-07-17 17:19:37 -07:00
Shay
c7e2b3b68f feat(adr-0244): Phase 2b — wire the operator-preservation gate into serve (flag-gated)
Wires the ADR-0244 §2.2 wave gate into the live turn loop behind a new
opt-in flag, byte-identical when off, plus a normalization fix found in
integration.

core/config.py: RuntimeConfig.identity_wave_gate (bool = False). OFF by
default — the leakage threshold is provisional (reuses alignment_threshold)
until calibrated to gamma_id in Phase 3, and flag-off is byte-identical to
the pre-ADR-0244 advisory path.

chat/runtime.py (main chat() path, two flag-gated touches):
  - at the identity check, pass wave_field=result.final_state.F when the
    flag is on (so hedging + telemetry both use the wave score); None when
    off -> legacy scalar-L2 path.
  - after the safety/ethics verdicts exist, intersect their violated
    boundaries with the manifold's committed boundary_ids (supplement via
    dataclasses.replace) and fold a fail-closed geometric IdentityGateRefusal
    into the typed refusal surface (TYPED_REFUSAL_PREFIX). refusal_emitted is
    derived once, after the block, preserving the (surface is not None) <=>
    emitted invariant.

chat/telemetry.py: serialize_turn_event emits the wave-gate keys
(identity_wave_mode / _leakage_norm / _min_self_alignment /
_boundary_violations) only when identity_score.wave_mode_active — so the
wire format is byte-identical when the gate is off.

core/physics/identity_manifold.py — NORMALIZATION FIX (found in
integration): the live versor carries boost (e5) components, and a boost is
a unit versor (R R~ = 1) that does NOT preserve the Euclidean coefficient
norm, so ‖R a_i R~‖ > 1 and the un-normalized leakage/self-alignment ran
past their ranges (measured leakage 5.16, self_align -4.75 on a real turn).
axis_response now normalizes each measure by the rotated-axis magnitude:
leakage is a fraction in [0,1], self_align a signed cosine in [-1,1]. For a
norm-preserving spatial rotor the rotated axis is unit and normalization is
a no-op (Phase 1 results unchanged). §4a updated to match; new boost test
pins bounded measures.

tests/test_adr_0244_identity_gate_runtime.py (new): flag OFF -> legacy
score + no wave telemetry (byte-identical wire); flag ON -> wave gate active
on the live versor + wave telemetry present + bounded measures; flag-off
determinism. Seeds a short sequence to reach main-path (identity-checked)
turns (a fresh empty-vault runtime routes ungrounded inputs to disclosure).

[Verification]: 74 targeted (manifold+gate+runtime+legacy identity+
telemetry) passed; in-worktree smoke 176 passed; fast lane
(-m 'not quarantine and not slow' -n auto) 11883 passed, 109 skipped —
flag-off byte-identity confirmed across the whole suite.
2026-07-17 17:06:22 -07:00
Shay
3ea748b343 docs(adr-0244-d4): tracker — Phase 2a landed (1c7ea26e), 2b next
[Verification]: docs-only tracker update referencing the already-gated
1c7ea26e (Phase 2a) landing.
2026-07-17 16:39:48 -07:00
Shay
c8c147a4e9 docs(adr-0244-d4): mark Phase 1 done (3c3d2c29), dashboard -> Phase 2
[Verification]: docs-only tracker update referencing the already-gated
3c3d2c29 (Phase 1) landing.
2026-07-17 16:13:08 -07:00
Shay
459280e3f3 docs(adr-0244): amend §4a to operator-preservation (core-mechanism fix)
Discovered before implementing Phase 1: the live identity trajectory
final_state.F carries the invariant versor_condition(F) < 1e-6 — it is a
VERSOR (even-grade operator, grades 0/2/4, exactly zero grade-1 content).
§2.1/§2.2's literal 'project psi_traj onto the grade-1 value subspace' is
therefore VACUOUS on the real runtime object: P_id(F) = 0 identically,
flagging every trajectory — a fail-closed brick. Root cause: a versor is
an operator, not a state vector; projecting the operator into a subspace
of states is a category error.

Resolution (ratified by Joshua Shay 2026-07-17): measure whether the
versor PRESERVES the value subspace, via its action on the axes
F a_i F~ (sandwich). Two per-axis measures, both empirically verified
necessary and non-redundant:
  - subspace leakage = euclidean_norm(rot_i - P_I(rot_i)) — catches a
    versor tilting a value axis toward an alien dimension (e4/e5);
  - signed self-alignment = <a_i, rot_i>_0 — catches in-subspace
    inversion (e1 -> -e1: leakage 0 but self-align -1), the concrete
    realization of the ratified 'signed overlap, never abs()' decision.
Keeps the grade-1 pack axes unchanged (no pack migration) and sharpens
inalienability: identity is invariant UNDER transformation, not a frozen
state.

§4a rewritten to the operator-preservation spec (lift_axis, gram_matrix,
subspace_project, sandwich, euclidean_norm, axis_response); governance
annotation item 12 records the reframe + ratification; plan doc §3 Fact C
+ §5 Phase 1 + progress log updated.

[Verification]: docs-only ADR/plan amendment; provenance/ADR guard
(test_adr_0241_governance_p12.py) 6 passed — ADR-0244 Status line
confirmed still 'Proposed' (the item-12 ratification text is inside the
annotation/§4a, not a status flip). All acceptance numbers pre-verified
via in-tree numerical probes against algebra.cl41.
2026-07-17 15:55:58 -07:00
Shay
aeb75d9af2 docs(adr-0244-d4): mark Phase 0 done, dashboard points to Phase 1
[Verification]: docs-only tracker update, no executable surface;
references the already-gated ad37d03b landing.
2026-07-17 15:32:48 -07:00
Shay
ad37d03b19 docs(adr-0244,adr-0245): D4 Phase 0 — governance reconciliation
Reconciles ADR-0244 against its own D0 blockers and commits ADR-0245 as
a real companion ADR (previously a dangling reference in ADR-0244 §4).

ADR-0244 governance annotation expanded (11 items, all body text below
preserved verbatim for R&D provenance; annotation governs on conflict):
  1. Q_top proof (already landed) now explicitly drops the §2.2 egress
     ΔQ_top conjunct (it is a hollow, always-true discriminator).
  2. §4-vs-§2 contradiction RESOLVED — new §4a is the governing spec;
     §4 kept verbatim as the (contradictory) original R&D sketch.
  3. §2.1 axis construction was underspecified (packs ship dim-3
     directions, not 32-vectors) — resolved via a grade-1 lift at the
     e1/e2/e3 slots (algebra.cl41.basis_vector), not embed_point.
  4. §2.2 amended: signed overlap (never abs()'d — anti-alignment must
     stay distinguishable from orthogonality); leakage norm is the
     positive-definite Euclidean coefficient norm, not the indefinite
     Cl(4,1) inner product (which (+,+,+,+,-) permits to vanish for
     nonzero leakage).
  5. Inalienability reframed as 5 testable layers (algebraic / runtime
     / pipeline / operational / semantic) — only the first is a math
     guarantee.
  6. Paraphrase-invariance reworded as an empirical, measured property;
     Q_top conservation scoped to pure versors only (relax_to_ground
     can converge to non-versor superpositions — the ADR-0243 SD-A
     subtlety).
  7. boundary_ids activation (currently stored, never evaluated).
  8. Identity manifold is FROZEN — biography holonomy accumulates
     separately and never mutates the identity subspace.
  9-11. Filename correction (multimodal_lifecycle.py doesn't exist;
     real file is cognitive_lifecycle.py), ADR-0245 cross-link,
     theological citation labeled ESV + analogy disclaimer.

New §4a supersedes §4 with a typed, Gram/leakage-correct specification
(ManifoldConditioningError, IdentityGateRefusal, bounded/abstaining
C_id, isfinite + shape guards — no bare assert) for Phase 1/2 to build
against under TDD.

ADR-0245 committed Proposed, verbatim from the R&D export, with a
governance annotation mapping its 4 decisions + Sec 3 acceptance gate
against what the cohesion-directive arc already landed (Rust f32 GP,
_cached_eigh, digest hot-path all done; f64->f32 cast + Sec 3's
speedup/collision proofs open — tracked as D4 Phase 4/5).

Audit doc (adr-0244-cohesion-directive-audit-2026-07-17.md) wrinkles
1-2 and Q5 sequencing updated from 'pending'/'must reconcile' to
resolved, cross-referencing this landing.

[Verification]: in-worktree smoke gate 176 passed; provenance/ADR
governance pins (test_adr_0241_governance_p12.py,
test_adr_0242_topological_quarantine.py, test_third_door_cohesion.py)
30 passed — confirms ADR-0244 stays Proposed (no status flip) and no
existing ADR provenance guard was disturbed. Docs-only change, no
executable surface touched.
2026-07-17 15:32:09 -07:00
Shay
0f2b8d5e4f docs(adr-0244): D4 implementation plan + progress tracker (resume anchor)
Comprehensive phased plan for full ADR-0244 realization (D4) plus the
ADR-0245 companion: locked design decisions (Q_top dropped from egress,
grade-1 axis lift, signed overlap, Euclidean leakage norm, frozen
identity manifold, bounded/abstaining C_id), code-verified ground truth
(Fact A dim-3 axes, Fact B two field surfaces, boundary_ids dormant),
folded-in external-review considerations, and a per-phase progress
dashboard for seamless cross-session resume after rate-limit breaks.

[Verification]: docs-only (docs/handoff/), no executable surface; smoke
deferred to Phase 0 (first phase touching governance/ADR tests).
2026-07-17 15:17:05 -07:00
Shay
ee38c97617 feat(adr-0244): prove Q_top vacuity — D4 hollow-gate evidence + annotation upgrade
Turns the D0 "likely vacuous" annotation on ADR-0244 §2.3 into a re-runnable proof
that ΔQ_top = 0 is a hollow egress gate (the #19-pseudoscalar failure mode).

evals/adr_0244_qtop_vacuity/ — computes Q_top = <psi I5 ~psi>_0 on the real
Cl(4,1) algebra and finds: (1) Q_top = 0.000e+00 EXACTLY across every unit versor
(spatial rotors AND boosts through e5, and products) — I5 is central so
psi I5 ~psi = I5*(psi ~psi) = I5 for a unit versor, scalar part 0; (2) off the
versor manifold Q_top = -grade5(psi ~psi), nonzero only where the I-05 closure
residual already fires; (3) it is a conserved Spin(4,1) invariant but identically
0 on the valid manifold; (4) the decisive test — an aligned identity and an
adversarially-rotated one (a valid versor, overlap 0.963) both read Q_top = 0, so
ΔQ_top = 0 PASSES the attack the spectral-leakage/closure check actually catches.
Typed JSON artifact + CLI (exit 0 iff proven_vacuous).

tests/test_adr_0244_qtop_vacuity.py — pins each step + off-serving quarantine.

Docs: ADR-0244 §2.3 annotation upgraded "likely vacuous" -> "PROVEN vacuous —
retire from egress"; audit-doc Q4 marked RESOLVED with the evidence.

Verdict: do NOT wire ΔQ_top = 0 as an egress admit condition; keep Q_top, if at
all, as a closure-derived diagnostic. Closes the first of the two ADR-0244 D4
blockers with proof.

[Verification]: qtop eval 8 tests green; CLI proven_vacuous=true; smoke below.
2026-07-17 14:39:52 -07:00
Shay
12a9ca0b2a docs(cohesion): D0 governance — land ADR-0244, directive, and mandate audit
First step of the cohesion-directive arc (docs only; no code).

- docs/adr/ADR-0244-…md: committed Proposed, verbatim from the R&D export
  (matching the ADR-0241/2/3 landing convention), plus a clearly-marked
  governance annotation holding two items open for the D4 implementation plan:
  (1) §2.3 Q_top is likely vacuous — central I5 in odd Cl(4,1) collapses the
  charge on versor states (the #19 pseudoscalar failure mode); it must not be an
  egress gate without an empirical discriminating counterexample; (2) §4's
  conformed implementation contradicts §2.1-2.2 (per-axis resonance vs.
  Gram-projection/leakage-norm/ManifoldConditioningError), references a dangling
  ADR-0245, and uses a bare assert for the byte-order guard.
- docs/analysis/engineering_cohesion_refactoring_directive.md: the technical
  directive moved to its own canonical path, verbatim (content byte-identical).
- docs/analysis/adr-0244-cohesion-directive-audit-2026-07-17.md: the code-level
  audit of all 7 mandates vs. main@24078b11 — per-mandate verdicts, the six
  spec-level wrinkles, the amended mandate→work-item mapping, the missing sixth
  acceptance criterion (Mechanical-Sympathy gain), and the five decisions (Q1-Q5).

Notable finding: the default=str + 24-char-digest drift the directive flags was
replicated into Lane C (biography_wiring.py) AFTER the directive was written —
raising the priority of the D1 semantic-rigor batch.

[Verification]: docs-only; ADR governance provenance-guard green (unchanged).
2026-07-17 13:58:17 -07:00
Shay
97aa20f67a docs: ADR-0243 Status: Proposed -> Accepted — ratified by Joshua Shay 2026-07-17 2026-07-17 13:23:12 -07:00
Shay
dfb6084ce2 docs(adr-0243): Phase 5 D10 acceptance packet (status flip deferred to ruling)
Submits the ADR-0243 arc for Joshua's ruling: claims-vs-evidence, deviations
D-1..D-5, deferred items, and the arc gate results (Phase 4 fast lane 11808;
decisive falsifier wrong==0). Follows the ADR-0241/0242 packet convention.

The Proposed->Accepted flip is NOT made here: the anti-self-Accept guard
(test_adr_0241_governance_p12) requires a recorded human ruling with inline
provenance. Section 8 RULING RECORD is PENDING; the status flip is a separate
one-line governance commit carrying Joshua's ratification, made only after his
explicit ruling.

[Verification]: docs-only; ADR-0243 suite + provenance-guard green.
2026-07-17 13:08:09 -07:00
Shay
ff6c8b3f7b docs(adr-0243): fix Phase 3 brief pack references to the deleted Phase 2 branch
Phase 2 merged (#56) after the brief pack was written; feat/adr-0243-phase2-lifecycle
no longer exists. Lane B's base/worktree instructions pointed at it. All three
lanes now branch off forgejo/main directly, per the actual current state.

Orthogonal docs-only fix, direct push (no code/tests touched).
2026-07-17 06:57:23 -07:00
Shay
f79fec9e63 docs(adr-0243): Phase 3 lane brief pack (A/B/C) + correct stale readback-rules claim
Production-line brief pack for the three independent Phase 3 wiring lanes,
each grounded in fresh read-only research against the current worktree (not
assumed from the plan text):

- Lane A (discovery wiring): is_discovery_eligible + cross_band_discovery_gate
  -> DiscoveryCandidate via the contemplation runner's existing sink; live
  caller for propose_kappa_line_search so kappa_search_event fires. Flags a
  real open question (what feeds surprise_norm for a contemplation finding)
  rather than guessing.
- Lane B (sensorium corridor eval): first live consumer of the I-04 feed —
  real Audio/Vision compilers -> cognitive_lifecycle -> readback -> GoldTether,
  shaped like the adr_0242_v2_energy_compare fixed-replay template.
- Lane C (biography wiring): ADR-0240 harness PASS -> integrate_biography with
  I-01 closure asserts and provenance recording. Flags a genuine
  identity-substrate design question (mutation vs. proposal-only) for Shay
  rather than picking silently.

Corrected dependency DAG: only Lane B actually depends on Phase 2's
cognitive_lifecycle module landing. Lanes A and C touch zero Phase-2 code —
every symbol they wire already exists on forgejo/main — so they can start
immediately, in parallel with Phase 2's own review, rather than waiting.

Also fixes a stale claim this research caught: the plan's substrate table
(Sec 2) named packs/en/readback_rules.py as already-landed §2.3 readback
rules. That file was deleted under audit ratchet W-006; the live substitute
is generate/realizer.py:energy_modulated_surface. Corrected in place.

Per standing production-line-pattern + no-self-dispatch doctrine: brief pack
only, dispatch is Shay's call.

[Verification]: docs-only change, no code touched; no test suite affected.
2026-07-17 06:48:33 -07:00
Shay
c3b4d045f1 feat(adr-0243): flagship cognitive_lifecycle.py — ingress/relax/egress, Tier-2 off-serving
Implements ADR-0243 §2 honestly per the plan's deviations ledger, correcting
the §3 sketch's three pinned defects (SD-A/B/C):

- Ingress delegates superposition to sensorium_wave_feed, normalizes once at
  the owned construction boundary (D-3).
- Relaxation is the imaginary-time semigroup psi <- normalize(exp(-(H-lam0)*dt)*psi)
  (D-1) with a certified, never-assumed convergence certificate (D-2): exact
  ground energy, achieved Rayleigh energy, eigen-residual, spectral gap, and a
  psi_digest binding the certificate to the exact state it certifies.
- Two checkable problem domains: quadratic_well (convex target-decoding) and
  propositional (Cl(4,1) blade lattice = assignment lattice of <=5 atoms;
  diagonal penalty Hamiltonian; entailment via UNSAT(premises & !conclusion)
  scored against independent truth-table gold).
- Egress composes unit-amplitude-density + certificate-binding + versor
  closure (routes, does not admit, per the dual of SD-A) + ADR-0006 energy
  classes + E0/E1 crystallization policy. Cold states emit a
  CrystallizationProposal (epistemic_status pinned SPECULATIVE by the type;
  D-5/I-03) — never a vault write.
- Quarantined off-serving (A-04): lazy barrel export, banned in the
  transitive subprocess probe and the cohesion AST suite.

Adversarial verification (finder/verifier workflow; most verify agents lost
to a session limit, every surviving finding reproduced in-tree before acting)
surfaced and this closes two real defects beyond the plan text:

- egress_gate admitted any unit state paired with any converged certificate
  from an unrelated run, so CrystallizationProposal could package a foreign
  psi_digest next to an unrelated certificate_id as false provenance. Fixed
  by binding the certificate to its state (psi_digest) and refusing mismatches
  (certificate_state_mismatch).
- A state with a spectral gap below the requested tolerance could certify
  with ZERO ground-space overlap (energy window alone can't resolve it).
  Certification now also requires the excited weight (E-lam0)/gap <= tol
  (refusal spectral_gap_below_tolerance), and the degeneracy cluster is
  capped at the acceptance window so certificates report the honest
  rate-limiting gap instead of absorbing a hairline split.

38 tests (31 original + 7 hardening: certificate-binding must-reject,
gap-refusal + true-ground pair, dense-branch (eigh) refusals, iterate-collapse,
Hamiltonian/egress shape must-rejects, E2 hold route, hardcoded canonical
entailment verdicts independent of the gold function's code shape).

[Verification]: lifecycle+pins+cohesion+transitive 58 passed; in-worktree
smoke 176 passed (131s); fast lane 11750 passed, 108 skipped (574s, exit 0).
2026-07-17 06:19:33 -07:00