QA report - Games & Puzzles v1.29.1
Date: 14 September 2026
Baseline verification
The patch was rebuilt against the live GitHub v1.29.0 state rather than the older v1.28.0 local snapshot. The live repository versions of games-engine.js, games-app.js, games-pdf.js, games.css and games-smoke.js were byte-identical to the v1.28.0 baseline files used to build the earlier work; the newer v1.29 behaviour lives in games-pack-mode.js, games-random-ui.js, page wiring and release/test files. This allowed the vocabulary changes to be merged without overwriting the v1.29 random-pack work.
Automated regression suite
PASS:
- Main 99 Club smoke: 105 base families + Year 1-6 generation profiles + progression/PDF invariants.
- Custom visual smoke: 258 coordinate entries / 43 subtypes; 592 pie entries / 37 subtypes; 416 angle entries / 104 active subtypes; mixed visual generation and marking contract.
- Angle smoke: 24,000 deterministic questions across the 104 active angle subtypes.
- Angle visual-integrity audit: all 416 active rendered-data variants.
- Custom entrypoint regression.
- Games smoke: complete 23-engine definition set, 591 curated vocabulary entries, mixed difficulty contracts and PDF invariants.
- Arithmetic expansion stress: 23,400 deterministic activities + 5,360 topic-routing activities + deep invariants across all 13 arithmetic/algebra engines.
- Numeric-logic stress: 918 deterministic activities + uniqueness/invariant checks across 5 numeric-logic engines.
- Vocabulary refinement smoke: 300 Challenge Crosswords plus exact Mixed allocation across all 22 visible one-player engines.
- v1.29 pack-mode compatibility smoke: 20-puzzle manual Mixed pack and full 40-activity random pack.
Word Search rule QA
Straight, Diagonal and All-direction puzzles were generated and their child-facing / PDF rule text was checked against the actual direction vectors. The PDF uses text-safe wording rather than relying on arrow glyphs.
Crossword generation benchmark
The old live algorithm and the refined algorithm were run over the same 600 fixed Challenge seeds with a 12-entry target.
| Metric | live v1.29 baseline | v1.29.1 |
|---|---|---|
| Average entries | 12.000 | 12.000 |
| Average crossing cells | 11.582 | 14.570 |
| Crossing cells / entry | 0.965 | 1.214 |
| Average grid footprint | 254.50 | 227.72 |
This is about 25.8% more crossing cells with about 10.5% less grid area, without reducing the 12-answer target.
Crossword containment stress
A deliberately harsh three-Crosswords-per-page PDF was rendered at Easy, Standard and Challenge with 12 answers and a 17x17 generation grid. The rendered page confirmed that all grids, clues and word banks remained inside their activity frames.
A separate 20-Crossword Mixed pack was rendered across 10 pupil pages. Pages 1, 5 and 10 were inspected and remained inside their frames.
Mixed difficulty QA
All 22 visible one-player engines were generated as 10-puzzle Mixed packs at 30 / 50 / 20. Every engine produced exactly 3 Easy, 5 Standard and 2 Challenge activities with no generation errors.
A 20-Crossword pack at 25 / 50 / 25 produced exactly 5 Easy, 10 Standard and 5 Challenge puzzles.
The live v1.29 random-pack wrapper was then loaded on top of the refined engine. A 40-activity Challenge random pack produced all 40 requested activities over 20 two-up sheets, confirming that the v1.29 exact-count workflow is not regressed.