Nishi Family › Compare › Folk Games
Nishi Compare · measured, not asserted
Folk Games
Nishi vs the field — every Nishi cell is measured against real organ source at emit time; each gap names the watch contract that will close it.
The public-domain traditional games of the world -- board, tile, card and dice -- as ONE data-driven emitter rather than one program per game. A game is a ludeme spec parsed into a board graph; the family engine plays it. Measured 2026-08-25: the ALIGN family is live and green at 23 of 23 teeth, bite-proven by mutation twice over -- once against the rules library and once against the search -- its move generator validated against the published Tic-Tac-Toe game-tree constant of 255168, carrying Tic-Tac-Toe, Three Mens Morris, Achi, Nine Mens Morris, Morabaraba, Twelve Mens Morris and Dara plus Gomoku from 5356 bytes of spec data and no per-game code -- eight of the registry's 117 games, and Twelve Mens Morris cost three lines because an alias points it at Morabaraba's rules rather than copying them. It is natively playable against an alpha-beta opponent that draws itself at Tic-Tac-Toe, the published perfect-play result. The SOW family landed 2026-08-27 at 12 of 12: Oware, Kalah, Congkak and Pallanguzhi on one engine, with seeds conserved at all 33798 positions of the Oware tree to depth six. The RACE track family landed the same day at 14 of 14: Backgammon and Nard, opening at the published 167 pips measured on BOTH sides. THREE families of eleven, FOURTEEN of the 117 games, all three bite-proven, and each proven to the STRONGEST standard its game admits rather than to one house standard -- a published game-tree count where one exists, a published opening constant where one exists, an exhaustive invariant where neither does. Eight families and the served browser page remain as watch contracts.
Where we are. One family of eleven is live and natively playable. nx_folkgame_lib parses a ludeme spec into a board graph with every array sized from the spec rather than from a cap, and the align engine plays Tic-Tac-Toe, Three Mens Morris, Achi, Nine Mens Morris, Morabaraba, Twelve Mens Morris, Dara and Gomoku from 5356 bytes of data with no per-game code -- Twelve Mens Morris through an alias at Morabaraba rather than a copied board. nx_folkgame_align_gate is GREEN at 23 of 23 through the served API and bite-proven twice, its move generator validated against the published Tic-Tac-Toe game-tree constant 255168 and its parser proven to refuse an unknown key, a lineless game, a short line and an alias chain. nx_folkgame_play is a NATIVE binary from our own toolchain with an alpha-beta opponent whose depth and weights are conf rows; playing itself at full depth it draws Tic-Tac-Toe, the published perfect-play result. The population is declared: 117 games, 45 distinct engine symbols, 11 families, of which 8 games play today. Ten families and the served browser page are open.
Where we need to go. Total coverage of the declared population -- all 117 games playable in a browser against an opponent on nishifamily.com/games, each one a spec row set rather than an organ -- and then the tier the corpus exists to unlock: SEARCHING the ludeme space under playability constraints to emit games nobody has played, the result Browne's Ludi system demonstrated when it evolved Yavalath into a commercially published game. The 117 are not the product; they are the proof that the vocabulary is broad enough to generate.
Research bar. Ludii is measured on the reference general game system for traditional games, games described in ludemes rather than coded, developed under the ERC Digital Ludeme Project [@ludii-readme]. Theirs: CC BY-NC-ND 4.0 and a JDK 8 or higher runtime requirement [@ludii-license] [@ludii-readme]. Ours: original NishiLang at license_tier ORIGINAL, no runtime to install, and therefore shippable where Ludii is not. NAMED HERE AS A BAR AND NOTHING ELSE: we do not bundle it, do not run it, and do not mirror its files, because NonCommercial reaches use and not merely distribution. The referees in FG12 are OpenSpiel under Apache 2.0 and Fairy-Stockfish under GPL-3 as a separate process, both of which permit exactly that.
Research bar. OpenSpiel is measured on a broad hand-coded game set under Apache 2.0 that publishes a per-game tested status of thoroughly-tested, lightly-tested or known-issues [@openspiel-games] [@openspiel-license]. Theirs: Backgammon thoroughly-tested and an m,n,k-game covering the align family lightly-tested. Ours: our align family is validated against an exhaustive published constant rather than graded by its own author, and our per-game status is the registry.
Research bar. Fairy-Stockfish is measured on a chess-variant engine covering Xiangqi, Shogi, Janggi and Makruk plus user-defined variants through src/variants.ini [@fairysf-readme]. Theirs: GPL-3 [@fairysf-license], so it may run as a separate-process oracle and may never be linked into a served artifact. Ours: the chess family is a watch contract; Fairy-Stockfish is its intended perft oracle rather than its replacement.
Research bar. boardgame.io is measured on an MIT engine for turn-based games in JavaScript shipping state sync, realtime multiplayer, a lobby, automatically generated bots and time-travel game logs [@bgio-readme] [@bgio-license]. Theirs: 0.50.2 pinned live from the npm registry [@bgio-npm]. Ours: it beats us outright on delivery: we have no served page and no opponent, which are rungs FG10 and FG11, and it is the right bar for both.
10 of 12 capabilities measured|0 of them measured exceeds|2 open|coverage 833/1000|adoption 7 full / 3 partial
Do this next — computed by the ranker, never chosen by a seat
Order from nx_compare_rank (nx_dr_ocm: (deficit + cost-of-delay + option + enables) x sponsor x self-sufficiency x momentum / cost). FINISH rows are rungs whose symbol is present but whose organ is short of full adoption: the cheapest closures on this board, listed before any new work. Stamp: # asof=1787883590 domain=folkgames target_version=0.1 rungs=14 done=2 open=12 finish=1 ranker=nx_dr_ocm
| # | Stage | Rung | Priority | Derivation |
|---|---|---|---|---|
| F | FINISH | Sow family: mancala (FG1) fgs_sow | LIB-GATE-ONLY importers=1 | imported only by validation organs (gates, tests, benches): wire it into a shipping program |
| #1 | 0.1 | Chess family: one movement vocabulary (FG3) fgc_move | 533 | v=8 m=1 c=15 |
| #2 | 0.1 | Race family: track, randomiser, entry and bearing off (FG2) fgr_race | 0 | v=0 m=1 c=20 |
| #3 | 0.1 | Leap family: alquerque and draughts (FG4) fgl_leap | 0 | v=0 m=1 c=10 |
| #4 | 0.1 | Hunt family: asymmetric forces (FG5) fgh_tafl | 0 | v=0 m=1 c=10 |
| #5 | 0.1 | Domino and paper families (FG8) fgt_match | 0 | v=0 m=1 c=20 |
| #6 | 0.1 | Go (FG9) fgo_go | 0 | v=0 m=1 c=20 |
| #7 | later | A playable page per game, emitted (FG10) fge_emit | 266 | v=2 m=2 c=15 |
| #8 | later | Playability constraints (FG13) fggen_eval | 100 | v=1 m=2 c=20 |
| #9 | later | Card family: deck, hidden hands and four sub-engines (FG6) fgk_trick | 0 | v=0 m=1 c=30 |
| #10 | later | Dice family: categories and push-your-luck (FG7) fgd_cat | 0 | v=0 m=1 c=10 |
| #11 | later | External referee harness (FG12) fgref_perft | 0 | v=0 m=1 c=20 |
| #12 | later | Generative emission: search the ludeme space (FG14) fggen_search | 0 | v=0 m=1 c=40 |
Critical path — contract, done-rule, executor, cost
| Rung | Closes with | Definition of done (pre-declared) | Executor | Est. |
|---|---|---|---|---|
| Sow family: mancala (FG1) | fgs_sow | Oware, Kalah, Congkak and Pallanguzhi play from spec data with single-lap sowing and capture; Bao and Omweso add multi-lap. Gate carries a seed-conservation tooth -- seeds are never created or destroyed by a sow -- and a neg-control that a spec declaring more seeds than pits is REFUSED | Organ | 1 u |
| Race family: track, randomiser, entry and bearing off (FG2) | fgr_race | Backgammon, Senet, the Royal Game of Ur, Pachisi and Patolli play from spec data. Done rule is an external check: our Backgammon opening-roll move counts match OpenSpiel's thoroughly-tested Backgammon over an enumerated set of positions [@openspiel-games] | Organ | 2 u |
| Chess family: one movement vocabulary (FG3) | fgc_move | Chess, Shatranj, Chaturanga, Xiangqi, Janggi, Shogi and Makruk from one leaper-rider-hopper vocabulary with palace, river, promotion zone and drops. Done rule is PERFT AGAINST FAIRY-STOCKFISH: our node counts match its published perft to depth 5 on each variant, run as a separate process and never linked [@fairysf-readme] | Organ | 3 u |
| Leap family: alquerque and draughts (FG4) | fgl_leap | Draughts, Alquerque, Felli, Zamma and Awithlaknannai from spec data with forced-capture and maximal-capture flags as spec fields, plus Seega custodial capture | Organ | 1 u |
| Hunt family: asymmetric forces (FG5) | fgh_tafl | Hnefatafl, Tablut, Brandubh, Bagh Chal, Fox and Geese, Aadu Puli Attam. Two goal sets in one game -- king escape versus encirclement -- is the new vocabulary this family adds | Organ | 1 u |
| Card family: deck, hidden hands and four sub-engines (FG6) | fgk_trick | Trick, shed, meld and bank sub-engines over one deck model covering 25 registry rows from Whist to Koi-Koi. Hidden information is the new state model; the gate proves a player's legal moves never depend on a card they cannot see | Organ | 3 u |
| Dice family: categories and push-your-luck (FG7) | fgd_cat | Yacht, Generala, Farkle, Liar's Dice, Mia, Bunco, Craps, Cho-Han and Lu-Lu. The gate asserts the category scoring table is data and that a fixed seed replays bit-identically | Organ | 1 u |
| Domino and paper families (FG8) | fgt_match | Block, Draw and All Fives dominoes plus Dots and Boxes, Sprouts, Hex, Nim and Hangman. Several are near-bespoke and the plan says so rather than pretending one engine covers them | Organ | 2 u |
| Go (FG9) | fgo_go | Go is declared bespoke in the registry and gets its own engine: liberties, capture, ko and area scoring. Done rule is agreement with OpenSpiel's Go on scored terminal positions [@openspiel-games] | Organ | 2 u |
| A playable page per game, emitted (FG10) after FG1 | fge_emit | Every green game gets a browser page through the existing lane: a base-relative integer core conforming to the estate init tick render click score contract, compiled to wasm and framed by nx_game_page_emit, the same path Sudoku already ships on. Done rule is that /games lists every game whose family gate is green and no game whose gate is not | Organ | 3 u |
| Opponent ladder (FG11) after FG10 | fgai_search | One search core -- alpha-beta with iterative deepening for perfect-information families, determinized search for hidden-information ones -- with per-game depth and time budgets as conf rows and never as literals, admitted through the estate load governor so a game never competes with a build. Done rule is that the opponent beats a random player at a published rate per game and that its budget is readable from conf | Organ | 3 u |
| External referee harness (FG12) after FG3 | fgref_perft | A build-lane harness that runs Fairy-Stockfish and OpenSpiel as separate processes and diffs their node counts against ours per game. Nothing borrowed enters a served artifact; the harness exists so a coverage claim is refereed rather than self-graded | Organ | 2 u |
| Playability constraints (FG13) after FG11 | fggen_eval | Termination, branching factor, game length, drawishness and absence of a first-player forced win, measured by self-play over a spec. This is the evaluator Ludi used and it must exist before any search can propose anything | Organ | 2 u |
| Generative emission: search the ludeme space (FG14) after FG13 | fggen_search | A search over spec space under FG13's constraints that proposes games the corpus does not contain, with a self-play referee and a human-readable rule sheet per candidate. Done rule is one novel game that passes every constraint and survives a judge panel; the Yavalath result is the bar | Organ | 4 u |
Milestones
| Milestone | Rungs | Cumulative |
|---|---|---|
| M1 · Every perfect-information family plays | FG1,FG2,FG3,FG4,FG5,FG8,FG9 | 6 u |
| M2 · Total coverage, playable, with an opponent | FG6,FG7,FG10,FG11,FG12 | 11 u |
| M3 · Generative emission | FG13,FG14 | 16 u |
comparewatch- plane row flips with it. The flip is necessary, not sufficient: it proves the symbol exists, never that the capability is good. The bar is the rung's pre-declared done-rule, proven by its gate — a symbol shipped without the behaviour behind it is a defect, and the flip is exactly what makes that defect visible instead of quiet. Competitor marks record documented capability presence — presence, not depth or scale. Adoption is measured too: every measured row carries where its organ stands on the estate's ladder (source → built → promoted → registered → invoked; libraries by importer reach minus validation importers; gates by the execution surfaces that run them). A row is fully adopted only at the top of its ladder; anything short is tagged partial with the exact remedy, so a build nobody promoted can no longer read as shipped. Census stamps: importers asof 1787849099, gate census asof 1787855507 (unix seconds; -1 = census absent).Capability matrix — measured against source
◉ leads / measured exceed● present◐ partial○ absent · click any capability for its evidence
| Capability | Nishi | Ludii | OpenSpiel | Fairy-Stockfish | boardgame.io |
|---|---|---|---|---|---|
RULES ARE DATA: a game is a ludeme spec parsed into a board graph, never an organ per gameMeasured:fg_parse exists in runtime/nx_folkgame_lib.nx, verified at emit. Ludii is a general game system whose games are described in ludemes rather than coded [ludii-readme] and leads here. OpenSpiel implements each game as code and publishes a per-game tested status rather than a rule description [openspiel-games]. Fairy-Stockfish is partly data-driven through its variants.ini user-defined variant file but only within a chess-shaped board [fairysf-readme]. boardgame.io asks you to write JavaScript functions describing how state changes on a move [bgio-readme], which is code per game. Ours parses a spec into a graph plus a line set. Adoption: LIB-WIRED importers=4 nonval=3 — fully adopted (top of its ladder). | ● | ◉ | ○ | ◐ | ○ |
| LICENCE | |||||
whether a rival corpus may be shipped, run, or redistributed by us at allMeasured:fg_parse_named exists in runtime/nx_folkgame_lib.nx, verified at emit. THE POSTURE, STATED ONCE AND TRUE OF EVERY ROW ON THIS BOARD: no third-party game corpus is imported, executed, linked or redistributed by this estate, and every spec we ship was authored from the public-domain rules themselves. Ludii is Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 [ludii-readme] [ludii-license]. NonCommercial reaches USE, not merely shipping, so we do not run it -- not as a bundled dependency and not as a private test oracle either. NoDerivatives plus NonCommercial reach REDISTRIBUTION, so its files are cited by URL and are the only rival documents on this board that we do not mirror. OpenSpiel is Apache 2.0 [openspiel-license] and boardgame.io is MIT [bgio-license], both permissive and both mirrored. Fairy-Stockfish is GPL-3 [fairysf-license]: usable and redistributable, but copyleft, so it may only ever run as a SEPARATE PROCESS in the build lane and must never be linked into a served artifact. Ours is original NishiLang at license_tier ORIGINAL. Adoption: LIB-WIRED importers=4 nonval=3 — fully adopted (top of its ladder). | ● | ○ | ◉ | ● | ◉ |
| SCOPE | |||||
how many distinct game families the system spansMeasured:fg_moves exists in runtime/nx_folkgame_lib.nx, verified at emit. Ludii is a general game system by construction [ludii-readme]. OpenSpiel spans a broad hand-coded set including Backgammon at its thoroughly-tested grade and an m,n,k-game covering the align family at its lightly-tested grade [openspiel-games]. Fairy-Stockfish is chess variants only, by its own README [fairysf-readme]. boardgame.io is any turn-based game but you implement each one [bgio-readme]. Ours declares eleven families of which one is live. Adoption: LIB-WIRED importers=4 nonval=3 — fully adopted (top of its ladder). | ● | ◉ | ● | ○ | ● |
| COVERAGE | |||||
the population of games is declared as data so total coverage is measurableMeasured:fga_games exists in runtime/nx_folkgame_align_gate.nx, verified at emit. OpenSpiel publishes its population WITH a per-game status of thoroughly-tested, lightly-tested or known-issues [openspiel-games], which is the practice worth copying and the reason this board carries a registry rather than a headline. Ludii ships its corpus as the declaration [ludii-readme]. Fairy-Stockfish lists its variants in its README [fairysf-readme]. boardgame.io is a framework and ships no game corpus at all [bgio-readme]. Ours is 117 rows with the family engine named per row. Adoption: GATE:LIVE trial=GREEN — fully adopted (top of its ladder). | ● | ◉ | ◉ | ● | ○ |
GENERATED RULE SETS: a line set stated as a rule and expanded, never enumerated by handMeasured:fg_fill_gridlines exists in runtime/nx_folkgame_lib.nx, verified at emit. A 15 by 15 five-in-a-row board carries 572 lines and a 6 by 5 three-in-a-row board carries 38 orthogonal or 62 with diagonals. Ours states the rule once and expands it, and the gate counts one board both ways so a mode that was silently ignored fails. Ludii composes rules from ludemes [ludii-readme]. OpenSpiel and Fairy-Stockfish are PART: each parameterises one family -- the m,n,k-game [openspiel-games] and variants.ini [fairysf-readme] -- rather than generating rule sets generally. boardgame.io has no such layer [bgio-readme]. Adoption: LIB-WIRED importers=4 nonval=3 — fully adopted (top of its ladder). | ● | ◉ | ◐ | ◐ | ○ |
| REFUSAL | |||||
a malformed rule set is refused by name rather than silently ignoredMeasured:fg_keyis exists in runtime/nx_folkgame_lib.nx, verified at emit. Ours refuses an unknown spec key, a game with no line and a line shorter than its declared run, each by name, and three negative controls prove it. THE RIVAL CELLS HERE ARE INDEX-LEVEL AND NOT WITNESSED BEHAVIOUR: Ludii and Fairy-Stockfish are coded 1 because each parses a declared game description language [ludii-readme] [fairysf-readme] and a parser necessarily rejects some input, while OpenSpiel and boardgame.io are coded 0 because a game is code there [openspiel-games] [bgio-readme] so a malformed game is a compile or runtime error rather than a named rule refusal. None of these four was observed refusing anything. Adoption: LIB-WIRED importers=4 nonval=3 — fully adopted (top of its ladder). | ● | ● | ○ | ● | ○ |
| CHESS family | |||||
one piece-movement vocabulary over a board with palaces, rivers and dropsOpen — watchingruntime/nx_folkgame_lib.nx : fgc_move, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. Chess, Shatranj, Chaturanga, Xiangqi, Janggi, Shogi, Makruk and Minixiangqi are eight registry rows over one movement vocabulary. Fairy-Stockfish leads and is the intended perft oracle for this family, supporting Xiangqi, Shogi, Janggi and Makruk plus user-defined variants [fairysf-readme]. Ludii covers it as a general system [ludii-readme]; OpenSpiel carries chess and variants as coded games [openspiel-games]; boardgame.io ships no chess [bgio-readme]. | ○ | ◉ | ● | ◉ | ○ |
| RACE family | |||||
a track, a randomiser, entry and bearing off, hitting and blockingMeasured:fgr_moves exists in runtime/nx_folkgame_race_lib.nx, verified at emit. TRACK SUB-FAMILY LANDED 2026-08-27, gate 14 of 14. Backgammon and Nard play from spec data, differing in exactly one flag. PROVEN AGAINST A PUBLISHED CONSTANT AND CHECKED FROM BOTH ENDS: the opening position is 167 pips per side, and BOTH players are asserted on it, because one side alone would still read 167 under a reversed direction or an off-by-one in the indexing. Checkers conserved across 128 plies of a played-out race, and the seeded randomiser lives inside the saved position so a replay reproduces the die that follows it -- proven by a same-seed match AND a different-seed divergence, so a die ignoring its seed cannot pass. SCOPE STATED, NOT IMPLIED: this reaches the eight linear-track games of the twenty-two. The cross-and-circle boards (Pachisi, Ludo, Yut Nori, Patolli) and the spiral and ladder boards (Goose, Snakes and Ladders) are separate rungs, and a family row that let those be read as covered would be the claim this board exists to prevent. OpenSpiel carries Backgammon at its thoroughly-tested grade and is the oracle for the modern end [openspiel-games]. Fairy-Stockfish has no race games [fairysf-readme] and boardgame.io ships none [bgio-readme]. Adoption: LIB-UNCENSUSED — PARTIAL: a library absent from the import-graph census (younger than the last eco-graph build, or unreachable from buildroot/runtime). | ● | ◉ | ◉ | ○ | ○ |
| SOW family | |||||
mancala as pits, seeds, laps and captureMeasured:fgs_sow exists in runtime/nx_folkgame_sow_lib.nx, verified at emit. LANDED 2026-08-27, gate 12 of 12. Oware, Kalah, Congkak and Pallanguzhi play from spec data on one engine: sowing that skips the opponent's store, multi-lap relay with a ceiling DERIVED from the position so a cyclic spec cannot hang it, Oware's count-capture with its backward walk, Kalah's empty-pit capture and its extra-turn-on-own-store, and Oware's feeding rule which may never forbid every move. PROVEN BY AN EXHAUSTIVE INVARIANT, NOT A PUBLISHED COUNT: seeds are conserved at all 33798 positions of the Oware tree to depth six, zero violations, and the checker is proven able to fail. THE HONEST GAP IS NAMED: unlike the align family's 255168 there is no cheap published constant here -- Oware was solved across 889 billion positions -- so conservation proves the arithmetic and NOT that the capture rules match Oware as played. OpenSpiel grades its own Oware THOROUGHLY-TESTED [openspiel-games] and cross-checking against it is the open rung. Ludii covers mancala as a general system [ludii-readme]; neither Fairy-Stockfish nor boardgame.io has any [fairysf-readme] [bgio-readme]. Bao and the four-row boards remain: their multi-lap rules are the hard case. Adoption: LIB-GATE-ONLY importers=1 — PARTIAL: imported only by validation organs (gates, tests, benches): wire it into a shipping program. | ● | ◉ | ◉ | ○ | ○ |
| OPPONENT | |||||
a bot that can actually play the gameMeasured:fgai_search exists in runtime/nx_folkgame_ai_lib.nx, verified at emit. LANDED 2026-08-25 and still LAST of five, which is why the cells are unchanged. Alpha-beta negamax over the same generator the gate validated, with depth and weights as conf rows. Proven by an external constant rather than self-graded: playing ITSELF at full depth it draws Tic-Tac-Toe, the published perfect-play result, and a mutation bite of this very file was KILLED so the tooth is not vacuous. Honest limits: the evaluation is material only, there is no repetition detection, and the Morris depth is a strength dial not a solve. Ludii ships an AI module [ludii-readme]; OpenSpiel exists to build agents [openspiel-games]; Fairy-Stockfish is a Stockfish derivative and strong by construction [fairysf-readme]; boardgame.io generates bots automatically [bgio-readme] [bgio-npm]. All four are ahead. Adoption: LIB-WIRED importers=2 nonval=1 — fully adopted (top of its ladder). | ● | ◉ | ◉ | ◉ | ◉ |
PLAYABLE NATIVELY: a binary from our own toolchain that a person can sit down and playMeasured:fgp_render exists in runtime/nx_folkgame_play.nx, verified at emit. The operator's standing correction is the reason this row exists: an internal GREEN gate is not a thing anyone can open and play. nx_folkgame_play is a NATIVE x86 binary from nx_cc and nxasm_x86 with no gcc, no WebAssembly, no browser and no borrowed VM in the path -- it renders the board from the (x,y) each cell carries, takes cell ids, and plays the alpha-beta opponent. Fairy-Stockfish leads: a native engine binary is exactly what it is [fairysf-readme]. Ludii is a playable Java desktop application, so it counts, but it requires a JDK [ludii-readme]. OpenSpiel is a research library you drive from Python [openspiel-games]. boardgame.io is browser-only and ships no native binary [bgio-readme]. Adoption: REGISTERED-DARK — PARTIAL: callable, authorised, no MCP invocation on record (a direct fork logs the runner, so this is not proof it never ran); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked). | ● | ● | ● | ◉ | ○ |
PLAYABLE IN A BROWSER: a served page per game with no plugin and no accountOpen — watchingruntime/nx_folkgame_lib.nx : fge_emit, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. boardgame.io leads outright: it is an engine for turn-based games in JavaScript with multiplayer and a lobby [bgio-readme]. Ludii is a Java desktop application requiring a JDK [ludii-readme]. OpenSpiel is a C++ and Python research library [openspiel-games]. Fairy-Stockfish is coded 0 from the mirrored README, which describes UCI, UCCI, USI and CECP protocols for desktop GUIs and does not witness a browser build [fairysf-readme] -- that is the limit of the evidence held, not a claim that none exists. Ours is the open contract: seven games are green and none is served. | ○ | ○ | ○ | ○ | ◉ |
Risk register
| Risk | Likelihood x impact | Mitigation |
|---|---|---|
| A family engine is declared done when its spec parses rather than when its rules are right | certain x high | Every family gate must carry at least one EXTERNAL constant or external-engine agreement, the way the align family carries 255168. A gate whose only teeth are shape checks is not a proof and the plan names the oracle per rung. |
| The registry count is read as coverage | likely x high | The registry declares 117 games and the census reports played versus declared. The board prints both and never the population alone; seven of 117 is the honest number today. |
| Borrowed rules leak into shipped data | possible x high | Ludii is BY-NC-ND [@ludii-license] and Fairy-Stockfish is GPL-3 [@fairysf-license]. Both are separate-process referees in the build lane only. No third-party corpus is imported and every spec here is authored from the public-domain rules. |
| A trademarked name ships as a product name | possible x medium | The registry carries a name_status column: three rows are tm-risk and three tm-elsewhere. Yahtzee ships as Yacht and Generala, Battleship as Salvo, Barricade as Blocker. The emitter reads the title from the registry so a rename is data. |
| An opponent search saturates the box | likely x medium | FG11 budgets are conf rows admitted through the estate load governor, which already refused a build during this session and is the same control. A game that cannot get admission degrades to a weaker opponent and says so rather than queueing. |
Person · product · place — not yet measured for this domain
knowledge/compare/folkgames.ppp (rows surface|nishi or c1..c4|label|url|connect naming OUR live surface and each rival's front door), run nx_ppp_probe domain folkgames, and this section fills itself on the next beat: the same ruler on both sides — privacy and CX (third-party hosts, tracker classes, cookies, security headers), design and longevity (design hygiene, computed WCAG contrast, render-blocking resources, unsized media, script weight, theme and motion queries), findability (landmarks, skip link, on-site search, breadcrumb, headings, internal links).References
- [ludii-readme] The Ludii General Game System README, Cameron Browne and the ERC Digital Ludeme Project, read live 2026-08-25 and deliberately not mirrored publisher · accessed 2026-08-25 · source-readGrounds: RULES ARE DATA: a game is a ludeme spec parsed into a board graph, never an organ per game
- [ludii-license] Ludii licence file read live 2026-08-25: Creative Commons Attribution-NonCommercial-NoDerivatives 4.0, and deliberately not mirrored because redistribution is the condition it restricts publisher · accessed 2026-08-25 · source-readGrounds: LICENCE: whether a rival corpus may be shipped, run, or redistributed by us at all
- [openspiel-games] OpenSpiel available-games table with a per-game tested status publisher · read in our library
knowledge/fetched/cmp_folkgames_openspiel_games.md· pinh3dc5fc789986817f0dc1f9fd3ca6f47aaa82bc9942a1ba7bd3dfd7c65a843578· accessed 2026-08-25 · source-readGrounds: RULES ARE DATA: a game is a ludeme spec parsed into a board graph, never an organ per game - [openspiel-license] OpenSpiel licence file: Apache License Version 2.0 publisher · read in our library
knowledge/fetched/cmp_folkgames_openspiel_license.txt· pinhcfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30· accessed 2026-08-25 · source-readGrounds: LICENCE: whether a rival corpus may be shipped, run, or redistributed by us at all - [fairysf-readme] Fairy-Stockfish README naming its regional variants and its variants.ini configuration publisher · read in our library
knowledge/fetched/cmp_folkgames_fairysf_readme.md· pinh5332b6c7cfb8a8983536ddcdc4a6dddf3b9a79ad5f2be07e44fbbd4d59653e2a· accessed 2026-08-25 · source-readGrounds: SCOPE: how many distinct game families the system spans - [fairysf-license] Fairy-Stockfish Copying.txt: GNU General Public License Version 3 publisher · read in our library
knowledge/fetched/cmp_folkgames_fairysf_license.txt· pinh0b383d5a63da644f628d99c33976ea6487ed89aaa59f0b3257992deac1171e6b· accessed 2026-08-25 · source-readGrounds: LICENCE: whether a rival corpus may be shipped, run, or redistributed by us at all - [bgio-readme] boardgame.io README: an engine for creating turn-based games in JavaScript, listing multiplayer, lobby, automatically generated bots and time-travel logs publisher · read in our library
knowledge/fetched/cmp_folkgames_bgio_readme.md· pinh9ef0a43068674b595d8406da3e277ce0550ef9c39640fbb4a018d51cea1bffae· accessed 2026-08-25 · source-readGrounds: PLAYABLE IN A BROWSER: a served page per game with no plugin and no account - [bgio-license] boardgame.io licence file: MIT License publisher · read in our library
knowledge/fetched/cmp_folkgames_bgio_license.txt· pinh516bc5dc1560ba43d2097b5f9b4029a23d073ac7feaa94979ac011f4f959620c· accessed 2026-08-25 · source-readGrounds: LICENCE: whether a rival corpus may be shipped, run, or redistributed by us at all - [bgio-npm] boardgame.io npm latest registry entry, read live for the pinned version publisher · read in our library
knowledge/fetched/cmp_folkgames_bgio_npm.json· pinhd820f16dc35c0a755a11491a1a3b5b2710a57008c10909c4462fe77cf647ec68· accessed 2026-08-25 · mirrored-indexGrounds: OPPONENT: a bot that can actually play the game
generated by nx_swcompare_matrix (sovereign NishiLang organ) from knowledge/compare/folkgames.matrix · every Nishi cell verified against organ source at emit time · watch cells re-measured on every compare beat · zero JS, zero trackers