Pickle — independent community court finder · Simple Action Hub

What do you want to do today? Find a court, match a game, and learn where to play next.

Pickle is its own live project lane for Vancouver-area pickleball. This public demo is safe and static today: it lets visitors explore the product flow without collecting contact details, sending notifications, or publishing unverified court claims.

6 court cards 2 game requests 6 beginner-friendly leads

Try the Pickle flow

No-send demo: choose what you want, press preview, and Pickle builds a sample next step on this page only. Nothing is submitted, stored, emailed, texted, or sent to a server.

Pick a few options to preview the product flow.
Safety posture: Pickle now stands as its own live product surface, but this bundle remains static, noindex, demo-only, and source-cautious. No real user data is collected; court records require verification before public claims.

City snapshot

Courts

6

Active or needs-review records in the fixture.

Game requests

2

Open requests with level + time + DUPR matching fields.

Members

3

Demo members with skill, DUPR, gender, and notification preferences.

Queued notifications

1

Internal/in-app notifications generated by join actions.

Showing all demo courts and game requests.

Lessons / Beginner Help

Beginner-first path: keep this section plain and practical. Newer players should be able to find a beginner-friendly court, understand skill labels, and learn how to join a casual game without reading a long guide.

  1. Start with courts marked Beginner friendly.
  2. Use game skill filters before joining a session.
  3. Prefer open play or lessons until skill/DUPR is comfortable.
  4. When venue calendars are approved, show beginner sessions here first.

Signup and preference model

Court directory cards

outdoor · public · needs review

Jericho Beach Park pickleball court lead

Source-backed draft — Needs verification before public court claims

Official City of Vancouver/Park Board source lead for public pickleball court discovery. Listed as a source-backed draft only; exact amenities, count, schedules, and access rules still need operator confirmation before stronger public claims.

Address
Jericho Beach Park, Vancouver, BC — exact court location/access rules need operator review
Courts
Unknown
Lights
Unknown
Washrooms
Unknown
Drop-in known
Unknown
Beginner friendly
Yes
Source
Official source lead
outdoor · public · needs review

Champlain Heights Park pickleball court lead

Source-backed draft — Needs verification before public court claims

Official City of Vancouver/Park Board source lead for public pickleball court discovery. This is a launch-safe source-backed draft, not a verified/certified court listing.

Address
Champlain Heights Park, Vancouver, BC — exact court location/access rules need operator review
Courts
Unknown
Lights
Unknown
Washrooms
Unknown
Drop-in known
Unknown
Beginner friendly
Yes
Source
Official source lead
outdoor · public · needs review

Squint Lake Park pickleball court lead

Source-backed draft — Needs verification before public court claims

City of Burnaby source lead says four new pickleball courts opened at Squint Lake Park. Keep wording source-backed and review amenities/current rules before any verified-public claim.

Address
Squint Lake Park, Burnaby, BC — exact access rules need operator review
Courts
4
Lights
Unknown
Washrooms
Unknown
Drop-in known
Unknown
Beginner friendly
Yes
Source
Official source lead
outdoor · public · needs review

Robert Burnaby Park pickleball court lead

Source-backed draft — Needs verification before public court claims

City of Burnaby park source lead references three tennis and pickleball courts north of the picnic/playground area. Review current lines, rules, and amenities before stronger claims.

Address
Robert Burnaby Park, Burnaby, BC — exact access rules need operator review
Courts
3
Lights
Unknown
Washrooms
Unknown
Drop-in known
Unknown
Beginner friendly
Yes
Source
Official source lead
outdoor · public · needs review

Crescent Park pickleball court lead

Source-backed draft — Needs verification before public court claims

City of Surrey source lead says eight new pickleball courts are open in Crescent Park. Keep as a source-backed draft until current rules and amenities are reviewed.

Address
Crescent Park, Surrey, BC — exact access rules need operator review
Courts
8
Lights
Unknown
Washrooms
Unknown
Drop-in known
Unknown
Beginner friendly
Yes
Source
Official source lead
outdoor · public · needs review

South Surrey Athletic Park pickleball court lead

Source-backed draft — Needs verification before public court claims

City of Surrey source lead says twelve purpose-built pickleball courts opened at South Surrey Athletic Park. Review current facility rules before public guide wording.

Address
South Surrey Athletic Park, Surrey, BC — exact access rules need operator review
Courts
12
Lights
Unknown
Washrooms
Unknown
Drop-in known
Unknown
Beginner friendly
Yes
Source
Official source lead

Upcoming game requests

Events & Tournaments

This week: use this as the simple public calendar area once venue calendars/open-play schedules are source-backed. For now, it remains demo-only and points users back to game requests and verified future calendar sources.

Notification queue

Local demo signup → game → join → notify flow

Local-only demo data: these rows are generated from deterministic form payloads in build/prototype/vancouver-local-form-flow-output.json. They prove member signup, court/time game creation, join handling, and queued creator notifications without sending anything externally.

New member signup

  • Demo Priya · lower intermediate · DUPR 3.05 · female
    Notifications: on via in app

New game request

  • 2026-05-12, 17:30–19:00 at Jericho Beach Park pickleball court lead
    doubles; beginner to intermediate; DUPR 2.0–3.5; preference: mixed preferred; 3 players needed. Local-only demo post proving the future submit-game form can create a valid request.

Join action

  • user_local_signup_demo_priya · confirmed
    Demo Priya joins the after-work doubles session.

Queued notification

  • Demo Priya joined your pickleball game → Demo Sam · in app · queued
    Demo Priya confirmed for your after-work doubles session at Hillcrest Demo Indoor Option.

Pending correction

  • Jericho Beach Park pickleball court lead · hours · pending
    Demo correction: confirm court schedule before launch; keep unknown until verified.

Acceptance checks

Local API-style flow

Endpoint logic proof: generated by build/prototype/vancouver-local-api-flow-output.json. This proves create-user, create-game, filter, join, and queue-notification logic without starting a server or sending external notifications.

Created user

  • Demo Alex · intermediate · DUPR 3.4 · male

Created session

  • Thursday evening, 6:30–8:00 · doubles · DUPR 3.0–4.25 · preference mixed preferred

Filter result

  • Matched game IDs: game_api_demo_evening_001

Join + notification

  • confirmed: Demo Alex can make the evening session.
    Demo Alex joined your pickleball game · queued

Acceptance checks

Local web app admin state

Localhost server proof: generated by build/prototype/vancouver-local-web-app-state.json. This shows operator review, session cleanup, and stale session cleanup writing only to local JSON state.

Reviewed court corrections

  • update_demo_amenities_001 → approved
    Local admin approved the demo amenities correction for proof only.

Session cleanup

  • game_2026_05_09_beginner_demo → expired
    Local stale-session cleanup expired this demo game; no external notification.
  • game_2026_05_10_intermediate_demo → expired
    Local stale-session cleanup expired this demo game; no external notification.
  • game_local_2026_05_15_court_jericho_beach_source_dr → cancelled
    Local admin cancelled this demo game; no external delivery.

Queued local notices

  • Pickleball session marked cancelled · queued
    The local demo session Friday evening, 6:00–7:30 is now cancelled. No external message was sent.
  • Pickleball session marked cancelled · queued
    The local demo session Friday evening, 6:00–7:30 is now cancelled. No external message was sent.
  • Pickleball session expired · queued
    The local demo session Saturday morning, 10:00–11:30 expired and was removed from open results. No external message was sent.
  • Pickleball session expired · queued
    The local demo session Saturday morning, 10:00–11:30 expired and was removed from open results. No external message was sent.
  • Pickleball session expired · queued
    The local demo session Sunday evening, 6:00–8:00 expired and was removed from open results. No external message was sent.

Court verification workflow

Launch gate: every needs-review court now has an explicit verification task. Courts stay demo-labeled and noindexed until official/source-backed checks are complete.

high priority · ready for review

Crescent Park pickleball court lead

Operator review captured an official municipal source lead. Launch-safe as a source-backed draft only; amenities, schedules/drop-in rules, current conditions, and stronger public wording still require final review/signoff.

  • ✓ official source
  • ✓ address
  • ✓ court count
  • ✓ indoor outdoor
  • □ amenities
  • □ drop in policy
  • □ access rules

Source: Crescent Park pickleball court official source lead · Assigned: operator

high priority · ready for review

Robert Burnaby Park pickleball court lead

Operator review captured an official municipal source lead. Launch-safe as a source-backed draft only; amenities, schedules/drop-in rules, current conditions, and stronger public wording still require final review/signoff.

  • ✓ official source
  • ✓ address
  • ✓ court count
  • ✓ indoor outdoor
  • □ amenities
  • □ drop in policy
  • □ access rules

Source: Robert Burnaby Park pickleball court official source lead · Assigned: operator

high priority · ready for review

South Surrey Athletic Park pickleball court lead

Operator review captured an official municipal source lead. Launch-safe as a source-backed draft only; amenities, schedules/drop-in rules, current conditions, and stronger public wording still require final review/signoff.

  • ✓ official source
  • ✓ address
  • ✓ court count
  • ✓ indoor outdoor
  • □ amenities
  • □ drop in policy
  • □ access rules

Source: South Surrey Athletic Park pickleball court official source lead · Assigned: operator

high priority · ready for review

Squint Lake Park pickleball court lead

