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).