Nishi FamilyCompare › 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.

Layer 1 · Executive

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.

The unit. 1 u = one measured session-leg. Calibration: the align family -- substrate, engine, gate, seven games, promote and register -- was one leg. A family with a genuinely new state model (cards have hidden information, race games have a randomiser) is estimated at more.
Where we are: 2 of 11 families. Align and sow are live, green and bite-proven. Coverage against the declared population of 117 games is measured by the registry and never asserted: twelve games play today. THE TWO FAMILIES ARE PROVEN TO DIFFERENT STANDARDS AND THAT DIFFERENCE IS THE POINT -- align against the published Tic-Tac-Toe game-tree constant 255168 and a perfect-play draw, sow against seed conservation at all 33798 positions of the Oware tree, because no cheap published count exists for a mancala board. A green is only as strong as what produced it.
Cost to the board games: 6 u. M1: the eight remaining perfect-information families -- sow, race, chess, leap, hunt, domino, paper and Go. These share the board-graph substrate that already exists.
Cost to total coverage: 11 u. M2 adds the hidden-information families, the AI ladder and a playable page per game. Cards are the real work: a deck model, hidden hands and four sub-engines covering 25 registry rows.
Cost to generative emission: 16 u. M3 is the Ludi tier: constraints, self-play evaluation and a search over the ludeme space that proposes games rather than transcribing them.

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

Layer 2 · Roadmap

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

#StageRungPriorityDerivation
FFINISHSow family: mancala (FG1) fgs_sowLIB-GATE-ONLY importers=1imported only by validation organs (gates, tests, benches): wire it into a shipping program
#10.1Chess family: one movement vocabulary (FG3) fgc_move533v=8 m=1 c=15
#20.1Race family: track, randomiser, entry and bearing off (FG2) fgr_race0v=0 m=1 c=20
#30.1Leap family: alquerque and draughts (FG4) fgl_leap0v=0 m=1 c=10
#40.1Hunt family: asymmetric forces (FG5) fgh_tafl0v=0 m=1 c=10
#50.1Domino and paper families (FG8) fgt_match0v=0 m=1 c=20
#60.1Go (FG9) fgo_go0v=0 m=1 c=20
#7laterA playable page per game, emitted (FG10) fge_emit266v=2 m=2 c=15
#8laterPlayability constraints (FG13) fggen_eval100v=1 m=2 c=20
#9laterCard family: deck, hidden hands and four sub-engines (FG6) fgk_trick0v=0 m=1 c=30
#10laterDice family: categories and push-your-luck (FG7) fgd_cat0v=0 m=1 c=10
#11laterExternal referee harness (FG12) fgref_perft0v=0 m=1 c=20
#12laterGenerative emission: search the ludeme space (FG14) fggen_search0v=0 m=1 c=40

Critical path — contract, done-rule, executor, cost

RungCloses withDefinition of done (pre-declared)ExecutorEst.
Sow family: mancala (FG1)fgs_sowOware, 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 REFUSEDOrgan1 u
Race family: track, randomiser, entry and bearing off (FG2)fgr_raceBackgammon, 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]Organ2 u
Chess family: one movement vocabulary (FG3)fgc_moveChess, 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]Organ3 u
Leap family: alquerque and draughts (FG4)fgl_leapDraughts, Alquerque, Felli, Zamma and Awithlaknannai from spec data with forced-capture and maximal-capture flags as spec fields, plus Seega custodial captureOrgan1 u
Hunt family: asymmetric forces (FG5)fgh_taflHnefatafl, 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 addsOrgan1 u
Card family: deck, hidden hands and four sub-engines (FG6)fgk_trickTrick, 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 seeOrgan3 u
Dice family: categories and push-your-luck (FG7)fgd_catYacht, 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-identicallyOrgan1 u
Domino and paper families (FG8)fgt_matchBlock, 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 themOrgan2 u
Go (FG9)fgo_goGo 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]Organ2 u
A playable page per game, emitted (FG10)
after FG1
fge_emitEvery 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 notOrgan3 u
Opponent ladder (FG11)
after FG10
fgai_searchOne 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 confOrgan3 u
External referee harness (FG12)
after FG3
fgref_perftA 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-gradedOrgan2 u
Playability constraints (FG13)
after FG11
fggen_evalTermination, 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 anythingOrgan2 u
Generative emission: search the ludeme space (FG14)
after FG13
fggen_searchA 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 barOrgan4 u

Milestones

MilestoneRungsCumulative
M1 · Every perfect-information family playsFG1,FG2,FG3,FG4,FG5,FG8,FG96 u
M2 · Total coverage, playable, with an opponentFG6,FG7,FG10,FG11,FG1211 u
M3 · Generative emissionFG13,FG1416 u
Layer 3 · Engineering
How this is scored. Every Nishi mark is measured: the generator reads the real organ source on disk and requires the implementing symbol to exist (no self-grading). A watching tag names the organ and symbol contracted to close a gap — the mark flips itself on the next compare beat when that workstream ships, and the 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

