test(offline): real-dictionary move-generator conformance in CI #190

Merged
developer merged 1 commits from feature/offline-realdict-conformance into development 2026-07-06 00:20:58 +00:00
Owner

Phase A (A4), on top of #188/#189. Proves the ported move generator against the FULL shipped dictionaries (SOWPODS + Russian + Erudit) — the deep graphs and complete 26/33-letter alphabets the tiny samples cannot reach.

  • backend/cmd/movegen: a -dawg-dir mode emitting per-variant golden move-gen vectors from the real dawgs (bounded first-move + blank + a deep 7-tile mid-game). Regenerated in CI to /tmp, never committed (like dictgen/validategen) — no dict version pinned into the repo.
  • ui/src/lib/dict/generate.realparity.test.ts: env-gated (DICT_DAWG_DIR + DICT_MOVEGEN_DIR) parity — 9 positions across the three variants match the Go solver exactly; skips cleanly when unset.
  • .gitea/workflows/ci.yaml: the conformance job now generates the movegen golden and points the gated vitest at it. This PR self-exercises the new wiring.

Local verify green: backend build/vet/gofmt/test; UI check + test:unit (432 passed, real-parity skips) + build; real-parity 9/9 with the env set.

Phase A (A4), on top of #188/#189. Proves the ported move generator against the FULL shipped dictionaries (SOWPODS + Russian + Erudit) — the deep graphs and complete 26/33-letter alphabets the tiny samples cannot reach. - `backend/cmd/movegen`: a `-dawg-dir` mode emitting per-variant golden move-gen vectors from the real dawgs (bounded first-move + blank + a deep 7-tile mid-game). Regenerated in CI to `/tmp`, never committed (like dictgen/validategen) — no dict version pinned into the repo. - `ui/src/lib/dict/generate.realparity.test.ts`: env-gated (`DICT_DAWG_DIR` + `DICT_MOVEGEN_DIR`) parity — 9 positions across the three variants match the Go solver exactly; skips cleanly when unset. - `.gitea/workflows/ci.yaml`: the conformance job now generates the movegen golden and points the gated vitest at it. This PR self-exercises the new wiring. Local verify green: backend build/vet/gofmt/test; UI check + test:unit (432 passed, real-parity skips) + build; real-parity 9/9 with the env set.
developer added 1 commit 2026-07-06 00:16:52 +00:00
test(offline): real-dictionary move-generator conformance in CI
CI / changes (pull_request) Successful in 1s
CI / unit (pull_request) Successful in 10s
CI / integration (pull_request) Successful in 15s
CI / ui (pull_request) Successful in 1m8s
CI / conformance (pull_request) Successful in 9s
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 1m38s
a9c8f1ecfe
Phase A (A4): prove the ported move generator (#188) against the FULL shipped
dictionaries, not just the tiny samples — the deep graphs and complete 26/33-letter
alphabets the samples cannot reach.

- backend/cmd/movegen: add a -dawg-dir mode that emits per-variant golden move-gen
  vectors from the real dawgs (a bounded first-move + a blank case + a deep 7-tile
  mid-game position). Regenerated in CI to /tmp, never committed (like the
  dictgen/validategen vectors), so no dictionary version is pinned into the repo.
- ui/src/lib/dict/generate.realparity.test.ts: env-gated (DICT_DAWG_DIR +
  DICT_MOVEGEN_DIR) parity against that golden — 9 positions across scrabble_en /
  scrabble_ru / erudit_ru match the Go solver exactly. Skips cleanly when unset.
- .gitea/workflows/ci.yaml: the conformance job now generates the movegen golden
  and points the gated vitest at it (DICT_MOVEGEN_DIR).
developer force-pushed feature/offline-realdict-conformance from d81d117b54 to a9c8f1ecfe 2026-07-06 00:16:52 +00:00 Compare
owner approved these changes 2026-07-06 00:19:17 +00:00
developer merged commit 543cbe56b9 into development 2026-07-06 00:20:58 +00:00
developer deleted branch feature/offline-realdict-conformance 2026-07-06 00:20:58 +00:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: developer/scrabble-game#190