Skip to content

Checking access...

FAS Rollback Procedures

Suite-specific rollback steps for the Hello World DAO LLC platform. This guide covers rollback for individual suites, shared packages, DNS, and emergency monolith fallback.

For the monolith emergency rollback procedure, see the FAS-8.1 rollback procedure document (in bmad-artifacts/implementation-artifacts/).

Table of Contents

When to Rollback

Criteria for Triggering a Rollback

ConditionAction
Error rate > 5% sustained for 10+ minutesRollback the affected suite
Uptime < 95% for the suiteRollback the affected suite
Critical auth failure (SSO broken)Rollback oracle-bridge or affected suites
Data loss or corruptionRollback immediately + investigate
Production deployment broke a working featureRollback to last known good deployment

Do NOT Rollback For

  • Cosmetic/non-blocking UI issues (fix forward instead)
  • Intermittent errors below 5% threshold
  • Issues affecting only local development
  • Known issues with documented workarounds

Suite-Specific Rollback Steps

General Pattern (All Suites)

All suite rollbacks follow the same general process:

bash
# 1. Identify the last known good commit
git log --oneline -n 10

# 2. Revert the problematic commit
git revert <bad-commit-hash>
git push origin main

# 3. CI/CD will automatically redeploy
# Monitor: https://github.com/Hello-World-Co-Op/<suite-name>/actions

# 4. Verify the rollback
curl -I https://<suite-domain>

Estimated time: < 3 minutes (CI build + deploy).

think-tank-suite

Canister: wnfjk-biaaa-aaaao-a6dhq-caiDomain: staging-think-tank.helloworlddao.com

bash
cd ~/git/think-tank-suite
git log --oneline -n 5
git revert <commit-hash>
git push origin main

Special considerations:

  • Largest suite (4,642 tests) -- CI takes longest
  • If auth is broken, check oracle-bridge first (think-tank is the login hub)
  • If manualChunks causes JS crash, remove it and let Rollup auto-split (see FAS-8.1 fix)

Verification: Visit https://staging-think-tank.helloworlddao.com, verify login page renders.

governance-suite

Canister: wkep6-mqaaa-aaaao-a6dha-caiDomain: staging-governance.helloworlddao.com

bash
cd ~/git/governance-suite
git log --oneline -n 5
git revert <commit-hash>
git push origin main

Special considerations:

  • Uses direct nanostores (no AuthProviderBridge) -- auth issues are simpler
  • 69 E2E tests may catch regressions before deployment

Verification: Visit https://staging-governance.helloworlddao.com, verify proposals page loads.

marketing-suite

Canister: d5fe6-hqaaa-aaaao-a6t5q-caiDomain: staging.helloworlddao.com (staging), www.helloworlddao.com (production)

bash
cd ~/git/marketing-suite
git log --oneline -n 5
git revert <commit-hash>
git push origin main

Special considerations:

  • Standalone suite -- rollback does not affect other suites
  • After rollback, verify SEO pre-rendering still works: check dist/index.html has content in <div id="root">
  • Verify dist/sitemap.xml is generated correctly
  • robots.txt must still be present

Verification:

bash
# Check pre-rendered HTML
curl -s https://staging.helloworlddao.com | grep -c '<div id="root">'
# Expected: 1 (with content inside)

# Check sitemap
curl -s https://staging.helloworlddao.com/sitemap.xml

otter-camp-suite

Canister: dzt3i-sqaaa-aaaao-a6uaa-caiDomain: staging-ottercamp.helloworlddao.com

bash
cd ~/git/otter-camp-suite
git log --oneline -n 5
git revert <commit-hash>
git push origin main

Special considerations:

  • Standalone suite -- rollback does not affect other suites
  • After rollback, verify Phaser.js chunk loads correctly (lazy-loaded ~340KB)
  • Game should gracefully degrade if WebSocket (oracle-bridge) is unavailable
  • Check that game assets in public/assets/ are intact

Verification: Visit https://staging-ottercamp.helloworlddao.com/otter-camp, verify game canvas renders.

dao-suite

Canister: d6s54-7iaaa-aaaao-a6uaq-caiDomain: staging-portal.helloworlddao.com

bash
cd ~/git/dao-suite
git log --oneline -n 5
git revert <commit-hash>
git push origin main

Special considerations:

  • After rollback, verify oracle-bridge compatibility (SSO may break if bridge API changed)
  • Check that authCookieClient still bridges cookies to localStorage
  • Test the full auth flow: login on think-tank -> navigate to dao-suite -> dashboard loads

Verification:

  1. Visit https://staging-portal.helloworlddao.com
  2. Should redirect to think-tank login
  3. After login, should redirect back with authenticated view

dao-admin-suite

Canister: dxrwa-jaaaa-aaaao-a6uba-caiDomain: staging-admin.helloworlddao.com

bash
cd ~/git/dao-admin-suite
git log --oneline -n 5
git revert <commit-hash>
git push origin main

Special considerations:

  • Same oracle-bridge dependency as dao-suite
  • Verify AdminGuard still renders (RBAC placeholder)
  • Test admin-specific validateReturnUrl -- ensure it does not allow open redirects

Verification:

  1. Visit https://staging-admin.helloworlddao.com
  2. Should show auth gate / redirect to login
  3. After login, admin dashboard should load

Package Rollback

If a shared package update breaks one or more suites:

1. Identify Affected Suites

