core/docs/claims_ledger.md
Shay f56a0cfdba
Merge pull request #546 from AssetOverflow/docs/reconcile-current-state-2026-06-03
docs: reconcile current-state claims after GSM8K + sensorium progress
2026-06-04 07:14:39 -07:00

208 lines
14 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Claims Ledger — Single Source of Truth
**Purpose.** Every public or material claim CORE makes — in `README.md`,
`CLAIMS.md`, ADRs, eval summaries, and any outward-facing brief or site copy —
maps here to its exact in-repo evidence and its *honest* framing. When a number
or status appears in any external material, it must reconcile against this file.
If a claim cannot be substantiated from the repo, it is softened or cut, not
defended.
> **Discipline:** Honesty is the product. CORE refuses rather than guesses; that
> discipline applies to how we describe ourselves, not only to what the engine
> outputs. Overclaiming to hit a deadline is failure, not success.
- **Base commit:** `3a72d69` (origin/main before this reconciliation branch).
- **Verification date:** 2026-06-03 / 2026-06-04 UTC merge window.
- **Reproduce the machine-derived rows:**
```bash
uv run core capability ledger # Tier-1 status (audit-passed ×3; NO expert)
uv run python scripts/verify_lane_shas.py # Tier-2 pinned lane SHAs
uv run python scripts/generate_claims.py --check # CLAIMS.md is current, when regenerated from this ledger
uv run python -m pytest tests/test_vision_eval_gates.py -q
uv run python -m pytest tests/test_audio_compiler.py tests/test_audio_crdt_merge.py tests/test_audio_sensorium_mount.py -q
uv run python -m pytest tests/test_observation_frame_contract.py tests/test_sensorimotor_contract.py -q
```
---
## 1. The Four GSM8K Numbers — never conflate these
CORE has **four** distinct GSM8K-related measurements. They measure different
things on different data, and only **one** is the real external benchmark. Any
material that blurs them is a credibility risk.
| Tag | What it is | Result | Real GSM8K? | Gates expert? | Evidence |
|---|---|---|---|---|---|
| **A** | **Sealed real GSM8K test** (1,319 cases, HuggingFace `openai/gsm8k` test split) | **0 correct / 0 wrong / 1,319 refused** | **Yes** | No | `ADR-0119.7`; ciphertext `evals/gsm8k_math/holdouts/v1/cases.jsonl.age` |
| **B** | **CORE-authored synthetic "public" split** (150 cases, rule-based, written to exercise the grammar) | **150 correct / 0 wrong / 0 refused** (rate 1.0) | **No** | No | `evals/gsm8k_math/baselines/comparison_v1.json`, `frontier.json` |
| **C** | **Real `train_sample`** (50-case dev sample of real GSM8K) | **7 correct / 43 refused / 0 wrong** | Yes (sample) | No | `evals/gsm8k_math/train_sample/v1/report.json` |
| **D** | **Expert-promotion composite gate** (CORE-authored lanes B1/B2/B3) | **185/185 + 14/14 + 40/40 + 50/50, wrong=0** | **No** | Yes (but reverted — §2) | `ADR-0131.4`; `core/capability/composite_math_gate.py` |
**Per-number honest framing:**
- **(A) The honest external number.** `0/0/1319` — CORE's grammar covers **zero**
real GSM8K test problems today. This is the truthful gap. The load-bearing
property is **`wrong == 0` against the external corpus**: CORE *refuses* what it
cannot grammar-handle; it does not confabulate. The seal is one-way
(encrypted to an off-repo key); the number is a **recorded measurement**, not
CI-reproducible without the holdout key. Never present A as an accuracy
achievement — present it as zero-confabulation discipline plus an honest
coverage gap.
> **⚠ 2026-06-04 — `wrong=0` breach found and remediated.** The first re-run of
> this sealed lane since the original record measured **`0 / 5 / 1314`** — the
> `product_bridge` serving promotion (ADR-0195) had been silently committing **5
> wrong** on held-out, invisible because the working metric was the 50-case train
> sample it was tuned to. Bisection isolated it; both serving promotion bridges
> (`product_bridge`, `goal_residual`/ADR-0207 §5 step 2) were **disabled**
> (`generate/math_candidate_graph.py`), restoring `0/0/1319`. **The bridges must
> not be re-enabled without a gate proven `wrong=0` on this sealed set, not the
> train sample.** Lesson: the train_sample number had **zero predictive validity**
> for the exam; never treat it as the score again.
- **(B) A frontier *comparison*, not a benchmark result.** 150/150 is on a split
**CORE wrote**, designed to exercise its own grammar without data
contamination. `frontier.json` itself flags the "apples-vs-oranges" caveat:
frontier LLMs (Claude 3.5 Sonnet 96.4%, GPT-4 92.0%, Gemini 1.5 Pro 90.8%) are
scored on *real* GSM8K. **Never cite B as "CORE scores 100% on GSM8K."** The
qualitative differentiator is `wrong=0`, not the rate.
- **(C) The dev-sample reality.** `7/43/0` on 50 real cases — the lane's
`exit_criterion` (`correct_min: 10`) is **NOT met**. The latest lift is the
ADR-0207 §5 R4 goal-residual production (`generate/derivation/goal_residual.py`),
which moves train-sample case `0037` while preserving `wrong=0`. A stricter
candidate-graph coverage probe is a separate diagnostic lane and must not be
conflated with the serving train-sample report.
- **(D) CORE-authored, and currently NOT conferring expert.** All four B-lanes are
written and scored by CORE; none is external GSM8K. ADR-0131.4 replaced the
original real-GSM8K gate (`correct_rate ≥ 0.60`) with this composite; ADR-0131.5
retired the GSM8K probe from per-iteration gating. **Expert status therefore
rests on CORE-authored evals, not external GSM8K — and must always be stated
that way.** It is also *currently reverted* (§2).
---
## 2. Capability ledger status — and the expert fail-closed revert
**No domain is at `expert`.** The live ledger (`core capability ledger`) reports:
| Domain | Status | Note |
|---|---|---|
| `mathematics_logic` | **audit-passed** | expert promotion **fail-closed-reverted** — see below |
| `physics` | audit-passed | no expert composer wired |
| `systems_software` | audit-passed | no expert composer wired |
| `hebrew_greek_textual_reasoning` | reasoning-capable | — |
| `philosophy_theology` | reasoning-capable | — |
**What `audit-passed` means (and does NOT).** Per `ADR-0113`, `audit-passed`
verifies *CORE claim-shape compliance* — signed digest, replay determinism, typed
refusal, exact recall, grounding provenance. These are shapes a transformer LLM
cannot structurally produce regardless of raw accuracy. **It is explicitly NOT a
raw-capability claim.** A frontier LLM might score higher on the same benchmark
and still fail this contract.
**The expert revert (the honesty story).** On 2026-05-23 `mathematics_logic` was
signed and promoted to `expert` (the first-ever flip). It **auto-reverted to
`audit-passed`** when its evidence bundle later drifted. The live composer refuses:
> `reviewer claim_digest mismatch — registry has '4c46f530…', evidence-derived
> digest is '02f6d3c8…'; the evidence bundle has changed since the signature was
> added.`
Root cause (proven 2026-06-02, Week-1a): **genuine single-source evidence-drift,
not a determinism defect.** The digest is byte-stable across processes and
`PYTHONHASHSEED`; all digest/obligation modules are unchanged since signing; the
signature was valid at its commit; the **only** moved input is the GSM8K coverage
probe (`train_sample_coverage_report.json`, `3/47 → 4/46` via PRs #310/#488), and
restoring those bytes in-place reproduces `4c46f530` exactly. This is the
ADR-0120 fail-closed property working as designed — **CORE revoked its own expert
claim when its evidence moved.** Full record: `ADR-0200`.
> **Known safe-direction wrinkle (documented, not yet fixed):** a *non-gating*
> GSM8K disclosure value is committed into the *gating* digest, so improving
> coverage invalidates the signature. It fails toward `audit-passed`, never toward
> a false `expert` — so it is not a `wrong=0` hazard. Digest-scoping refinement is
> deferred to a future ADR (`ADR-0200` §Consequences).
---
## 3. Verified invariants (safe to assert)
| Claim | Evidence | Reproduce |
|---|---|---|
| Versor closure `‖F·reverse(F) 1‖_F < 1e-6` at all times | `algebra/`, `tests/test_versor_closure.py` | `uv run pytest tests/test_versor_closure.py` |
| **Byte-identical replay / determinism** (same inputs → same trace hash) | `core/cognition/trace.py`; lane reports byte-equal across runs | digest determinism proven Week-1a (stable across processes/seeds) |
| **Refuse-rather-than-guess / `wrong = 0`** | typed refusal across all four GSM8K numbers; `verify.py` gate | A/B/C/D all `wrong=0` |
| Exact CGA recall (no ANN / HNSW / cosine) | `vault/store.py`; `docs/Yellowpaper.md` recall section | `uv run core test --suite algebra` |
| Safety pack: add-but-never-remove, fail-closed on load | `packs/safety/core_safety_axes_v1.json`; `ADR-0029` | `uv run core test --suite smoke` |
| Sensorium compiler law: compiled afferent units are content-addressed, replayable, and merge by deterministic key | `sensorium/compiler/*`; audio/vision/sensorimotor tests | see §4 reproduce commands |
| On-device, non-LLM, no sampling/gradient/tokenizer in the CORE runtime path | architecture; `README.md` "Third Door" | — |
---
## 4. Multimodal status — distinguish capability from substrate
The patent application's "multimodal" title is broader than what is demonstrated
as end-user capability in-repo. **External materials must not imply working
open-domain vision, audio understanding, robotics, or autonomous action.** The
current truth is: text is capability; audio/vision/sensorimotor are deterministic
afferent substrates with gates and synthetic evals; motor/efferent output is
fail-closed governance scaffolding only.
| Surface | Status | Evidence | Honest claim boundary |
|---|---|---|---|
| **Text** (English, Hebrew, Koine Greek) | **Active capability** | `sensorium/adapters/text.py`; language packs | Working textual modality. |
| **Audio** (`audio_core_v1`) | **Substrate landed, gate CLOSED by default** | `sensorium/audio/*`, `sensorium/adapters/audio.py`, `packs/audio/audio_core_v1/`, `tests/test_audio_*` | Deterministic compiler substrate; no broad audio-understanding capability claim. |
| **Vision** (`vision_core_v1`) | **Substrate landed, gate CLOSED by default** | `sensorium/vision/*`, `sensorium/adapters/vision.py`, `packs/vision/vision_core_v1/`, `evals/vision_sensorium/`, `tests/test_vision_eval_gates.py` | Tile-first deterministic visual compiler over synthetic fixtures; no open-domain vision claim. |
| **Environmental loop** (`ADR-0208`) | **Afferent observation-frame contract landed** | `sensorium/environment/frame.py`, `sensorium/environment/harness.py`, `tests/test_observation_frame_*` | Bundles already-compiled afferent units; not late fusion, not a mutable world model. |
| **Sensorimotor feedback** (`ADR-0209`) | **Afferent substrate landed** | `sensorium/sensorimotor/*`, `sensorium/adapters/sensorimotor.py`, `tests/test_sensorimotor_*` | Proprioception/contact/action-result evidence only; no decoder, actuator driver, trajectory executor, or skill invocation. |
| **Motor / efferent output** (`ADR-0198`) | **Partially implemented governance spike; action emission still refused unless verdict-governed** | `ModalityRegistry.decode*`, `AuthorityToken`, `DefaultEfferentGate`, `EfferentRefusal` | Registry path exists, but no motor decoder or real actuation capability is claimed. |
Honest line: *text is a working modality; audio/vision/sensorimotor are
replayable afferent compiler substrates with gates and eval fixtures; motor is a
fail-closed efferent governance surface, not an actuator.*
---
## 5. Attestation — single-signer (a known boundary)
The reviewer registry has exactly **one** signer: `shay-j`, `domains: ["*"]`,
`role: primary` (`docs/reviewers.yaml`; `reviewer_count: 1`). Every
`audit_passed_claims` and the (now-quarantined) `math_expert_claims` entry is
signed by the same identity. This is a real single-point-of-capture a partner may
probe. The migration toward a multi-reviewer / threshold-signing registry is
scoped as a future design deliverable — no fake signers.
---
## 6. Claims we explicitly do NOT make
- ❌ "A domain is at `expert`." → No domain is; `mathematics_logic` is
`audit-passed` (expert reverted).
- ❌ "CORE is externally validated on GSM8K." → The expert gate rests on
**CORE-authored** lanes; the real external number is A = `0/0/1319`.
- ❌ "CORE scores ~100% on GSM8K." → That is B, a CORE-authored synthetic split.
- ❌ "CORE has broad working multimodal perception." → Audio, vision, and
sensorimotor are afferent substrates/eval lanes, not demonstrated open-domain
capability.
- ❌ "CORE can perform motor actions / robotics / vehicle control." → Efferent
output is fail-closed governance scaffolding only; no motor decoder/actuator
path is ratified.
- ❌ "`audit-passed` means expert-level capability." → It is claim-shape
compliance, not raw capability (`ADR-0113`).
---
## 7. Reconciliation log
These reconcile stale artifacts to the truth above. **History-describing**
artifacts keep their content with dated context. **Current-machine-state**
artifacts reconcile to the truth.
| Artifact | Type | Action |
|---|---|---|
| `docs/claims_ledger.md` | current state | reconciled to `7/43/0`, afferent sensorium substrate landed, and fail-closed efferent governance scaffold |
| `CLAUDE.md` GSM8K substrate header | current operator instruction | reconcile serving metric to `7/43/0`; keep wrong=0 governor |
| `evals/gsm8k_math/train_sample/v1/README.md` | current eval summary | reconcile current report and note R4 goal-residual lift |
| `docs/decisions/ADR-0207-gsm8k-substrate-ratification.md` | ratified decision with evolving execution status | keep ratification baseline; add current-state note after R4 lift |
| `docs/reviewers.yaml` `math_expert_claims` | history (receipt) | keep entry; add quarantine note separately; do not re-sign |
| `docs/decisions/ADR-0120-math-expert-ledger-flip.md` | history | header note: valid-at 2026-05-23, auto-reverted, current = audit-passed |
| `evals/math_expert_claims/v1/expert_claims_math_v1_signed.json` | current state | future regeneration should preserve `promote_admitted: false` until a ratified expert path exists |