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 #1397 MERGED (`4a0a72c`); D-PUZZLE-ATTN-0 on branch

- #1397: D-CE64-CYCLE-0, probe-only (no contract change).
- D-PUZZLE-ATTN-0 (branch `claude/epistemicstate5-ce64-bits-3oe0dq`, unmerged): the crossword core moves to `cognitive-shader-driver/examples/shared/crossword_core.rs`; `crossword_attention_probe.rs` compares slot policies. No contract change.

## 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).
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 #1397 (merged `4a0a72c`, branch `claude/epistemicstate5-ce64-bits-3oe0dq`, head `ea16f16`, 3 commits) — D-CE64-CYCLE-0: what a CE64 register must carry across cycles

- **Added:** `staunen_scheduler_probe.rs` gains `run_with(opts)`, a lazy-stamp heap scheduler, a FIFO worklist baseline, wall-clock windows with continuation, `Forget` arms, the #1390 Simpson + trial population, attractor and quadrant readings, dense 1k..1M windows; comparative tests pool 3 seeds.
- **Locked (test-pinned):** the next cycle needs the evidence table, the register (Epi5) and the attention state; H and bits 40..42 are derived / echo; no wake advantage over round-robin when pooled (corrects #1395). 23 tests, 19 disable runs red.
- **Deferred / open:** the heap scheduler costs ~3.5× FIFO per fold; Moore/EWA/Sudoku folds not in the loop; where cross-cycle state lives in the register.
- **Confidence:** medium — pooled over 3 seeds, one world model.

## 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).
Expand Down
3 changes: 2 additions & 1 deletion .claude/board/STATUS_BOARD.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,8 @@ 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-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-PUZZLE-ATTN-0** | Entropy as the focus of attention on crosswords (`cognitive-shader-driver/examples/crossword_attention_probe.rs`, shared `crossword_core.rs`) | In PR | popcount (uniform entropy) needs 14.5× fewer nodes than fixed order to prove uniqueness; frequency-weighted Shannon costs 5.9× more than popcount; dom/wdeg reaches first fills sooner (41k vs 92k on open puzzles); contradiction rate flat within a search (`entries/2026-10-07-puzzle-attn-0-entropy-attention-crosswords.md`) |
| **D-CE64-CYCLE-0** | Cross-cycle executor experiments on the surprisal scheduler: forget arms, FIFO baseline, 350 ms windows, 1k..1M folds, attractors | Shipped (#1397) | 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`) |
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# 2026-10-07 — D-PUZZLE-ATTN-0: on crosswords, uniform entropy focuses search; frequency-weighted Shannon misdirects it

**Status:** TEST-PINNED (`crates/cognitive-shader-driver/examples/crossword_attention_probe.rs`, `test = true`, 9 tests run by the shader-driver `cargo test` step). MEASURED (`cargo run --release -p cognitive-shader-driver --example crossword_attention_probe`; 20 created puzzles and 20 empty NYT grids, sides 5 and 7; 200,000 nodes per run).

## DECISION

- **SCOPE:** crossword solving is a fixed point (#1387), so deduction needs no attention. This probe changes only the search's choice of the next slot once deduction stalls. Everything else is held fixed:
- the puzzles;
- the propagation, moved unchanged into `examples/shared/crossword_core.rs` (#1387's 20 tests pass on it);
- the value order, most frequent word first.
- **Policies:**
- fixed order;
- seeded random;
- widest first (negative control);
- **popcount**: most-constrained first, i.e. entropy under a uniform prior, `log2(count)`;
- **Shannon**: `H = -Σ p log2 p` with `p ∝` COCA-All frequency;
- **dom/wdeg** (Boussemart et al. 2004): count divided by accumulated contradictions on the slot that ran dry, so earlier failures steer later choices.
- **Contradiction:** a slot with no candidate has no entropy under either reading and is never settled (pinned).

## Measured

| policy | prove: solved | prove: nodes | open: solved | open: nodes / to first | fill: solved |
|---|---|---|---|---|---|
| fixed | 16/20 | 852,535 | 7/20 | 2,858,517 / 2,488,660 | 5/20 |
| random | 15/20 | 1,049,801 | 5/20 | 3,151,741 / 2,572,628 | 0/20 |
| widest | 16/20 | 916,437 | 5/20 | 3,186,550 / 2,653,695 | 10/20 |
| **popcount** | **20/20** | **58,729** | **20/20** | 570,450 / 91,930 | 10/20 |
| Shannon | 19/20 | 348,578 | 16/20 | 1,156,793 / 550,562 | 10/20 |
| **dom/wdeg** | **20/20** | 53,892 | **20/20** | 539,520 / **40,938** | 10/20 |

(prove = count fills to 2 on created puzzles; open = half the givens, count to 50; fill = an empty grid.)

- **Entropy as focus of attention works, read as uniform entropy.** Popcount needs 14.5× fewer nodes than fixed order to prove uniqueness, and 5× fewer on the open puzzles, where fixed order finishes only 7 of 20.
- **Frequency-weighted Shannon is worse than popcount**: 5.9× the nodes on prove; on open, 2× the nodes and 4 puzzles unfinished. It picks a different slot on 36–50% of decisions.
- The frequency prior measures how *predictable* a slot is; a search pays for how many candidates it must *try*.
- So for attention in search, `log2(count)` is the right reading, not a proxy for something better.
- The `ms` column overstates popcount: its runs also compute Shannon on every decision to count disagreements.
- **Earlier contradictions do direct later choices.** dom/wdeg uses about the same total nodes as popcount but reaches the first fill sooner: 33,017 vs 41,029 on prove, 40,938 vs 91,930 on open.
- **The contradiction rate does not improve within a search.** Per tenth of the search it stays flat at 0.73–0.85 for both popcount and dom/wdeg. The gain shows up as an earlier solution, not a lower failure rate.
- **Empty grids:** 10 of 20 stay unfilled within 200,000 nodes under every good policy. This is likely the vocabulary rather than attention; not measured.

## Gates

7 disable runs, each red on its named falsifier:
- popcount picks the first slot
- Shannon reads popcount
- an empty mask has H = 0
- a flat prior
- no failure weights
- no propagation
- a wall-clock seed

One falsifier was vacuous on first write: the dom/wdeg "differs from popcount" check compared whole stats, which differ anyway through popcount-only counters. It now compares the search path, and its disable goes red.

## OPEN

- Shannon may belong in *value* ordering (which word to try first) rather than slot choice. Untested: the value order here is fixed by frequency.
- Coverage is narrow: one frequency prior (COCA academic), one vocabulary, sides 5 and 7 only. Side 9 takes minutes per created puzzle.
- No CE64 register in this loop. The slot state is the mask (the evidence); entropy is derived from it.
3 changes: 2 additions & 1 deletion .claude/board/entries/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,13 @@ 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.

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

| date | entry id | finding | file |
|---|---|---|---|
| 2026-10-07 | `tinker-janus-fold-harvest` | TinkerPop bulk = K (GroupReduce), ONE_BULK = S, GValue pinning = bundle invalidation; JanusGraph slice = OrderedLaneWitness→Range (30–38×); no new V4 op | [2026-10-07-tinker-janus-fold-harvest.md](2026-10-07-tinker-janus-fold-harvest.md) |
| 2026-10-07 | `selector-seq-aware-coverage` | | [2026-10-07-selector-seq-aware-coverage.md](2026-10-07-selector-seq-aware-coverage.md) |
| 2026-10-07 | `D-PUZZLE-ATTN-0` | | [2026-10-07-puzzle-attn-0-entropy-attention-crosswords.md](2026-10-07-puzzle-attn-0-entropy-attention-crosswords.md) |
| 2026-10-07 | `D-PUZZLE-0` | | [2026-10-07-puzzle-0-sudoku-population-fold.md](2026-10-07-puzzle-0-sudoku-population-fold.md) |
| 2026-10-07 | `D-PUZZLE-0-XWORD` | | [2026-10-07-puzzle-0-crossword-same-algebra.md](2026-10-07-puzzle-0-crossword-same-algebra.md) |
| 2026-10-07 | `D-PUZZLE-0-XWORD-REAL` | | [2026-10-07-puzzle-0-crossword-real-words.md](2026-10-07-puzzle-0-crossword-real-words.md) |
Expand Down
6 changes: 6 additions & 0 deletions crates/cognitive-shader-driver/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,12 @@ test = true
name = "crossword_real_words_probe"
test = true

# D-PUZZLE-ATTN-0: entropy as the focus of attention on crosswords (search
# slot policies over the shared crossword core); tests run under `cargo test`.
[[example]]
name = "crossword_attention_probe"
test = true

[[example]]
name = "crossword_mask_propagation_probe"
test = true
Expand Down
Loading
Loading