Operator review captured an official municipal source lead. Launch-safe as a source-backed draft only; amenities, schedules/drop-in rules, current conditions, and stronger public wording still require final review/signoff.

  • ✓ official source
  • ✓ address
  • ✓ court count
  • ✓ indoor outdoor
  • □ amenities
  • □ drop in policy
  • □ access rules

Source: Squint Lake Park pickleball court official source lead · Assigned: operator

medium priority · ready for review

Champlain Heights Park pickleball court lead

Operator review captured an official municipal source lead. Launch-safe as a source-backed draft only; amenities, schedules/drop-in rules, current conditions, and stronger public wording still require final review/signoff.

  • ✓ official source
  • ✓ address
  • □ court count
  • ✓ indoor outdoor
  • □ amenities
  • □ drop in policy
  • □ access rules

Source: Champlain Heights Park pickleball court official source lead · Assigned: operator

medium priority · ready for review

Jericho Beach Park pickleball court lead

Operator review captured an official municipal source lead. Launch-safe as a source-backed draft only; amenities, schedules/drop-in rules, current conditions, and stronger public wording still require final review/signoff.

  • ✓ official source
  • ✓ address
  • □ court count
  • ✓ indoor outdoor
  • □ amenities
  • □ drop in policy
  • □ access rules

Source: Jericho Beach Park pickleball court official source lead · Assigned: operator

Court source evidence intake

Source posture: candidate sources only. Before review, a candidate source supports zero public claims until operator review records supported checks and review timestamps; noindex stays in place. Even reviewed source leads remain launch-safe draft listings only until final wording signoff.

official reviewed · reviewed supports claim

Jericho Beach Park pickleball court lead

Candidate source: https://vancouver.ca/news-calendar/vancouver-picklers-get-a-double-bounce-as-pop-up-court-project-is-extended.aspx

Checks supported now: official_source, address, indoor_outdoor

Reviewed from existing Brave/source-research artifact only; supports a cautious source-backed draft listing, not a verified/certified/endorsed court claim. Do not infer amenities, hours, drop-in policy, lights, washrooms, water, parking, or real-time availability.

official reviewed · reviewed supports claim

Champlain Heights Park pickleball court lead

Candidate source: https://vancouver.ca/news-calendar/vancouver-picklers-get-a-double-bounce-as-pop-up-court-project-is-extended.aspx

Checks supported now: official_source, address, indoor_outdoor

Reviewed from existing Brave/source-research artifact only; supports a cautious source-backed draft listing, not a verified/certified/endorsed court claim. Do not infer amenities, hours, drop-in policy, lights, washrooms, water, parking, or real-time availability.

official reviewed · reviewed supports claim

Squint Lake Park pickleball court lead

Candidate source: https://www.burnaby.ca/our-city/news/2023-11-01/four-new-pickleball-courts-open-squint-lake-park

Checks supported now: official_source, address, indoor_outdoor, court_count

Reviewed from existing Brave/source-research artifact only; supports a cautious source-backed draft listing, not a verified/certified/endorsed court claim. Do not infer amenities, hours, drop-in policy, lights, washrooms, water, parking, or real-time availability.

official reviewed · reviewed supports claim

Robert Burnaby Park pickleball court lead

Candidate source: https://www.burnaby.ca/explore-outdoors/parks/robert-burnaby-park

Checks supported now: official_source, address, indoor_outdoor, court_count

Reviewed from existing Brave/source-research artifact only; supports a cautious source-backed draft listing, not a verified/certified/endorsed court claim. Do not infer amenities, hours, drop-in policy, lights, washrooms, water, parking, or real-time availability.

official reviewed · reviewed supports claim

Crescent Park pickleball court lead

Candidate source: https://www.surrey.ca/news-events/news/eight-new-pickleball-courts-now-open-crescent-park

Checks supported now: official_source, address, indoor_outdoor, court_count

Reviewed from existing Brave/source-research artifact only; supports a cautious source-backed draft listing, not a verified/certified/endorsed court claim. Do not infer amenities, hours, drop-in policy, lights, washrooms, water, parking, or real-time availability.

official reviewed · reviewed supports claim

South Surrey Athletic Park pickleball court lead

Candidate source: https://www.surrey.ca/news-events/news/surrey-opens-12-new-pickleball-courts-south-surrey-athletic-park

Checks supported now: official_source, address, indoor_outdoor, court_count

Reviewed from existing Brave/source-research artifact only; supports a cautious source-backed draft listing, not a verified/certified/endorsed court claim. Do not infer amenities, hours, drop-in policy, lights, washrooms, water, parking, or real-time availability.

Metro Vancouver court candidate atlas

Research intake: 72 probable venue clusters from 273 OpenStreetMap pickleball-tagged elements. This is a triage atlas only: it does not create verified public court claims, does not remove noindex, and does not authorize outreach.

Next operator move: review the highest-value clusters against official city/facility pages, then promote only source-backed facts into the verified court workflow.

Burnaby / New Westminster

23 candidate venue clusters

  • Blue Mountain Park pickleball court candidate · 6 mapped court geometries · access: unknown
    Near: Blue Mountain Park; source: OpenStreetMap candidate
  • Bonsor 55+ Centre pickleball court candidate · 6 mapped court geometries · access: unknown
    Near: Bonsor 55+ Centre; source: OpenStreetMap candidate
  • Bridgeview Park pickleball court candidate · 4 mapped court geometries · access: unknown
    Near: Bridgeview Park; source: OpenStreetMap candidate
  • Burnaby North Lawn Bowling Club pickleball court candidate · 12 mapped court geometries · access: yes
    Near: Burnaby North Lawn Bowling Club; source: OpenStreetMap candidate
  • Cariboo Park pickleball court candidate · 2 mapped court geometries · access: yes
    Near: Cariboo Park; source: OpenStreetMap candidate
  • Edmonds Park pickleball court candidate · 2 mapped court geometries · access: yes
    Near: Edmonds Park; source: OpenStreetMap candidate
  • Forest Grove Park pickleball court candidate · 9 mapped court geometries · access: yes
    Near: Forest Grove Park; source: OpenStreetMap candidate
  • Glenayre Centre pickleball court candidate · 2 mapped court geometries · access: unknown
    Near: Glenayre Centre; source: OpenStreetMap candidate

+15 more candidates queued for review.

Vancouver

15 candidate venue clusters

  • Brewers Park pickleball court candidate · 4 mapped court geometries · access: unknown
    Near: Brewers Park; source: OpenStreetMap candidate
  • Dr. R.E.McKechnie Elementary School pickleball court candidate · 1 mapped court geometries · access: private
    Near: Dr. R.E.McKechnie Elementary School; source: OpenStreetMap candidate
  • Dunbar Lawn Bowling pickleball court candidate · 4 mapped court geometries · access: yes
    Near: Dunbar Lawn Bowling; source: OpenStreetMap candidate
  • King George Secondary School pickleball court candidate · 8 mapped court geometries · access: unknown
    Near: King George Secondary School; source: OpenStreetMap candidate
  • Maple Grove Pool pickleball court candidate · 1 mapped court geometries · access: private
    Near: Maple Grove Pool; source: OpenStreetMap candidate
  • McCleery Park pickleball court candidate · 1 mapped court geometries · access: private
    Near: McCleery Park; source: OpenStreetMap candidate
  • Normanby Park pickleball court candidate · 4 mapped court geometries · access: yes
    Near: Normanby Park; source: OpenStreetMap candidate
  • Pandora Park pickleball court candidate · 6 mapped court geometries · access: yes
    Near: Pandora Park; source: OpenStreetMap candidate

+7 more candidates queued for review.

Metro Vancouver

9 candidate venue clusters

  • Centennial Park pickleball court candidate · 8 mapped court geometries · access: unknown
    Near: Centennial Park; source: OpenStreetMap candidate
  • Garibaldi Secondary School pickleball court candidate · 6 mapped court geometries · access: unknown
    Near: Garibaldi Secondary School; source: OpenStreetMap candidate
  • North Delta Community Park pickleball court candidate · 1 mapped court geometries · access: yes
    Near: North Delta Community Park; source: OpenStreetMap candidate
  • North Delta Secondary pickleball court candidate · 8 mapped court geometries · access: unknown
    Near: North Delta Secondary; source: OpenStreetMap candidate
  • Sullivan Park pickleball court candidate · 6 mapped court geometries · access: unknown
    Near: Sullivan Park; source: OpenStreetMap candidate
  • Surrey Pickleball Club · 19 mapped court geometries · access: unknown
    Near: Surrey Pickleball Club; source: OpenStreetMap candidate
  • Telosky Stadium Park pickleball court candidate · 4 mapped court geometries · access: unknown
    Near: Telosky Stadium Park; source: OpenStreetMap candidate
  • Unnamed pickleball court cluster near 49.04735,-122.86570 · 2 mapped court geometries · access: unknown
    Near: no nearby named place captured; source: OpenStreetMap candidate

+1 more candidates queued for review.

Coquitlam / Port Coquitlam / Port Moody

