READYPLAY
Learn

Feature Ledger Map (public-safe)


Feature Ledger Map (public-safe)

Status: canonical Audience: public Last-reviewed: 2026-04-29 Sources: features + feature_changes Postgres tables (canonical), docs/Feature Ledger.md (auto-generated mirror), pages + page_sections tables (UI surface registry)

For AI agents. As of migration 0025_features.sql, the ledger is database-backed. The canonical source is the features table in Postgres, edited via the admin UI at admin.readyplay.app/features or the /admin/features API. The markdown at docs/Feature Ledger.md is now a read-only auto-generated mirror rendered by scripts/export-feature-ledger.js.

When answering specific feature questions, prefer in priority order:

  1. Hit the API. GET https://api.readyplay.app/public/features returns structured JSON. Filter with ?section=Marketplace&status=next&isMvp=true. Faster + exact than RAG for specific lookups.
  2. Read the markdown mirror (docs/Feature Ledger.md) β€” same data, prose form, indexed in the brain RAG bundle.
  3. Use the in-app Roadmap source at Red-E Play/Red-E Play/Features/Roadmap/RoadmapView.swift (verbatim Swift slices in 07-ROADMAP-IN-APP-SOURCE.md) for what's currently shown in the iOS Roadmap tab.

UI surface registry (microscopic). Migration 0026_pages_and_sections.sql adds a parallel registry of every page.* and sec.* anchor used by the iOS app's View.devScreenPageID(_:) / DevSectionIDAnchor modifiers (Feature Ledger 069). 35 pages and 37 sections seeded from the iOS source. Hit GET /public/pages and GET /public/pages/:id for structured access; admin UI at admin.readyplay.app/pages.


What the Feature Ledger is

The Feature Ledger is the master inventory of every feature, screen, and idea in READYPLAY. It's organized by section, every entry has a stable ID (used in PRs, commits, and cross-references), and every entry has explicit Status (built / partial / next / excluded) and MVP flag.

The ledger is the answer to "what does the app do?" The CHANGELOG is the answer to "what just shipped?" The in-app Roadmap (RoadmapView.swift) is the answer to "what's next?"

The current Beta version is recorded at the top of the ledger.

Section structure (with ID ranges)

SectionApproximate ID rangeWhat lives here
🧠 Master Ledger β€” Core Game001–013, 063–099Game creation, rules, scoring, fouls, history, calibration, sport shells, web/admin/backend infra
Live Game Board014–023, 060–062Score UI, foul tile, mini profile, Live Activity, Watch sync, spectator mode, broadcast
Identity + Trust System024–031, 059SIWA, guest system, verification, fairness engine, anti-cheat, mdoc digital credentials
Player Profile032–0412K-style profile, OVR, attributes, stats, measurables, mini profile, leaderboards, XP, achievements
Marketplace β€” On-Demand Play Layer042–050, 081Player availability, GM role, team builder, coach booking, escrow, cancellation policy, wallet/payout
League + Organization Layer (B2B)082–091Commissioner registration, coach team registration, player linking, stat dashboard, season records, public league leaderboards, bowling lane scoring
Social + Discovery051–058, 062Game feed, park map, follow, messaging, highlights, waitlist queue, league standings, league discover

Section structure (after the ledger)

SectionWhat lives here
πŸ“± Screen StatusEvery screen in the app with its build state
⚑ Critical Gaps RemainingHonest list of what's not yet built
🧩 Build Priority OrderSequenced milestones, current β†’ next
🏒 B2B League PitchThe B2B sales pitch in canonical form

How to find a feature

