Skip to main content

Iteration Log

Use this page to keep launch work from disappearing into chat, PRs, or one-off audits.

2026-06-03: Initial Launch Readiness Audit

Summary

First end-to-end launch-readiness pass across mobile routes, feature flags, testing coverage, recent PRs, Revyl/Argent status, docs, and pricing.

Evidence

  • Raw audit created at docs/mobile/[audit]-launch-readiness-jun03.md.
  • Local mobile typecheck passed.
  • Local mobile unit + Convex tests passed.
  • Local mobile lint passed with warnings.
  • Revyl YAML validation passed.
  • React Doctor reported 0 errors / 720 warnings.
  • Latest checked Revyl smoke workflow failed 7/8.

Decisions

  • Do not public-launch yet.
  • Do not start paid launch yet.
  • Move into a certification sprint for friends/family TestFlight.
  • Use one paid SKU for paid beta: Pro at 12.99/monthand12.99/month and 99.99/year.
  • Defer Studio, Founder/lifetime, Basic, AI media add-ons, and broad historical import pricing.

Blockers Found

  • useFeatureAccess is broken open and returns accessible unconditionally.
  • Guest/free/Pro model is not implemented consistently.
  • Onboarding is not a complete first-run route flow.
  • Revyl validates YAML but is not yet launch certification.
  • Mobile screen/integration tests under apps/mobile/test/** are excluded from normal unit tests.
  • Strain detail needs UI/device polish.
  • Gmail and historical import need beta treatment and production proof.
  • Docs/site pricing and feature promises conflict.

Next Actions

  1. Fix feature access and tier model.
  2. Add access decision tests.
  3. Freeze v1.0 feature flags.
  4. Build onboarding.
  5. Polish strain detail.
  6. Add route smoke tests for missing launch surfaces.
  7. Stabilize Revyl fixtures.
  8. Reconcile docs/site pricing and feature promises.

2026-06-04: Feature Access Gating PR Opened

Summary

Opened PR #806 to fix the first P0 launch-readiness blocker: feature access was broken open because useFeatureAccess always returned accessible.

PR

  • https://github.com/jmegan/tiwih/pull/806

Changes

  • Adds a pure feature-access resolver for disabled flags, login-required features, free-tier features, and Pro subscription-required features.
  • Marks signed-in free vs Pro tiers in the mobile feature flag registry.
  • Aligns label scanner as a Pro feature, matching the existing screen-level upgrade gate and AI vision cost.
  • Removes the global main-layout subscription guard that blocked signed-in non-subscribers from all main app surfaces.
  • Adds unit coverage for access decisions and tier metadata.

Validation

  • pnpm --filter @highiq/mobile typecheck
  • pnpm --filter @highiq/mobile test
  • pnpm --filter @highiq/mobile lint passed with existing warnings
  • pnpm test:revyl:validate

Remaining Work

  • Review and merge PR #806.
  • Add direct-route Revyl/Argent tests for guest, free signed-in, Pro, disabled, and lapsed states.
  • Continue feature-by-feature certification, starting with onboarding and strain detail.

2026-06-04: First-Run Onboarding Entry PR Opened

Summary

Opened PR #807 to add the smallest launch-ready onboarding path: signed-in users with no orders, stash, notebooks, or favorites get a short first-value setup instead of landing directly in the main app.

PR

  • https://github.com/jmegan/tiwih/pull/807

Changes

  • Adds a dedicated /onboarding route.
  • Routes newly signed-in and cold-launch first-time users into onboarding.
  • Points users toward the existing first-order upload path instead of adding a large wizard.
  • Lets users browse strains with completion persisted through STORAGE_KEYS.ONBOARDING_COMPLETE.
  • Updates useFirstTimeUser so anonymous users are not classified as first-time signed-in users.
  • Keeps Skip for Now temporary instead of permanently completing onboarding for empty users.

Validation

  • pnpm --filter @highiq/mobile typecheck
  • pnpm --filter @highiq/mobile test
  • pnpm --filter @highiq/mobile lint passed with existing warnings
  • pnpm test:revyl:validate

Remaining Work

  • Review and merge PR #807 after PR #806 is reviewed.
  • Add Revyl/Argent proof for sign-in -> onboarding -> log first order -> review -> save -> stash payoff.
  • Add screenshot QA for the onboarding screen on mobile viewports.

2026-06-04: Active i18n Test Gate PR Opened

Summary

Opened PR #808 to start closing the mobile test coverage gap where files under apps/mobile/test/** are excluded from the active Vitest gate.

PR

  • https://github.com/jmegan/tiwih/pull/808

Changes

  • Expands the active mobile Vitest include pattern to support src/**/*.test.tsx.
  • Adds an active i18n key audit under src/_i18n.
  • Replaces the older shell/grep callback test with a Node/Vitest scan for literal tx, labelTx, and translate() keys.

Validation

  • pnpm --filter @highiq/mobile test:unit
  • pnpm --filter @highiq/mobile typecheck
  • pnpm --filter @highiq/mobile test
  • pnpm --filter @highiq/mobile lint passed with existing warnings
  • pnpm test:revyl:validate

Remaining Work

  • Migrate or replace stale screen/integration tests under apps/mobile/test/**.
  • Add active TSX tests for onboarding, locked/pro access states, and first-order upload UI where practical.
  • Decide whether to install @testing-library/react-native or keep screen coverage in Revyl/Argent plus focused pure-view-model tests.

2026-06-04: Launch Route Smoke PR Opened

Summary

Opened PR #813 to close the missing-route-smoke definition gap in Gate 2.

PR

  • https://github.com/jmegan/tiwih/pull/813

Changes

  • Adds P0 Revyl route-smoke definitions for High Family discovery, music/now-playing, subscription billing, profile edit/preferences, analytics/stats, dispensaries, notebook daily story/video, and Professor High gated state.
  • Wires the new route smokes into nightly regression and release-gate workflows.
  • Leaves the fast pre-merge smoke workflow unchanged so routine mobile PRs do not inherit the expanded route suite yet.
  • Updates docs/testing/revyl/mobile-feature-coverage-matrix.md and docs/testing/revyl/test-catalog.md.

Validation

  • pnpm test:revyl:validate
  • git diff --check

Remaining Work

  • Run PR #813’s expanded route-smoke set against the current candidate build.
  • Add access/tier direct-route checks after PR #806 lands.
  • Add fixture contracts for deterministic new, power-with-dispensary, rich, and lapsed personas.