99 Club Studio v1.26.1 QA report

Date: 11 September 2026

Regression cause reproduced

The v1.26.0 Games page failure was reproduced in headless Chromium. Initial render raised:

TypeError: Cannot read properties of undefined (reading 'defaultSettings')

Stack location: engineSettings() called by renderEngineConfiguration() while state.activeEngine was the normal empty-string startup value.

The fix checks for a real/compatible active engine before requesting its settings and also uses a defensive optional lookup for default settings.

Browser runtime check

A standalone page built from the exact v1.26.1 Games assets was executed in headless Chromium with the setup panel initially closed.

  • Initial page render: PASS, no page errors.
  • Games root populated: PASS.
  • Sudoku & Latin Squares card visible: PASS.
  • 9×9 pupil and answer preview grids: PASS, 81 cells each.
  • Configure opens one setup panel: PASS.
  • Done closes the setup panel completely: PASS.
  • No runtime errors after open/close cycle: PASS.

Full 9×9 Sudoku checks

Forced 9×9 Sudoku was generated across Easy / Standard / Challenge seeds.

  • 9×9 dimensions: PASS.
  • 3×3 box geometry: PASS.
  • Rows contain 1–9 exactly once in the solved grid: PASS.
  • Columns contain 1–9 exactly once: PASS.
  • Every 3×3 box contains 1–9 exactly once: PASS.
  • Solver reports exactly one solution after clue removal: PASS.
  • Deterministic generation from a fixed seed: covered by Games smoke suite.
  • Year 6 Challenge + Auto can select 9×9 Sudoku: PASS.

A separate 60-puzzle forced-9×9 regression (20 per difficulty) is included in games-smoke.js.

PDF visual check

A Challenge 9×9 Sudoku was exported to pupil, answer and combined PDFs and raster-inspected.

  • 3×3 heavy box boundaries visible: PASS.
  • Thin internal cell lines visible: PASS.
  • Pupil digits readable: PASS.
  • Answer fills readable and distinguishable from givens: PASS.
  • Student puzzle has exactly one solution: PASS (50 blanks in inspected sample).

Full existing regression suite

  • smoke.js: PASS — 105 base families.
  • custom-visual-smoke.js: PASS — 258 coordinate entries / 43 subtypes; 592 pie entries / 37 subtypes; 416 angle entries / 104 active subtypes.
  • angles-smoke.js: PASS — 24,000 deterministic generated angle questions.
  • angles-visual-integrity.js: PASS — 416 rendered-data angle variants.
  • custom-entrypoint-smoke.js: PASS.
  • games-smoke.js: PASS — 591 vocabulary records; topic-safe Word Search/Crossword; Number Pyramid; Magic Square reasoning; Sudoku/Latin Squares including full 9×9; PDF and selective-replacement contracts.