Scroll to explore

Launch Readiness & QA Checklist

Check off blockers as verified. Cross-browser matrix below.

0%
blockers verified
0 / 28 critical
Signup / Login
Auth redirect after login drops user on Home, not previous page
warning
Guest users accessing /Profile or /Studio get a clean redirect-to-login, not a crash
blocker
Magic link email deliverability confirmed
blocker
User role assignment (fan vs creator) fires correctly on first login
blocker
Onboarding
GenreOnboarding skipped for returning users (no loop)
blocker
Creator compliance check does not block fan users
blocker
AIArtistIntroModal does not auto-trigger on first session (Phase 1B disabled)
warning
ProfileSetupModal does not auto-fire (Phase 1B disabled)
info
Pricing / Checkout
Stripe checkout opens correctly for fan_premium and creator plans
blocker
Successful checkout updates Subscription record (webhook fires)
blocker
Plans page shows correct prices matching Stripe dashboard
blocker
Trial period (if any) shown on checkout UI before confirmation
warning
Billing portal link in Settings opens correct Stripe portal
warning
Past-due banner shown for past_due subscriptions
blocker
Creator Dashboard
Non-creator users (fans) cannot access /Studio or creator-only routes
blocker
Earnings section shows correct net_eligible_cents, not raw gross
blocker
Payout profile (Stripe Connect) onboarding link works end-to-end
blocker
Release capacity counter reflects actual remaining capacity
blocker
AI Artist creation enforces plan limits (1 for free, 3+ for Pro)
warning
Track analytics show legitimate_plays, not total plays
warning
Tracks in taken_down state are visible to creator but marked clearly
warning
Upload / Publish Flow
Audio upload validates file type (MP3/WAV only) client-side before upload
blocker
Upload fails gracefully with user-visible error (not silent)
blocker
Release capacity check fires before upload starts, not after
blocker
Legal attestation checkbox required before publish button activates
blocker
Suno attestation flow shown when Suno is selected as ai_tool_used
warning
ISRC auto-generated on publish (not on draft save)
warning
Track goes to draft state correctly on save (not immediately public)
blocker
Restricted users (access_restriction active) cannot publish (UI blocks)
blocker
Playback / Discovery
taken_down tracks return 404/blocked on playback, not audio
blocker
playback_blocked=true tracks are not streamable from any surface
blocker
Guest users can browse Home/Feed but cannot play tracks (sign-up prompt)
warning
Playback heartbeat events fire during streaming (no silent drop)
warning
Stream qualification does not count fraud-flagged plays toward royalties
blocker
Cuts playback works on mobile (vertical video, muted by default)
warning
Statements / Payouts
Creator can view their own statements (/Earnings or similar)
blocker
Statement shows correct breakdown by track
blocker
JSON export downloads correctly (not opens in browser tab)
warning
CSV export has correct column headers and cents vs dollars is labeled clearly
warning
Payout history shows SENT/FAILED payouts with correct dates
blocker
Creators without Stripe Connect see a setup prompt, not a blank payout section
blocker
Moderation / Admin Pages
Non-admin users cannot access /AdminPayouts, /AdminModerationQueue etc
blocker
Admin complaint queue loads OPEN complaints by default
warning
Ops dashboard alert feed shows current open alerts (not empty)
warning
Payout approval button disabled until reason entered (reject flow)
warning
Repair toolkit escalation path prevents financial record mutations
blocker
Reconciliation queue shows critical findings highlighted in red
warning

Cross-Browser / Cross-Device QA Matrix

Manually test each flow on each device. Click cells to cycle status.

Signup / Login
Test Case
iPhone Safari
Android Chrome
Desktop Chrome
Desktop Safari
Create new account (email)
Login with existing account
Redirect to Home after login
Guest redirect to login on protected route
Checkout
Test Case
iPhone Safari
Android Chrome
Desktop Chrome
Desktop Safari
Purchase fan_premium plan
Purchase creator plan
Failed payment shows error
Subscription record created after success
Upload
Test Case
iPhone Safari
Android Chrome
Desktop Chrome
Desktop Safari
Upload MP3 audio file
Reject non-audio file with visible error
Complete publish with legal attestation
Verify track appears in library
Playback
Test Case
iPhone Safari
Android Chrome
Desktop Chrome
Desktop Safari
Play a public track end-to-end
Verify taken_down track is unplayable
Play track on mobile without layout break
Cuts viewer opens and plays
Payouts / Statements
Test Case
iPhone Safari
Android Chrome
Desktop Chrome
Desktop Safari
View earnings statement
Export statement as CSV
View payout history list
Stripe Connect onboarding prompt for new creator
⚠️ Known Remaining Blind Spots
Upload pipeline (uploadAudio.js / validateAndUploadAudio.js) — emitAlert not wired into media failure catch paths. Needs manual addition.
stripeWebhook invoice.payment_failed does not emit an OperatorAlert (only sends email). Consider adding alert for repeated payment failures per user.
Settlement automation partial_failure (totalFailed > 0 but totalAdvanced > 0) does not emit an alert — only fatal crashes do. Add warning-level alert for partial failures.
No alert when a Payout stays PENDING_APPROVAL for > 7 days (scanForAlerts only checks APPROVED→stuck). Add threshold check.
Content fingerprinting / duplicate detection results are not surfaced in ops dashboard.
PDF export of statements is frontend-rendered (jsPDF) and not tested on all browsers. Safari may block blob downloads.
MUX/Bunny webhook failures (muxWebhook.js, bunnyWebhook.js) have no OperatorAlert wiring.
Anamir

© 2026 Anamir, Inc. All rights reserved.