All payments made in the preview are in test mode. Read more

The Brain

Every rule, story and roadmap item in one place — checked against the code and tests on every run.

Rules
134
Confirmed & tested
122/122
User stories
125
Snapshot roadmap items
66
Reviewed Brain snapshot and code are in sync

    Rule coverage

    RuleStatusImplemented inTested in
    ACC-001 Permissions are evaluated in the active club contextconfirmeddomain/staff.tsdomain/staff.test.ts
    ACC-002 Club notes are never globalproposed——
    ACC-003 Reception cannot change subscriptions or platform settingsconfirmeddomain/staff.tsdomain/staff.test.ts
    OPS-004 Platform staff provisioning is administrator-only and auditedconfirmeddomain/staff-audit.ts, domain/staff.tsdomain/staff-audit.test.ts, domain/staff.test.ts, test/platform-staff-database.test.ts
    OPS-005 Every server endpoint has an accepted permission classificationconfirmeddomain/permissions.tstest/permission-acceptance.test.ts
    ACC-004 Only club managers and platform admins manage staff rolesconfirmeddomain/role-matrix.ts, domain/staff.tsdomain/role-matrix.test.ts, domain/staff.test.ts
    AI-001 The assistant only knows its own portalconfirmeddomain/assistant.tsdomain/assistant.test.ts, test/assistant-privacy-database.test.ts
    AI-002 Assistant conversations are privateconfirmeddomain/assistant.tsdomain/assistant.test.ts, test/assistant-privacy-database.test.ts
    AI-003 Thread titles come from the first questionconfirmeddomain/assistant.tsdomain/assistant.test.ts
    AI-004 The assistant knows the screen you are onconfirmeddomain/assistant.tsdomain/assistant.test.ts
    AI-005 Club websites have a public concierge in the booking buttonconfirmeddomain/visitor-assistant.tsdomain/visitor-assistant.test.ts
    AI-006 The platform website has a sales conciergeconfirmeddomain/visitor-assistant.tsdomain/visitor-assistant.test.ts
    AI-007 Website assistants are limited per visitorconfirmeddomain/visitor-assistant.tsdomain/visitor-assistant.test.ts
    BOOK-001 Capacity can never be oversoldconfirmeddomain/capacity.ts, domain/teesheet.ts, lib/booking.functions.ts, lib/teesheet.functions.tsdomain/capacity.test.ts, domain/teesheet.test.ts, test/booking-database.test.ts
    BOOK-002 Holds expire automaticallyconfirmeddomain/booking-policy.ts, domain/capacity.ts, domain/checkout-recovery.tsdomain/booking-policy.test.ts, domain/capacity.test.ts, domain/checkout-recovery.test.ts, test/booking-database.test.ts
    BOOK-003 18 holes may need a linked second-nine startconfirmeddomain/routes.tsdomain/routes.test.ts
    BOOK-004 Closures block new bookings, never delete existing onesconfirmeddomain/closures.ts, lib/booking.functions.ts, lib/closures.functions.ts, lib/teesheet.functions.tsdomain/closures.test.ts, test/booking-database.test.ts
    BOOK-005 Partial cancellation keeps the groupconfirmeddomain/reservations.tsdomain/reservations.test.ts
    BOOK-006 Phone bookings record source and actorconfirmeddomain/teesheet.ts, lib/teesheet.functions.tsdomain/teesheet.test.ts
    BOOK-007 Public availability exposes no personal dataconfirmeddomain/booking.ts, lib/booking.functions.tsdomain/booking.test.ts, test/booking-database.test.ts
    BOOK-008 Reservation moves reserve capacity atomicallyconfirmeddomain/reservations.tsdomain/reservations.test.ts, test/booking-database.test.ts
    BOOK-009 Account history requires proven ownershipconfirmeddomain/reservations.ts, lib/booking-account.server.ts, lib/booking.functions.ts, lib/checkout.functions.ts, lib/payments.functions.tsdomain/reservations.test.ts, lib/booking-account.server.test.ts, test/booking-database.test.ts
    BOOK-010 Check-ins stay within the active groupconfirmeddomain/reservations.tsdomain/reservations.test.ts
    BOOK-011 Club-local time and historical booking termsconfirmeddomain/booking-changes.ts, domain/booking-policy.tsdomain/booking-changes.test.ts, domain/booking-policy.test.ts, test/booking-database.test.ts
    BOOK-012 Linked second-nine allocations are atomic and player-chosenconfirmeddomain/linked-routes.tsdomain/linked-routes.test.ts, test/booking-database.test.ts
    BOOK-015 Tee booking is one step-by-step flow with optional stepsconfirmeddomain/booking-steps.tsdomain/booking-steps.test.ts
    CMS-001 Unpublished media stays privateconfirmeddomain/cms.ts, domain/media.tsdomain/cms.test.ts, domain/media.test.ts
    CMS-002 Hole media links to a specific course and holeconfirmeddomain/cms.ts, lib/cms.functions.tsdomain/cms.test.ts
    CMS-010 Club managers and marketing curate course mediaconfirmeddomain/media.tsdomain/media.test.ts
    CMS-011 Public navigation lists only published pagesconfirmeddomain/platform-cms.tstest/platform-cms-database.test.ts, test/platform-cms-homepage.test.ts, test/platform-cms-nav.test.ts
    CMS-014 Platform pages are built from editable sectionsconfirmeddomain/platform-cms.tstest/platform-cms-sections.test.ts
    CMS-015 Website demo requests become sales leads with recorded consentconfirmeddomain/platform-cms.tstest/platform-cms-sections.test.ts
    BRAIN-001 Every portal screen and role has traceable story coverageconfirmeddomain/story-coverage.tsdomain/story-coverage.test.ts
    CRM-001 Won deals convert to onboarding, records are keptconfirmeddomain/crm.tsdomain/crm.test.ts
    CRM-002 Every stage change is recordedconfirmeddomain/crm.tsdomain/crm.test.ts
    CRM-007 Churn risk signals and follow-ups are staff-drivenconfirmeddomain/churn.tsdomain/churn.test.ts
    CRM-008 Pipelines are kanban lanesconfirmeddomain/club-crm.ts, domain/crm.ts, domain/kanban.tsdomain/club-crm.test.ts, domain/crm-kanban.test.ts, domain/kanban.test.ts
    CRM-009 Sales activities and follow-up tasks are recorded, duplicates flaggedconfirmeddomain/crm.tsdomain/crm-activities.test.ts
    CRM-010 Club domain checks are recorded signals, never certificationconfirmeddomain/domain-checks.ts, lib/onboarding.functions.tsdomain/domain-checks.test.ts, test/onboarding-database.test.ts
    CRM-011 A deal carries multiple contactsconfirmeddomain/crm.tsdomain/crm.test.ts, test/prospect-contacts-database.test.ts
    FIN-001 Platform billing is restricted to administrators and financeconfirmeddomain/finance.tsdomain/finance.test.ts
    FIN-002 Invoice history preserves amounts and payment statusconfirmeddomain/finance.tsdomain/finance.test.ts
    FIN-003 Billing exports preserve exact amounts and currencyconfirmeddomain/finance.tsdomain/finance.test.ts
    GUEST-001 Guests can book without an accountconfirmeddomain/booking.ts, lib/booking.functions.tsdomain/booking.test.ts
    GUEST-002 A booking reference alone exposes no personal dataconfirmeddomain/guest.ts, lib/booking-changes.functions.ts, lib/pricing.functions.tsdomain/guest.test.ts
    CRM-006 Onboarding tasks record progress without certifying launchconfirmeddomain/onboarding.tsdomain/onboarding.test.ts, test/onboarding-database.test.ts
    EVENT-003 Event co-creation starts from an explicitly reviewed private briefconfirmeddomain/event-planning.tsdomain/event-planning.test.ts
    UX-005 Player outlook counts only account-owned confirmed bookingsconfirmeddomain/player-outlook.ts, lib/player-outlook.functions.tsdomain/player-outlook.test.ts
    UX-004 Club dashboard summarises today and the next seven local calendar daysconfirmeddomain/dashboard-window.ts, lib/reservations.functions.tsdomain/dashboard-window.test.ts
    UX-003 Portal entry and navigation use the existing dashboardsconfirmeddomain/portal-navigation.tsdomain/portal-navigation.test.ts
    EVENT-002 Shared event plans support offering and operationsconfirmeddomain/event-plan.tsdomain/event-plan.test.ts, test/event-plans-database.test.ts
    CMS-013 Google Fonts can be previewed and added to club website selectorsconfirmeddomain/website-options.tsdomain/website-options.test.ts, test/website-services-database.test.ts
    UX-002 Portal entry is the dashboard with today and next-seven-day analyticsconfirmeddomain/platform-outlook.ts, lib/admin.functions.tsdomain/platform-outlook.test.ts, test/platform-outlook-read.test.ts
    WEATHER-001 Club dashboard weather follows the active club locationconfirmeddomain/weather.ts, lib/club-location-search.server.ts, lib/weather.server.tsdomain/weather.test.ts, lib/club-location-search.server.test.ts, lib/weather.server.test.ts, test/weather-database.test.ts
    REP-005 Reporting periods and definitions are explicitproposed——
    CRM-003 Customer lifecycle changes are traceableproposed——
    CRM-004 Sales work has ownership and activity historyproposed——
    PROD-001 Roadmap changes preserve traceabilityproposed——
    CMS-003 Platform pages publish authorised snapshotsconfirmeddomain/platform-cms.tsdomain/platform-cms.test.ts, test/platform-cms-database.test.ts
    BRAND-001 Brand overrides remain scopedconfirmeddomain/branding.tsdomain/branding.test.ts, test/branding-database.test.ts
    OPS-001 Platform roles require explicit authorisationconfirmeddomain/role-matrix.tsdomain/role-matrix.test.ts, test/support-access-database.test.ts
    OPS-002 Support access is scoped and revocableconfirmeddomain/role-matrix.tsdomain/role-matrix.test.ts, test/support-access-database.test.ts
    OPS-003 Operational recovery is safe and observableconfirmeddomain/operations.tsdomain/operations.test.ts, test/ops-health-database.test.ts, test/payment-attempt-database.test.ts, test/payment-events.test.ts, test/payment-persistence.test.ts
    OPS-006 Payment notifications process once under concurrencyconfirmed—test/payment-claim-database.test.ts, test/payment-events.test.ts
    REP-006 Operational views retain club and money contextproposed——
    COURSE-001 Availability configuration preserves existing bookingsconfirmeddomain/scheduling.ts, lib/booking.functions.ts, lib/course-schedule.functions.tsdomain/scheduling.test.ts, test/booking-database.test.ts
    BOOK-013 Attendance and reservation edits have historyproposed——
    PRICE-004 Rate eligibility and precedence are declaredconfirmeddomain/rates.tsdomain/rates.test.ts, test/checkout-start.test.ts, test/member-checkout-database.test.ts, test/rate-quotes-database.test.ts, test/rate-rules-database.test.ts
    RENT-001 Rental inventory covers the whole occupied intervalconfirmeddomain/rentals.ts, lib/pricing.functions.tsdomain/rentals.test.ts
    RENT-002 Rental handover and pricing remain traceableconfirmeddomain/rentals.tsdomain/rentals.test.ts
    CRM-005 Club contact records are scoped and deduplicatedconfirmeddomain/club-crm.tsdomain/club-crm.test.ts, test/club-crm-database.test.ts
    MEM-001 Membership entitlement is club and date specificconfirmeddomain/membership.tsdomain/membership.test.ts, test/member-checkout-database.test.ts
    MEM-006 Membership billing and renewal policy is club-configured per typeconfirmeddomain/membership-billing.tsdomain/membership-billing.test.ts, test/membership-billing-database.test.ts
    MEM-002 Membership administration retains historyconfirmeddomain/membership.tsdomain/membership.test.ts
    CMS-004 Club websites publish club-scoped revisionsconfirmeddomain/club-website.tsdomain/club-website.test.ts, test/club-website-database.test.ts
    CMS-006 Base templates create independent club draftsconfirmeddomain/club-website.tsdomain/club-website.test.ts
    CMS-007 Content blocks have a usable editing interfaceconfirmeddomain/club-website.tsdomain/club-website.test.ts, test/club-website-database.test.ts
    CMS-008 SEO settings belong to published page revisionsconfirmeddomain/club-website.tsdomain/club-website.test.ts
    CMS-009 Styling and code injection cannot compromise the portalconfirmeddomain/club-website.ts, domain/tbls.tsdomain/club-website.test.ts, test/club-website-database.test.ts, test/tbls.test.ts
    DOM-001 Domain linking verifies ownership and serving readinessconfirmeddomain/club-domains.tsdomain/club-domains.test.ts
    DOM-002 Domain linking lifecycle is propose, verify, confirm, then monitorconfirmeddomain/club-domains.ts, lib/club-domains.functions.tsdomain/club-domains.test.ts, test/club-domains-database.test.ts
    PAY-009 Reconciliation distinguishes records from provider actionsconfirmeddomain/club-finance.tsdomain/club-finance.test.ts
    COMMS-001 Operational messages are separate from marketingconfirmeddomain/communications.tsdomain/communications.test.ts, test/club-comms-database.test.ts, test/club-templates-database.test.ts, test/communications-templates.test.ts
    SET-001 Club settings are validated and scopedconfirmeddomain/club-settings.tsdomain/club-settings.test.ts, test/club-settings-database.test.ts
    COACH-001 Coaching availability has scoped capacityproposed——
    EVENT-001 Event places and tee blocks share inventoryproposed——
    SHOP-001 Clubhouse orders stay within approved integration scopeconfirmeddomain/club-shop.tsdomain/club-shop.test.ts
    SHOP-002 Voucher and loyalty policy is set per clubconfirmeddomain/club-shop.tsdomain/club-shop.test.ts, test/club-shop-database.test.ts
    SHOP-003 Restaurant integration runs through the TBLS.app APIsconfirmeddomain/tbls-dining.ts, lib/tbls.functions.ts, lib/tbls.server.tsdomain/tbls-dining.test.ts
    SHOP-004 Club restaurant pages show the live TBLS menuconfirmedcomponents/club-site/ClubLiveMenu.tsx, domain/tbls-dining.ts, lib/tbls.functions.tsdomain/tbls-dining.test.ts
    SHOP-005 Golfers can add a post-round table to a confirmed tee bookingconfirmeddomain/tbls-dining.ts, lib/tbls.functions.tsdomain/tbls-dining.test.ts
    SHOP-006 Each club links its own TBLS restaurantconfirmeddomain/tbls-dining.ts, lib/tbls.functions.tsdomain/tbls-dining.test.ts
    SHOP-007 Player day-of-play card shows the linked post-round tableconfirmeddomain/tbls-dining.ts, lib/player-outlook.functions.tsdomain/tbls-dining.test.ts
    SHOP-008 Club CRM contacts show a consent-aware TBLS dining insightconfirmeddomain/tbls-dining.ts, lib/tbls.functions.tsdomain/tbls-dining.test.ts
    SHOP-009 Club pro shop catalogue and ordersconfirmeddomain/proshop.tsdomain/proshop.test.ts, test/proshop-database.test.ts
    PLAYER-001 Personal overview requires ownershipconfirmeddomain/player-outlook.ts, domain/player-profile.tsdomain/player-outlook.test.ts, domain/player-profile.test.ts
    BOOK-014 Player changes obey accepted termsconfirmedcomponents/BookingSelfServiceActions.tsx, domain/booking-changes.ts, lib/booking-changes.functions.tsdomain/booking-changes.test.ts, test/booking-database.test.ts
    CAL-001 Calendar exports use recorded booking instantsconfirmedcomponents/BookingSelfServiceActions.tsx, domain/calendar.ts, lib/booking-changes.functions.tsdomain/calendar.test.ts, test/booking-database.test.ts
    PROF-001 Player edits cannot grant privilegesconfirmeddomain/player-profile.tsdomain/player-profile.test.ts, test/phone-verification-database.test.ts
    MEM-003 Benefits show provenance and validityproposed——
    MEM-004 Membership account linking requires a matching club recordconfirmeddomain/membership.tsdomain/membership.test.ts, test/membership-link-database.test.ts
    PAY-010 Player payment records require ownershipconfirmeddomain/club-finance.tsdomain/club-finance.test.ts
    CMS-005 Discovery shows current published factsconfirmeddomain/media.tsdomain/media.test.ts
    PRIV-001 Privacy preferences retain club-specific consentconfirmeddomain/communications.tsdomain/communications.test.ts
    PRIV-002 Data requests verify identity and retention obligationsproposed——
    PRIV-003 Privacy requests are recorded, never self-serve executedconfirmeddomain/privacy-requests.tsdomain/privacy-requests.test.ts, test/privacy-requests-database.test.ts
    COACH-002 Lesson and event booking requires eligible availabilityproposed——
    UX-001 Booking remains usable without pointer or videoconfirmeddomain/checkout-recovery.tsdomain/checkout-recovery.test.ts
    PRICE-001 Price and terms shown before confirmingconfirmeddomain/pricing.tsdomain/pricing.test.ts, test/rate-quotes-database.test.ts
    PRICE-003 Green fees are per player and per round formatconfirmeddomain/pricing.tsdomain/pricing.test.ts
    PRICE-002 Overrides need permission and a reasonconfirmeddomain/rates.tsdomain/rates.test.ts, test/rate-rules-database.test.ts
    PRICE-005 Deposit policy is chosen per rateconfirmeddomain/deposits.tstest/deposits.test.ts
    PAY-001 Refunds never exceed what was capturedconfirmeddomain/payments.tsdomain/payments.test.ts
    PAY-002 Online payment is a per-club opt-inconfirmed—test/booking-database.test.ts
    PAY-003 The charged amount is the frozen held quoteconfirmeddomain/payments.tsdomain/payments.test.ts
    PAY-004 Payment success is confirmed by signed provider notificationconfirmeddomain/checkout-recovery.tsdomain/checkout-recovery.test.ts, test/booking-database.test.ts, test/payment-events.test.ts
    PAY-005 Club balance is succeeded payments minus recorded refundsconfirmeddomain/payments.tsdomain/payments.test.ts
    PAY-006 A paid platform subscription activates club accessconfirmeddomain/subscriptions.tsdomain/subscriptions.test.ts
    PAY-007 Cancellation keeps access until the paid period endsconfirmeddomain/subscriptions.tsdomain/subscriptions.test.ts
    PAY-008 Plan changes are immediate and pro-ratedconfirmeddomain/subscriptions.tsdomain/subscriptions.test.ts
    PAY-011 Failure notifications are idempotent and never silently acceptedconfirmed—test/payment-events.test.ts
    REP-001 MRR is monthly-normalised recurring revenueconfirmeddomain/reporting.tsdomain/reporting.test.ts
    REP-002 Occupancy counts player placesconfirmeddomain/reporting.tsdomain/reporting.test.ts
    REP-003 Utilisation is reported separately from occupancyconfirmeddomain/reporting.tsdomain/reporting.test.ts
    REP-004 SaaS revenue separate from club booking revenueconfirmeddomain/dashboard.tsdomain/dashboard.test.ts
    REP-007 Subscription invoice reconciliationconfirmeddomain/dashboard.tsdomain/dashboard.test.ts
    PROD-002 All platform staff collaborate on the persisted roadmapconfirmeddomain/kanban.ts, domain/roadmap.tsdomain/kanban.test.ts, domain/roadmap.test.ts, test/roadmap-database.test.ts
    PROD-003 Customer requests link to roadmap itemsconfirmedcomponents/CustomerRequestsPanel.tsx, domain/roadmap.ts, lib/roadmap.functions.tsdomain/roadmap.test.ts, test/customer-requests-database.test.ts
    PROD-004 Released items require recorded release evidenceconfirmeddomain/roadmap.ts, lib/roadmap.functions.tsdomain/roadmap.test.ts, test/release-evidence-database.test.ts
    CMS-012 Club website typography and button shape are scopedconfirmeddomain/club-website.ts, domain/website-options.tsdomain/club-website.test.ts, domain/website-options.test.ts, test/website-services-database.test.ts
    MEM-005 Membership applications are requests, not active membershipsconfirmeddomain/website-options.tsdomain/website-options.test.ts, test/website-services-database.test.ts
    COURSE-002 Course conditions are staff-recorded and date-scopedconfirmeddomain/website-options.tsdomain/website-options.test.ts
    SERVICE-001 Open coaching slots have scoped agendas and atomic registrationsconfirmeddomain/services.tsdomain/services.test.ts, test/website-services-database.test.ts
    SERVICE-002 Event registrations share a protected service allocation boundaryconfirmeddomain/services.tsdomain/services.test.ts, test/service-payment-start.test.ts, test/website-services-database.test.ts