# Afternoon Trail and Patch's Practice Table

The arcade has 51 individually playable games. The optional **Afternoon Trail** connects three untimed games into a saved session. Choose a mood, make one move at a time, ask for model hints or watch, and visit the next stop when ready. There are no streaks, deadlines, forced transitions or accounts.

| Mood | Three stops |
| --- | --- |
| A little of everything | Cagelight Sudoku → Square Patchwork → Chord Quilt |
| Numbers & patterns | Cagelight Sudoku → Inequality Garden → Square Patchwork |
| An afternoon of music | Polyrhythm Postcards → Chord Quilt → Lantern Jam |
| Make something lovely | Square Patchwork → Chord Quilt → a different Square Patchwork puzzle |

New music afternoons have three distinct games. Already-started music trails keep their original Polyrhythm encore and saved moves. Each new URL records its route version.

Every stop uses the original game rules and model. Gentle settings enable hints, half-speed watching, larger text and stronger contrast; Curiosity Club games begin in coach mode and Lantern Jam waits for your choices. The optional brain panel remains available. The number games finish a board, Square Patchwork finishes a quilt, Chord Quilt records three songs and Polyrhythm records four postcards per game. Lantern Jam keeps four phrases, restores unfinished songs paused (including mood, tempo and instrument), and adds the finished tune to the same scrapbook for playback and PNG export.

Each trail has a unique seed for each stop. Its progress is stored separately from standalone games and other stops, including when the same musical or square game appears twice. Reopening a started stop offers **Continue my puzzle** and resumes paused. Finishing adds the actual completed move record to the scrapbook. Repeated renders or revisits do not duplicate its keepsake. Undoing after a finish leaves the previously earned creation intact. Setting a different seed leaves the trail and opens a standalone game.

The scrapbook reconstructs boards from legal moves rather than trusting stored screenshots or invented scores. You can view the finished board, select and hear any of its recorded songs/postcards, and download a PNG picture. All eight Curiosity Club games also offer **Keep this in my scrapbook** after standalone completion. Removing a keepsake affects this browser's copy; downloaded pictures remain yours.

Trail and scrapbook data stay in browser local storage. Up to 24 trails and 60 keepsakes are retained; the page reports when space is full rather than silently discarding old records. Corrupt records are rejected and storage failures are explained. Private browsing, cleared storage, or changing browsers can lose local progress; downloaded images provide a separate copy of the artwork. Shared trail URLs reconstruct the same puzzles, but do not transfer a person's saved moves.

## Watch two trained models work

**Patch's Practice Table** starts two real exported WSRF models from the same tricky position. Advance them once, let them play slowly, change priorities, pause, and inspect any legal action in the optional brain section. A preview changes only a copy.

New practice training used **65,308 pytoolz/WSRF action examples** from unusual but still finishable openings. On 256 separate fresh openings, the original model finishes **194/256**, the currently shipped model finishes **256/256**, and the new practice model finishes **256/256**. The practice candidate wins selection on validation and also finishes **64/64** guided tests. It is used by the practice table; existing game models remain unchanged. [The complete training receipt](practice/TRAINING.md) documents exact targets, input bounds, seed separation, parameters, versions, hashes, exports and limits.

The six gallery positions are deliberately selected demonstrations from a separate seed stream. They illustrate the original model's failures, rather than estimating its overall failure rate. The page displays the separate test results and states that models do not retrain while being watched.

## Implementation and checks

- `shared/afternoon-core.js`: trail definitions, URL validation, scoped progress and checked keepsakes.
- `shared/afternoon.js`: local persistence and service used by trail pages and games.
- `shared/afternoon-jam.js`: scoped phrase saves, paused restoration and scrapbook completion for Lantern Jam.
- `shared/afternoon-game.js`: optional trail navigation and scrapbook buttons in the newest eight games.
- `afternoon/`: mood selection, resumable trails, canvas scrapbook, arrangement playback and picture export.
- `practice/`: two-model playback, actual inspection, model artifacts and training receipts.
- `tools/practice/`: reproducible Python/pytoolz/WSRF fitting, evaluation and gallery generation.

`npm run build` includes existing game/rule/model checks, four full trail simulations, exact saved-move reconstruction, corrupt-record validation, the practice export predictions and reproduced evaluations. Browser tests cover full trail navigation, interrupted progress, scrapbook playback/pictures, phone/desktop layouts, both live models, preview isolation, nudges, pause and failure handling.

```sh
npm run test:afternoon
npm run test:practice
# With the arcade served locally and Chrome's debugging port available:
ARCADE_URL=http://127.0.0.1:8016/ CDP_PORT=9236 npm run test:afternoon:browser
ARCADE_URL=http://127.0.0.1:8016/ CDP_PORT=9236 npm run test:practice:browser
npm run build
```

Upload the whole **dist/** folder to Netlify. The trail, scrapbook and practice table are static pages with no server-side runtime. Browser checks use Chrome touch emulation; physical-device and listening feedback remain welcome.

The discovery update adds no new model training: Lantern Jam uses its existing trained pytoolz/WSRF forest, documented in [its training receipt](games/lantern-jam/TRAINING.md).
