Skip to content

D-PUZZLE-0 step 2: crosswords on the same population algebra as Sudoku - #1384

Merged
AdaWorldAPI merged 9 commits into
mainfrom
claude/epistemicstate5-ce64-bits-3oe0dq
Oct 7, 2026
Merged

AdaWorldAPI merged 9 commits into
mainfrom
claude/epistemicstate5-ce64-bits-3oe0dq

Conversation

@AdaWorldAPI

@AdaWorldAPI AdaWorldAPI commented Oct 7, 2026 •

Copy link
Copy Markdown
Owner

Step 2 of D-PUZZLE-0: does a second domain run on the population algebra from step 1 (#1382) without changing it?

How "same algebra" is checked

  • 4ed5e4e: the domain-free half moves out of the Sudoku probe into cognitive-shader-driver/examples/shared/population_fold.rs. That half is the propagation reading (given / forced / entailed-not-forced / candidate), the five questions as facts_population masks, the filter / histogram / decode folds, the group fold and the declaration gate. A fence test fails if domain vocabulary (sudoku, crossword, chess, digit, slot, cell, letter, grid, board, move) appears in it. The Sudoku probe's counts are identical before and after the move (1,000,066 edges).
  • 0ac5d6b: crossword_population_fold_probe.rs holds only the domain. It uses a 5×5 grid with ten crossing slots, generated fills over a 3-letter alphabet, 10 distractor words per length, and two given slots. The law is the forced single, and every instance has exactly one solution (backtracking). Questions, folds and oracle are unchanged from the shared module.
  • cc887e3, d182301 (step 2b): crossword_real_words_probe.rs fills the same template with real words: every 4- and 5-letter word of the vocabulary.
    • English is exactly what DeepNSM reads: v1's 4096-word table (word_rank_lookup.csv, ranks 1..=4096) united with v2's academic_20k.csv, both committed. cc887e3 used the top 1000 word_forms.csv surfaces; d182301 replaces that, because DeepNSM does not use that list as a vocabulary.
    • German is the 20,000 most frequent DeReKo-2014 forms, read only when DEREKO_PATH names the file at run time. DeReKo is CC BY-NC 3.0, so no German word or derived artifact is committed, and the German run is skipped without the variable.
    • Given slots are added in random order until the fill is unique.

Measured, synthetic alphabet (1,000,052 edges, 22,455 instances)

question edges
every asserted claim 224,550
given 44,910
forced, chain known 13,745
entailed, not yet forced 165,895
live candidates 775,502

Every count is equal three ways (filter, histogram, per-edge decode) and to the instances' own counters. Every instance holds exactly 10 asserted claims.

path crossword ns/edge Sudoku ns/edge
one population, filter 0.30 – 0.43 0.35 – 0.39
32-bin histogram 1.67 – 1.75 0.93 – 1.07
per-edge decode (oracle) 3.9 – 4.1 3.8 – 4.0

Release build, avx2, the same 4-core shared Xeon, median of 7, three runs; one machine's numbers. The filter and the oracle cost the same in both domains. The histogram is slower on the crossword lane, where 77 % of edges share one code; repeated increments of one bin are the likely cause, not measured.

What differs is the law, not the algebra. Forcing is rare in crosswords (13,745 of 177,640 non-given slots) against Sudoku's naked singles, so most true words stay IndirectUnknown × Causes.

Measured, real words (one run each)

English (v1 4096 + academic) German (DeReKo top 20k)
dictionary, 4 / 5 letters 1,250 / 1,697 802 / 1,466
edges / instances 1,005,146 / 1,209 1,000,074 / 1,390
build 7.4 s 6.7 s
given / forced / entailed 5,370 / 1,278 / 5,442 6,118 / 1,400 / 6,382
filter / histogram / oracle, ns/edge 0.35 / 2.23 / 4.01 0.36 / 2.10 / 3.79

Counts are equal three ways in both languages.

Falsifiers (disable-verified red)

  • A domain word planted in the shared half → fence test red.
  • A uniqueness check that always says "one" → its test red (both crossword probes).
  • A law that forces any slot with a candidate → "forced word is the true word" fails, 3 tests red.
  • A bitset index that ignores fixed letters → 4 tests red, including the index-against-scan test.
  • NE rows kept in the DeReKo parser → the parser test red.
  • The v1 4096 rank cut removed, or the academic list dropped → the English vocabulary test red.
  • The German 20k cut removed → its test red.

All three probes are registered as [[example]] test = true, and clippy -D warnings is clean.

Open

  • CI covers English only; German needs the DeReKo file.
  • Chess goes to stockfish-rs (GPL; shakmaty supplies legality). How it reaches the shared half is undecided: copying it there makes a second copy, and promoting it into lance-graph-contract is a contract change.

Entries: .claude/board/entries/2026-10-07-puzzle-0-crossword-same-algebra.md, 2026-10-07-puzzle-0-crossword-real-words.md.

🤖 Generated with Claude Code

https://claude.ai/code/session_0177nSSyQaXqbNuGR1vMXXN6

claude added 3 commits October 7, 2026 16:12
The propagation reading, the five questions, the three folds, the group
fold and the timing move out of the Sudoku probe so a second domain can use
them unchanged. A fence test fails if domain vocabulary appears in the
shared half. The Sudoku probe's counts are identical before and after
(711,990 / 263,700 / 227,189 / 221,101 / 288,076 on 1,000,066 edges).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0177nSSyQaXqbNuGR1vMXXN6
Ten-slot 5x5 crosswords with generated fills, distractor words, two given
slots and a forced-single law; every kept instance has exactly one solution
(backtracking). The probe holds only the domain; questions, folds and the
oracle come unchanged from shared/population_fold.rs. 1,000,052 edges, every
count equal three ways and to the instances' own counters.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0177nSSyQaXqbNuGR1vMXXN6
@coderabbitai

coderabbitai Bot commented Oct 7, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Essentials
  • Run ID: ebea73d6-b1a7-4402-8126-873e119b34be
📥 Commits

Reviewing files that changed from the base of the PR and between bccc46e and 94499c3.

📒 Files selected for processing (10)
  • .claude/board/STATUS_BOARD.md
  • .claude/board/entries/2026-10-07-puzzle-0-crossword-real-words.md
  • .claude/board/entries/2026-10-07-puzzle-0-crossword-same-algebra.md
  • .claude/board/entries/README.md
  • crates/cognitive-shader-driver/Cargo.toml
  • crates/cognitive-shader-driver/examples/README.md
  • crates/cognitive-shader-driver/examples/crossword_population_fold_probe.rs
  • crates/cognitive-shader-driver/examples/crossword_real_words_probe.rs
  • crates/cognitive-shader-driver/examples/shared/population_fold.rs
  • crates/cognitive-shader-driver/examples/sudoku_population_fold_probe.rs
 _______________________________________________________________________________________________________________________________
< Always code as if the person who ends up maintaining your code is a violent psychopath who knows where you live. - John Woods >
 -------------------------------------------------------------------------------------------------------------------------------
  \
   \   (\__/)
       (•ㅅ•)
       /   づ
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Warning

Billing warning: we have not been able to collect payment for this subscription for more than 72 hours. Please update the payment method or pay any pending invoices in Billing to avoid service interruption.


Comment @coderabbitai help to get the list of available commands.

@cursor

cursor Bot commented Oct 7, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: 66ddcd5b-f513-42ed-9c4f-39361ec033a1)

