Commit graph

75 commits

Author SHA1 Message Date
Shay
222124a8cd fix(tests): align suite with persona-neutral strict-closure contract
Remove shelved identity/drive tests that existed to justify premature
persona wiring, and update remaining tests to match the current runtime
contract: empty vault triggers unknown_domain gate on first turn, versor_apply
always closes to unit versor, and null-cone preservation is deferred to an
explicit geometry API.

562 passed, 4 skipped, 0 failed.
2026-05-16 05:37:12 -07:00
Shay
fbb6570a7d
fix(chat): keep generic runtime persona-neutral
Keep the generic chat runtime neutral while base closure is being stabilized.

- replace PersonaMotor.from_identity_manifold(...) with PersonaMotor.identity() for the baseline ChatRuntime path
- leave identity/persona motivation for a later explicit IdentityProfile contract
- update the antipodal scalar transition test to match current closed-product semantics: B * reverse(A) yields closed transition -1

No GitHub CI/status checks were exposed for this PR.
2026-05-15 23:15:56 -07:00
Shay
7aa8626ec4
fix(algebra): make versor_apply close runtime field results
Remove the implicit null-vector bypass from the runtime-facing versor_apply closure boundary.

FieldState.F is treated throughout the runtime and cognitive pipeline as a unit versor field. Returning null-like raw sandwich results from versor_apply created a contract mismatch and allowed multi-turn closure drift to escape into session state.

- make _close_applied_versor always close runtime field results
- keep unitize-first semantics and construction-seed fallback
- add regression proving null-like sandwich output is closed for the runtime contract

Null-vector preservation should return later behind an explicit geometry API, not the generic runtime field propagation path.

No GitHub CI/status checks were exposed for this PR.
2026-05-15 23:12:26 -07:00
Shay
a6be96410c fix(session): CGA-only hemisphere consistency, remove forbidden Euclidean metric
_orient_result_to_anchor used np.dot (Euclidean dot product) alongside
cga_inner to decide hemisphere flips.  When CGA inner was positive
(correct hemisphere) but Euclidean was negative, the flip negated CGA
alignment — making correctly-oriented fields rank last in vault recall.

Changes:
- Move hemisphere check into finalize_turn so all paths (ChatRuntime,
  SessionContext.respond) get consistent protection.
- Use CGA inner product only, removing the forbidden Euclidean metric.
- Remove _orient_result_to_anchor (subsumed by finalize_turn).
- Remove SessionContext.arespond (dead code, no callers).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-15 21:51:16 -07:00
Shay
61c55e457d fix: harden session field invariants and eliminate hot-path inefficiencies
- Fix running_dialogue_blade grade explosion: replace outer_product
  accumulation (which pushed past grade-5 in Cl(4,1), silently zeroing
  the blade from turn 3 onward) with CGA-inner-oriented blade tracking
  that preserves grade-2 across arbitrary turn counts.

- Add versor_condition guard at session composition boundary: cross-turn
  field composition via versor_apply now fails closed (threshold 1e-2,
  matching algebra construction residue tolerance) instead of silently
  propagating degraded fields into vault and generation.

- Replace VaultStore list with deque(maxlen=max_entries): eliminates
  O(N) list.pop(0) on every bounded eviction; deque auto-evicts in O(1).

- Replace O(N) vocab scan in generate/stream.py stop_nodes construction
  with O(1) try/except index lookup per stop token.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-15 21:37:49 -07:00
Shay
be6b278dc4
fix(algebra): enforce transition rotor invariants
Replace synthetic word-transition rotor construction with the closed product B * reverse(A).

- preserve make_rotor_from_angle compatibility
- fail closed on non-closed transition candidates instead of using construction fallback behavior
- validate transition operator condition
- add targeted transition rotor regression tests

No GitHub CI/status checks were exposed for this PR.
2026-05-15 21:13:14 -07:00
Shay
c9a644e496
feat(dialogue-fluency): wire multi-turn dialogue runtime
Adds referent tracking, session graph traversal, unknown-domain gating, correction propagation, compositional surface assembly, and regression coverage.

Follow-up fixes included before merge:
- split probe/commit/finalize turn flow so unknown-domain checks run before current-query vault writes
- record real input tokens and input versors for sync and async session paths
- return true graph distances from backward walks and consume them in correction decay
- synchronize corrected graph outputs into vault-backed recall and live referent state
- regenerate correction responses from corrected context rather than correction text
- keep coreference pronouns lowercase in question bodies
- centralize elaboration-string construction to avoid plan/surface drift
- add targeted dialogue fluency regression tests
2026-05-15 21:05:59 -07:00
Shay
eb30c75810 feat: Full Proof — surface realizer join, Rust diffusion parity, benchmark harness
Surface realizer join: pulse output_versor → vault recall → ground_graph fills
<pending> obj slots with recalled words → realize_semantic produces deterministic
sentences. PulseResult replaces bare word list. Every intent type surfaces.

