# Lantern Jam, favorite discoveries, and a little game night

The arcade now has **51 games**. [Lantern Jam](games/lantern-jam/) turns two XOR lantern patterns into a musical phrase. Four phrases make a song. There is no timer or losing finish, and sound is optional.

## Your turn to teach

The trained partner offers two distinct rhythm ideas. Hear either without changing the song, then choose one. That choice enters the song’s history and influences later model predictions. You can change the mood, place a quiet phrase, undo, or let the model play.

The actual `pytoolz.wsrf.WSRFRegressor` trained on 24,576 action examples labeled through 294,912 complete-song rollouts. On 192 fresh songs its mean rhythm-preference score was 90.50/100, compared with 63.03 for random legal choices. The explicit reference scored 90.91. This is a documented design rubric, not a listener rating. All legal songs finish; completion alone is not evidence of learning. The browser passed 168,699 exact Python prediction fixtures. [Complete training method and receipts](games/lantern-jam/TRAINING.md).

The XOR associations come from the actual hlib learning already performed for Glow Pair Post. Teaching directs the current performance; the exported forest does not refit itself in the browser.

## Favorite discoveries

Lantern Jam, Glow Pair Post, Distance Draw, River School, and Pocket Studio offer **Keep this discovery** when there is something to keep. The [discoveries shelf](night/#discoveries) supports replay, names, PNG pictures, removal with undo, and JSON export/import for another browser or device.

- Songs preserve each actual pairing, mood, teaching choice, tempo, and instrument. Their notes are reconstructed from the rules.
- Lantern discoveries preserve a legal pairing history, including a partial route worth remembering.
- Poker hands can be kept only after they end. The archive stores legal actions and only the consumed deal prefix; the undealt remainder is omitted. Replay verifies that the hand really finishes. Results and history use Robin, Fern, or Sage by name.
- Card challenge sets preserve all four choices and reconstruct the actual pockets and boards. The shelf does not invent an optimality score for an archived choice.

Records are validated before use. Import merges and deduplicates instead of replacing the shelf; invalid imports leave current discoveries intact. Up to 40 discoveries and 12 game nights are supported. Removing a night does not remove favorites. Multiple open pages refresh from browser storage before saving to avoid overwriting another page’s additions.

The archive stays in local browser storage and is never sent to a service. Export a copy to move devices or keep a backup. If storage is unavailable, the game still works and an in-page export can preserve a newly kept discovery before navigation. Starting a persistent game night requires storage.

## Three little stops

Choose a route on the [game-night page](night/):

| Route | First stop | Second stop | Encore |
| --- | --- | --- | --- |
| A softly glowing night | Glow Pair Post · warm | River School · river | Lantern Jam · drifting |
| Follow a little curiosity | Pocket Studio · river | Glow Pair Post · twilight | Lantern Jam · call & answer |
| A hand and an encore | One Distance Draw hand | River School · calling class | Lantern Jam · bounce |

Finish a stop and choose **Finish this stop** to keep its discovery. Continue when you like. Completed stops survive reloads; unfinished games start fresh on a later visit. A partial lantern pairing can be favorited, but it does not finish a route. Named stop seeds prevent a different puzzle from being counted as the current stop. The song’s mood remains yours to change.

## Playback and checks

Explicit listening controls start sound. Playback has a stop button, volume, tempo, and instrument choices; hiding or leaving the page stops it. The score remains visible with sound off. Rapid auditions cancel previous scheduled notes.

Checks cover real tree predictions, arbitrary legal songs, exact archived cards, invalid records, full/partial routes, completed-hand privacy, import deduplication and capacity, all three route mappings, a complete browser journey, listening and cancellation, storage failure, phone layouts, and the named poker result. Original game rules and fitted models are preserved; integration changes are in the interfaces and new shared archive code.

Build with `npm run build`, then upload the entire **`dist/`** folder to the existing Netlify project. The new `night/` page, models, shared dependencies, and training documentation are included.
