# Prerequisite Tree ## Phase 1 — Quality gate & release pipeline ### Objective: E2E quality gate (#1099) - [x] Core E2E test suite exists (tests/e2e/, 7 files) - [x] Mobile viewport coverage (#1099 — closed, merged PR #1139) - [x] Cross-browser matrix (#1099 — closed, merged PR #1139) - [x] OptimizerV3 test coverage (#1054 — closed) - [x] Floor ratchet attack defeated (#1067, #1082 — closed) - [x] int256 overflow patched (#1031 — closed) - [x] Overflow guard for slots 1-7 (#997 — closed, merged 29b8f7d) Status: DONE ### Objective: Conversion funnel verification (#1100) - [x] Landing page exists - [x] Staking app exists - [x] E2E quality gate passing (#1099 — closed) - [x] Funnel test: landing → swap → stake (07-conversion-funnel.spec.ts exists, covers full flow with analytics events) - [ ] Cross-browser spec glob fix (#1154) — funnel spec unintentionally runs on Firefox/WebKit/mobile Status: DONE — funnel test exists and runs. Minor glob issue tracked in #1154. ### Objective: Release pipeline - [x] CI pipeline (Woodpecker) - [x] Docker images (registry.niovi.voyage) - [x] E2E quality gate integrated into release (#1099 — closed) Status: DONE ### Objective: Analytics (#1101) - [x] Self-hosted Umami deployed (Docker service, documented in ENVIRONMENT.md) - [x] Landing page instrumented (landing/src/views/HomeView.vue, landing/src/main.ts) - [x] Staking app instrumented (web-app/src/composables/useStake.ts, useSwapKrk.ts, useWallet.ts) - [x] @harb/analytics package with funnel events (packages/analytics/src/index.ts) - [x] E2E quality gate passing (#1099 — closed) Status: DONE ## Phase 2 — Coordinated launch ### Objective: Pitch deck - [x] Phase 1 complete (E2E quality gate, conversion funnel, analytics all DONE) - [ ] Pitch deck created (PDF explaining KRK, floor mechanics, how to buy/stake) Status: BLOCKED — pitch deck not yet created ### Objective: Influencer outreach - [ ] Pitch deck exists - [ ] At least 3 influencers committed Status: BLOCKED — prerequisite chain ### Objective: Launch day deployment - [x] LiquidityManager contract - [x] UUPS upgradeable optimizer - [x] Conversion funnel verified (07-conversion-funnel.spec.ts) - [ ] Pitch deck reviewed - [ ] Influencers committed - [ ] Adversarial testing depth for launch confidence (per #1141 concern: 2 red-team runs insufficient for real ETH) Status: BLOCKED — prerequisite chain ## Phase 3 — Operations ### Objective: Community channel - [ ] Launch day scheduled Status: BLOCKED — prerequisite chain ### Objective: Optimizer governance - [ ] Protocol live with real users - [ ] Evolution pipeline producing candidates Status: BLOCKED — prerequisite chain ## Foundation (cross-cutting) ### Objective: Contract safety - [x] Floor ratchet attack defeated (#1067 — closed) - [x] int256 overflow patched (#1031 — closed) - [x] Overflow guard for slots 1-7 (#997 — closed, merged 29b8f7d) - [x] Catch block clamping fix (#1019 — closed) - [x] OptimizerV3 tested (#1054 — closed) Status: DONE ### Objective: Evidence pipeline - [x] Red-team formula exists - [x] Evolution formula exists - [x] Red-team produces persistent evidence (evidence/red-team/, 2 files) - [x] Evolution commits via PR (#1047 — closed) - [x] Evolution pipeline produces output (evidence/evolution/best.push3 exists) - [x] Holdout produces data (evidence/holdout/2026-03-22-issue517-adversarial-lp.json) - [x] User-test produces data (evidence/user-test/2026-03-25.json — 0/5 personas completed, wallet connector blocking) - [ ] Resources/protocol formulas produce data (formulas exist, evidence dirs empty) Status: BLOCKED — 1 prerequisite unresolved ### Objective: User funnel fix - [ ] Wallet connector renders at 1280x720 viewport (all 5 user-test personas blocked here) - [ ] Desktop connect button visible at standard viewports Status: BLOCKED — discovered via user-test evidence 2026-03-25. Blocks all user funnels. ### Objective: E2E test hygiene - [ ] Cross-browser spec glob fix (#1154 — CROSS_BROWSER_SPECS matches unintended conversion-funnel spec) - [ ] Woodpecker evidence-only PR pipeline (#1153) Status: BLOCKED — 2 prerequisites unresolved