# Local E2E Smoke (Launcher + Secret API) This smoke path validates wallet intent, membership, member channel, and governance install flow locally before live server wiring. ## 1) Start Secret API ```bash cd "/Users/vsg/Documents/VSG Codex/web/backend/secretapi" cp .env.example .env.local go run . ``` Default bind is `http://127.0.0.1:8080`. ## 2) Start Launcher Harness ```bash cd "/Users/vsg/Documents/VSG Codex/launcher" make serve ``` Open `http://127.0.0.1:4310`. ## 3) Run Deterministic Flow 1. Enter wallet + chain id. 2. Click `Create intent`. 3. Sign typed data in local wallet tooling and paste signature. 4. Click `Verify signature`. 5. Click `Get quote`. 6. Confirm tx hash (local/test hash if RPC verification disabled). 7. Click `Confirm membership tx`. 8. Register member channel and poll events. 9. Ack an event. 10. Request governance install token and check install status. ## 4) Expected Results 1. Membership status resolves to `active`. 2. Event polling returns deterministic event envelopes with stable `event_id`. 3. Event ack is idempotent for `event_id + device_id`. 4. Owner role can open support ticket; workspace member is rejected with `owner_role_required`. 5. Governance install token is owner-gated and blocked when availability is parked. ## 5) Troubleshooting 1. If CORS fails, set `SECRET_API_ALLOWED_ORIGIN=*` locally. 2. If tx confirmation blocks, set `SECRET_API_CHAIN_RPC_URL=` empty for local non-chain smoke. 3. If member channel returns `membership_inactive`, re-run wallet intent/verify and membership confirm.