Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .claude/board/EPIPHANIES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
## 2026-07-12 — E-RUNG-POV-CORRECTION-1 — codex found a third rung-oracle defect (evaluate() is side-to-move POV); fix reveals a real 0.48→0.74 convergence gradient previously erased by parity noise; verdict stays INCONCLUSIVE/[H]
**Status:** CORRECTION (MEASURED, `AdaWorldAPI/stockfish-rs` commit 8e563ab, 2026-07-12). Refines the D-SF-RUNG-1 numbers in E-CHESS-PROBE-SWEEP-COMPLETE-1 (below); the verdict is unchanged, the mechanism understanding is sharper.

**The defect (codex on stockfish-rs #8):** `evaluate()` returns side-to-move-POV internal units, so the probe's cross-ply `signum()` comparisons alternated perspective every ply — the flat "no convergence" (0.53 ≈ 0.54) was move-parity noise, and the hindsight sign came from whichever side moved last. Fix: normalize every eval to a fixed White POV before `signum()`.

**Post-fix measurement (not tuned, just measured):** mean first-third agreement 0.48 → last-third 0.74, 13/25 games show the split — a REAL convergence gradient in the direction the rung thesis predicts, previously erased. Still below the pre-registered gate (pass 0.75 / mean-last 0.9), so D-SF-RUNG-1 remains INCONCLUSIVE and stays [H]: the two remaining oracle defects bind (NNUE not mate-aware — sacrificial mates invert the label; random playouts never settle). The path to a gradeable verdict is unchanged: played-out game-result labels or a mate-aware search.

**Standing lesson:** any probe comparing NNUE evals ACROSS plies must normalize POV first — `evaluate()` is stm-relative; the banked L5 parity corpus never caught this because all five FENs are White-to-move (the two conventions are indistinguishable there).

## 2026-07-12 — E-CHESS-PROBE-SWEEP-COMPLETE-1 — MEASURED ×4 (parallel): escalation structure GREEN+fence, episodic-keys GREEN+gap, vector-palette ladder GREEN at Base17 anchor (96-bit pair-tenant > cam_pq, operator-confirmed), rung INCONCLUSIVE (oracle, stays [H])
**Status:** FINDING (MEASURED, `AdaWorldAPI/stockfish-rs`, 2026-07-12). The final four probes of the perturbation-cascade synthesis queue, run in parallel; every negative is a finding, not a force. Reads with E-CHESS-GRIDLAKE-BASIN-GREEN-1 (below) and E-PALETTE-NNUE-COSINE-GREEN-1.

Expand Down
10 changes: 8 additions & 2 deletions .claude/knowledge/stockfish-nnue-as-perturbation-cascade.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,12 +125,14 @@ Stated as deliverables so it can be executed and falsified, never hand-waved:
the actual VECTOR tenant shapes: codebooks trained on 2048 FT columns, measured
on 256 DISJOINT held-out columns (32 640 pairs — no memorization degeneracy; an
earlier same-set run gave a degenerate ρ=1.0 and was discarded):

| lane | bytes/col | ρ_all | near-orth ρ | MAE |
|---|---|---|---|---|
| cam_pq 48-bit (6×256, `CamCodebook`) | 6 B (341×) | 0.929 | 0.823 | 0.083 |
| **V3-L4 96-bit (6×256², the le-contract `6×(u8:u8)` ²centroid pairs)** | 12 B (170×) | **0.966** | 0.881 | 0.053 |
| 64×256 512-bit (64 subspaces × 16d — "one centroid per square", board-shaped) | 64 B (32×) | 0.977 | 0.918 | 0.042 |
| + turbovec-style n×4bit edge residue (uniform FLOOR) | ~526 B (3.9×) | **0.998** | **0.994** | 0.009 |

**Operator ruling confirmed by measurement: the full 96-bit `6×(256×256)` V3
tenant is strictly better than 48-bit cam_pq** (it is the faithful/"perfect"
tenant shape; cam_pq is the lossy approximation). The 96-bit tenant clears the
Expand Down Expand Up @@ -307,8 +309,12 @@ Games flow: `apply_move` → temporal-stream version → le-contract basin →
- **D-SF-RUNG-1 — hindsight labeling via rung. ⚠ INCONCLUSIVE — stays [H]
(2026-07-12, MEASURED; the ORACLE failed, not the thesis).** With an
NNUE-eval-only hindsight oracle (`sign(eval@final)`) the rung split does NOT
land: mean first-third agreement 0.53 ≈ last-third 0.54, 0/25 games pass. Two
identified oracle defects: (1) **NNUE is not mate-aware** — a game ending in a
land. THREE identified oracle defects — the third found by codex on PR #8 and
fixed: (0) **`evaluate()` is side-to-move POV**, so the first cut's cross-ply
sign comparison was move-parity noise (flat 0.53 ≈ 0.54); with fixed-White-POV
normalization a REAL convergence gradient appears — mean first-third 0.48 →
last-third 0.74, 13/25 games — but still below the pre-registered 0.75/0.9
gate; (1) **NNUE is not mate-aware** — a game ending in a
SACRIFICIAL mate (the Opera Game: Qxb8+ Nxb8 Rd8#) reads as the mating side
DOWN material at the final ply, inverting the hindsight label exactly on the
most decisive games; (2) random playouts never settle to a legible verdict.
Expand Down