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
5 changes: 5 additions & 0 deletions .claude/board/LATEST_STATE.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
## 2026-10-07 — lance-graph #1395 MERGED (`5658c10`); D-CE64-CYCLE-0 on branch

- #1395: D-CE64-LOOP-0 and D-CE64-STAUNEN-0, probes in `lance-graph-planner/examples` (no contract change).
- D-CE64-CYCLE-0 (branch `claude/epistemicstate5-ce64-bits-3oe0dq`, unmerged): the cross-cycle executor experiments, extending `staunen_scheduler_probe.rs`; no contract change.

## 2026-10-07 — lance-graph #1391 MERGED; D-PEARL-PROD-0 shipped

- #1391 (`53212db`): Pearl's ladder in production (`lance_graph_planner::pearl::{reason, revise, hydrate}`; `revise(&Measured, Reading)` writes back only to the measured edge). Supersedes the "on branch, unmerged" line in the section below.
Expand Down
7 changes: 7 additions & 0 deletions .claude/board/PR_ARC_INVENTORY.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
## 2026-10-07 — lance-graph PR #1395 (merged `5658c10`, branch `claude/epistemicstate5-ce64-bits-3oe0dq`, head `086189a`, 5 commits) — D-CE64-LOOP-0 + D-CE64-STAUNEN-0: self-orchestrating fold loop, surprisal scheduler, bits 40..63 census

- **Added:** `lance-graph-planner/examples/self_orchestration_probe.rs` (one register, five policies, 15 tests) and `staunen_scheduler_probe.rs` (many basins across windows, surprisal distinct from Shannon H, 18 tests), both `test = true`; the bits 40..63 reader/writer census (board entry).
- **Locked (test-pinned):** naive raw surprise is captured by noise; habituation + learning progress fix it; bits 50..52 are not written (`learn` gates on plasticity); a re-measured channel replaces its evidence. 24 disable runs red.
- **Deferred / open:** one world per probe; Moore/EWA/Sudoku folds not wired; the `staunen` name collision with `basin_resonance`.
- **Confidence (2026-10-07):** the single-seed "wake 4.2 vs 5.1" advantage did not survive pooling three seeds (D-CE64-CYCLE-0).

## 2026-10-07 — lance-graph PR #1393 (merged `69e661a`, branch `codex/ce64-semantic-upper-half-probe`, head `6c98015`, 6 commits) — D-CE64-SEM-0: a probe-local semantic reading of the CE64 upper half