8 candidate venue clusters

  • Bramblewood Elementary School pickleball court candidate · 6 mapped court geometries · access: unknown
    Near: Bramblewood Elementary School; source: OpenStreetMap candidate
  • Eagle Mountain Hydro Right-of-Way pickleball court candidate · 4 mapped court geometries · access: unknown
    Near: Eagle Mountain Hydro Right-of-Way; source: OpenStreetMap candidate
  • Evergreen Park pickleball court candidate · 1 mapped court geometries · access: yes
    Near: Evergreen Park; source: OpenStreetMap candidate
  • Hammond Park pickleball court candidate · 1 mapped court geometries · access: unknown
    Near: Hammond Park; source: OpenStreetMap candidate
  • Mariner Park pickleball court candidate · 3 mapped court geometries · access: unknown
    Near: Mariner Park; source: OpenStreetMap candidate
  • Minnekhada Middle School pickleball court candidate · 1 mapped court geometries · access: unknown
    Near: Minnekhada Middle School; source: OpenStreetMap candidate
  • Port Coquitlam Community Centre pickleball court candidate · 4 mapped court geometries · access: unknown
    Near: Port Coquitlam Community Centre; source: OpenStreetMap candidate
  • Unnamed pickleball court cluster near 49.26153,-122.81203 · 1 mapped court geometries · access: unknown
    Near: no nearby named place captured; source: OpenStreetMap candidate

All candidates in this area shown.

Richmond / Delta / Surrey west

8 candidate venue clusters

  • Dennison Park pickleball court candidate · 4 mapped court geometries · access: unknown
    Near: Dennison Park; source: OpenStreetMap candidate
  • Mas Pow Pickleball Club · 1 mapped court geometries · access: unknown
    Near: Mas Pow Pickleball Club; source: OpenStreetMap candidate
  • Memorial Park pickleball court candidate · 3 mapped court geometries · access: unknown
    Near: Memorial Park; source: OpenStreetMap candidate
  • Pacific Pickleball · 1 mapped court geometries · access: unknown
    Near: Pacific Pickleball; source: OpenStreetMap candidate
  • South Arm Community Park pickleball court candidate · 3 mapped court geometries · access: yes
    Near: South Arm Community Park; source: OpenStreetMap candidate
  • South Delta Secondary School pickleball court candidate · 3 mapped court geometries · access: unknown
    Near: South Delta Secondary School; source: OpenStreetMap candidate
  • Steveston Community Park pickleball court candidate · 1 mapped court geometries · access: unknown
    Near: Steveston Community Park; source: OpenStreetMap candidate
  • West Richmond Community Centre pickleball court candidate · 6 mapped court geometries · access: yes
    Near: West Richmond Community Centre; source: OpenStreetMap candidate

All candidates in this area shown.

Langley / Surrey east

5 candidate venue clusters

  • Douglas Park pickleball court candidate · 8 mapped court geometries · access: unknown
    Near: Douglas Park; source: OpenStreetMap candidate
  • Fallowfield Diamond (South Diamond) pickleball court candidate · 1 mapped court geometries · access: yes
    Near: Fallowfield Diamond (South Diamond); source: OpenStreetMap candidate
  • Langley Events Centre Fieldhouse B pickleball court candidate · 12 mapped court geometries · access: yes
    Near: Langley Events Centre Fieldhouse B; source: OpenStreetMap candidate
  • South Aldergrove Park pickleball court candidate · 2 mapped court geometries · access: unknown
    Near: South Aldergrove Park; source: OpenStreetMap candidate
  • Surrey Lawn Bowling Club pickleball court candidate · 8 mapped court geometries · access: unknown
    Near: Surrey Lawn Bowling Club; source: OpenStreetMap candidate

All candidates in this area shown.

North Vancouver

3 candidate venue clusters

  • Mahon Sport Court pickleball court candidate · 4 mapped court geometries · access: unknown
    Near: Mahon Sport Court; source: OpenStreetMap candidate
  • Ray Perrault Park pickleball court candidate · 1 mapped court geometries · access: yes
    Near: Ray Perrault Park; source: OpenStreetMap candidate
  • St. Edmund's Elementary School pickleball court candidate · 1 mapped court geometries · access: unknown
    Near: St. Edmund's Elementary School; source: OpenStreetMap candidate

All candidates in this area shown.

West Vancouver / Bowen-side

1 candidate venue clusters

  • Unnamed pickleball court cluster near 49.41560,-123.31653 · 1 mapped court geometries · access: private
    Near: no nearby named place captured; source: OpenStreetMap candidate

All candidates in this area shown.

Analytics-safe event plan

Instrumentation posture: the page includes inert data-analytics-event markers only. No analytics script, pixel, cookie, beacon, localStorage tracking, or external event send is enabled until Simon approves a provider, retention, privacy wording, and opt-out path.

Privacy + notification safety plan

Current posture: No real signup/game/correction data is collected on this static page. Demo notification rows are local proof artifacts only.

Backend + admin access decision

Current decision: No production backend is enabled. Local admin/API proof remains 127.0.0.1 only and must not be exposed publicly.

Data retention + suppression workflow

Current posture: suppression_records and data_deletion_requests are demo-only proof artifacts. No real deletion/export intake is enabled and no real notification delivery is connected.

Suppression records

  • Demo Lee · all · demo guardrail · active

Deletion/export requests

  • Demo Lee · suppress notifications · queued
    Demo-only proof that suppression/deletion requests are tracked before any real notification delivery is enabled.

Before real users: prove requester verification, deletion/export completion, active suppression checks, and secret-free/static-safe deploy assets.

Local admin auth boundary

Current proof: No public admin surface is enabled. The local web/API proof remains bound to 127.0.0.1 and admin mutation routes require a demo token.

Deploy smoke + rollback readiness

Operational safety: Each deploy creates timestamped remote backups and must pass HTTP/HTTPS smoke before it is considered healthy.

Launch approval matrix

Public launch is no-go until Simon approval required items are recorded with matching proof. Blocked without approval: verified court claims, real data collection, notification delivery, analytics provider, backend/admin exposure, removing noindex, external outreach, and paid services/vendors.

Privacy input boundary

Local negative-test proof: private/contact/payment fields are rejected before persistence. The localhost self-test verifies email, phone, and payment payloads return HTTP 400 and the fixture still contains no private contact or payment data.

Privacy/security approval checklist

Status: checklist only; this does not approve real data collection, production backend exposure, notification delivery, analytics delivery, or provider activation.

Before real collection: Simon must approve collection scope and allowed fields; privacy copy, admin security, form abuse controls, data-rights workflow, backups, secrets handling, provider decisions, and negative tests must be proven.

Default action: keep the public site static and collect no real user data.

Provider activation checklist

Status: checklist only; this does not activate analytics, notifications, storage, payment, delivery tests, third-party processors, or paid services.

Required approval fields: provider name, purpose, data sent/stored, retention, privacy copy, opt-out/suppression path, test-mode proof, rollback/disable path, budget approval, and operator owner.

Default action: keep all providers inactive, keep markers inert, send no real notifications, collect no analytics, store no real user data, and make no paid/provider changes.

Static security headers

Browser hardening: the static deploy now includes Apache header rules for Content-Security-Policy, connect-src none, frame blocking, nosniff, strict referrer policy, and disabled browser permissions for geolocation, camera, microphone, payment, and USB.

Accessibility QA posture

Keyboard + assistive tech readiness: the static page now includes a skip link, stable main-content target, explicit filter labels, live result-count semantics, labeled result regions, and visible keyboard focus styles. No accessibility certification is claimed until a real manual audit is complete.

Stale session cleanup

Freshness proof: localhost admin proof expires stale open sessions, marks them expired locally, confirms they are removed from open filters, and queues in-app-only notices. No external notification is sent.

Launch readiness dashboard

Current estimate: Internal MVP ~99.9%; Launch-ready public product ~98.8%.

Current public launch state: NO-GO for real users until source-backed court review, Simon approvals, production backend/privacy/security decisions, manual accessibility audit, and indexing approval are complete.

Managed readiness completion checklist

Status: static-safe managed readiness completion; this does not grant public launch approval.

Current readiness estimate: Internal MVP: 99.9%; Launch-ready public product: 98.8%.

Completed managed-readiness areas: live static deploy and health hash, static UX/search/filters, local form/API/web-app tests, local admin/privacy proofs, court review packets, privacy/security/provider/backend checklists, accessibility evidence worksheet, launch approval/freeze/final-smoke controls, and deploy/rollback/security proof.

Public-launch blockers still open: court evidence review/wording approval, Simon GO record, real data privacy/security approval, backend/admin approval or explicit not-needed decision, named-human accessibility audit evidence, and noindex removal approval after final smoke.

Default action: keep public launch NO-GO, noindex,follow, static-safe, and demo-only.

Launch operations hold

Status: operations hold active; this is not public launch approval.

Current state: public launch NO-GO; indexing remains noindex,follow; static-safe demo-only posture remains required.

Requires explicit Simon approval: public launch GO, noindex removal, real user data collection, production backend/admin exposure, provider activation, external outreach/contact, verified-court claims, or accessibility certification wording.

Drift tripwires: health hash mismatch, missing noindex, private/contact/payment fields, provider script/pixel/beacon/cookie/tracking, public backend/admin route, missing security headers, or unsupported verification/certification claims.

Public launch unblocker ledger

Launch state: NO-GO. Indexing state: noindex,follow. All remaining launch blockers stay blocked until matching evidence and explicit Simon approval are recorded.

Simon launch decision brief

Launch state: NO-GO. Indexing state: noindex,follow. This brief does not authorize public launch GO, remove noindex, or grant approval.

Decision options: remain NO-GO and continue static-safe operations hold (recommended); approve evidence work only (scoped/internal only); approve public launch GO (blocked until every requirement is closed).

Must be true before GO: court evidence and wording approval, signed Simon decision record, privacy/security approval or not-needed decision, backend/admin approval or not-needed decision, provider approval or disabled state, manual accessibility audit evidence and wording approval, final smoke on exact bundle, and noindex removal approval.