bash
# Check which suites use the package
cd ~/git/think-tank-suite && npm list @hello-world-co-op/*
cd ~/git/governance-suite && npm list @hello-world-co-op/*
cd ~/git/marketing-suite && npm list @hello-world-co-op/*
cd ~/git/dao-suite && npm list @hello-world-co-op/*
cd ~/git/dao-admin-suite && npm list @hello-world-co-op/*

2. Downgrade Package Version

In each affected suite's package.json:

json
{
  "dependencies": {
    "@hello-world-co-op/ui": "0.1.0"
  }
}

Then:

bash
npm install
npm test                 # Verify tests pass with old version
npm run build            # Verify build succeeds
git add package.json package-lock.json
git commit -m "fix: downgrade @hello-world-co-op/ui to 0.1.0"
git push origin main     # Triggers redeploy

3. Redeploy All Affected Suites

Each suite with the downgraded package must be redeployed. Push to main triggers CI/CD automatically.

Current package versions (as of FAS-8.1):

  • @hello-world-co-op/api: 0.1.0
  • @hello-world-co-op/auth: 0.1.0
  • @hello-world-co-op/ui: 0.1.0

DNS Rollback

If a custom domain is misconfigured or pointing to the wrong canister:

1. Identify Current DNS State

bash
# Check where the domain currently points
dig +short staging-think-tank.helloworlddao.com
dig +short staging-governance.helloworlddao.com
dig +short staging.helloworlddao.com
dig +short staging-ottercamp.helloworlddao.com
dig +short staging-portal.helloworlddao.com
dig +short staging-admin.helloworlddao.com

2. Revert DNS CNAME

Update the DNS CNAME record to point to the previous canister ID:

DomainCurrent TargetRollback Target (if needed)
staging-think-tank.helloworlddao.comwnfjk-biaaa-aaaao-a6dhq-cai.icp0.io(same -- no rollback)
staging-governance.helloworlddao.comwkep6-mqaaa-aaaao-a6dha-cai.icp0.io(same -- no rollback)
staging.helloworlddao.comd5fe6-hqaaa-aaaao-a6t5q-cai.icp0.io(same -- no rollback)
staging-ottercamp.helloworlddao.comdzt3i-sqaaa-aaaao-a6uaa-cai.icp0.io(same -- no rollback)
staging-portal.helloworlddao.comd6s54-7iaaa-aaaao-a6uaq-cai.icp0.io(same -- no rollback)
staging-admin.helloworlddao.comdxrwa-jaaaa-aaaao-a6uba-cai.icp0.io(same -- no rollback)

3. DNS Propagation Time

  • Estimated: 5-60 minutes depending on TTL
  • Workaround during propagation: Use direct canister URLs (https://<canister-id>.icp0.io) for immediate access

4. Verify DNS Propagation

bash
# Verify each domain resolves correctly
dig +short staging-think-tank.helloworlddao.com
# Expected: icp1.io (or similar IC boundary node)

# Verify with curl
curl -I https://staging-think-tank.helloworlddao.com
# Expected: HTTP/2 200

Verification Checklist

After any rollback, verify these items:

Health Checks

  • [ ] Suite responds to HTTP requests (200 OK)
  • [ ] No JavaScript errors in browser console
  • [ ] Bundle loads correctly (no missing chunks)

Auth Flow (auth-integrated suites only)

  • [ ] Login redirects work (suite -> think-tank -> back)
  • [ ] Session cookie set on .helloworlddao.com
  • [ ] Session validation returns authenticated: true
  • [ ] Logout clears session across suites
  • [ ] No infinite redirect loops

Suite-Specific

  • [ ] Marketing: Pre-rendered HTML has content, sitemap.xml exists
  • [ ] Otter Camp: Phaser.js game canvas renders
  • [ ] DAO: Dashboard loads with user data
  • [ ] DAO Admin: Admin dashboard renders, KYC review accessible

Performance

  • [ ] Bundle size within NFR6 (< 500KB gzipped)
  • [ ] No console errors in production build
  • [ ] Page load time acceptable

Rollback Commands Reference

Git Commands

bash
# Revert a specific commit
git revert <commit-hash>

# Revert multiple commits
git revert <oldest-commit>..<newest-commit>

# Checkout a specific tag
git checkout <tag-name>

# Create a new branch from a tag
git checkout -b rollback/<tag-name> <tag-name>

dfx Commands

bash
# Check canister status
dfx canister status <canister-id> --network ic

# Reinstall canister with previous WASM
dfx canister install <canister-name> --mode reinstall --wasm <previous.wasm> --network ic

# Start a stopped canister
dfx canister start <canister-id> --network ic

# Stop a canister
dfx canister stop <canister-id> --network ic

npm Commands

bash
# Downgrade a package
npm install @hello-world-co-op/ui@0.1.0

# Check installed versions
npm list @hello-world-co-op/*

# Check available versions
npm view @hello-world-co-op/ui versions --registry=https://npm.pkg.github.com

DNS Verification

bash
# Check DNS resolution
dig +short <domain>

# Full DNS trace
dig +trace <domain>

# HTTP verification
curl -I https://<domain>

# Direct canister access (bypasses DNS)
curl -I https://<canister-id>.icp0.io
  • FAS-8.1 Emergency Rollback -- Monolith rollback procedure (see bmad-artifacts/implementation-artifacts/)
  • Architecture Overview -- Suite and package architecture
  • Troubleshooting Guide -- Common issues and fixes
  • Cross-Suite Auth Debugging -- SSO diagnosis
  • DNS Configuration Reference -- DNS records (see bmad-artifacts/implementation-artifacts/)
  • Canister ID Reference -- All canister IDs (see bmad-artifacts/implementation-artifacts/)

Hello World Co-Op DAO