Leaderboard coverage + durable disconnect/continuous save#64
Conversation
Audit of 18 games + design for a shared kit ScoreKeeper helper, per-game disconnect/continuous-save fixes, putt lower-better correctness, Rust tic-tac-toe spec, and a conformance guardrail. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
18 TDD tasks across kit (ScoreKeeper helper), games (10 per-game fixes), and shellcade (conformance guardrail), with go.work-based local dev and a kit-tag-before-pin release phase. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add an OnLeave handler that posts the leaving player's current score with StatusDNF and persists their personal best to KV. Adopt kit.ScoreKeeper (OnImprove cadence) to track each player's current score, fed when a snake eats. Handles both the solo/co-op (single seat controls both snakes) and head-to-head (members[0]=snake1, members[1]=snake2) shapes. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
These reference shellcade private internals (store/postgres, conformance harness, seat-grace) and violate the games-repo hard rule against shellcade-internal material. They move to the private platform repo. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
These three adopt kit.ScoreKeeper (shipped in v2.11.0). Bump + tidy so they build against the published kit instead of the local dev workspace. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Games now adopt kit v2.11.0 (ScoreKeeper). Point validate.yml + publish.yml at the shellcade-kit 2.11.0 release so conformance exercises the kit features these games use. Goes green once the shellcade-kit v2.11.0 binary is published (the shellcade lockstep release). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Bump the shellcade-kit toolchain pin to 2.11.1 (carries the conformance publishing-gate fix) and pass --require-leaderboard to `check` in validate.yml and publish.yml so every published game must declare a leaderboard. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Smoke screensDeterministic scripted screens for
|
shellcade could not publish this release to the arcadeThe GitHub release was cut, but the arcade's re-verification refused it,
|
What
Makes every game record to the leaderboard, saves a player's score when they disconnect mid-game, and keeps continuous ("never-ending") games saving periodically. Includes the audit, design spec, and implementation plan under
docs/superpowers/.Audit result
18 games audited. 8 were already sound (bytebreaker, salvo, paperdrift, blackjack, floorfall, pokies, scratchies, stacked). The rest are fixed here:
OnLeave→ added; flushes current score (DNF) on disconnectSumResults); posts 1/0 win counts on every end pathDNF semantics
The platform reader ranks DNF rows like finished ones, so: higher-better games post raw partials (safe — max keeps best); cumulative-wins games post 1/0; lower-better putt par-extrapolates.
Test
Every fixed game has a new
*_leaderboard_test.goasserting the DNF/score behavior (each verified failing first). All game modules:go test ./...+go build ./...green; Rust:cargo testgreen.🤖 Generated with Claude Code