Lakolam

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 cleanGenerator trait, 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