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 99.99/year.
- Defer Studio, Founder/lifetime, Basic, AI media add-ons, and broad historical import pricing.
Blockers Found
useFeatureAccessis 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
- Fix feature access and tier model.
- Add access decision tests.
- Freeze v1.0 feature flags.
- Build onboarding.
- Polish strain detail.
- Add route smoke tests for missing launch surfaces.
- Stabilize Revyl fixtures.
- 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 becauseuseFeatureAccess 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 typecheckpnpm --filter @highiq/mobile testpnpm --filter @highiq/mobile lintpassed with existing warningspnpm 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
/onboardingroute. - 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
useFirstTimeUserso anonymous users are not classified as first-time signed-in users. - Keeps
Skip for Nowtemporary instead of permanently completing onboarding for empty users.
Validation
pnpm --filter @highiq/mobile typecheckpnpm --filter @highiq/mobile testpnpm --filter @highiq/mobile lintpassed with existing warningspnpm 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 underapps/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, andtranslate()keys.
Validation
pnpm --filter @highiq/mobile test:unitpnpm --filter @highiq/mobile typecheckpnpm --filter @highiq/mobile testpnpm --filter @highiq/mobile lintpassed with existing warningspnpm 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-nativeor 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.mdanddocs/testing/revyl/test-catalog.md.
Validation
pnpm test:revyl:validategit 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, andlapsedpersonas.