claude added 2 commits October 7, 2026 16:22
…ReKo) words

The step-2 crossword drew its words from a synthetic three-letter alphabet.
This probe fills the same 5x5 template from a real dictionary, the top 1000
words per slot length: English COCA forms from the committed word_forms.csv
(the file DeepNSM-v2's lexical layer reads), and German DeReKo-2014 only when
DEREKO_PATH names the file at run time. DeReKo is CC BY-NC 3.0; nothing
derived from it is committed.

Instances are random fills, with givens added in random order until the
dictionary admits exactly one fill. Law, claims, questions, fold and oracle
are unchanged from step 2 and shared/population_fold.rs.

Release run: EN 1,002,858 edges / 1338 instances in 4.2 s; DE 1,000,847 /
1483 in 4.7 s. Every count agrees three ways in both.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0177nSSyQaXqbNuGR1vMXXN6
Also renames the uniqueness test to what it checks: with every given
removed, the dictionary admits more than one fill.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0177nSSyQaXqbNuGR1vMXXN6
@cursor

cursor Bot commented Oct 7, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: 807876d8-e7d7-4cdb-9281-03cc238046ab)

claude added 2 commits October 7, 2026 16:27
English is now exactly what DeepNSM reads: v1's 4096-word table
(word_rank_lookup.csv, ranks 1..=4096) united with v2's academic_20k.csv;
word_forms.csv is no longer a source. German is the 20,000 most frequent
DeReKo forms (NE and non-alphabetic excluded). The dictionary is every word
of a slot's length in that vocabulary; the top-1000 cut is gone.

Dictionaries: EN 1250 four-letter / 1697 five-letter, DE 802 / 1466.
Release run: EN 1,005,146 edges / 1209 instances, DE 1,000,074 / 1390;
counts equal three ways in both.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0177nSSyQaXqbNuGR1vMXXN6
@cursor

cursor Bot commented Oct 7, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: 5f403cb7-4459-4494-ac24-8ec1927c386b)

entries_index.py --check refuses three rows with id D-PUZZLE-0 (the merged
Sudoku entry plus both crossword entries). The crossword steps become
D-PUZZLE-0-XWORD and D-PUZZLE-0-XWORD-REAL, in the headings and the index.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0177nSSyQaXqbNuGR1vMXXN6
@cursor

cursor Bot commented Oct 7, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: ef007150-4652-4b0d-8ab3-034ab278c06c)

Grids: alongside the fixed step-2 template, a fresh random grid per instance
under the NYT rules (180-degree symmetry, every word at least 3 letters,
one connected white region, at most a sixth black). The rules are written
from their statement, not from akshayravikumar/crosswords (no licence).
Each rule has its own refusing fixture.

Lexicon: answers of the Down-and-Across clue/answer set
(text-machine-lab/xword_benchmark), read only from XWORD_ANSWERS_DIR at run
time; the repo has no licence and the answers come from NYT puzzles, so
nothing is committed. Word splits are rejoined, repeats counted.

The asserted-claims-per-group check now follows each grid's own slot count.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0177nSSyQaXqbNuGR1vMXXN6
@cursor

cursor Bot commented Oct 7, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: b44551db-e07a-42f3-b353-04e37a990d22)

@AdaWorldAPI
AdaWorldAPI marked this pull request as ready for review October 7, 2026 16:47
@AdaWorldAPI
AdaWorldAPI merged commit 23e8d93 into main Oct 7, 2026
11 checks passed
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 7, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-07T16:49:06.579015Z 94499c3 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@cursor

cursor Bot commented Oct 7, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: f63e9f65-9565-46ab-8ce6-7d952c21d878)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants