---
phase: 31-puter.js-zero-config-cloud
plan: "04"
type: execute
wave: 3
depends_on: ["31-02", "31-03"]
files_modified: []
autonomous: false
requirements: [CLOUD-01, CLOUD-02, CLOUD-03, CLOUD-04, CLOUD-05]

must_haves:
  truths:
    - "Complete onboarding flow works end-to-end with Puter provider path"
    - "Google OAuth risk warning is prominently visible before sign-in button enables"
    - "API key entry form accepts and stores keys for subscription providers"
    - "Skip for now creates a working workspace with detected adapter"
    - "No provider tokens or API keys appear in browser localStorage or sessionStorage (verify via DevTools Application tab)"
---

<objective>
Human verification of the complete provider selection flow. All implementation work is done in Plans 01-03 (including the /claim endpoint in Plan 02). This plan is purely visual/functional verification.

Purpose: Final functional verification of all CLOUD requirements.
Output: Human verification of full onboarding wizard
</objective>

<execution_context>
@/home/mikkel/.claude/get-shit-done/workflows/execute-plan.md
@/home/mikkel/.claude/get-shit-done/templates/summary.md
</execution_context>

<context>
@.planning/PROJECT.md
@.planning/ROADMAP.md
@.planning/STATE.md
@.planning/phases/31-puter.js-zero-config-cloud/31-01-SUMMARY.md
@.planning/phases/31-puter.js-zero-config-cloud/31-02-SUMMARY.md
@.planning/phases/31-puter.js-zero-config-cloud/31-03-SUMMARY.md
</context>

<tasks>

<task type="checkpoint:human-verify" gate="blocking">
  <name>Task 1: Visual and functional verification of onboarding wizard</name>
  <files>none — verification only</files>
  <action>
    Present the following verification checklist to the user. All implementation is complete from Plans 01-03.

    What was built:
    - Complete 4-step onboarding wizard with provider selection
    - Step 1: Hardware detection (unchanged from Phase 30)
    - Step 2: Mode selection (unchanged from Phase 30)
    - Step 3: Provider selection (NEW) with Puter, Google, and API Key options
    - Step 4: Root directory (unchanged)
    - Server-side Puter proxy, Google OAuth with pendingTokens/claim pattern, API key storage, cost tracking

    How to verify:
    1. Start Nexus dev server: `cd /opt/nexus && pnpm dev`
    2. Open browser to localhost:3100 in an incognito window (fresh state)
    3. The onboarding wizard should open automatically
    4. Verify step indicator shows "Step 1 of 4"
    5. Click Continue through Step 1 (hardware) and Step 2 (mode)
    6. On Step 3 ("Choose a provider"):
       a. Verify three provider cards are visible (Puter, Google, API Key)
       b. Verify "Skip for now" button is visible below cards
       c. Click the Puter card — verify it gets the selected border highlight
       d. Verify "Continue with Puter" button appears
       e. Click the Google card — verify policy risk warning appears with red/amber text
       f. Verify "Sign in with Google" button is disabled for ~3 seconds
       g. Click the API key card — verify inline form with provider dropdown and key input appears
       h. If any adapters are detected (Hermes, Claude Code), verify "detected" badges appear
       i. Click "Skip for now" to advance to Step 4
    7. On Step 4: verify root directory form appears, enter a path, click "Get Started"
    8. Verify workspace is created and you reach the dashboard
    9. Open DevTools > Application tab > Local Storage and Session Storage — verify NO provider tokens or API keys are stored there
    10. (Optional) If you have a Puter.com account: repeat flow, select Puter, click "Continue with Puter", verify popup opens

    Resume signal: Type "approved" or describe issues to fix.
  </action>
  <verify>
    <automated>echo "checkpoint:human-verify — requires manual approval"</automated>
  </verify>
  <done>Human approves that all 5 CLOUD requirements work end-to-end in the onboarding wizard, no credentials in browser storage</done>
</task>

</tasks>

<verification>
- Full onboarding wizard flow works end-to-end
- All 5 CLOUD requirements are addressed:
  - CLOUD-01: Puter zero-config path (popup -> token in React state -> post to server after company creation)
  - CLOUD-02: Server-proxied adapter with cost tracking (agentId optional for pre-agent calls)
  - CLOUD-03: Google OAuth PKCE with risk warning (pendingTokens/claim pattern)
  - CLOUD-04: Auto-detected tools show badges
  - CLOUD-05: API key entry for subscription providers
</verification>

<success_criteria>
- Human approves the visual and functional verification
- 4-step wizard works with all provider paths
- No console errors in browser
- Server logs show no unhandled exceptions
- No credentials in browser storage (all server-side)
</success_criteria>

<output>
After completion, create `.planning/phases/31-puter.js-zero-config-cloud/31-04-SUMMARY.md`
</output>
