Skip to the content

Tsunagi繋ぎ

Join each pair with a separate line and fill the board, through fixed levels or seeded puzzles.

Tsunagi means joining in Japanese. About the name

Contents

Explanation

Level data and proof workflow

See how level data, generation and proofs are kept apart, and why the generator is the source of truth.

Keep data separate from rules

The root supplies codes, solvers, generation, gameplay and metadata. Level rows are imported size by size; layouts-only, marks and renumbering entries serve different jobs without requiring every answer.

Keep the writer authoritative

The existing level scripts generate candidates, verify uniqueness and difficulty, preserve played boards and write ordering/migration data where required. They now share tsunagi-level-docs.ts for import examples. Its --refresh operation updates only comments from the same writer; it does not search for boards or reorder them.

Verification has different questions

An answer checker tests legal lines, a solver establishes solution count within a budget, level tests prove shipped rows, and a membership lookup identifies an approved board. Keep those claims separate in host flows. The architecture tree preserves the complete source layout and the README retains measured generation details.

View sourceEdit on GitHubMade from the source of @johnmorrisdotca/tsunagi 1.7.0.