Backend TODO

Підтверджені backend-знахідки, які не належать до tuning або publishing Classic Fruits 3×3 v2. Runtime source of truth: /Users/admin/kiro/backend.

Urgent — Classic Fruits 3×3 v1 max-win drift

  • Узгодити migrations/009_seed_classic_fruits_3x3.sql із frozen v1 config.
  • Проблема: seed-міграція записує MaxWinMultiplier: 500, frozen YAML — 65.0.
  • Вплив: чинний рядок із БД і session-service повідомляють клієнту неправильний max_win_multiplier для v1.
  • Критерій закриття: DB-backed v1, frozen YAML і bootstrap/session contract повертають одне підтверджене значення; v1 canonical identity та грошова математика не змінені ненавмисно; додано regression test для seed/read path.

Follow-up — forced-seed replay

  • Виправити cmd/replay, щоб debug-раунди відтворювалися тим самим seed contract, яким були виконані.
  • Проблема: CLI викликає RunRound(seed, round_index), тоді як forced-seed/debug spin виконується через RunRoundRaw; результатом є Match: false для коректного debug-раунду.
  • Критерій закриття: persisted forced-seed round відтворюється через CLI з Match: true; звичайний replay не регресує; тест фіксує обидва seed paths.

Follow-up — replay response violates OpenAPI

  • Заповнювати spin.layout у replaySpinBlock.
  • Проблема: replay повертає "layout": null, хоча SpinBlock.layout є required у OpenAPI.
  • Критерій закриття: live і replay responses мають однакову орієнтацію та повний layout; handler contract test валідовує replay response проти OpenAPI.