Rust backend parity: unitize_f32 (exponential-map with boost/rotation blade
distinction) and graph_diffusion_step now in core-rs. Python dispatches through
algebra.backend, falls back transparently. 37x speedup on 200-step diffusion.

Benchmark harness (core bench): determinism (100% trace stability), latency
(~150ms median), backend speedup, versor closure audit (0 violations across all
intermediate states), convergence proof (41/45 exact, 4 bounded oscillation),
realizer coverage (8/8 intent types).

Proof property tests (31 tests): Rust/Python parity, pulse determinism across
prompts, V3 convergence for 10+ topologies, coupled V4 output validity, realizer
coverage per intent, versor closure at every intermediate step.

CLI: core pulse, core bench, core test --suite pulse, core test --suite proof.
Fix test_correction_pulls_toward_target (diffuse first, then correct).
2026-05-15 17:39:14 -07:00
Shay
29f573d176 feat(threshold-2): ConstraintCorrectionOperator — non-trivial dual-correction
Implements the coupled forward-correction loop that separates CORE from
a nearest-neighbour lookup engine:

  per iteration:
    state, Δ_fwd  = diffusion_op.forward(state)        # spread context
    state, Δ_corr = correction_op.adjoint_pass(state)  # enforce intent
    converged when both Δ_fwd < ε and Δ_corr < ε

field/operators.py:
- Add ConstraintCorrectionOperator(target_versor, correction_rate, node_index)
- adjoint_pass() builds an incremental correction rotor from the current
  output-node versor toward the intent target using the exponential map
  (same _unitize_f32 path, same boost/rotation blade classification).
  This is a non-self-adjoint operator: it has a preferred direction.
- forward() is identity (correction acts only on the output node via adjoint_pass).
- The target is the prompt centroid versor — same geometry that seeds the
  output node, so the correction restores coherence broken by diffusion.

scripts/run_pulse.py (V4):
- Build target_versor from prompt centroid before the loop (exposed from
  _build_manifold as a second return value alongside state + labels).
- Instantiate GraphDiffusionOperator + ConstraintCorrectionOperator.
- Coupled convergence: loop until both Δ_fwd < ε AND Δ_corr < ε.
- Print both deltas each step for observability.
- --correction-rate flag (default 0.3) to tune correction strength.
- --no-correction flag to reproduce V3 pure-diffusion behaviour.

tests/test_pulse_integration.py:
- test_correction_pulls_toward_target: verifies output node moves closer
  to target versor under correction than without it.
- test_coupled_loop_converges: full V4 pulse with correction converges.
- test_correction_rate_zero_is_identity: rate=0 leaves the field unchanged.
- test_different_inputs_produce_different_correction_targets: correction
  targets differ for semantically distinct inputs.
2026-05-15 17:10:13 -07:00
Shay
c9dfad3017 feat: convergent graph diffusion with exponential-map versor unitization
Replace the divergent rotation-based diffusion operator with a linear
blend + exponential-map re-unitization approach that converges in ~28
steps while maintaining vc < 1e-6.

Key changes:
- GraphDiffusionOperator now averages neighbors in multivector space and
  re-projects via per-plane exponentials (cos/sin for rotations, cosh/sinh
  for boosts in Cl(4,1))
- run_pulse V3: per-token graph topology with input-driven output node,
  recall via VocabManifold.nearest(), --no-glove flag for compiled pack
- Tests updated for V3 API

Different inputs now produce different recall rankings from the compiled
en_core_cognition_v1 vocabulary, completing Threshold 1 (Semantic Encoding).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-15 17:02:47 -07:00
Shay
b61e79353a feat: manifold field topology, graph diffusion operator, vertical pulse
Add ManifoldState (N,32) versor field over graph edges, GraphDiffusionOperator
with damped convergence via construction_seed_versor closure, deterministic
hash-to-versor stub, and run_pulse.py end-to-end script proving injection →
propagation → vault recall → token output. 24 new tests, zero regressions
on architectural invariants.
2026-05-15 16:02:48 -07:00
Shay
523c072818 feat: vault recall index, Rust versor parity, cognitive pack expansion
Phase 3 — vault exact recall index:
- Replace O(N) np.array_equal scan with hash-based exact-match index
- Add optional max_entries with deterministic FIFO eviction
- Index rebuilds on reproject for consistency

