Audit-only dossier: current-state matrices, dual pack systems, holonomy limits, no-go list, and recommended next branch feat/observed-he-morph-constraint-v0. Cross-link cartography and ablation dossiers; no pack expansion or ablation fixture changes.
8.2 KiB
Relational Operator Ablation — Cartography Ledger & Go/No-Go
Date: 2026-07-19
Branch: feat/deterministic-relational-operator-ablation
Worktree: ../core-relational-operator-ablation
Authority commit: d8d62b8e (main tip at branch creation)
Status: Evidence ledger for Phase 1–2; implementation of the narrow GO slice is companion code under generate/relational_operator_ablation.py and evals/relational_operator_ablation/.
Related: HE/GRC broader capability is not authorized by this ledger. See docs/analysis/hebrew-koine-greek-logos-pack-capability-roadmap-2026-07-19.md (verdict: READY ONLY FOR PREREQUISITE WIRING OR MIGRATION).
1. Executive decision (closed)
Verdict for this work product: IMPLEMENTED AND MEASURED (narrow slice only).
| Scope | Decision |
|---|---|
| Full hypothesis: ancient morphology automatically improves GSM8K arithmetic | NO-GO (scientific precondition: no valid English→depth mapping; anti-circularity) |
| Narrow fraction_decrease relational-operator ablation | GO — family already LIVE with ProblemFrame + VersorBinding + A2k |
| Depth as executable math contribution on English word problems | NO-GO for implementation of new mapping — metadata-only control proves inert |
Relation family chosen from live evidence: proportional_change.decrease_to_fraction / organ fraction_decrease
(generate/construction_affordances.py _SERVING_AUTHORIZED_FAMILIES; generate/derivation/fraction_decrease.py; Gate A2k in generate/math_candidate_graph.py).
Decision criteria checklist
| Criterion | Pass/Fail | Evidence |
|---|---|---|
| Canonical relation seam exists | Pass | BoundRelation(relation_type="decrease_to_fraction"), roles via problem_frame_bound_relations |
| Deterministic reconstructable operator | Pass | VersorBinding + CGA dilation; same text → same answer |
| Correction/readback or native integrity | Pass (native) | Self-verify + span provenance + versor_condition < 1e-6; no fabricated dual-adjoint |
| Testable eval lane | Pass | Sealed evals/relational_operator_ablation/v1 + existing train_sample organ tests |
| Baseline vs operator vs depth vs metadata-only | Pass | Ablation conditions in harness |
| Fail-closed | Pass | Missing/ambiguous/hazard → refuse |
| Narrow non-claim scope | Pass | No full GSM8K claim; no EN→HE/GRC translation |
2. Live-path maps
A. Text/chat — LIVE (not math serving)
text → CognitiveTurnPipeline.run (core/cognition/pipeline.py)
→ tokenize / resolve_token_depths (chat/pack_resolver.py)
→ recognize (recognition/anti_unifier.py; root-canonical for he/grc)
→ ChatRuntime.chat (chat/runtime.py)
→ ingest.gate → FieldState
→ PropositionGraph (generate/graph_planner.py)
→ realizer / gates / refusal
→ CognitiveTurnResult.node_depths
contract_assessment=None at resolve_surface — ProblemFrame DISCONNECTED from chat spine.
B. Language packs — dual layer
| Layer | Path | Status |
|---|---|---|
| Source ADR-0005 | packs/{en,he,grc,el}/ status=draft, gates false |
DRAFT / DISCONNECTED from compiler |
| Compiled | packs/data/* → packs.compiler.load_pack → _apply_morphology |
LIVE |
| Depth IDs | DEPTH_PACK_IDS = he_core_cognition_v1, he_logos_micro_v1, grc_logos_* |
LIVE |
C. Problem-frame / math
text → build_problem_frame (generate/problem_frame_builder.py) [DIAGNOSTIC IR + A2k input]
→ proposals / BoundRelation / BoundQuestionTarget
→ assess_fraction_decrease / assess_geometric_proposals
→ VersorBinding dilation
→ resolve_promotable_fraction_decrease (generate/derivation/fraction_decrease.py)
→ answer [LIVE Gate A2k]
parse_and_solve (generate/math_candidate_graph.py) [LIVE GSM8K serving orchestrator]
| Family | serving_allowed | Status |
|---|---|---|
| fraction_decrease | True | LIVE A2k |
| percent_partition | False catalog; live prose A2l | LIVE but DISCONNECTED from frame |
| quantity_entity | False | DIAGNOSTIC |
| unary_delta | False | DIAGNOSTIC (no derivation organ) |
D. Evaluation
| Split | N | correct / wrong / refused | Scorer |
|---|---|---|---|
| Sealed GSM8K test (recorded) | 1319 | 0 / 0 / 1319 | operator-only holdout |
| train_sample report.json | 50 | 30 / 0 / 20 | _score_one_candidate_graph |
| holdout_dev report.json | 500 | 5 / 0 / 495 | same |
| CORE public synthetic | 150 | 150 / 0 / 0 | classic _score_one |
Note: Order is always correct / wrong / refused. Prior prose that wrote 30/20/0 swapped wrong/refused.
3. Design truth matrix
| Claim | Spec | Implementation | Runtime | Tests | Status |
|---|---|---|---|---|---|
| Hebrew root morphology | ADR-0015 | MorphologyEntry.root; _apply_morphology |
LIVE manifold + resolver | test_morphology_registry, holonomy |
LIVE (sparse) |
| Hebrew binyan | ADR-0005 | Inflection tag only | geometric tag | sparse data | Partial |
| Greek case/aspect/voice | ADR-0015 | Compiled inflection tags | LIVE tags | morphology_registry | Partial |
| Anchor lens | pack inventory | packs/anchor_lens/ |
LIVE overlay | inventory | LIVE |
| PropGraph / depth | 3lang plan | depth_canonical, pipeline |
LIVE he/grc input | test_3lang_depth_capability |
LIVE spine |
| Depth → math answer | — | enrich_assessments_with_depth explanation only |
decoration | same | Inert on math |
| Canonical math roles | kernel substrate | BoundRelation roles | A2k + diagnostic | problem_frame tests | LIVE fraction |
| VersorBinding | CGA construction boundary | dilation payload | LIVE A2k | fraction + 3lang tests | LIVE |
| Readback / integrity | organ self-verify | spans + verified derivation | LIVE | fraction_decrease | Partial (native) |
| GSM8K eval | ADR-0119+ | train_sample/holdout/sealed | LIVE open | runners | LIVE |
| serving_allowed all False | prior claim | one True family | — | construction_affordances | Contradicted |
| FGL | prior claim | — | — | — | ABSENT |
| ADR-0248 as Logos | prior claim | integrity handoffs | observe-only | ring3 | Miscited |
| ADR-0196 ancient packs | prior claim | Python/Rust/Zig | — | ADR text | False |
| EN GSM8K → GRC case / HE binyan | prior claim | — | — | — | ABSENT |
4. Claim corrections (prior synthesis)
- EN/HE/GRC roles — Partially confirmed (ADRs + LIVE compiled packs; source packs draft).
- ADR-0005/0015 — Confirmed as architecture; implementation is
packs/datacompiler path. - packs/he, packs/grc draft + compiler — Confirmed split: draft source vs LIVE compiled.
- Ordered morph composition — Confirmed LIVE+tested in
packs/compiler._apply_morphology. - depth_canonical / enrich — Confirmed; enrich is decoration; recognize is matching.
- ProblemFrame symbols — Confirmed under
generate/. - All serving_allowed=False — False; fraction_decrease is True.
- No EN→case/binyan math path — Confirmed absent.
- GSM8K all refused — Sealed test 0/0/1319 recorded; train_sample 30/0/20; holdout_dev 5/0/495. claims_ledger C 7/43/0 is stale.
- FGL / ADR-0248 Logos — FGL absent; ADR-0248 = integrity handoffs.
- ADR-0196 — Python/Rust/Zig, not ancient packs.
5. Implementation plan (narrow GO)
- Pure condition runners: baseline scalar from frame roles; operator geometric; metadata-only depth; invalid refuse.
- No new depth→role mapping from English.
- Sealed fixture v1 (fraction_decrease + confusers).
- Measurement report + tests.
- Smoke gate.
6. Remaining gaps (not in this slice)
- Engineering: wire ProblemFrame into CognitiveTurnPipeline (optional future).
- Engineering: unify percent_partition prose organ with frame contracts.
- Scientific: whether observed he/grc morphology can constrain math on bilingual inputs (unproven; not this PR).
- Rejected: inventing Greek cases for English GSM8K.
- Deferred: expanding draft
packs/he|grcgates.