CapabilityNishiLudiiOpenSpielFairy-Stockfishboardgame.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 — watching runtime/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].
watching fgc_move
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).
adoption LIB-UNCENSUSED
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.
adoption LIB-GATE-ONLY importers=1
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).
adoption REGISTERED-DARK
PLAYABLE IN A BROWSER: a served page per game with no plugin and no accountOpen — watching runtime/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.
watching fge_emit

Risk register

RiskLikelihood x impactMitigation
A family engine is declared done when its spec parses rather than when its rules are rightcertain x highEvery 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 coveragelikely x highThe 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 datapossible x highLudii 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 namepossible x mediumThe 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 boxlikely x mediumFG11 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.
On these two registers. Rows are declared in the domain's plan file and carry the debt id, which is the join key back to the sovereign debt plane — that plane, not this page, is the authority on state. Reconciling them automatically (the regen reading the plane and refreshing these rows) is a named, owed rung; until it lands, treat an id here as a pointer to look up, not a status to trust.
Honest verdict. The engineering claim is small and true: two families of eleven are shipped and twelve of the 117 games play, adding Dara cost one optional spec field rather than an organ, and Twelve Mens Morris cost three lines of alias rather than a copied board. The two families are deliberately proven to DIFFERENT standards, and that difference is the most useful thing on this board: align is checked against a constant nobody here chose, sow against an invariant that arithmetic forces, because no cheap published count exists for a mancala. A green is only as strong as what produced it and each row says which it holds. The load-bearing result is not a feature, it is a LICENCE finding -- Ludii, the only corpus in the world that has already encoded a thousand traditional games, is CC BY-NC-ND, and NonCommercial reaches use and not merely shipping, so a commercial estate can neither bundle it nor quietly run it as a test oracle, and NoDerivatives means we do not redistribute its files either. Fairy-Stockfish is GPL, so it may only ever run as a separate process and never be linked. That makes an original sovereign implementation the only lawful route to this capability rather than a stylistic preference, and it is why the remaining ten families are build contracts and not an import job. Nothing third-party is imported, executed, linked or redistributed here; every spec was authored from the public-domain rules themselves. The honest gap is the whole right-hand side of the board: no opponent and no served page yet, where boardgame.io ships both.

Person · product · place — not yet measured for this domain

Every compare carries this layer. Declare 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

Beyond a link list. Every reference below resolves twice — the publisher's copy and, where banked, the estate's own non-rottable library mirror with a content pin — and carries its evidence class plus the exact claim on this page it grounds. Keyed marks like [key] in the matrix notes jump here. A dash means honestly absent, never assumed.
  1. [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
  2. [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
  3. [openspiel-games] OpenSpiel available-games table with a per-game tested status publisher · read in our library knowledge/fetched/cmp_folkgames_openspiel_games.md · pin h3dc5fc789986817f0dc1f9fd3ca6f47aaa82bc9942a1ba7bd3dfd7c65a843578 · 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
  4. [openspiel-license] OpenSpiel licence file: Apache License Version 2.0 publisher · read in our library knowledge/fetched/cmp_folkgames_openspiel_license.txt · pin hcfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 · accessed 2026-08-25 · source-readGrounds: LICENCE: whether a rival corpus may be shipped, run, or redistributed by us at all
  5. [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 · pin h5332b6c7cfb8a8983536ddcdc4a6dddf3b9a79ad5f2be07e44fbbd4d59653e2a · accessed 2026-08-25 · source-readGrounds: SCOPE: how many distinct game families the system spans
  6. [fairysf-license] Fairy-Stockfish Copying.txt: GNU General Public License Version 3 publisher · read in our library knowledge/fetched/cmp_folkgames_fairysf_license.txt · pin h0b383d5a63da644f628d99c33976ea6487ed89aaa59f0b3257992deac1171e6b · accessed 2026-08-25 · source-readGrounds: LICENCE: whether a rival corpus may be shipped, run, or redistributed by us at all
  7. [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 · pin h9ef0a43068674b595d8406da3e277ce0550ef9c39640fbb4a018d51cea1bffae · accessed 2026-08-25 · source-readGrounds: PLAYABLE IN A BROWSER: a served page per game with no plugin and no account
  8. [bgio-license] boardgame.io licence file: MIT License publisher · read in our library knowledge/fetched/cmp_folkgames_bgio_license.txt · pin h516bc5dc1560ba43d2097b5f9b4029a23d073ac7feaa94979ac011f4f959620c · accessed 2026-08-25 · source-readGrounds: LICENCE: whether a rival corpus may be shipped, run, or redistributed by us at all
  9. [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 · pin hd820f16dc35c0a755a11491a1a3b5b2710a57008c10909c4462fe77cf647ec68 · 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