Deployment Verification
Closes the loop on deployments by verifying they completed successfully.
When to Use
Trigger /verify-deploy after:
-
Pushing changes to master
-
Waiting ~2-3 minutes for auto-deploy
-
Want to confirm deployment succeeded
Don't use if:
-
Haven't pushed yet (use build verification instead)
-
Just pushed seconds ago (deployments take 2-3 minutes)
-
Making local changes only
What This Checks
For Dashboard Changes (Vercel)
Build Status
-
Check latest Vercel deployment
-
Verify build completed without errors
-
Get deployment URL
Deployment Health
-
Hit health endpoint (if exists)
-
Verify returns 200 OK
-
Check response time
Key Pages Accessible
-
Test critical routes load
-
No 500 errors
-
No obvious visual breaks
For Pipeline Changes (Cloud Run)
Build Status
-
Check latest Cloud Build
-
Verify Docker build succeeded
-
Confirm deployment to Cloud Run
Service Health
-
Hit /health endpoint
-
Verify Supabase connection
-
Check response structure
Recent Logs
-
Check for startup errors
-
Verify no crashes
-
Confirm service is stable
Execution Flow
Step 1: Identify What Was Deployed
Check git diff:
git log -1 --name-only
Determine:
-
Dashboard changes? (files in dashboard/ )
-
Pipeline changes? (files in src/feedops/ )
-
Both?
Step 2: Vercel Verification (If Dashboard Changes)
Option A: Using Vercel MCP (if available)
// Use mcp__vercel__ tools to check deployment status // Get latest deployment // Check build status // Get deployment URL
Option B: Using Vercel CLI
Check latest deployment
vercel list --project-id=prj_00zlLdZVgbP8XjDWIEXSRdFyqDqA --limit=1
Get deployment status
vercel inspect [deployment-url]
Option C: Check Vercel dashboard logs
View logs via Vercel API or dashboard link
echo "View logs: https://vercel.com/[team]/[project]/deployments"
What to verify:
-
✅ Status: READY (not ERROR or BUILDING)
-
✅ Build time: Reasonable (~1-2 minutes for this project)
-
✅ Commit hash: Matches latest push
-
⚠️ Warnings: Check for deprecation notices
Test health:
Hit production URL
curl -I https://allied-feed-ops.vercel.app/api/health
Expected: 200 OK
Step 3: Cloud Run Verification (If Pipeline Changes)
Check Cloud Build:
gcloud builds list
--project=bobbys-project-346400
--limit=1
--format="table(id,status,createTime,duration)"
What to verify:
-
✅ Status: SUCCESS
-
✅ Create time: Recent (within last 5 minutes)
-
✅ Duration: Reasonable (~3-5 minutes for this project)
Check Cloud Run deployment:
gcloud run services describe feedops-pipeline
--project=bobbys-project-346400
--region=us-east1
--format="value(status.latestReadyRevisionName,status.conditions)"
What to verify:
-
✅ Latest revision matches recent deployment
-
✅ Conditions: All READY
-
⚠️ Check for any warnings
Test health endpoint:
curl -s https://feedops-pipeline-623866089882.us-east1.run.app/health | jq .
Expected response:
{
"status": "healthy",
"supabase_connected": true,
"timestamp": "[recent-time]"
}
Check recent logs:
gcloud run services logs read feedops-pipeline
--project=bobbys-project-346400
--limit=20
--format="table(timestamp,severity,textPayload)"
Look for:
- ✅ "Application startup complete"
- ✅ No ERROR severity logs
- ⚠️ Any unexpected warnings
Step 4: Report Results
Format:
Deployment Verification Results
Commit: [hash] - [message first line] Pushed: [timestamp] Verified: [current timestamp]
Dashboard (Vercel)
- Status: [✅ DEPLOYED / ⚠️ BUILDING / ❌ FAILED]
- Build: [SUCCESS / ERRORS]
- URL: [deployment URL]
- Health: [✅ 200 OK / ❌ Error] [Details if issues]
Pipeline (Cloud Run)
- Status: [✅ DEPLOYED / ⚠️ BUILDING / ❌ FAILED]
- Build: [SUCCESS / ERRORS]
- Service: [READY / NOT READY]
- Health: [✅ Healthy / ❌ Unhealthy] [Details if issues]
Overall: [✅ ALL SYSTEMS GO / ⚠️ WARNINGS / ❌ FAILURES]
If all successful:
✅ Deployment Verified Successfully
All systems operational:
- Dashboard: https://allied-feed-ops.vercel.app
- Pipeline: https://feedops-pipeline-623866089882.us-east1.run.app
Changes from commit [hash] are live.
If issues found:
❌ Deployment Issues Detected
Dashboard: [issue description]
- [Details]
- [Logs/errors]
Pipeline: [issue description if applicable]
- [Details]
- [Logs/errors]
Recommended action: [rollback / investigate / wait]
Edge Cases
Still Building
⏳ Deployment In Progress
Dashboard: BUILDING (started [time] ago) Pipeline: BUILDING (started [time] ago)
Typical deploy time: 2-3 minutes
Recommendation: Wait 2 more minutes, then run /verify-deploy again
Partial Success
⚠️ Partial Deployment
Dashboard: ✅ Deployed successfully Pipeline: ❌ Build failed with errors: [error details]
Since dashboard changes succeeded, those are live. Pipeline issues need investigation.
Rollback Needed
If critical issues detected:
🔴 Critical Issues - Rollback Recommended
Issue: [description of what's broken] Impact: [production / high / medium]
Rollback options:
- Instant (Vercel): Revert to previous deployment in Vercel dashboard
- Git revert:
git revert [commit-hash] && git push - Wait for fix: If low impact, fix forward
Recommend: [Option number] because [reason]
Should I execute rollback, or investigate further?
Integration with /wrapup
Enhanced wrapup flow:
- /wrapup executes (CLAUDE.md, build, commit, push)
- Push completes
- Auto-suggest: "Wait 2-3 minutes for deploy, then run /verify-deploy"
- User runs /verify-deploy after waiting
- Confirmation deployment succeeded
Automation Opportunity
Future enhancement: Hook that runs automatically 3 minutes after push:
{ "postToolUse": [ { "tool": "Bash", "pattern": ".git push.", "command": "bash -c 'echo "⏰ Deploy verification: Run /verify-deploy in 2-3 minutes"'" } ] }
Time Estimate
Typical /verify-deploy execution: 30-60 seconds
-
Cloud Build check: 5s
-
Cloud Run check: 5s
-
Health endpoints: 5s
-
Vercel check: 5-10s
-
Log review: 10-20s
-
Report generation: 5s