Journey: Deploy verification
Stage 4 of the guided journey. Verify the deployed app actually works end-to-end.
When to use
- Dispatched by
journeywhencurrent_stage: deploy. - Directly via
/butterbase-skills:journey-deploy.
Preflight
If docs/butterbase/03-preflight.md is missing, older than 24 hours, or 00-state.md has app_id: null, invoke butterbase-skills:journey-preflight first. Wait for it to return successfully before proceeding.
Inputs
docs/butterbase/00-state.md— forapp_id,deployed_url.docs/butterbase/02-plan.md— for the function list to smoke.docs/butterbase/04-build-log.md— to know what shipped.
Procedure
- Refresh docs. Call
butterbase_docswithtopic: "frontend". For end-to-end smoke patterns, also WebFetchhttps://docs.butterbase.ai/deploy. Skip if cache is fresh.
For each check, log a one-line result to 04-build-log.md. Halt on the first ✗ and ask the user to fix or skip.
Frontend reachable. If
deployed_urlis set, fetch it via Bashcurl -sS -o /dev/null -w "%{http_code}" <url>. Expect200. Log<ISO> deploy curl 200 okor... <code> fail.Functions respond. For each function in the plan with HTTP trigger, call
mcp__butterbase__invoke_functionwith a representative payload. Expect 2xx. Log per function.Auth round-trip (if configured). If the plan included OAuth, prompt the user:
"Open <deployed_url>, click 'Sign in with <provider>', and confirm you land logged-in. Did it work? (yes/no)". Log the answer.Function logs clean. Call
mcp__butterbase__manage_function action: get_logsfor the most recent invocations. Show the user any error-level lines. Ask:"Anything concerning here? (no → continue, yes → fix and re-run)".If all checks pass, tick
- [x] deployin00-state.md, setcurrent_stage: submit(ifhackathon_mode: true) orcurrent_stage: done(otherwise).Return to
journeyorchestrator.
Outputs
- Multiple lines in
04-build-log.md. - Updated
00-state.md.
Anti-patterns
- ❌ Treating a 200 from the frontend root as proof the app works — actually invoke a function.
- ❌ Skipping the auth round-trip check just because OAuth is configured server-side — judges will try to log in.