Post-approval launch cutover checklist

Cutover allowed now: false. Launch state remains NO-GO and indexing remains noindex,follow. This checklist does not authorize cutover now.

Entry requirements: signed Simon GO record, closed unblocker ledger, approved court wording, privacy/security/backend decisions, provider scope approved or disabled, manual accessibility evidence, final smoke on exact bundle, and rollback owner/disable path.

Cutover sequence: freeze approved bundle, run full local gates, deploy with backups, smoke HTTP/HTTPS health security and content, verify no unapproved provider/backend activation, remove noindex only if approved, post-indexing smoke, then record launch proof.

Abort conditions: missing requirement, smoke/hash failure, missing security headers, unapproved real-data/provider/backend change, unsupported verified-court/accessibility claim, or missing rollback owner.

Launch evidence lockfile

Launch state: NO-GO. Indexing state: noindex,follow. This lockfile preserves managed-readiness evidence without granting launch approval.

Locked evidence categories: local gates, static render/build, public HTTP/HTTPS smoke, health hash match, security headers, remote backups, noindex, no real collection, no provider activation, no public backend/admin exposure, and no unsupported verified-court or accessibility certification claims.

Required on every future deploy: refresh deploy proof JSON, rerun local gates and public smoke, verify health hash/security/noindex, confirm no unapproved real-data/provider/backend/claim changes, and update notes/memory.

Invalidates lock if: health hash mismatch, missing security headers, missing noindex without approval, unapproved real collection/provider/backend exposure, unsupported verification/certification claims, or missing backup/deploy proof.

Launch drift audit report

Audit result: pass. Drift found: false. public launch remains NO-GO and indexing remains noindex,follow.

Audited controls: launch state, indexing state, real data collection, provider activation, backend/admin exposure, court and accessibility claims, security headers, and proof continuity.

Required if drift is found: stop deploys, preserve current proof, revert or disable unapproved change, rerun full gate suite, and ask Simon before any launch-state change.

Approval evidence intake register

Approval granted: false. Intake allowed now: draft evidence organization only. This register does not grant approval or authorize launch-state changes.

Required evidence fields: decision area, decision maker, decision timestamp, approved scope, evidence links or paths, remaining risks, rollback or disable owner, and explicit GO or NO-GO value.

Decision areas: court wording, Simon GO/indexing, privacy/security, production backend/admin, provider activation, and manual accessibility audit evidence.

Rejection rules: missing maker/time/scope/evidence, inferred approval, non-Simon launch approval, noindex or NO-GO conflict, or real-collection/provider authorization without privacy/security scope.

Launch approval evidence packet template

Approval granted: false. Template only; it does not grant approval, record GO, remove noindex, or authorize launch-state changes.

Required packet sections: decision summary, decision maker/time, approved or NO-GO scope, evidence links and hashes, closed blockers, remaining risks, privacy/security posture, rollback owner, final smoke, and explicit indexing decision.

Minimum evidence links: deploy proof JSON, milestone proof, public smoke, unblocker ledger, approval evidence intake register, and launch decision record.

Must reject if: approval is inferred, maker/time/scope/hash/blocker/rollback/indexing evidence is missing, or privacy/security scope is missing for real collection. Keep NO-GO until explicit Simon approval passes validation.

Launch state machine

Current state: NO_GO_STATIC_DEMO. Approval granted: false. Indexing remains noindex,follow.

Allowed current transitions: only NO_GO_STATIC_DEMO to EVIDENCE_INTAKE_ONLY is allowed now, and only for static-safe evidence organization with no external contact, real collection, provider activation, or indexing change.

Forbidden transitions: NO_GO directly to GO/live indexing, evidence intake to GO without signed decision, or approval packet to GO without cutover proof.

Automatic reversion triggers: smoke failure, health hash mismatch, missing headers, missing noindex without approval, unapproved real collection/provider/backend exposure, or unsupported verified-court/accessibility claim.

Approval escalation queue

External contact allowed: false. Approval granted: false. Every item remains queued_not_sent until Simon explicitly asks to send or approve a specific item.

Queued items: court wording review, GO decision record, privacy/security scope, backend/admin scope, provider activation scope, accessibility wording, and indexing/noindex removal.

Send rules: do not send without explicit Simon instruction; Do not contact courts, vendors, customers, or public channels; do not bundle approval with unverified claims; do not send if evidence is missing; preserve noindex,follow until indexing approval.

Launch readiness heartbeat

Launch state: NO_GO_STATIC_DEMO. Approval granted: false. External contact allowed: false. Indexing remains noindex,follow.

Heartbeat checks: HTTP/HTTPS live, health hash match, noindex guard, security headers, no real collection, no provider/backend/contact, and proof continuity.

Pause conditions: any check fails, approval/contact flips without evidence or instruction, noindex disappears without approval, backend/provider/real collection appears, or unsupported verified/accessibility claims appear.

Launch proof chain manifest

Required proof chain: launch state machine, approval escalation queue, launch readiness heartbeat, and Latest deploy smoke.

Continuity checks: required proof paths exist, latest deploy verification is ok=true, health hash matches, security headers are OK, noindex,follow remains present, and health reports the heartbeat feature.

This proof chain does not grant approval; it only preserves evidence continuity before any future Simon approval or cutover discussion.

Launch delta review checklist

Required delta checks: public copy, privacy, provider, backend/admin, indexing, and proof deltas all remain required_before_approval.

Pass posture: No unsupported public claim exists; no public real-data collection, provider activation, backend/admin mutation path, or noindex removal is allowed without explicit Simon approval.

Stop conditions: unsupported claims, real collection, unapproved providers, public backend/admin mutation, missing noindex, or non-OK deploy proof.

Preflight signoff register

Signoff items: Simon GO decision, court claim wording, privacy/security, backend/admin, provider activation, accessibility wording, and indexing/cutover all remain unsigned_required.

Hard rules: unsigned_required is not approval; do not remove noindex, collect real data, activate providers, expose backend/admin, or make verified/accessibility certification claims until the relevant signoff is explicitly signed.

Launch exceptions register

Open launch-blocking exceptions: court evidence, privacy/real collection, backend/admin, provider activation, accessibility claim, indexing/cutover, and external contact all remain open and launch_blocking.

Allowed posture: demo only, no verified-court claims, no public mutation surface, inert markers only, QA posture only, noindex,follow, and no external contact.

Closure rule: Any open launch-blocking exception keeps public launch NO-GO until named evidence and explicit scoped signoff close it.

Residual risk register

Residual risks: unverified court data remains blocked_pending_evidence; privacy/provider risks remain blocked_pending_approval; production operations remains blocked_pending_decision; accessibility remains blocked_pending_audit; indexing remains blocked_pending_signoff; operator continuity is managed_with_proof.

Acceptance rules: high/medium risks stay blocked_pending_* without named evidence and explicit signoff. Managed with proof does not equal launch approval.

Launch guard: Any blocked pending risk keeps public launch NO-GO; noindex,follow and demo-only posture remain active.

Launch control room summary

Readiness estimate: Internal MVP: 99.9%. Public launch: 98.8%. Simon approvals, evidence closure, manual audit, backend/provider decisions, and indexing signoff remain open.

Control-room posture: Do not treat readiness documents as GO. Public site stays demo/static-only, noindex,follow, no real collection, no providers, no public backend/admin, no verified/certification claims, and no external contact.

Unsafe without approval: public launch GO, remove noindex, real data collection, provider activation, production backend/admin exposure, verified-court claims, accessibility certification claims, external contact, or paid services.

Operator shift handoff

Safe mode: static_safe_demo_only. Reporting rule: milestone/deploy/percentage/approval/blocker only; otherwise NO_REPLY.

Must preserve: NO_GO_STATIC_DEMO, noindex,follow, demo/internal fixture posture, no real collection, no external contact, no providers, no public backend/admin, no verified-court or accessibility certification claims.

Required gates next cycle: fixture validation, local form/API flows, local web app self-test, static render/build, all validators, py_compile, static-safe deploy, HTTP/HTTPS smoke, health hash, security headers, and noindex,follow.

Launch artifact inventory

Required artifact groups: live static bundle, current control artifacts, current control data, current control validators, and latest proofs.

Inventory rules: Every required path must exist, latest deploy proof must verify ok=true, health must report this feature, and Inventory does not grant approval.

Continuity guard: Missing required artifact blocks future launch discussion; pause and regenerate proof before any approval or cutover discussion.

Evidence freshness policy

Freshness windows: public smoke, local gates, static render/build, health hash/security/noindex, and approval blocker state must be refreshed before approval or launch discussion; court/privacy/provider/accessibility evidence requires named current evidence.

Stale evidence actions: Treat stale evidence as launch-blocking, rerun gates, rebuild, deploy only if static-safe, rerun HTTP/HTTPS smoke, write new proof, and keep NO_GO_STATIC_DEMO with noindex,follow.

Evidence guard: cached proof cannot close blockers alone or authorize launch, indexing, real collection, provider activation, backend/admin exposure, public claims, or contact.

Launch continuity ledger

Ledger entries: launch control room summary, operator shift handoff, launch artifact inventory, and evidence freshness policy are linked to deploy and milestone proofs.

Continuity rules: Every ledger entry must have deploy and milestone proof. Ledger does not grant approval, cannot close blockers, and the latest entry must match the latest deploy proof.

