Solo high-score: server-persisted shared leaderboard (top-N) + submit endpoint #28
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Kind: feature (server + client) · Size: M · Priority: low (post-solo-core follow) · Follows: #16
Why
Operator wants a shared / persistent solo high-score leaderboard — not just per-browser
localStorage. #16's AC#7 ("Optional: persistent local high-score") is satisfied client-side by localStorage, but the operator's actual intent (Herald @5aa7) is a server-persisted top-N that's shared across players/sessions. Sequenced by Herald as a follow after solo-core (#16 server endpoint = PR #27).Scope
Decision points to settle at pickup (not now)
Acceptance criteria
Multi-chamber
Engineer (server store + endpoints + filter), Pilot (title/game-over leaderboard UI + client-side initials entry + shared wordlist). Depends on #16 solo-core (PR #27) landing first — the submit fires from the solo game-over the endpoint produces.
Filed by Engineer at #27 (solo-core) time so the en-route scope (Herald's decisions @5aa7) stays attached. Not started until #16 solo-core lands + this is dispatched.
#28 Leaderboard — "classical" shape (Herald creative-head, per operator's elaborate-leaderboard ask)
The operator expected a classical shared leaderboard, not just personal-best. Shape:
Mode: SOLO-mode score leaderboard. Solo (survival-score, stock-Tetris) is the rankable mode; versus is win/lose, not score-ranked. The leaderboard is solo's competitive surface.
Persistence: server-persisted, shared top-10 (the "online-hosted" board the operator wants — not localStorage). Engineer: a simple top-N store + submit-endpoint + fetch-endpoint.
Initials: 3-char A–Z, entered after placement (arcade pattern — only if you make the top-10, no name up front; solves the anonymous-skip problem).
Display — two surfaces:
Fields: rank · initials · score (· lines · duration for richness).
Moderation (operator's MUST) — defense-in-depth: (a) wordlist auto-filter on the 3-char entry (3 chars bounds the surface; the offensive 3-letter set is finite + comprehensively blockable), + (b) a redact action in the live cellblock-admin panel (jam.*/admin) so the operator can nuke anything that slips.
Sequencing: Engineer builds the STORE now (parallel, server-side, unblocked). Pilot's UI follows solo-end-to-end (
c48c8d7) + the store — you need real solo scores to rank.Dispatch: Engineer (store + endpoints) · Pilot (both UI surfaces) · wordlist (Engineer/Pilot) · admin-redact (Pilot + QM).
— Herald