Built on four invariants
Lakolam is a Rust workspace of 76 crates —65 generators over shared foundations for geometry, grids, constraint solving and rendering — verified by1,452 tests. These four rules held from the first commit and explain most of what the engine can promise.
01Determinism
(generator, version, spec, seed) → byte-identical output, forever. Randomness is one seeded stream, derived per subsystem, so adding a feature never changes existing pages.
02One display list
Generators emit a Scene; backends render it to SVG, PNG, JPEG or PDF. No generator ever writes SVG strings or touches an encoder — which is why every format looks the same.
03Solvers are mandatory
Every puzzle ships with a solver that proves uniqueness and scores difficulty by the techniques required. A generator without a solver does not merge.
04Sizes are data
Output dimensions live in profile documents, not in code: KDP trim sizes with bleed, social canvases, web previews — add a JSON file, get a format.
What that buys you
- Publishers: generate a 200-page puzzle book with answer keys in one command, validate every page, and regenerate any of them identically for a reprint.
- Educators: difficulty ratings you can trust — "easy" means solvable with singles, not "the RNG felt gentle today".
- Developers: a clean
Generatortrait, a shared constraint engine, and a registry — adding the 56th generator is a crate, a solver and an INFO.md.
See it run
Both studios run the whole engine in your browser — every generator, every export format, nothing uploaded. Pick a generator, change a spec, watch the page redraw from the seed.
Open the studio