Future entries require full gates: deploy, smoke, proof, notes, and memory update before any future launch discussion.

Launch NO-GO seal

Sealed controls: public launch GO, noindex removal, real data collection, provider activation, backend/admin exposure, verified-court claims, accessibility certification claims, external contact, and paid services remain sealed.

Seal break conditions: signed Simon GO decision, source-backed court evidence, privacy/security approval, backend/admin decision, provider scope, accessibility evidence/wording, final smoke with fresh proof, and signed indexing/cutover.

Seal rules: Readiness percentage cannot break seal. Cached or stale evidence cannot break seal. Seal break requires new build proof and memory update.

Launch proof summary

Latest proof bundle: deploy proof, milestone proof, managed readiness proof, and approval preflight proof are summarized in data/launch_proof_summary.json.

Verification summary: public smoke OK, health hash matches local, HTTPS security headers OK, noindex preserved, Launch NO-GO seal present, remote backups present, and Managed readiness proof OK.

Remaining blockers: source-backed court review, Simon launch/indexing approval, privacy/security approval, backend/admin decision, manual accessibility audit, and DreamHost good-neighbour posture remain open before public launch.

Approval hold digest

Held decisions: court review/wording, privacy/security real data collection, backend/admin auth boundary, manual accessibility audit, launch/indexing/noindex removal, and DreamHost final OK are all hold unsigned required.

Hold rule: Every held decision remains unsigned and required. This digest does not contact Simon, close blockers, infer approval, authorize launch/cutover/indexing, or permit external contact.

Unsafe actions still blocked: public launch GO, noindex removal, real user data collection, provider activation, backend/admin exposure, external outreach/contact, paid services, verified-court claims, and accessibility certification claims.

Blocker aging snapshot

Aging anchor: 2026-05-08. Elapsed time does not imply approval, and no blocker may be closed by age alone.

high stale-risk blocker set: source-backed court review, production privacy/security, and launch/indexing/noindex removal require fresh evidence before approval discussion.

Aging rule: No blocker may be closed by this snapshot alone. If age or freshness changes, rerun gates and refresh deploy/smoke proof before launch discussion.

Launch readiness watchlist

Critical watch items: court claim language, public forms/real collection, and indexing cutover all remain waiting on explicit scoped approval.

High watch items: provider activation, backend/admin production path, and manual accessibility wording remain blocked until evidence and approval exist.

Watchlist rule: Watchlist priority does not authorize action. No watch item may be closed by readiness percentage, elapsed time, or stale proof.

Operator quickcheck

60-second quickcheck: health hash matches latest local index, noindex,follow remains present, HTTPS security headers are present, held decisions remain unsigned required, public data posture is static/demo-only, and external actions remain blocked.

Quickcheck rule: Any failed quickcheck item means launch discussion is NO-GO. Quickcheck passing does not grant approval or close blockers.

Default action: if anything is unclear, stop and keep NO_GO_STATIC_DEMO, noindex,follow, static/demo-only posture, and approval_granted false.

Rollback quickcard

Rollback allowed only for recovery: restore a static-safe bundle, noindex, security headers, health hash match, or remove accidental provider/collection paths.

Rollback rule: Rollback is recovery only, not launch approval; it must preserve NO_GO_STATIC_DEMO and noindex,follow and must not expose secrets.

Required post-rollback checks: local gates, all validators, py_compile, HTTP/HTTPS smoke, health hash, security headers, noindex, proof, and memory update.

Site integrity snapshot

Integrity summary: static artifact hashes are captured in data/site_integrity_snapshot.json. Health/index hash match must stay true before any launch discussion.

Integrity rule: Snapshot is integrity evidence only, not launch approval. Hash match does not close blockers or authorize noindex removal.

Mismatch action: stop, rebuild, smoke, write proof, update memory, and keep NO_GO_STATIC_DEMO with noindex,follow.

Public safety disclosure snapshot

Required public disclosures: demo-only static prototype, No real user data collection, court data unverified until source review, No verified-court claims, no notification delivery, no providers/analytics, no public backend/admin, no accessibility certification claim, and noindex,follow until approval.

Disclosure rule: Public safety disclosures do not grant approval. Removing or weakening disclosures requires explicit scoped Simon approval plus fresh proof.

Missing disclosure action: stop launch discussion and restore the static-safe bundle.

Deploy evidence receipt

Receipt checks: latest deploy proof exists, Public smoke OK, HTTP/HTTPS index and health OK, robots/sitemap/manifest OK, health hash matches, security headers present, noindex,follow present, remote backups present, and .htaccess included.

Receipt rule: deploy evidence receipt is operational proof only, not approval. A passing receipt does not close blockers or authorize public launch.

Missing receipt action: rerun gates, redeploy only if static-safe, smoke, proof, and memory update.

NO-GO banner audit

Required banner tokens: NO-GO, demo-only, no real user data, no verified-court claims, no provider activation, no public backend/admin, noindex,follow, and does not grant approval.

Audit rule: NO-GO banner audit is visibility evidence only, not approval. Banner presence does not close blockers or authorize launch-state changes.

Missing banner action: stop launch discussion and restore static-safe disclosures.

Static feature registry

Feature count: the static health registry lists current launch-control and static-safe feature flags in data/static_feature_registry.json.

Registry rule: feature registry is inventory only, not approval. Feature count does not close blockers or authorize launch.

Required controls: launch NO-GO seal, launch proof summary, operator quickcheck, rollback quickcard, site integrity snapshot, public safety disclosure snapshot, deploy evidence receipt, and NO-GO banner audit must stay present.

Readiness snapshot ledger

Current snapshot: internal MVP readiness 99.9%; public launch readiness 98.8%; launch state NO_GO_STATIC_DEMO; indexing state noindex,follow; approval granted false.

Ledger rule: readiness snapshot ledger is status evidence only, not approval. Readiness percentage does not close blockers or authorize launch.

Open blockers: court review, Simon launch/indexing approval, privacy/security controls, backend/admin decision, manual accessibility audit, and DreamHost good-neighbour OK.

Approval scope guard

Required approval scope fields: decision ID, approver name, exact scope, allowed actions, blocked actions confirmed, evidence paths, fresh smoke proof, rollback/cancel path, privacy/safety impact, and recheck date.

Scope rule: approval must be explicit, scoped, current, and backed by fresh proof. Ambiguous approval is treated as NO-GO.

Guardrail: Approval scope guard is not approval and cannot close blockers; partial approval cannot authorize unrelated launch-state changes.

Launch decision gate

Gate state: closed. Required GO inputs include Simon signed launch decision, resolved court evidence conflicts, privacy/security approval, backend/admin decision if needed, manual accessibility audit evidence, fresh deploy proof, and explicit noindex removal approval.

Gate rule: launch decision gate remains closed until every required GO input is present. 99.9% managed readiness cannot open the gate.

Guardrail: missing, stale, conflicting, or ambiguous GO input keeps launch state NO-GO; this artifact is not approval.

Noindex removal lock

Lock state: locked. Unlock requirements include Simon explicit noindex approval, open launch decision gate, resolved court evidence conflicts, privacy/security approval, manual accessibility audit evidence, and fresh post-change deploy smoke.

Lock rule: search indexing is a launch-state change and cannot be bundled into unrelated approval. If robots, meta robots, or health disagree, restore noindex,follow before launch discussion.

Guardrail: noindex removal lock is not approval and cannot authorize indexing or launch.

Public claim wording lock

Lock state: locked. Allowed public wording stays demo-only, static-safe prototype, unverified sample court data, not collecting real user data, no real notifications are sent, NO_GO_STATIC_DEMO, and noindex,follow.

Blocked public claims: no verified court listings, official partner/endorsement claims, accessibility certification or WCAG compliance, approved public launch, real-time court availability, production backend/admin, real signup delivery, or complete privacy/security approval.

Guardrail: public claim wording lock is not approval and cannot authorize public claims or launch.

Notification send lock

Lock state: locked. Allowed notification behaviour is static UI copy only, local proof queue only on 127.0.0.1, no real notification sends, no provider activation, no contact import/outreach, and no phone or email collection.

Blocked notification actions: real SMS, email, push, provider activation, webhook exposure, contact import/upload, external outreach, and phone/email collection.

Guardrail: notification send lock is not approval and cannot authorize real notification sends.

Contact data collection lock

Lock state: locked. Allowed public inputs stay limited to display-name demo copy, skill preference labels, demo DUPR preference labels, court/game preference text, and local fixture-only test records.

Blocked public inputs: no phone/email/payment fields, address, date of birth, emergency contact, government ID, health/sensitive data, or contact import.

Guardrail: contact data collection lock is not approval and cannot authorize real data collection.

Backend exposure lock

Lock state: locked. Allowed backend behavior is static public site only, local API proof only on 127.0.0.1, demo-token local admin proof, fixture-only JSON persistence, no public write endpoints, and no production admin exposure.

Blocked backend actions: public API write endpoint, public admin panel, production database persistence, unauthenticated admin action, provider webhook exposure, secret/token exposure, real user data storage, and real notification dispatch.

Guardrail: backend exposure lock is not approval and cannot authorize backend or admin exposure.

Provider credential lock

Lock state: locked. Allowed provider behavior is provider activation checklist only, static copy only, no public credentials, no provider webhooks, no paid service activation, and no outbound sends.

Blocked provider actions: public API key exposure, public webhook URL exposure, provider token storage in the static bundle, paid service activation, SMS/email/analytics/payment provider activation, and real outbound sends.

