Critical Review

Critical Review — suika

  • Reviewed: 2026-08-16
  • Reviewer model: GLM 5.2 via the Experiments ByJTT Agent (temperature 0, independent of builder)
  • Builder model: deepseek-v4-flash (original build) + iterative fixes
  • Objective verification: 20/20 checks passed + 29/29 independent harness checks

Process & bias controls

Independent critic, fresh context, temperature 0, under the ByJTT Gauntlet (Principle 10: execution-based review). The real game.js and test suite were reconstructed verbatim into the sandbox and executed — no claim taken on trust. An independent harness (29 checks) stressed the defect classes with a seeded RNG, a controllable clock, and a recording canvas context.

Prior passes

  • 4.3 → 5.9 → 6.4 → 5.3 → 5.8 → 6.2 → 6.6 → 6.75 → 6.7 → 7.05 KEEP → 7.10 KEEP

Verdict: KEEP — ships

Average 7.10 ≥ 7.0 gate; 7/7 deterministic checks PASS, 0 FAIL, 0 PARTIAL — the first pass with a fully clean deterministic board. New high-water mark.

Scores

  • correctness: 8/10
  • fidelity: 6.5/10
  • twist: 7.5/10
  • ux: 7.5/10
  • mobile: 7/10
  • accessibility: 7/10
  • performance: 7/10
  • security: 8/10
  • docs: 7.5/10
  • originality: 5/10

Deterministic checks

  • It runs / core loop playable — PASS. 20/20 shipped tests at real dt; false-game-over class (reviews 4-9) stays dead across edge/rapid sweeps.
  • Twist real — PASS (upgraded). Combo chaining now tested in-suite with a controllable clock (was structurally untestable — stub clock constant 0). Boundary verified at ±1 ms: +1999 ms → x2, +2000 ms → reset; x9 cap holds live across 10 rapid merges; cascades and same-tick multi-merges chain.
  • Mobile-first — PASS. viewport, DPR-crisp canvas, touch-action:none, pointer-by-identifier, keyboard, reduced-motion, 320 px.
  • Attribution correct — PASS. Clear Sans Apache 2.0 (license present); fruit art + icons original vector/emoji.
  • Documentation honest — PASS. Build log matches the build; test count accurate; losability claim in range (median ~90-94 drops, 20-seed sweep).
  • Verification exists — PASS (upgraded). 20/20 shipped; combo-window integration in-suite; contrasts recomputed AA. Residual: no headless-browser smoke (acknowledged).
  • No dead weight — PASS. No stale files, no removed symbols, no unused features.

The headline finding this pass

The 10th review's #1 ask — combo-window integration test in the shipped suite — is done and paid off immediately: the test exposed a latent bug where lastMergeAt initialized to 0 (falsy) broke the combo chain if the first merge happened at t=0. Fixed (-1), and independently confirmed by patching the source back and reproducing the failure.

Reference used

The original Suika Game / Watermelon Game (tansuke / Aladdin X) — commercial; fruit-merge mechanics generic and not copyrightable. No MIT-licensed reference clone exists, so fidelity is assessed against general knowledge of the original (≈11-tier ladder, near-top overflow line, next-fruit preview, watermelon-pair evaporation) and is therefore partial.

What is good

  • The combo twist is now verified at the real boundary in-suite (not just independently), and the latent t=0 chain bug is found and fixed.
  • Losability holds: 20/20 seeded games end (median 90, range 79-124); 0 games end before 40 drops — skill affects when, not whether.
  • Nothing regressed: false-game-over class dead, docs honest, security + a11y intact.

What must change (next round)

  • Move the loss line above the pile's natural ceiling so loss is skill-avoidable, not inevitable (needs taller-pile physics: impulse momentum, more tiers toward ~11, or less aggressive merging).
  • Headless-browser smoke test (drop → merge → evaporation → game-over).
  • Leaderboard-integrity decision (server validation vs honor-system label — scores are client self-reported).