# Larsdoku in Range Arcade

This is a September 15, 2026 port of Lars Rocha’s supplied `larsdoku-app-main` download. It includes the full **Research v1.4.0 / HyperSIRO workbench**, a new accessible play interface, and all three original HTML files. The original README and GNU Affero GPL v3 license are retained in `original/`. This game and its adapted files are offered under AGPL-3.0, without warranty; see [LICENSE](LICENSE).

## Play and explore

[Play Larsdoku](./) provides a normal 9 × 9 Sudoku board, manual pencil marks, possible-digit notes, undo, conflict checking, hints, puzzle import, a notebook, finished-page pictures, and responsive phone/tablet/desktop layouts. Twelve pages can remain open. Up to sixty distinct finishes are remembered; there are no streaks or time limits. The optional daily gentle page is deterministic for its local calendar date.

[The complete studio](studio.html) retains the supplied research interface: expert puzzle library, zone and HyperSIRO inspection, technique trainers, Top-N solving and step-through traces, FPC/FPCE and deeper chains, forge/shuffle tools, imports, exports, and benchmark tools. Its original experimental behavior and research terminology remain. Open it from a play page to inspect that board, then use **Play this board** to return. The play notebook accepts verified unique boards with at least seventeen clues. Research-only multiple-solution boards remain in the studio.

## Source and verification

`engine.js` contains thirty verbatim declarations extracted from the supplied HyperSIRO file, including its puzzle libraries, Sudoku transformations, candidate map, singles, naked pairs, pointing pairs, and claiming. The extraction receipt records the original and extracted hashes. Reproduce with `node tools/larsdoku/port.cjs` from the arcade source tree; it uses the system Acorn JavaScript parser. The complete studio remains available rather than reducing the port to those play helpers.

The play adapter adds a bounded bitmask uniqueness check. The original research checker conservatively treats some long searches as ambiguous; the adapter distinguishes search exhaustion from a proved unique result. No puzzle is accepted after a checking timeout. Gentle puzzles add verified clues to the supplied medium puzzles until singles suffice, then ensure at least 44 clues. All transformations preserve the original Sudoku constraints.

Hints first report conflicting or incorrect entries. Native Larsdoku deductions produce a placement, possibly following native pair/pointing/claiming eliminations. A harder step is explicitly offered as a **checked reveal**, with the full studio available for deeper investigation. Zone scores are heuristic rankings, not probabilities. This port performs no model fitting and does not claim a new WSRF model or browser retraining.

Checks independently verify all 312 supplied puzzle entries, 144 transformed pages, 24 complete gentle solves by singles, source hashes, notes/undo, read-only inspection, invalid saves, browser reloads, and play/studio transfer. The original files remain unchanged in `original/` for comparison.

## Local memory

Digits, notes, up to 160 undo states, and hint usage live in this browser’s `range-arcade:larsdoku:v1` notebook. Export/import carries a notebook between devices; import merges different puzzles and preserves existing progress on duplicates. Closing an open page is explicit, and keeps its completed-page entry. A failed save leaves an export available on the current page. Concurrent edits of the same page stop further saving until reload.

The studio has its own scoped history and theme keys. Local fonts replace external font requests. Arcade navigation, responsive sizing, guarded theme storage, and the original mobile-tab initialization bug are the workbench changes; research algorithms are retained.

Files for modification are delivered directly: [engine.js](engine.js), [model.js](model.js), [game.js](game.js), [style.css](style.css), [studio.html](studio.html), [studio.js](studio.js), and [studio.css](studio.css). There is no compilation or server dependency for the deployed game.