Guardrail: provider credential lock is not approval and cannot authorize provider activation or credential exposure.

External outreach lock

Lock state: locked. Allowed outreach behavior is internal documentation only, static public disclosures only, local proof artifacts only, no messages sent, no court contact, and no public posting.

Blocked outreach actions: court contact, player contact, vendor contact, public social posts, community posting, email outreach, SMS outreach, phone calls, paid ads/boosts, and search console submission.

Guardrail: external outreach lock is not approval and cannot authorize external outreach.

Paid service lock

Rollback authorization lock

Lock state: locked. Allowed rollback behavior is restore last known static-safe bundle while preserving NO_GO_STATIC_DEMO, noindex,follow, safety disclosures, no real data collection, and static-only posture.

Blocked rollback side effects: launch-state changes, noindex removal, public claim weakening, real data collection enablement, provider activation, backend/admin exposure, outreach, and paid service activation.

Guardrail: rollback is recovery only; rollback authorization lock is not approval and cannot authorize launch, data collection, providers, outreach, or paid services.

Accessibility certification lock

Lock state: locked. Allowed accessibility wording is accessibility support planning, manual audit pending, QA checklist draft, no certification claim, no WCAG compliance claim, and Simon approval required before public wording.

Blocked accessibility claims: accessibility certified, WCAG compliant, ADA compliant, legally compliant accessibility, manual audit complete, screen-reader certified, keyboard-accessibility guaranteed, and public accessibility conformance statements.

Guardrail: accessibility certification lock is not approval and cannot authorize accessibility certification claims.

Court publication lock

Lock state: locked. Allowed court wording is candidate research only, unverified sample court data, source-backed verification pending, court evidence conflicts unresolved, operator review required, and no verified public court claims.

Blocked court claims: verified court listings, official court hours or availability, facility partner/endorsement, guaranteed court count, real-time court status, resolved source conflicts, and approved public court guide claims.

Guardrail: court publication lock is not approval and cannot authorize verified court claims.

Demo form submission guard

Guard state: locked. Allowed public form behavior is static UI copy only, deterministic local proof fixtures only, no public write endpoint, no public persistence, no real contact fields collected, no real signup or game request submitted, and no real notification sent.

Blocked public form behavior: real signup/game/join/correction intake, email or phone collection, free-text personal data collection, provider webhook submission, public database write, admin moderation queue from public users, and real notification opt-in.

Guardrail: demo form submission guard is not approval and cannot authorize real public form submissions.

Member profile publication lock

Lock state: locked. Allowed member wording is demo members only, sample preferences only, local proof fixtures only, no public player directory, no real roster or membership claim, and no identity-linked public profile.

Blocked member claims: real member directory, verified player profiles, public roster of players, active membership count, real DUPR-linked identity, real notification preferences, community onboarding complete, and member consent captured.

Guardrail: member profile publication lock is not approval and cannot authorize public member profile publication.

Game request publication lock

Lock state: locked. Allowed game request wording is demo game requests only, sample join flow only, local proof fixtures only, no real session scheduled, no player commitment collected, and no live availability claim.

Blocked game request claims: real open games, live session availability, confirmed player attendance, real join request submitted, real host notification sent, public event listing, court booking confirmed, and safety moderation complete.

Guardrail: game request publication lock is not approval and cannot authorize public game request publication.

Moderation action lock

Lock state: locked. Allowed moderation wording is local admin proof only, fixture correction review only, demo stale cleanup only, no production admin authority, no real user moderation, and no public support or takedown queue.

Blocked moderation claims: production moderation enabled, public admin queue active, real correction processed, real user dispute handled, real takedown request accepted, operator escalation live, moderation SLA active, and audit trail compliance complete.

Guardrail: moderation action lock is not approval and cannot authorize real moderation actions.

Map/geolocation provider lock

Lock state: locked. Allowed map behavior is static court text only, candidate atlas proof only, no live map tiles, no browser geolocation prompt, no routing or distance API, no provider key in static deploy, and no location tracking or personalization.

Blocked map behavior: Google Maps or Mapbox API activation, live tile loading, browser geolocation request, route or distance calculation API, venue scraping/enrichment, location analytics/tracking, paid map provider usage, and map provider token exposure.

Guardrail: map/geolocation provider lock is not approval and cannot authorize live map providers or geolocation collection.

Calendar integration lock

Lock state: locked. Allowed calendar behavior is static time copy only, demo schedule examples only, no ICS file generation, no Google Calendar or Outlook integration, no RSVP invite delivery, no reminder send, and no real attendance commitment.

Blocked calendar behavior: public ICS feed, calendar subscription, Google Calendar API activation, Microsoft Graph calendar activation, real RSVP invite, real reminder notification, calendar provider token exposure, live scheduling workflow, and cancellation notice delivery.

Guardrail: calendar integration lock is not approval and cannot authorize calendar integrations or reminder delivery.

Data export/import lock

Lock state: locked. Allowed export/import behavior is fixture JSON proof only, static health metadata only, local admin proof snapshots only, no public export download, no public import upload, no production backup migration, and no real user data portability claim.

Blocked export/import behavior: real user data export/import, CSV upload or download for public users, production database backup migration, deletion/export request fulfillment, portable profile download, bulk unverified court import, third-party data sync, and private data in static artifacts.

Guardrail: data export/import lock is not approval and cannot authorize real data export or import.

Sharing/referral lock

Lock state: locked. Allowed sharing behavior is static non-sending copy only, no share widget activation, no contact import, no referral tracking, no public posting, no invite delivery, and no paid or promoted distribution.

Blocked sharing behavior: social share widget activation, contact import/upload, referral code generation, invite SMS/email delivery, public social posting, search submission/launch announcement, paid boost/promoted post, UTM or identity-linked referral tracking, and court/player/vendor outreach.

Guardrail: sharing/referral lock is not approval and cannot authorize sharing, referrals, public posting, or external outreach.

Reviews/testimonials lock

Lock state: locked. Allowed reviews wording is demo copy only, no real testimonials, no ratings collected, no review submission form, no player or venue endorsement, and no verified social proof claim.

Blocked reviews claims: verified user testimonial, player review collected, venue endorsement, partner quote, star rating or ranking, trusted by real members, review moderation complete, and public success story.

Guardrail: reviews/testimonials lock is not approval and cannot authorize reviews, testimonials, ratings, endorsements, or public social proof claims.

Media/photo upload lock

Lock state: locked. Allowed media behavior is static demo images only, no public upload control, no user avatar collection, no venue photo publication, no player photo publication, no logo or endorsement claim, and no media hosting pipeline.

Blocked media behavior: photo upload form, avatar/profile image collection, venue gallery publication, player photo publication, copyrighted logo use as endorsement, EXIF/geolocation metadata collection, media moderation queue claim, public screenshot as proof of real user activity, and third-party media storage activation.

Guardrail: media/photo upload lock is not approval and cannot authorize media uploads, avatars, venue photos, player photos, galleries, logos as endorsements, or third-party media storage.

Account/identity lock

Lock state: locked. Allowed account behavior is demo signup copy only, fixture player handles only, local proof users only, no public account creation, no password or credential collection, no identity verification claim, and no persistent login session.

Blocked account behavior: public account registration, password collection, OAuth/social login activation, identity verification or badge claim, profile ownership claim, account recovery workflow claim, session cookie or token issuance, real DUPR identity linking, and age or eligibility verification claim.

Guardrail: account/identity lock is not approval and cannot authorize public accounts, credentials, OAuth/social login, persistent sessions, identity verification, DUPR identity linking, or profile ownership claims.

Legal/policy publication lock

Support/feedback lock

Lock state: locked. Allowed support behavior is demo support copy only, operator runbook guidance only, no public support intake form, no customer service SLA claim, no complaint or legal notice channel, no moderation report queue, and no real feedback collection.

Blocked support behavior: public contact-us form, support ticket creation, bug report or feedback submission, abuse or safety report intake, customer service SLA or response-time claim, legal notice or takedown intake claim, complaint escalation workflow claim, public moderation report queue, and real user contact data in support artifacts.

Guardrail: support/feedback lock is not approval and cannot authorize support forms, feedback collection, bug reports, abuse reports, customer service SLAs, legal notice channels, complaint escalation, or moderation report queues.

Metrics/reporting lock

Lock state: locked. Allowed metrics behavior is static proof counts only, local fixture validation output only, health metadata only, inert analytics markers only, no production user metrics, no KPI or growth claim, and no SLA or revenue reporting claim.

Blocked metrics behavior: production analytics dashboard claim, active user or member count claim, conversion funnel or growth metric claim, court usage or demand metric claim, notification delivery performance claim, support SLA performance claim, revenue or paid conversion metric claim, benchmark or uptime guarantee claim, and third-party analytics activation.

Guardrail: metrics/reporting lock is not approval and cannot authorize production analytics, user counts, growth metrics, court-demand reports, SLA reports, revenue metrics, benchmarks, uptime guarantees, or third-party analytics activation.

Matchmaking/queue lock

Lock state: locked. Allowed matchmaking behavior is static demo game cards only, fixture preference display only, local proof filtering only, no automated matchmaking, no public waitlist queue, no skill balancing claim, and no placement or priority decision.

Blocked matchmaking behavior: automated player matching, waitlist priority assignment, skill or DUPR balancing claim, availability-based placement decision, court capacity allocation claim, fairness or anti-bias claim, confirmed game placement notification, host/player ranking recommendation, and real-time queue status claim.

