Retire legacy "decrease to N/M of" prose regex from problem_frame_contracts.
Geometric dilation now binds from ProblemFrame scale role (KernelFacts
GroundedScalar Fraction) — post-CGA/ProblemFrame pivot realization.
The post-CGA / ProblemFrame pivot comes to fruition: geometric dilation for
fraction_decrease is built from the bound scale role's GroundedScalar
(exact Fraction from kernel slash_fraction / pack numerics), not from a
local "decrease to N/M of" regex on evidence spans.
- Remove _build_fraction_decrease_payload_and_bind (legacy overfitting path)
- Add _fraction_decrease_scale_binding + _versor_binding_from_scale_value
- assess_fraction_decrease attaches VersorBindings when runnable
- assess_geometric_proposals uses frame scale only for fraction_decrease
- compose fallback prefers obligation-complete contracts with bindings
- Guard test: contracts source must not reintroduce the prose regex
Invariants: construction-boundary CGA only; versor_condition < 1e-6;
no new derivation-organ prose parser.
- anti_unifier: remove arbitrary root fallback when no agent_node_id (only apply root-form when nid known; primary pipeline path unaffected)
- depth_canonical: filter build_node_depths to he/grc (or nodes with root) so English nodes no longer pollute node_depths with language-only entries
Tests re-run green. Matches review recommendations for the 3-lang depth feature.
- Fixes skeptic gaps on empty fields in some smokes and fixture mismatch.
- Targeted tests green post-fix.
- Fresh captures have required non-empty data + documented skips.
Addresses MEDIUM from code-review: eliminates duplication risk between GraphNode method and pure canonical func.
Tests (graph_anti / node_depths) remain green.
- root_normalize + depths in anti_unifier/derive/recognize for AC1
- default enrichment no flag for AC2
- depth to pass_manager + assess for AC3
- graph_anti_unify helper for AC4
- direct tests + verif per plan
Aligned with exact recall, immutability, cognitive spine path.
- Add LexicalResolution dataclass + resolve_entry() in chat/pack_resolver.py
that returns language, root, morphology_id, gloss, semantic_domains from
he/grc/en packs (lru-cached, first-match, full depth support).
- Extend GraphNode (generate/graph_planner.py) with optional language/root/
morphology_id fields (defaults preserve all call sites). Update as_dict()
to include them conditionally. ground_graph() now propagates depth.
- Generalize enrichment in core/cognition/pipeline.py:
- Per-subject resolution map using depth packs.
- Enrich all matching nodes before ground (subject→node map).
- Pass depth alongside recalled_words to ground_graph().
- Consume depth on articulation side:
- realize_semantic() and render_semantic() now accept/use language+root
for etymological/Logos framing on Hebrew/Greek nodes (e.g. "אמת (Hebrew
root: א-מ-ן) is defined as..."). English unchanged.
- Enrich oov_geometric_context with node_depths for future geometric
anti-unification using roots.
- Extend recognition/connector.py to forward depth from EpistemicNode
paths into GraphNode.
- Add full Hebrew turn test under realizer_grounded_authority flag.
- Update related tests (semantic realizer, OOV context, surface resolution).
- Cleaned legacy type() hack immediately on discovery (hard-stop rule).
All targeted tests green (52+ in slices), broad relevant suite 581 passed.
Invariants preserved: versor only at owned boundaries, exact recall,
immutable updates, no new legacy parsers. 3 pillars upheld.
Work continues tomorrow from this checkpoint.
* chore(kernel): tighten construction_affordances catalog invariants
- Delete stale make_proposal (deferred from PR #919; no live callers remain)
- Derive _PROPOSAL_FIRST_FAMILIES from _CATALOG keys to eliminate hidden
sync obligation (was a manual restatement of all four catalog entries)
- Introduce _SERVING_AUTHORIZED_FAMILIES frozenset so the serving-allowed
exemption in ConstructionFamily and ConstructionProposal __post_init__
consults one central authority instead of two string-literal comparisons
- Pre-compute _SORTED_FAMILIES at module load so all_diagnostic_families()
returns a constant rather than re-sorting on every call
- Remove _VALID_STATUS ClassVar from ConstructionProposal; the field is
already typed Literal["proposed"] and the indirection adds no safety
No behavior change to serving, assessment, or proposal creation paths.
ADR-0236: small load-bearing PR, single-file, invariants as code.
* refactor(contemplation): unify organ pipelines in pass_manager
- Introduce OrganPipeline descriptor (organ, reader, solver, reason_adapter)
so every routed solve path shares one _solve_and_verify implementation.
Adding a new organ is now a single OrganPipeline(...) declaration.
- Extract _maybe_ask helper that collapses the triply-duplicated
family_by_name / assess_from_family / exercise_ask inline block.
- Add _result() helper that appends the terminal Finding and constructs
ContemplationResult in one call, enforcing terminal-is-last-finding
by construction across every return site.
- Replace assert not isinstance(problem, Refusal) with
InternalContemplationError so the routing invariant is enforceable
under python -O and surfaces a named, debuggable exception.
No behavior change: all Terminal states, Finding sequences, family
resolution, CMB-over-R3 precedence, boundary-first ordering, and
ask/proposal emission logic are preserved exactly.
Extracts the reasoning protocol demonstrated in the contemplation
refactor session into a canonical, reusable guide in AGENTS.md.
- New section: Reasoning and Problem-Solving Discipline (7 steps)
- Covers: read-first, shape-finding, leverage ranking, precise
enumeration, claims-grounded proof, cognitive model connection,
and commit discipline
- Documents the failure modes each step prevents
- CLAUDE.md + GEMINI.md: add pointer to the new protocol section
* fix: final cleanups for CGA substrate migration PR
- Update UI test fixtures to packs/data paths
- Clean CLAUDE.md/GEMINI.md to minimal per AGENTS.md
- Refactor fraction geometric construction into dedicated helper in problem_frame_contracts.py
- No TODOs left in code; notes in PR description
This completes the mechanical readiness for the CGA substrate + registry consolidation work.
* docs: include PR description for review
* chore: enforce forgejo tooling in AGENTS.md
* docs: update bootstrap skill and add git-forgejo config doc per new rules
* docs: remove deprecated git-forgejo wrapper docs
* chore: ignore local .mcp.json configuration file
* fix(ui): remove unsupported assessment.bindings usage to fix TS2339/TS7006 in constructionEvidencePanelModel
Proves topological cost neutrality across identity packs: the Cl(4,1)
versor sandwich product (F <- M * F * ~M) compiled into a single MLX
Metal kernel incurs equal VRAM and latency regardless of whether the
PersonaMotor encodes precision_first vs generosity_first character.
The periodic mx.eval() boundary at every 50th step mirrors the async
token-yielding backpressure of ChatRuntime and confirms that the lazy
MLX computation graph is flushed safely, keeping Active VRAM Delta ~0.
Correctness notes:
- PersonaMotor.apply() is a NumPy function (versor_apply from
algebra.versor). The MLX compiled_field_step wraps the sandwich
arithmetic in pure MLX, structurally mirroring what versor_apply does
so that the Metal kernel fusion path is exercised without re-coupling
this benchmark to the NumPy implementation.
- IdentityManifold has no load_pack() classmethod; identity packs are
constructed directly from ValueAxis instances as the dataclass defines.
- MLX is a soft/optional dependency following the apple_uma_mlx_exact_recall
convention: imported lazily, skipped gracefully when unavailable.
This change removes duplicate provider-specific rules across CLAUDE/GPT55/GROK files and replaces them with thin, provider-neutral shims that point back to the canonical AGENTS.md for all architectural invariants, PR discipline, and trust boundaries.