Use this checklist before every release candidate and production deployment. A release is considered ready only when all required checks pass or have an approved exception.
- Release version/tag prepared (e.g.,
vX.Y.Z) - Target network/environment confirmed (dev / testnet / mainnet / production)
- Scope confirmed (backend / frontend / contracts)
- Rollback owner assigned
- Incident channel and on-call contact confirmed
| Field | Value |
|---|---|
| Release Version | |
| Release Date (UTC) | |
| Release Manager | |
| Backend Commit SHA | |
| Frontend Commit SHA | |
| Contracts Commit SHA | |
| Contract IDs (if changed) | |
| Notes |
- CI for target commit/branch is green
- No unresolved critical/high severity issues for release scope
- Dependency install works from clean environment
- Environment variables/secrets updated and validated
- Migration scripts reviewed
- Migration tested in staging with production-like data
- Backup/snapshot completed and restorable
- Rollback steps for DB changes documented
- Toolchain versions verified per runbook (
docs/DEPLOYMENT.md) - Contract builds successfully to WASM
- Optimized WASM generated
- Upgrade path rehearsed on testnet (if upgrade release)
Goal: Verify API/service correctness, safety, and observability after deployment.
- API process starts without errors
- Health endpoint returns OK (liveness/readiness)
- DB connection established
- Redis/cache connection established (if enabled)
- Background workers/queues connected (if applicable)
- Auth/session flow works (if applicable)
- Vault read endpoints return valid data (TVL/share metrics)
- Deposit-related backend path works (if backend-assisted)
- Withdraw-related backend path works (if backend-assisted)
- Event ingestion/indexer catches up and processes new events
- Pagination endpoints return stable cursors/next pages
- No unexpected null/zeroed critical fields
- Contract-derived values are parsed/scaled correctly
- Time-series / analytics values are monotonic where expected
- No duplicate event processing / idempotency regressions
- Rate limits applied to public API routes
- Protected routes reject unauthorized access
- Error responses do not leak secrets
- Logs contain correlation/request IDs
- No sustained error spike in first 15–30 min
Goal: Confirm critical user journeys and display accuracy across supported clients.
- Frontend builds successfully in release mode
- App loads with no blocking console/runtime errors
- API base URL points to intended backend
- Network/environment badge (if present) shows correct environment
- Wallet connection flow works (Freighter)
- Correct network enforcement (testnet/mainnet) works
- Deposit form validates inputs and submits expected transaction flow
- Withdraw form validates inputs and submits expected transaction flow
- Pending / success / failure states render correctly
- User receives clear recovery guidance for failed tx
- TVL, Share Price, Total Shares display expected values
- User balances/position data match backend/on-chain values
- Loading/empty/error states are user-friendly
- No critical layout breakage on desktop + mobile widths
- Accessibility quick pass (keyboard nav, focus visibility, labels)
- Chrome latest
- Firefox latest
- Safari (or WebKit equivalent in CI/device farm)
- No critical regression across supported browsers
Goal: Validate deploy/upgrade correctness, invariants, and operational safety.
- Contract compiled with pinned toolchain
- Optimized WASM hash recorded
- Correct contract deployed/upgraded on target network
- Deployed Contract ID documented in release metadata
- ABI/interface compatibility verified against frontend/backend clients
-
initialize(for new deploys) succeeds with expected params -
depositsucceeds for nominal amount -
withdraw(or pending-withdraw flow) succeeds -
get_share_pricereturns valid scaled value - Strategy/yield event flow emits expected events
- Pause/unpause admin controls verified (if applicable)
- Share accounting invariants preserved after deposit/withdraw
- Access control checks enforced for admin-only calls
- Oracle/price validation guardrails functioning
- Upgrade auth checks validated (unauthorized upgrade blocked)
- Contract version endpoint reflects expected release version (if implemented)
Goal: Ensure backend + frontend + contracts work together as one system.
- Connect wallet in frontend
- Perform deposit from UI; transaction confirms
- Backend/indexer observes and reflects updated state
- Frontend refreshes with updated balances/share metrics
- Perform withdraw from UI; transaction confirms
- Final balances consistent across UI, API, and on-chain reads
- No critical errors in logs during E2E run
Record test wallet/account used: __________________________
- Dashboards reviewed (API latency, error rate, chain/indexer lag)
- Alerting channels active and tested
- Log retention and query access confirmed
- Runbooks linked and reachable by on-call
- Rollback drill confirmed for this release type
- Backend Owner
- Frontend Owner
- Contract Owner
- QA/Release Manager
- GO
- NO-GO
If NO-GO, summarize blockers and mitigation plan:
- Blocker:
- Owner:
- ETA:
- Mitigation:
- Error rate within normal baseline
- No unresolved P0/P1 alerts
- Deposit/withdraw success rates normal
- Indexer/event lag within threshold
- User-reported issues triaged
- Release note/status update posted
| Role | Name | Date (UTC) | Signature/Handle |
|---|---|---|---|
| Release Manager | |||
| Backend Owner | |||
| Frontend Owner | |||
| Contract Owner |