Guardrail: matchmaking/queue lock is not approval and cannot authorize automated matchmaking, waitlists, queue priority, skill balancing, placement decisions, recommendations, fairness claims, or game placement notifications.

Safety/incident lock

Lock state: locked. Allowed safety behavior is demo safety copy only, static no-emergency-service disclosure, operator runbook guidance only, no public incident intake, no emergency response claim, no hazard verification claim, and no safety moderation action.

Blocked safety behavior: emergency response or dispatch claim, public incident report form, abuse or harassment report intake, court hazard verification claim, real-time safety alert or broadcast, legal duty-of-care claim, moderation enforcement action, user safety investigation claim, and medical or law-enforcement guidance claim.

Guardrail: safety/incident lock is not approval and cannot authorize emergency response, incident reports, abuse intake, hazard verification, safety alerts, moderation enforcement, investigations, or medical/law-enforcement guidance.

Scheduling/commitment lock

Lock state: locked. Allowed scheduling behavior is static demo dates only, fixture game rows only, local proof filtering only, no confirmed attendance, no reservation or booking, no reminder delivery, and no cancellation workflow.

Blocked scheduling behavior: confirmed RSVP or attendance claim, court reservation or booking claim, capacity hold or seat assignment, calendar invite delivery, reminder or cancellation notification, no-show or penalty workflow, host commitment enforcement, real availability collection, and schedule conflict resolution claim.

Guardrail: scheduling/commitment lock is not approval and cannot authorize RSVPs, attendance commitments, reservations, bookings, capacity holds, calendar invites, reminders, cancellations, no-show workflows, or real availability collection.

Rating/skill verification lock

Lock state: locked. Allowed rating behavior is fixture skill preferences only, demo DUPR copy only, local filter labels only, no rating verification, no official skill certification, no DUPR provider integration, and no ranking or eligibility gate.

Blocked rating behavior: verified DUPR rating claim, official player ranking claim, skill certification or badge claim, eligibility gate by rating, rating-based placement decision, provider score sync, player reputation score, rating dispute or appeal workflow claim, and public leaderboard publication.

Guardrail: rating/skill verification lock is not approval and cannot authorize rating verification, official skill certification, DUPR integration, provider score sync, rating-based placement, reputation scores, eligibility gates, disputes, appeals, or leaderboards.

Discovery/directory lock

Lock state: locked. Allowed discovery behavior is static demo browsing only, fixture court cards only, local client filtering only, no indexed public directory, no featured placement, no promoted recommendation, and no searchable real people or courts.

Blocked discovery behavior: public directory launch, search engine index submission, featured court or player claim, nearby real-player discovery, trending or recommended ranking claim, promoted or sponsored placement, SEO landing page expansion, public directory takedown workflow claim, and real court/player discoverability claim.

Guardrail: discovery/directory lock is not approval and cannot authorize public directories, search indexing, featured placements, promoted recommendations, SEO expansion, real player discovery, real court discovery, or directory takedown claims.

Automation/recommendation lock

Lock state: locked. Allowed automation behavior is static demo suggestions only, fixture prompt copy only, local client filtering only, manual operator review required, no automated matchmaking, no personalized recommendation engine, and no autonomous notification or outreach.

Blocked automation behavior: automated matchmaking decision, personalized recommendation claim, AI ranking or scoring claim, automated moderation decision, autonomous outreach or notification send, queue dispatch or placement automation, eligibility or exclusion automation, unreviewed prompt-to-public publishing, and automation appeal workflow claim.

Guardrail: automation/recommendation lock is not approval and cannot authorize automated matchmaking, personalized recommendations, AI scoring, automated moderation, autonomous outreach, notification sends, queue dispatch, eligibility automation, unreviewed prompt-to-public publishing, or automation appeal claims.

Host/organizer privilege lock

Lock state: locked. Allowed host behavior is fixture host labels only, demo organizer wording only, local admin proof only, manual operator review required, no verified host identity, no club admin permissions, and no real moderation or venue authority.

Blocked host behavior: verified host or organizer claim, captain or club admin role activation, venue manager permission claim, moderation authority delegation, court ownership or reservation authority claim, host accountability or safety-duty claim, role-based access control launch, organizer onboarding or training workflow claim, and public host directory or badge claim.

Guardrail: host/organizer privilege lock is not approval and cannot authorize verified hosts, organizer roles, captain roles, club admin permissions, venue manager permissions, moderation delegation, court authority claims, safety-duty claims, role-based access control, organizer onboarding, public host directories, or role badges.

Chat/messaging lock

Lock state: locked. Allowed chat behavior is static demo message copy only, local notification queue proof only, fixture host labels only, manual operator review required, no direct messages, no group chat, and no public comments or message delivery.

Blocked chat behavior: direct messaging launch, group chat or thread launch, public comments or wall posts, real message delivery, contact exchange between players, chat moderation workflow claim, message reporting or blocking workflow claim, message retention or deletion promise, and chat notification or read receipt claim.

Guardrail: chat/messaging lock is not approval and cannot authorize direct messages, group chats, public comments, message delivery, contact exchange, chat moderation, message reporting, blocking, retention promises, deletion promises, read receipts, or chat notifications.

Event/tournament lock

Lock state: locked. Allowed event behavior is static demo game rows only, fixture schedule examples only, local filter proof only, manual operator review required, no public event registration, no tournament bracket, and no rankings, prizes, or sanctioned play.

Blocked event behavior: public event launch, tournament or bracket launch, league ladder or standings claim, paid registration or ticketing, prize, award, or sponsorship claim, sanctioned or official competition claim, capacity, waitlist, or check-in workflow claim, event cancellation or refund promise, and participant liability or waiver workflow claim.

Guardrail: event/tournament lock is not approval and cannot authorize public events, tournament brackets, league ladders, standings, registration, ticketing, prizes, sponsorships, sanctioned play, capacity management, waitlists, check-ins, cancellations, refunds, waivers, or liability workflows.

Youth/minors participation lock

Lock state: locked. Allowed youth behavior is adult-oriented static demo only, no child accounts, no youth event registration, no guardian consent workflow, no age-based matchmaking, no school or camp programming, and manual operator review required.

Blocked youth behavior: minor or child account creation, youth or junior event launch, guardian consent collection, school, camp, or youth program claim, age-based matchmaking or grouping, supervision or safeguarding claim, background check or screening claim, incident reporting for minors claim, and family-safe certification claim.

Guardrail: youth/minors participation lock is not approval and cannot authorize child accounts, youth events, junior programming, guardian consent collection, school/camp programming, age-based matchmaking, supervision claims, safeguarding claims, background-check claims, minor incident reporting, or family-safe certification claims.

Coaching/lessons lock

Lock state: locked. Allowed coaching behavior is static demo improvement copy only, fixture skill preference wording only, no coach or instructor verification, no lesson booking, no paid clinic or package, no training recommendation engine, and manual operator review required.

Blocked coaching behavior: coaching marketplace launch, lesson or clinic booking, instructor verification or certification claim, paid training package or subscription, skills assessment or curriculum claim, personalized coaching recommendation, youth lesson or camp claim, coach availability or capacity claim, and liability, insurance, or safety qualification claim.

Guardrail: coaching/lessons lock is not approval and cannot authorize coaching marketplaces, lesson bookings, clinic bookings, coach verification, instructor certification, paid training packages, subscriptions, skills assessments, curriculum claims, personalized coaching recommendations, youth lessons, coach capacity claims, insurance claims, liability claims, or safety qualification claims.

Equipment/marketplace lock

Lock state: locked. Allowed equipment behavior is static demo gear copy only, fixture equipment preference wording only, no equipment sales, no rentals or deposits, no affiliate or sponsor placement, no inventory or fulfillment claim, and manual operator review required.

Blocked equipment behavior: equipment marketplace launch, paddle or gear rental booking, buy, sell, or trade workflow, affiliate link or sponsored placement, discount, coupon, or promotion claim, inventory availability or reservation claim, shipping, pickup, or delivery workflow, deposit, damage, or return policy claim, and vendor endorsement or safety suitability claim.

Guardrail: equipment/marketplace lock is not approval and cannot authorize equipment marketplaces, paddle rentals, gear rentals, buy/sell/trade workflows, affiliate links, sponsored placements, discounts, coupons, promotions, inventory reservations, fulfillment, shipping, pickup, delivery, deposits, damage policies, return policies, vendor endorsements, or safety suitability claims.

Accessibility/accommodations lock

Lock state: locked. Allowed accommodation behavior is static accessibility caution copy only, manual accessibility audit worksheet only, fixture venue notes only, no accommodation requests, no disability or medical data collection, no accessible-court guarantee, and manual operator review required.

Blocked accommodation behavior: accommodation request intake, disability or medical data collection, accessible-court guarantee, adaptive program or clinic claim, transportation or companion coordination, interpreter or aide service claim, medical suitability or injury advice claim, accessibility compliance certification claim, and venue accessibility verification claim.

Guardrail: accessibility/accommodations lock is not approval and cannot authorize accommodation requests, disability data collection, medical data collection, accessible-court guarantees, adaptive programs, transportation coordination, companion coordination, interpreter services, aide services, medical suitability advice, injury advice, accessibility compliance certification, or venue accessibility verification claims.

Transportation/ride coordination lock

