🚀 YieldVault-RWA: Release Checklist (Testnet & Mainnet)
Issues: #1146 , #1060
Purpose: A formal, standardized release checklist covering preflight verification, environment-specific deployment procedures, post-deployment validation, rollback triggers, and multi-disciplinary sign-off for Testnet (Staging) and Mainnet (Production) .
Maintained By: Release Engineering & Operations
1. How to Use This Checklist
Target Environment Selection : Identify whether this release is for Testnet (staging) or Mainnet (production).
Sequential Execution : Complete each section in order. Check items [x] upon verification.
Waivers : If an item is not applicable or waived, replace [ ] with [~] and document the rationale inline.
Sign-Off Gate : Obtain all mandatory signatures from Engineering and Operations leads (Section 7) prior to tagging production or applying migrations.
Post-Deployment Verification : Complete Section 5 within 30 minutes of deployment.
Filing : Attach the filled checklist to the GitHub Release or release tracking ticket.
Metadata Field
Value
Target Environment
[ ] Testnet / [ ] Mainnet
Release Version / Git Tag
v...
Target Commit Hash
...
Deployment Lead
@username
Secondary Reviewer
@username
DevOps / Ops Lead
@username
Deployment Window (UTC)
YYYY-MM-DD HH:MM UTC
Incident War Room
#yieldvault-war-room / #yieldvault-incidents
2. Environment Matrix & Configuration Guidance
Configuration Item
Testnet (Staging)
Mainnet (Production)
Network Name
testnet
mainnet
Passphrase
Test SDF Network ; September 2015
Public Global Stellar Network ; September 2015
Soroban RPC URL
https://soroban-testnet.stellar.org
https://soroban-mainnet.stellar.org (with failover)
Horizon API URL
https://horizon-testnet.stellar.org
https://horizon.stellar.org
Deployer Funding
Stellar Friendbot faucet
Dedicated cold/warm operations wallet (> 200 XLM)
Admin Key Model
Dedicated staging keypair
Multi-signature (3-of-5) or Hardware Security Module (HSM)
Emergency Approvers
Staging ops key
Multi-party distinct emergency approvers
Contract Config
deployments/contracts.testnet.json
deployments/contracts.mainnet.json
Backend DB
Staging PostgreSQL (managed)
Production HA PostgreSQL (multi-AZ, automated backups)
Backend Cache
Staging Redis
Production Redis (TLS + ACL enabled)
Frontend Base URL
https://staging.yieldvault.finance
https://yieldvault.finance
Backend Base URL
https://staging-api.yieldvault.finance
https://api.yieldvault.finance
Alerting Destination
Slack #staging-alerts
PagerDuty + Slack #yieldvault-incidents
3. Preflight Checklist (All Environments)
3.1 Toolchains & Shared Packages
3.2 Smart Contracts Preflight
3.5 Security, Environment & Secrets
3.6 CI/CD Release Workflows
4.1 Testnet (Staging) Deployment Flow
Contract Deployment :
./scripts/deploy_contracts.sh testnet
Update deployments/contracts.testnet.json with newly deployed contract IDs.
Contract Initialization :
Initialize vault instance with admin address and testnet USDC token contract.
Verify: soroban contract invoke --id <VAULT_ID> --network testnet -- version.
Backend Deployment :
Apply Prisma migrations: npx prisma migrate deploy.
Start backend service with VAULT_CONTRACT_ID set.
Verify health: curl -f https://staging-api.yieldvault.finance/health.
Frontend Deployment :
Deploy build artifact to staging environment (Vercel/Cloudflare).
Verify staging URL loads with correct network configuration.
4.2 Mainnet (Production) Deployment Flow
Change Window & Notice : Announce scheduled release window in #yieldvault-incidents and status channels.
Database Backup : Take a manual, verified snapshot of the production PostgreSQL database.
Contract Upgrade / Deployment :
For Upgrades : Follow docs/runbooks/CONTRACT_UPGRADE_PLAYBOOK.md:
Set pause: soroban contract invoke --id <VAULT_ID> --source admin --network mainnet -- set_pause --paused true.
Install new WASM: soroban contract install --wasm <OPTIMIZED_WASM> --network mainnet.
Execute upgrade via multisig: soroban contract invoke --id <VAULT_ID> --source admin --network mainnet -- upgrade --new_wasm_hash <HASH>.
Verify version & state: soroban contract invoke --id <VAULT_ID> --network mainnet -- version.
Unpause vault: soroban contract invoke --id <VAULT_ID> --source admin --network mainnet -- set_pause --paused false.
For Fresh Deployment :
Deploy WASM: soroban contract deploy --wasm <OPTIMIZED_WASM> --source deployer --network mainnet.
Initialize vault parameters (Admin multisig, Treasury address, Fee BPS, Caps).
Record addresses in deployments/contracts.mainnet.json.
Backend Production Deployment :
Execute database migration: npx prisma migrate deploy.
Deploy backend containers/instances with rolling update strategy (zero downtime).
Confirm healthy readiness probe (/ready) across all backend instances.
Frontend Production Deployment :
Push release tag v*.*.* triggering production-deploy.yml (or trigger production Vercel deployment).
Invalidate edge CDN cache if necessary.
5. Post-Deployment Validation
5.1 Immediate Checks (T+0 to T+10 min)
5.2 Extended Monitoring (T+10 to T+30 min)
6. Rollback Triggers & Procedures
6.1 Rollback Activation Triggers
Initiate immediate rollback if any of the following occur during the 30-minute validation window:
/health or /ready fails continuously for > 2 minutes.
HTTP 5xx error rate on critical write or read endpoints exceeds 5%.
Critical smart contract logic failure, accounting invariant violation, or unexpected revert on deposits/withdrawals.
Database data corruption or migration failure affecting core entities.
Active security vulnerability discovered or exploited.
6.2 Rollback Actions by Layer
Smart Contracts :
Immediately pause vault: soroban contract invoke --id <VAULT_ID> --source admin --network <network> -- set_pause --paused true.
If upgrade corrupted logic: downgrade to previous known good WASM hash (upgrade --new_wasm_hash <PREVIOUS_HASH>).
Backend Service :
Roll back container image / deployment to previous git tag.
If migrations were executed, run designated down-migration: psql -f backend/prisma/migrations/<version>/rollback.sql.
Frontend SPA :
Trigger instant rollback in Vercel or point CDN traffic back to previous immutable build hash.
Incident Escalation :
Page Incident Commander and log event in #yieldvault-incidents.
Open postmortem tracking ticket.
Testnet (Staging) Sign-Off
Role
Name / GitHub Handle
Status
Date (UTC)
Deployment Lead
[ ] Approved
Secondary Reviewer
[ ] Approved
QA / Integration Tester
[ ] Approved
Mainnet (Production) Sign-Off
Role
Name / GitHub Handle
Status
Date (UTC)
Release Owner
[ ] Approved
Smart Contracts Lead
[ ] Approved
Backend Lead
[ ] Approved
Frontend Lead
[ ] Approved
DevOps / Operations Lead
[ ] Approved
Security Lead
[ ] Approved
QA / Release Manager
[ ] Approved
8. Related Documentation & Workflows
Deployment Guide
Deployment Checklist (Operational)
Release Readiness Checklist
Incident Response & Rollback Runbook
Contract Upgrade Playbook
Environment Variable Matrix