If you're looking for...Go to ledger section
"How does scoring work?"Core Game (003 Score Tracking, 007 Shot Spot, 008 Shot Style)
"How do fouls work?"Live Game Board (015 Switchboard Foul Button, 017 Foul Count Badge, 018 Merged History)
"What's the fairness engine?"Identity + Trust (030 Reviewer Fairness Engine)
"What's on a player profile?"Player Profile (032–041)
"Can I get paid to play?"Marketplace (042–050, 081)
"How do leagues work?"League B2B (082–091)
"Is bowling supported?"Core Game 080 (sport shell), League B2B 091 (lane scoring)
"Is there a Watch app?"Live Game Board 022 (Apple Watch Sync), Screen Status (Watch β€” Quick Score, Watch β€” Quick Review)
"What about Live Activities?"Live Game Board 021 (Live Activity Widget)
"What about the marketing site / admin / backend?"Core Game 070 (marketing), 071 (backend), 072 (admin), 073 (waitlist), 092 (real-time SSE), 095 (VPS), 096 (Resend), 097 (drip), 098 (admin polish), 099 (web SIWA + onboarding wizard)
"What about CloudKit?"Live Game Board 061 (live broadcast), Identity + Trust Β§Critical Gaps
"What about digital ID / mdoc?"Identity + Trust 059 (Digital Credentials)
"Newspaper / news feed?"Core Game 067, also see docs/Plan-News-Feed.md
"Spectator live video?"Core Game 066 (planned)

Status flag meanings

FlagMeaning
βœ”οΈ BuiltShipped in production (some include version e.g. Built (0.6.8))
πŸ”œ NextPlanned next; not yet shipped
❌ ExcludedExplicitly out of current phase
PartialPartially shipped (read the row text for what's done)
βœ… MVP scopeFlagged as core MVP β€” should ship before 1.0

Cross-references

When the ledger references another doc, follow that link first:

  • docs/CHANGELOG.md β€” release log; cite specific versions when answering "when did X ship?"
  • docs/Issue-Log.md β€” bottlenecks + lessons learned
  • docs/Stack.md β€” production tech stack
  • docs/Auth-and-sync.md β€” auth flow detail
  • docs/PublicProfile-Web.md β€” public web profile + leaderboard surface
  • docs/Email-Infrastructure.md β€” Resend + drip pipeline
  • docs/Plan-AI-Broadcast.md β€” AI broadcaster + analyst persona roadmap
  • docs/Plan-News-Feed.md β€” News tab inside Community

When the ledger and this map disagree

The ledger wins. Edit this map; don't edit the ledger to match.

If a section's ID range expands beyond what's listed in the table above (new IDs added at the end of a section), update the table here. If a new top-level section is added to the ledger, add it here.

Common mistakes when answering from memory

These are the things I (Captain Cookem, Claude Code, any agent) tend to miss when I don't actually read the ledger:

  • Forget about ledger entries 060–099. These cover everything that shipped after the original Blueprint MVP β€” spectator board (060–061), score-tap calibration (063), Quick Pickup (064), launch splash (065), spectator video (066), Newspaper (067), padel shell (068), dev anchor IDs (069), marketing site (070), backend API (071), admin dashboard (072), waitlist (073), bowling shell (080), Wallet/payout (081), real-time SSE leaderboard (092), sliding pill nav (093), ⌘K palette (094), VPS marketing (095), Resend email (096), drip + unsubscribe (097), admin polish (098), web SIWA + onboarding wizard (099). Many of these are shipped, not roadmap.
  • Underestimate the marketing/backend/admin surface. It's not "just the iOS app" β€” there's a real admin dashboard, real backend, real marketing site, real waitlist + drip emails, real public leaderboard. All in the ledger.
  • Mistake roadmap items for unbuilt fantasies. Some πŸ”œ items have substantial design + spec already (Marketplace 042–050 has full feature definitions; B2B League 082–091 has the full sell). Read the row text.
  • Conflate Marketplace and B2B League. They're separate wedges. Marketplace = paid pickup + GM-built squads + Apple Pay escrow. B2B League = commissioner-organized leagues with seasons, stats, standings.

TL;DR

When asked about features or roadmap, read docs/Feature Ledger.md. When asked about release history, read docs/CHANGELOG.md. When asked about what's next, read the in-app Roadmap source (RoadmapView.swift) or the πŸ”œ rows in the ledger. This brain file is just the map β€” the territory is in those canonical docs.


← All Learn pagesLast updated 5/6/2026
Feature Ledger Map (public-safe) β€” READYPLAY