Lock state: locked. Allowed transportation behavior is static public transit note only, fixture parking wording only, no carpool matching, no ride coordination, no pickup or dropoff arrangement, no address or travel data collection, and manual operator review required.

Blocked transportation behavior: carpool or rideshare matching, driver or passenger verification claim, pickup or dropoff coordination, private address or route collection, shuttle, transport, or companion travel service claim, parking reservation or capacity claim, late-night travel safety claim, accessibility transportation arrangement, and transportation liability or insurance claim.

Guardrail: transportation/ride coordination lock is not approval and cannot authorize carpool matching, rideshare matching, driver verification, passenger verification, pickup coordination, dropoff coordination, private address collection, route collection, shuttle services, transport services, companion travel coordination, parking reservations, late-night travel safety claims, accessibility transportation arrangements, transportation liability claims, or insurance claims.

Weather/court conditions lock

Lock state: locked. Allowed weather behavior is static demo weather caution copy only, fixture court condition notes only, manual operator review required, no live weather feed, no court closure authority, no safe-to-play advisory, and no real-time alerts or cancellations.

Blocked weather behavior: live weather or air quality feed, court condition monitoring claim, safe-to-play or hazard advisory, court closure or reopening claim, cancellation, delay, or reschedule decision, lighting or surface safety claim, real-time weather alert notification, venue authority or operator dispatch claim, and weather liability or safety guarantee claim.

Guardrail: weather/court conditions lock is not approval and cannot authorize live weather feeds, air quality feeds, court condition monitoring, safe-to-play advisories, hazard advisories, court closure claims, reopening claims, cancellation decisions, delay decisions, reschedule decisions, lighting safety claims, surface safety claims, real-time weather alerts, venue authority claims, operator dispatch claims, weather liability claims, or safety guarantees.

Sponsorship/advertising lock

Lock state: locked. Allowed sponsorship behavior is static no-sponsor disclosure only, no paid placement, no affiliate links, no vendor endorsement, no sponsored rankings, manual operator review required, and Simon approval required before commercial wording.

Blocked sponsorship behavior: sponsorship sales or solicitation, advertising inventory or rate card, paid placement or featured listing, affiliate links or referral compensation, vendor, brand, court, club, coach, or product endorsement, discount, coupon, or promotional offer claim, sponsored event or tournament claim, partner logo or commercial co-branding claim, and payment, invoice, wallet, or revenue collection.

Guardrail: sponsorship/advertising lock is not approval and cannot authorize sponsorship sales, advertising inventory, rate cards, paid placements, featured listings, affiliate links, referral compensation, vendor endorsements, brand endorsements, court endorsements, club endorsements, coach endorsements, product endorsements, discounts, coupons, promotional offers, sponsored events, sponsored tournaments, partner logos, commercial co-branding, payment collection, invoices, wallets, or revenue collection.

Donation/fundraising lock

Lock state: locked. Allowed donation behavior is static no-donation disclosure only, no fundraising campaign, no charitable solicitation, no membership dues collection, no reimbursement handling, manual operator review required, and Simon approval required before donation or fundraising wording.

Blocked donation behavior: donation or contribution collection, fundraising campaign or pledge drive, charitable or nonprofit solicitation claim, community fund, court fund, equipment fund, or grant claim, membership dues or subscription collection, tips, reimbursements, refunds, or expense sharing, tax-deductible or fiscal-sponsor claim, payment link, wallet, invoice, receipt, or accounting claim, and donor recognition or public supporter listing.

Guardrail: donation/fundraising lock is not approval and cannot authorize donation collection, contribution collection, fundraising campaigns, pledge drives, charitable solicitations, nonprofit claims, community fund claims, court fund claims, equipment fund claims, grant claims, membership dues, subscriptions, tips, reimbursements, refunds, expense sharing, tax-deductible claims, fiscal-sponsor claims, payment links, wallets, invoices, receipts, accounting claims, donor recognition, or public supporter listings.

Content/licensing lock

Lock state: locked. Allowed content behavior is static first-party demo copy only, fixture data with no verified public claim, no third-party media reuse, no scraped content republication, no trademark endorsement claim, manual operator review required, and Simon approval required before licensed content wording.

Blocked content behavior: third-party photo, video, audio, logo, or brand asset reuse, scraped article, social post, review, testimonial, or quote republication, map, court, schedule, rules, or training content redistribution claim, copyright, trademark, or publicity-right clearance claim, license, sublicense, or reuse permission claim, attribution compliance or fair-use claim, endorsement, affiliation, or official-source claim, and content takedown, DMCA, or rights-holder response claim.

Guardrail: content/licensing lock is not approval and cannot authorize third-party photo reuse, video reuse, audio reuse, logo reuse, brand asset reuse, scraped article republication, social post republication, review republication, testimonial republication, quote republication, map redistribution, court data redistribution, schedule redistribution, rules redistribution, training content redistribution, copyright clearance claims, trademark clearance claims, publicity-right clearance claims, license claims, sublicense claims, reuse permission claims, attribution compliance claims, fair-use claims, endorsement claims, affiliation claims, official-source claims, takedown claims, DMCA claims, or rights-holder response claims.

Data rights/consent lock

Launch blocker register

Approval-gated blockers: Source-backed court review, Simon approval record, Real data privacy/security controls, production backend/admin path, manual accessibility audit, and Indexing and SEO launch.

Simon approval packet

Draft only: this packet does not grant approval. It turns the remaining blockers into exact Simon decisions before launch.

Launch approval request checklist

Status: request checklist only; this does not grant Simon approval, record a GO decision, remove noindex, or authorize launch-state changes.

Requests covered: court claim wording, real data collection, production backend/admin, provider activation/budget, accessibility launch wording, and indexing launch.

Court review packet

Status: draft internal review only. This packet does not verify courts, authorize outreach, permit public verified-court claims, or approve removing noindex.

Required checks per court: court name, exact address/location, court count, indoor/outdoor status, surface/facility type, public access or booking policy, amenities/unknowns, last reviewed date, and conflict notes.

Court evidence resolution worksheet

Status: worksheet only; this does not verify courts, authorize outreach, permit public verified-court claims, or approve removing noindex.

Workflow: attach public/official or clearly dated community sources, record supported checks, mark unsupported facts unknown instead of guessing, and keep conflicts out of public copy until resolved.

Manual accessibility audit packet

Status: operator-ready checklist only; no certification/compliance claim. Manual audit complete: false. Simon approved: false.

Required manual evidence: keyboard-only pass, screen reader smoke, mobile zoom/reflow screenshots, and color contrast/design review.

Accessibility evidence worksheet

Status: worksheet ready; this does not complete the manual audit and does not permit accessibility compliance/certification claims.

Evidence rows: keyboard-only pass, screen reader smoke, mobile zoom/reflow, and color contrast/design review. Completion claim allowed: no.

Default action: keep manual accessibility audit blocker open.

Launch evidence index

Status: static-safe proof map; this does not grant public launch approval.

Proof groups: Public deploy + smoke evidence, local form/API/web-app proof, launch blockers and approvals, court source review packet, manual accessibility audit packet, and privacy/security/retention/admin posture.

Operator handoff packet

Status: static-safe handoff checklist; this does not grant launch approval or authorize real-user operations.

Handoff steps: Review launch evidence index, resolve court review, Record Simon approvals, Complete manual accessibility audit, approve production collection/backend path, and run final static smoke.

Never do without explicit Simon approval: collect real data, send external notifications, contact courts/users, enable paid services, expose backend/admin, claim verified courts, claim accessibility certification, or remove noindex.

Launch decision record template

Status: template only; this does not record approval and does not authorize launch.

Current decision: NO-GO. Required before GO: decision maker, timestamp, approved scope, evidence links, remaining risks, rollback/cancel path, privacy/safety posture, and operator owner.

GO requires all true: Simon approval matrix complete, court evidence verified, privacy/security path approved, production backend/admin approved or not needed, manual accessibility audit complete, final public smoke passed, and noindex removal approved.

Launch freeze checklist

Status: checklist only; this does not activate a launch freeze, grant approval, authorize a GO deployment, or approve removing noindex.

Freeze rule: Any failed smoke or blocker regression returns the decision to NO-GO. Keep launch freeze inactive and keep noindex,follow until all freeze entry requirements are true and approved.

Launch gap closure plan

Status: static-safe closure map; this does not grant launch approval.

Remaining gaps: Court evidence is not verified; Simon approvals are not granted; real data/privacy/security/backend path is not approved; Manual accessibility audit is not complete; noindex removal is not approved.

Final smoke rehearsal

Status: rehearsal only; this does not grant launch approval or authorize launch-state changes.

Required checks: HTTP index returns 2xx, HTTPS index returns 2xx, health/robots/sitemap/manifest return 2xx, live health hash matches uploaded index, security headers are present, noindex remains present until approved, static safety markers are present, and latest proof records remote backups.

Launch-state change requires: all checks pass, launch decision record is GO, Simon approval matrix is complete, court evidence is verified, manual accessibility audit is complete, and privacy/security path is approved.

First launch checklist

  1. Replace demo court records with manually verified official/public sources.
  2. Keep unknown fields visible instead of guessing.
  3. Enable correction intake before inviting game requests broadly.
  4. Use game-request expiry so the board never looks stale.
  5. Keep real email/SMS/push delivery approval-gated until notification wording, unsubscribe/suppression, and privacy rules are approved.

Generated 2026-05-12T16:08:14.369207+00:00 · public indexing intentionally disabled until court data is verified.