{ "repository": "OpenVibers/OpenVibe.Play", "stage": "alpha", "code": true, "wave": "T8", "plan": "Plan track T8 (Games), OpenVibe.Games ADR-0007 decision 10 and M5: the platform's game services as their own service", "runtime": "node 22, express 4, PostgreSQL 18 (openvibe-sdk/db, async) + Valkey 9", "port": "5040", "domain": "play.openvibe.network", "contracts": "openvibe-contracts v0.419.0", "sdk": "openvibe-sdk v0.161.0", "shared": "openvibe-shared v4.237.0", "packages": [ "openvibe-contracts v0.419.0", "openvibe-sdk v0.161.0", "openvibe-shared v4.237.0" ], "summary": "OpenVibe.Play — achievements and leaderboards for every OpenVibe game (Games ADR-0007 decision 10). A title is registered by its own principal (a game's service or app token), which alone writes to it: achievements (with hidden ones), boards that rank each player's best score, the sum of theirs or their fastest time in milliseconds, this week and all time, idempotent score and unlock posts, and guests adopted by the person who signs in. Boards and titles are public reads (CORS) and pages; people's rows are in the account export and erased with the account.", "works": [ "Titles registered and updated by their own principal (play.title.manage); a definition left out is retired, never deleted; a board never changes kind", "Score posts to a board, idempotent by ref (up to 100 entries), and unlocks that answer the new ones (play.result.write)", "Guest adoption: a guest's unlocks and scores become the person's when they sign in", "", "Cloud saves: up to 8 versioned slots per player per title (a stale write is refused), listed and deleted by the person at /me/saves", "Boards: each player's best, total or fastest time (milliseconds, ascending), this week (from Monday UTC) or all time, 25 a page, names and scores only", "Pages: home (every game, this week's leaders), a title, a board, your achievements, the API docs, /updates", "Account export and deletion (ADR-033) at the loopback POST /internal/events, subscriptions created at boot" ], "notYet": [ "OpenVibe.Games reading its boards from Play (it already posts its scores, unlocks and guest adoptions here: Games#64, 2026-10-14), then Games' local progress tables go", "Events (play.achievement.unlocked) for quests and inventory rewards", "A title owned by a developer project through Services, and stats beyond scores", "Presence and lobbies (decision 10's remaining services)" ], "capabilitiesRegistered": true, "serviceManifestRegistered": true, "deployed": true, "placeholderInSites": false, "features": [ "titles", "achievements", "leaderboards (best, sum, time; week, all time)", "idempotent results", "guest adoption", "cloud saves", "account export and deletion" ], "deployment": "openvibe-ovh: unit openvibe-play.service on 127.0.0.1:5040 (git checkout /opt/play.openvibe.network, env /etc/openvibe/play.env, database ov_play), deployed with `sudo ovhost deploy play`; nginx vhost from deploy/nginx (ov-vhost-install) on the openvibe.network wildcard certificate.", "updated": "2026-11-13" }