Skip to main content

Certification Gates

Launch readiness means a feature is proven, not merely built.

Gate 0: Local Code Health

Required before any candidate build:
Current known state from 2026-08-01:
  • Typecheck and lint: pass.
  • Mobile unit tests: 279 files / 2,196 tests pass.
  • Convex tests: 42 files / 566 tests pass.
  • Mobile UI tests: 28 suites / 77 tests pass.
  • Safari extension tests: 23 tests pass.
  • Production Expo web export: pass; 8,852 modules and 74 bundled assets.
  • Mobile design-system and geometry validators: pass. The color ratchet remains at its intentional baseline (72/72), with no raw spacing, typography, radius, shadow, z-index, or border-curve regressions.
  • Revyl YAML validation: not runnable in this environment because REVYL_API_KEY is absent.
  • React Doctor: 272 diagnostics (46 error-level compiler findings and 226 warnings). The largest error group is 28 unsupported try/finally compiler cases; remaining findings require focused review rather than an unsafe mechanical rewrite.
  • Argent/device QA: intentionally not run during this code-hardening pass.

Gate 1: Access + Tier Certification

Required before friends/family:
  • Guest cannot reach protected user-data routes by direct link.
  • Free signed-in users can reach free signed-in features.
  • Pro-only features show a paywall or locked state.
  • Disabled production features are inaccessible by direct route.
  • Lapsed subscribers retain data but see upgrade/restore flows.
Minimum automated tests:
  • useFeatureAccess unit coverage for guest, free, Pro, lapsed, disabled, debug override.
  • Revyl/Argent direct-route checks for representative gated screens.

Gate 2: P0 Revyl Smoke

Required before friends/family:
  • App launch
  • Bottom tabs
  • Public browse/search
  • High Family / discovery
  • Strain detail tabs
  • Deep link to strain detail
  • Clerk login
  • Clean-new-user empty stash
  • Profile settings/sign-out
Additional route smokes opened in PR #813 for nightly/regression and release-gate proof:
  • Music / now playing
  • Subscription billing
  • Edit profile
  • Consumption preferences
  • Analytics/stats
  • Dispensary list/add
  • Daily stories
  • Notebook video
  • Professor High gated state
Remaining Gate 2 proof:
  • Run the expanded route-smoke set against the current candidate build.
  • Convert any route-smoke failures into product bug, test definition issue, fixture/data issue, mobile app/API dependency, or Revyl artifact/flake.
  • Add direct access/tier route checks after PR #806 lands.

Gate 3: P1 Critical Journeys

Required before paid beta:
  • New user to first stash entry
  • Add strain from search/detail to stash
  • Discovery to favorite/collection
  • Manual order upload and review
  • Image receipt parsing
  • Notebook generation and detail
  • Gmail recent sync with controlled test account
  • Label scanner with fixture/permission proof
  • Subscription purchase, restore, lapsed state
Notebook proof includes more than opening detail tabs:
  • preserve known, alias, ambiguous, placeholder, duplicate, and unknown order lines;
  • show honest fresh, stale, conflicting, no-data, failed, and waiting research states;
  • minimize, dismiss, reopen, background, cancel, and recover generation;
  • keep a readable publication available while an update runs;
  • compare, fail, cancel, retry, promote, and browse immutable versions;
  • keep Report V2/research writes and all companion executors off until their separate activation gates pass.
See the Notebook launch runbook.

Gate 4: Manual Device QA

Required before TestFlight expansion:
  • iPhone small screen and large screen screenshots
  • Dark/light mode where supported
  • Real camera/permission prompts
  • Apple/Google OAuth if used
  • StoreKit purchase and restore
  • Push/notification prompts if enabled
  • Strain detail scroll and content density review

Gate 5: Public Promise Consistency

Required before public launch:
  • App behavior, website, docs-site, pricing, App Store copy, and paywall all agree.
  • No public copy promises hidden, disabled, beta, or unverified features.
  • No “first free AI” copy if Pro-only AI is the decision.
  • No inconsistent 4.99/4.99 / 9.99 / $12.99 pricing.