- **Added:** test-only readings in `pearl_ladder_probe.rs`: bits 46..49 as a signed reaction activation, 50..52 as novelty (`ceil(log2)` of the surviving `EpistemicState5` population; `None` when no state survives), 53..58 as a belief-update breadcrumb. Tests ported onto `planner::pearl` after #1391.
Expand Down
5 changes: 3 additions & 2 deletions .claude/board/STATUS_BOARD.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,9 @@ Plan: `.claude/plans/2026-10-06-global-sudoku-replayable-orchestration-v1.md`. O
| **D-EPI-CANON-0** | Canonical joint `EpistemicState5` reading of bits 59..63 in the contract | Shipped (#1381) | `contract::epistemic_state5`: Cartesian `Topology2 × Certification3`, `raw5 = t \| c << 2`, 24 meaningful / 8 reserved; per-factor facts; declarations + `project_state5`; `CausalEdge64::{epistemic_raw5, with_epistemic_raw5}`; non-declared-reading writers deprecated |
| **D-EPI-POP-0** | Facts → 32-state population: the missing operator between one edge's coordinate (u5) and a semantic condition over all coordinates (u32) | Shipped (#1381) | `contract::epistemic_state5::{Population, facts_population, EpistemicState5::bit}`: `const fn`, no DSL / query object / planner. Tests pin exact sets (`CAUSES` = {20..23}, `IND_UNKNOWN \| RELATED` = {10,14,18,22}, `IND_KNOWN \| SUPPORTS` = {13,17,21}, `RELATED` = 8..23), operator == state enumeration over all 2048 requirements with no reserved code, conjunction == intersection; 2 disable runs red (any-of semantics; reserved read as fact-less) |
| **D-EPI-LEGACY-DEPROJECT-0** | Deproject the remaining `ReasoningBand` / CE64-`TrustTexture` consumers: each goes to an exact coordinate, a `facts_population(..)`, MUL, or another subsystem (e.g. counterfactual context) — never a 1:1 replacement enum | Shipped (#1381) | `entries/2026-10-07-epi-legacy-deprojection.md`: 6 ReasoningBand caller sites (1 certification question, 1 non-interference witness → both exact coordinates; 2 context/obsolete → compat; 2 refusal witnesses), 0 production CE64 `TrustTexture` consumers, 4 `TrustTexture` types with no bridge; `EdgeRole::band` removed; hinge + V3 lift migrated; 4 code loops → `facts_population` |
| **D-CE64-STAUNEN-0** | Surprisal scheduler over many CE64 basins across windows (`lance-graph-planner/examples/staunen_scheduler_probe.rs`) | In PR | naive raw surprise is captured by noise (resolved 0.649); habituation + learning progress fix it (0.952, wake 4.2 windows vs round-robin 5.1); round-robin still resolves slightly more (0.964); bits 50..52 left as plasticity (`learn` gates on them); 18 tests, 13 disable runs red (`entries/2026-10-07-ce64-staunen-0-surprisal-scheduler.md`) |
| **D-CE64-LOOP-0** | Bounded self-orchestrating fold loop over one CE64 register (`lance-graph-planner/examples/self_orchestration_probe.rs`) + bits 40..63 census | In PR | combined policy reaches `IndirectKnown × Causes` with H ≤ 0.5 bit in 3 folds (round-robin 10, random median 14); ~830 ns/fold release; 15 tests in CI, 11 disable runs red; H and activation stay out of the register (`entries/2026-10-07-ce64-loop-0-self-orchestration.md`) |
| **D-CE64-CYCLE-0** | Cross-cycle executor experiments on the surprisal scheduler: forget arms, FIFO baseline, 350 ms windows, 1k..1M folds, attractors | In PR | the next cycle needs evidence table + register (Epi5) + attention state; H and bits 40..42 are derived/echo; pooled 3 seeds: no wake advantage over round-robin, 11% fewer folds; FIFO fits 1M folds in a 350 ms window at ~220 ns/fold, the heap scheduler ~440k at ~800 ns (`entries/2026-10-07-ce64-cycle-0-cross-cycle-executor.md`) |
| **D-CE64-STAUNEN-0** | Surprisal scheduler over many CE64 basins across windows (`lance-graph-planner/examples/staunen_scheduler_probe.rs`) | Shipped (#1395); wake claim corrected by D-CE64-CYCLE-0 (pooled: no wake advantage) | naive raw surprise is captured by noise (resolved 0.649); habituation + learning progress fix it (0.952, wake 4.2 windows vs round-robin 5.1); round-robin still resolves slightly more (0.964); bits 50..52 left as plasticity (`learn` gates on them); 18 tests, 13 disable runs red (`entries/2026-10-07-ce64-staunen-0-surprisal-scheduler.md`) |
| **D-CE64-LOOP-0** | Bounded self-orchestrating fold loop over one CE64 register (`lance-graph-planner/examples/self_orchestration_probe.rs`) + bits 40..63 census | Shipped (#1395) | combined policy reaches `IndirectKnown × Causes` with H ≤ 0.5 bit in 3 folds (round-robin 10, random median 14); ~830 ns/fold release; 15 tests in CI, 11 disable runs red; H and activation stay out of the register (`entries/2026-10-07-ce64-loop-0-self-orchestration.md`) |
| **D-PEARL-PROD-0** | Pearl's ladder in production: `lance_graph_planner::pearl::{reason, revise, hydrate}` over `lance_graph_contract::certification` | Shipped (#1391) | the P7a folds become `contract::certification::{CertificationModel, ModelBuilder}`; the dispatch, write-back and topology gate become `planner::pearl`, taking the caller's declared reading. The 14 falsifier tests run in the planner suite (CI); 12 disable runs red against the production module. No runtime caller yet: nothing in production produces sealed populations or chains for it (`entries/2026-10-07-pearl-prod-0-production-wiring.md`) |
| **D-PEARL-IO-0** | Pearl's ladder executed in and out of `CausalEdge64`: bits 40..42 select the operator, the measurement revises bits 59..63 | Shipped (#1390) | `cognitive-shader-driver/examples/pearl_ladder_probe.rs`, `entries/2026-10-07-pearl-io-0-ladder-in-and-out-of-ce64.md`: SO → P7a observational folds, PO → P7a executed arms (only path to `Causes`), SPO → `counterfactual_replay` (reaction, never a certification), SP → SO-vs-PO direction; `hydrate` gates `IndirectUnknown → IndirectKnown` on both bindings. CUI BONO script: `IndirectUnknown × Related` → `IndirectKnown × Related` → `IndirectKnown × Causes`. 14 tests, 12 disable runs red. P7a model moved to `examples/shared/certification_model.rs` unchanged |
| **D-PUZZLE-0** | Sudoku / crossword / chess on the same population algebra under domain laws | In progress | step 1 Sudoku shipped (#1382). Step 2 crossword (`crossword_population_fold_probe.rs`, `entries/2026-10-07-puzzle-0-crossword-same-algebra.md`): domain-free half moved to `examples/shared/population_fold.rs` (fence test, Sudoku counts unchanged); 1,000,052 crossword edges, counts equal 3 ways; filter 0.30–0.43 ns/edge in both domains. Step 2b real words (`crossword_real_words_probe.rs`, `entries/2026-10-07-puzzle-0-crossword-real-words.md`): English = DeepNSM v1 4096 + academic_20k (committed), German = DeReKo top 20k only from `DEREKO_PATH` (CC BY-NC, nothing committed); ~1.0M edges each, counts equal 3 ways. Steps 2/2b merged (#1384). Step 3, merged #1387 (`crossword_mask_propagation_probe.rs`, `entries/2026-10-07-puzzle-0-crossword-mask-propagation.md`): Morton cell + `(slot:offset)` lanes, DeepNSM-v2 `WordId` masks, `MooreSymbol8` letters; four arms on identical puzzles (EN 5×5: token 3.0 µs ≈ hybrid 2.9, Cartesian 5.1, literal ~1,045); with no repeated words, creation stops at 5×5 with the 18–20k vocabularies; cui-bono ablation of givens. Next: chess in `stockfish-rs` (GPL) — how it reaches the shared half is open |
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# 2026-10-07 — D-CE64-CYCLE-0: what a CE64 register must carry across cycles, and what self-orchestration buys at scale

**Status:** TEST-PINNED (`crates/lance-graph-planner/examples/staunen_scheduler_probe.rs`, `test = true`, 23 tests run by `member-tests`; comparative tests pool 3 seeds). MEASURED (`cargo run --release -p lance-graph-planner --example staunen_scheduler_probe`, 4-core Xeon 2.8 GHz). No production code changed.

## DECISION

- **SCOPE:** the D-CE64-STAUNEN-0 executor extended rather than duplicated: `run_with(opts)`, a lazy-stamp heap scheduler, a FIFO worklist baseline (reacts to new evidence, reads no entropy or activation), a wall-clock budget per window with continuation, `Forget` arms at window boundaries, the #1390 Simpson population plus its positive trial, end-attractor and fold-quadrant readings.
- **The register is treated as the cross-cycle carrier; which state it must carry is measured by forgetting each piece at every window boundary** (single seed, 2000 windows, budget 3):

| forgotten | resolved | same run? | verdict |
|---|---|---|---|
| nothing | 0.955 | — | — |
| posterior (H) | 0.955 | identical | derived from the evidence table: persisting H would be an echo |
| bits 40..42 (question) | 0.955 | identical | an echo of the opcode in this loop |
| register (Epi5, mask) + what ran at which code | 0.024 | no | earned Epi5 is re-derived every window and starves the real work |
| evidence table (latest outcome per channel) | 0.000 | no | needed |
| attention state (habit, progress, coherence, surprise) | 0.378 | no | needed; this is how earlier windows direct later ones |

- **W:** belief moved on 4648 folds while Epi5 moved on 72; `pearl::revise` changed F/C on 0. A W that advances only on Epi5 changes would reference about 1.5% of belief updates. Nothing here mints a W.
- **BASIS:** all weights, likelihoods and thresholds are policy pins.

## Measured: self-orchestration against baselines (pooled 3 seeds, 600 windows)

| policy | folds | resolved | wake | folds on settled basins | resolved basin-windows per fold |
|---|---|---|---|---|---|
| full | 4806 | 0.865 | 7.9 | 0.047 | 10.36 |
| FIFO worklist | 5400 | 0.909 | 8.3 | 0.094 | 9.69 |
| round-robin | 5400 | **0.911** | **7.5** | 0.093 | 9.72 |
| random | 5400 | 0.838 | 12.4 | 0.050 | 8.94 |
| no entropy and no activation | 5400 | 0.486 | 11.4 | 0.018 | 5.18 |

- **Correction to D-CE64-STAUNEN-0 / #1395:** its "wake 4.2 vs round-robin 5.1" was one seed. Pooled, the full scheduler has **no wake advantage** (7.9 vs 7.5). Exact tie-breaking alone had moved a single-seed wake latency by half.
- What survives pooling:
- ablations each matter (no entropy 0.515, no surprise wake 43.1, no habituation 0.712, no progress 0.822, naive 0.629);
- activation drives sleeping (without it, 5400 folds instead of 4806);
- the full scheduler spends 11% fewer folds and wastes half as many on settled basins, at a lower resolved fraction than the two simple baselines.

## Measured: dense windows, 350 ms cap

| folds per window | policy | ns/fold | folds that fit in 350 ms | productive share |
|---|---|---|---|---|
| 1M (327,680 basins) | FIFO / round-robin | ~220 | all 1M (~252 ms per window) | 0.72 |
| 1M (327,680 basins) | full (heap) | ~800 | ~440k | 0.89 |
| 1k–100k | FIFO / round-robin | ~210 | — | ~1.00 |
| 1k–100k | full (heap) | 490–710 | — | 0.88 |

- At 1M, FIFO yields about twice as many productive folds per second as the heap-driven scheduler.
- **Within a window, later folds are less productive** (FIFO: first tenth 0.953, last tenth 0.483). Informative work is front-loaded and runs out.
- **"Does fold 1,000,000 get better directed by folds 1..999,999?"** Inside a window, no. Across windows, the carried attention state is what directs later windows (forgetting it: 0.955 → 0.378 resolved).

## Other readings

- Fold quadrants (activation sign × ΔH, full): falsify 1794, anomaly 1935, leave 419, dig 233, other 758.
- Polarity: hydration reacts negative / zero / positive (2233 / 561 / 2168). The SP check is negative only on Simpson basins (pinned with a silence twin).
- End attractors (learned, wrong-settled, exhausted, waiting, sterile, active):
- full: [31, 0, 0, 0, 7, 2]
- naive: [13, 13, 0, 4, 7, 3]. Naive scheduling ends **wrongly settled** as often as learned: an attractor is not understanding, and the reading distinguishes them.
- **The sterile class is weak:** on the 600-window shape only 3 of 8 noise basins meet it.

## Gates

19 disable runs, each red on its named falsifier: 13 from D-CE64-STAUNEN-0, re-run after the refactor, and 6 new:
- the forgotten belief not rebuilt
- forgetting the register as a no-op
- the W counter dropped
- Simpson replaced by a plain trial
- a deadline that never binds
- no sterile class

## OPEN

- Within-window direction does not improve; front-loading is the dominant dynamic.
- The heap scheduler costs ~3.5× FIFO per fold. A cheaper priority structure (bucketed priorities, Moore-local queues) is untested.
- Moore, EWA, Sudoku and Quack folds are not in the loop (they live outside the planner). Substrate-agnosticism is therefore claimed for nothing beyond Pearl folds here.
- The register itself carries none of the needed cross-cycle state except Epi5:
- The evidence table, which drives this loop, lives beside the register; it is 4 channels × 2 bits.
- Whether that state, attention, and a reference to belief updates should have a home in the register remains open; bits 50..52 conflict with `learn` (D-CE64-STAUNEN-0).
- No counterfactual (−6) fold in this loop; isolation is pinned in D-CE64-LOOP-0 and the planner's Pearl tests.
3 changes: 2 additions & 1 deletion .claude/board/entries/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ index row, (3) no duplicate entry id. Checks 1 and 2 are deliberately
opposite directions; the stranding this convention prevents shows up in
exactly one of them, never both.

259 entries, 2026-08-06 .. 2026-10-07.
260 entries, 2026-08-06 .. 2026-10-07.

| date | entry id | finding | file |
|---|---|---|---|
Expand All @@ -49,6 +49,7 @@ exactly one of them, never both.
| 2026-10-07 | `D-CTX-7` | | [2026-10-07-ctx7-revision-writer-for-epistemic-state.md](2026-10-07-ctx7-revision-writer-for-epistemic-state.md) |
| 2026-10-07 | `D-CE64-STAUNEN-0` | | [2026-10-07-ce64-staunen-0-surprisal-scheduler.md](2026-10-07-ce64-staunen-0-surprisal-scheduler.md) |
| 2026-10-07 | `D-CE64-LOOP-0` | | [2026-10-07-ce64-loop-0-self-orchestration.md](2026-10-07-ce64-loop-0-self-orchestration.md) |
| 2026-10-07 | `D-CE64-CYCLE-0` | | [2026-10-07-ce64-cycle-0-cross-cycle-executor.md](2026-10-07-ce64-cycle-0-cross-cycle-executor.md) |
| 2026-10-07 | `bind-bundle-gated-gather` | One bound query, five routes, identical answers; the semijoin is never gated and dominates; a gated mask gather beats a selection vector (R1 survives) | [2026-10-07-bind-bundle-gated-gather.md](2026-10-07-bind-bundle-gated-gather.md) |
| 2026-10-07 | `aperture16-u64-word-schedule` | The u16 view of the 64K mask is free but 1.3–2.3× slower per layout as a schedule than u64 words; extent × mask compose; the exact next-frontier mask beats a u16 target histogram; no new carrier or opcode | [2026-10-07-aperture16-u64-word-schedule.md](2026-10-07-aperture16-u64-word-schedule.md) |
| 2026-10-06 | `v3-v4-dual-reading-round3` | | [2026-10-06-v3-v4-dual-reading-round3.md](2026-10-06-v3-v4-dual-reading-round3.md) |
Expand Down
Loading
Loading