6.1 KiB
HANDOFF — GPT-5.5 — 2026-06-20
Session objective
Produce the ADR-0223 semantic-substrate affordance audit without changing serving, derivation, benchmark, sealed, or runtime behavior.
Baseline
- Repository:
/Users/kaizenpro/.codex/worktrees/1737/core - Git state at start: clean, detached HEAD
- Commit:
564e360e docs(adr): require semantic substrate affordance audit - Required bootstrap read:
GPT55.md,AGENTS.md,docs/runtime_contracts.md, recentHANDOFF-gpt55-2026-06-18.md, ADR-0223 and governing ADRs, substrate briefs/audits, relevant source and tests.
Map
Four directions were evaluated:
- continue organ-local parsers — rejected as forward architecture;
- universal parser/mega-IR — rejected because it collapses graph invariants;
- pack-backed constructional affordances with exact proposal and deterministic proof — selected;
- learned/stochastic parsing — deferred because it undermines replay and inspectability at the current stage.
The intrinsic space is a typed relational field over source spans, entities, quantities, events, target operators, hazards, and contract obligations. Semantic proximity can propose a construction but cannot prove it.
Build
Documentation-only artifacts added:
docs/analysis/semantic-substrate-affordance-audit-2026-06-20.mddocs/analysis/semantic-substrate-affordance-map-2026-06-20.mddocs/analysis/problemframe-contract-gap-taxonomy-2026-06-20.md- this handoff
No Python, runtime, pack, benchmark, report, case, sealed artifact, manifest, or test file was changed.
Principal findings
- CORE's geometric substrate is real in pack manifold compilation, exact CGA recall, vault recall, and versor propagation.
- The math
ProblemFramepath does not consume that geometry. It uses hard-coded process triggers and local regex binding. en_core_math_v1/frames.jsonlis empty; its frame checksum is the SHA-256 of empty bytes. Process construction semantics live ingenerate/process_frames.py, separately from the pack lexicon.ProblemFrameis diagnostic only. Serving calls raw-textresolve_promotable_*organs throughparse_and_solve.- The no-new-legacy test contains parser expansion but does not retire the existing allowlist.
- Current percent-partition contract readiness is obligation-incomplete.
- Train case
0046is the intended forward percent-partition slice. - Holdout case
0393is a false diagnostic runnable: a final remainder is selected as the whole and an inverse reconstruction is accepted by a forward contract. - Train case
0005has sufficient scalar/unit substrate to motivate proportional decrease, but no construction, state-transition relation, target direction, or contract. - Graph boundaries are currently healthy:
ProblemFrame,EpistemicGraph,MathProblemGraph, andPropositionGraphremain purpose-specific.
Diagnostic evidence
Serving reports, run in memory without writes:
| Split | Correct | Refused | Wrong | Wrong IDs |
|---|---|---|---|---|
| Train sample | 30 | 20 | 0 | [] |
| Holdout | 5 | 495 | 0 | [] |
ProblemFrame adequacy:
| Split | Contract candidates | Runnable |
|---|---|---|
| Train sample | 42 | 1 |
| Holdout | 423 | 1 (false runnable 0393) |
Validation
core test --suite smoke -q— unavailable becausecorewas not onPATH.- Fallback:
uv run python -m core.cli test --suite smoke -q—108 passed in 136.89s. - Focused substrate/contract suite —
69 passed in 1.00s:- ProblemFrame builder and contracts
- adequacy and morphology labels
- no-new-legacy guard
- process frames
- scalar equivalence and unit dimensions
- ambiguity hazards
- epistemic carrier
No versor code or runtime field path changed, so the hard field invariant was not mechanically perturbed.
Justification
The recommended architecture separates candidate resonance from constructive proof:
exact semantic neighborhood
-> construction proposal
-> deterministic span/role binding
-> obligations and corrective hazards
-> ProblemFrame
-> organ-specific closed contract
This preserves duality: proposal is paired with correction, and positive evidence is paired with hazards/confusers. It also makes illegal readiness states structurally distinguishable: a candidate is not a binding, and a partial binding is not runnable.
Recommended next PR
Branch: codex/problemframe-proportional-change-closure
Title: feat(kernel): close proportional-decrease contracts and make readiness obligation-sound
Scope:
- close proportional-decrease roles for train
0005from existing substrate facts; - represent base/final state, fractional scale, entity/unit continuity, and delta target with exact provenance;
- add an obligation-complete contract;
- tighten percent-partition readiness so holdout
0393is not runnable; - retain train
0046with explicit topology and target obligations; - add positive/confuser/determinism tests;
- do not change serving.
Expected diagnostic movement to verify:
- train runnable
1 -> 2(0005,0046); - holdout runnable
1 -> 0; - serving
wrong_ids == []remains unchanged.
Subsequent sequence
- compile a reviewed, checksummed math construction catalog from pack data;
- add exact CGA semantic-neighborhood proposal with evidence, never readiness authority;
- bind acquisition/loss/transfer state changes constructionally;
- close rate/comparison/container/partition topology;
- migrate one organ to a typed closed contract and delete its local parser.
Hard stops for the next session
- Do not turn CGA similarity into semantic assertion or organ selection.
- Do not add raw-text parsing to a new derivation organ.
- Do not promote
ProblemFrameuntil false runnable0393is removed and obligations are explicit. - Do not use
EpistemicGraphorPropositionGraphas a mathematical mega-IR. - Do not mutate packs without reviewed bytes, regenerated checksums, and replay evidence.
- Do not accept coverage growth if serving wrong IDs cease to be empty.
Workspace note
At handoff creation, only the four documentation files listed above were intended changes. Recheck git status, git diff --check, and the final diff before committing.