NISHI tic-tac-toe · C0 · bits-up NishiLang (host+render+state+AI all bits-up)

Source-of-truth: nishi-core/nxc2/runtime/nx_tictactoe.nx (state machine + AI) + nx_tictactoe_render.nx (HTML emit + click dispatch IN NISHILANG) → nxc2 --target watnx_tictactoe.wasm (~18 KB).

JS in this page: only the <script> below (~12 LOC mount call) + the shared /_nishi/nishi-host.js (~120 LOC IRREDUCIBLE bridge) used by every Nishi game. Zero per-game JS rendering logic. HTML is emitted by NishiLang writing to sentinel fd 99; host captures bytes + sets innerHTML. Click events route via data-action through NishiLang nx_ttt_action.

Substrate smokes: 12/12 state-machine + 8/8 joy-record + 1 HTML-contract green under qemu-riscv64. Cross-browser playwright (Chromium + Firefox + WebKit): 54/54 with bit-exact state-hash determinism.

No tracking. No account. No third-party at runtime.