Phase 4 — Rust versor_apply parity:
- Fix CGA metric signature (+,+,+,+,-) and blade ordering to match Python
- Implement versor_apply_closed with null-vector preservation, f64 unitize,
  and construction seed fallback matching Python closure semantics
- Gate Rust dispatch behind CORE_BACKEND=rust; Python remains default
- Add f64 geometric product for closure-path precision

Phase 5 — cognitive quality pack expansion:
- Expand lexicon from 55 to 70 entries (evidence, inference, procedure,
  verification, distinction, relation, thought, understanding, judgment,
  principle, order, connectives)
- Improve semantic templates for cause, procedure, comparison, recall,
  verification intents
- Expand eval cases from 20 to 45 across all categories

Validation: 491 tests pass, 45 eval cases at 100% all metrics.
2026-05-15 15:34:39 -07:00
Shay
cc46dca87a
Cache OOV morphology grounding structures
- cache morphology index per vocab identity for OOV grounding
- cache decomposition results per vocab/token with bounded storage
- preserve OOV semantics, audit records, final closure checks, and transient isolation
- add focused tests for determinism, audit preservation, transient isolation, closure, and cache reuse
2026-05-15 11:53:46 -07:00
Shay
f82f4d36de
Harden pack validator trust boundary
- reject unsafe pack IDs, path traversal, absolute paths, and separators
- require --allow-arbitrary-code for dynamic validator execution
- add --dry-run validation that does not import or execute validators
- preserve JSON/report behavior with explicit trust boundary
- add focused CLI security tests
2026-05-15 11:50:15 -07:00
Shay
40cabdec09
Speed up validation lanes and pack loading
- add core test --suite fast for lightweight iteration validation
- cache parsed pack entries and compiled/mounted language packs
- return defensive manifold/list copies so transient mutations cannot leak through caches
- add CLI fast-suite coverage and pack cache isolation tests
- preserve exact recall, backend dispatch, and runtime semantics
2026-05-15 08:26:11 -07:00
Shay
15ed2cee89
Tighten hot-path backend consistency
- route SessionContext anchor CGA through algebra.backend
- move aspect-weight carry into FieldEnergyOperator.compute
- remove duplicated propagate_step threshold patch and per-step imports
- add carry_aspect_weight tests for parity, fallback, and propagation preservation
- preserve normalization, propagation, vault, Rust dispatch, and energy cadence semantics
2026-05-15 08:14:38 -07:00
Shay
366f7a08c4
Add cognitive eval harness and calibration replay (#30)
* feat: add cognitive eval harness with CLI integration

20 eval cases across 8 categories (definition, comparison, cause,
procedure, recall, correction, verification, unknown). Metrics:
intent accuracy, term capture, surface groundedness, versor closure,
trace determinism. CLI: `core eval cognition [--json] [--report PATH]`.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: add operator calibration replay with deterministic grid search

Bounded parameter tuning via eval replay evidence. Grid search over
salience_top_k and inhibition_threshold with invariant regression
guard (versor closure must not regress). Frozen CalibrationParams,
before/after metrics, no pack or identity mutation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-15 07:41:36 -07:00
Shay
a7febd48ef
Integrate semantic realizer into cognition pipeline
- add intent-aware semantic templates for seed-pack relation predicates
- add semantic realization path for ArticulationTarget outputs
- wire semantic realization into CognitiveTurnPipeline results without changing ChatRuntime.chat
- expand cognition CLI suite coverage for semantic realizer integration
- add focused tests for deterministic semantic surfaces and response contract stability
2026-05-15 07:08:37 -07:00
Shay
b4ecf67e35
Fix CLI test suite pytest flags
- allow pytest flags after core test --suite without requiring separator
- preserve strict unknown-argument rejection for non-test commands
- add regression coverage for core test --suite packs -q
2026-05-15 06:25:37 -07:00
Shay
3d0b632e3b
Add CLI curated test suites
- add core test --suite aliases for smoke, runtime, cognition, teaching, packs, algebra, and full lanes
- preserve direct pytest passthrough through core test -- ...
- add core test --list-suites
- add focused CLI tests for suite listing, suite expansion, and passthrough
2026-05-15 06:21:21 -07:00
Shay
a6fd31e4bb
Add core cognition semantic seed pack
- add en_core_cognition_v1 deterministic seed lexicon
- mount the pack after en_minimal_v1 in default runtime config
- add pack smoke tests for loadability, required concepts, runtime mounting, prompt compatibility, and deterministic ordering
2026-05-15 06:16:40 -07:00
Shay
2b756a6044 feat: wire teaching loop into cognitive pipeline
- Add teaching_candidate, reviewed_teaching_example, pack_mutation_proposal fields to CognitiveTurnResult
- Extend trace_hash to include teaching_review_hash and teaching_proposal_id for deterministic audit trail
- Integrate correction capture → review → store pipeline into CognitiveTurnPipeline.run()
- Track prior turn surface and number for correction binding
- Emit PackMutationProposal without applying (external approval required)
- Add 5 integration tests: capture, identity rejection, proposal-only, trace inclusion, non-correction

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-14 20:46:50 -07:00
Shay
97971bd636 feat: add reviewed teaching loop for controlled correction learning
Introduces teaching/ module with three-stage correction pipeline:

1. correction.py — extracts CorrectionCandidate from correction intents,
   binding correction text to the prior turn it references
2. review.py — validates candidates: rejects identity overrides (17
   marker patterns) and empty corrections; produces ReviewedTeachingExample
   with deterministic SHA-256 review hash
3. store.py — bounded FIFO store for accepted examples; emits
   PackMutationProposal objects instead of mutating the vocab manifold
   directly; retrievable by subject

Design invariants:
- Identity override attempts are rejected at the review gate
- Pack mutations are proposal-only (applied=False by default)
- All traces are deterministic: same input → same candidate_id and review_hash

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-14 20:32:28 -07:00
Shay
364e1fdd34
fix: use rotors instead of reflectors in session coherence test (#22)
_farther_unrelated searched for grade-1 reflectors whose cga_inner
score was below the prompt score. Field states are even-grade
(grade 0+2+4), so cga_inner with a grade-1 reflector is always zero
— making the search impossible when prompt_score is negative.

Replaced with _random_rotor (product of two reflectors) which lives
in the same even-grade subspace and produces nonzero inner products.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-14 20:24:25 -07:00
Shay
58a06124bf
Add articulation realizer v2
- add deterministic ArticulationTarget realizer
- add rhetorical move templates and predicate humanization
- handle definition, comparison, correction, unknown, and empty targets
- keep runtime ChatResponse path unchanged
- add focused realizer tests
2026-05-14 20:14:50 -07:00
Shay
c68b0734a2
Wire intent graph into cognitive pipeline
- add intent, proposition graph, and articulation target to CognitiveTurnResult
- compute classify_intent -> graph_from_intent -> plan_articulation in CognitiveTurnPipeline
- include intent_tag in deterministic trace hash payload
- add pipeline tests for definition/comparison graph capture, articulation target exposure, trace hash changes, and ChatResponse contract stability
2026-05-14 20:05:00 -07:00
Shay
8dcc26581a feat: add intent-proposition graph comprehension layer
Implements the dialogue understanding pipeline:
  prompt -> dialogue intent -> proposition graph -> articulation target

New modules:
  - generate/intent.py: rule-based classifier (7 intent tags + UNKNOWN)
  - generate/graph_planner.py: immutable PropositionGraph DAG, topological
    walk to ArticulationTarget with rhetorical moves

Tests cover definition, cause, comparison, correction with prior-turn
linking, and deterministic serialization.
2026-05-14 19:52:57 -07:00
Shay
8ed6793a03 fix: use raw string for deprecated_call match pattern in test_identity_gate
The backslash escapes in the regex match pattern were plain string
escapes, not regex escapes. Add r-prefix to fix SyntaxWarning.
2026-05-14 19:52:47 -07:00
Shay
92be98fbdf
feat(cognition): add CognitiveTurnPipeline spine (#19) 2026-05-14 19:35:03 -07:00
Shay
7401eae7ae
Clean up runtime contracts before cognitive pipeline
- document ChatResponse, TurnEvent, identity, memory/teaching, and test-organization contracts
- add local trace and build metadata ignore rules
- warn on deprecated IdentityCheck constructor injection
- update identity gate tests to canonical ValueAxis and ReasoningTrajectory usage
- keep cleanup scoped ahead of cognitive pipeline work
2026-05-14 18:47:59 -07:00
Shay
dcb0b34ccc
Fix full-suite regressions after chat telemetry merge
- restore articulation surface as ChatResponse.surface while retaining walk_surface telemetry
- calibrate moderate E2 energy boundary
- reclose generated field states after propagation and recall
- restore pytest-safe REPL parsing and field_walk helper
- anchor proposition predicate selection to prompt field
- make vault exact self-recall deterministic
- align chat telemetry regression with restored surface contract
2026-05-14 18:23:31 -07:00
Shay
216a789808
Fix identity gating and vault telemetry
- calibrate identity threshold and per-axis telemetry
- keep walk surfaces visible when identity flags are telemetry
- report real vault recall hits through generation/runtime logs
- record selected surface in TurnEvent
- fix async chat persona reference
- add regression coverage for chat telemetry
2026-05-14 15:44:01 -07:00
Shay
4852fcc704
test(chat): achat() and arespond() smoke tests — surface, fields, OOV grace, structural determinism 2026-05-14 14:31:49 -07:00
Shay
9f2b2acbf0
test(identity): IdentityCheck gate wiring, IdentityScore invariants, TurnEvent field coverage 2026-05-14 14:30:56 -07:00
Shay
1343171fab
test(surface): full unit test suite for SentenceAssembler — roles, guard, elaboration, languages, determinism 2026-05-14 14:29:46 -07:00
Shay
541b1646b2 Fix test suite errors across core physics and generation
Key issues fixed:
- `CORE_BACKEND=numpy` was ignored, so tests mixed Python CGA embedding with Rust metric behavior.
- Dense construction seeds were being rejected by strict `unitize_versor()`, while sparse dirty inputs still needed to fail closed.
- Holonomy needed a construction-boundary path for raw/dense vocab fixtures and rare null final accumulators.
- Proposition storage polluted vault recall by storing the live field instead of the proposition’s subject versor.
- Dialogue qualitative frames rendered the same surface as assertive copular frames.
- Repeated session prompts could collapse into the same deterministic response path.
- Two proof fixtures were stale: one hand-built a non-null “null” vector, and one alignment proof omitted the English “with” anchor used by the resonance proof.

Verification:
`CORE_BACKEND=numpy CORE_STRICT_MLX_ON_APPLE=0 uv run core test -- -q`
Result: `277 passed in 59.52s`
2026-05-14 13:02:32 -07:00
Shay
47975dbcc7 ADR-0006: wire energy recomputation into propagate_step, add test_energy.py, mark ADR Implemented 2026-05-14 12:39:49 -07:00
Shay
9723941a38
Fail closed on invalid versor construction
Make versor construction fail closed instead of synthesizing hash-derived fallback rotors.

- remove pseudo-random construction fallback from unitize_versor
- add signed residual helper for +1 field states vs ±1 manifold entries
- validate vocab manifold entries with full residuals
- document antipodal transition rotor failure contract
- add focused invariant tests for versor closure and manifold validation
2026-05-14 10:55:11 -07:00
Shay
aadaf11612
Add ADR-0008 salience attention
Add salience and attention operators, wire salience-gated candidate selection into generation, expose vault/salience trace telemetry, and add tests proving non-placeholder salience behavior.
2026-05-13 22:40:36 -07:00
Shay
df9ced7104
Activate and verify Rust backend
Add Rust backend CLI controls, fix core-rs build/test configuration, align Rust Cl(4,1)/CGA conventions with Python, and validate core_rs activation.
2026-05-13 22:23:48 -07:00
Shay
0dd22bb4dd
Add ADR-0009 articulation planner
Add geometry-backed ArticulationPlan and realize(), wire articulation into ChatRuntime and trace output, expose proposition relation_norm, and add articulation/runtime/CLI tests.
2026-05-13 21:39:25 -07:00
Shay
30757ccc63
Add runtime output-language policy
Add RuntimeConfig with English default output policy, wire output language through runtime/frame selection/generation/CLI, preserve language metadata in mounted manifolds, and add runtime/CLI policy tests.
2026-05-13 21:29:43 -07:00
Shay
09c3664773
Fix CLI help/runtime imports and add doctor command (#4)
* Make core CLI help robust and intuitive

* Package runtime support modules for core CLI

* Add CLI help and doctor tests

* Fix CLI trace help and pack listing

* Export language pack listing helper

* Bootstrap repo root for console runtime imports

* Align trace formatter with Proposition schema

* Cover real trace payload formatting
2026-05-13 21:15:51 -07:00
Shay
454b7d9f9e Thread vault recall through generation 2026-05-13 20:50:31 -07:00
Shay
abf7398ca6 Bridge chat OOV grounding 2026-05-13 20:47:28 -07:00
Shay
0780ca8166 Add live chat runtime 2026-05-13 20:40:56 -07:00
Shay
9ba6abfa3e Ground unknown tokens in ingest 2026-05-13 20:33:20 -07:00
Shay
2b78cd1179 Add dialogue frame selection 2026-05-13 20:19:21 -07:00
Shay
3a52cf3517 Add proposition generation 2026-05-13 20:08:49 -07:00
Shay
ed04fc5b15 Add session coherence across turns 2026-05-13 19:59:43 -07:00