Skip to content

Release Management ​

This page defines how Vela Labs ships changes across the multi-repo workspace.

The main rule: release by dependency order, not by convenience.

Release Classes ​

ClassExamplesRequired gates
Protocol interface releaseInstruction args/accounts, account layout, events, program IDsProtocol tests, SDK release gate, rollout verification, deployed byte/IDL verification
SDK-only releaseNew helper, CLI improvement, browser exportSDK release gate, package smoke test
Runtime app releaseDashboard, checkout, portal, admin, widgetApp typecheck/build/tests, SDK pin verified
Docs/content releasePublic docs, wiki, READMESite build, link checks where available
Emergency releasePause, unpause, hotfix, event ingestion fixMinimal failing test or reproduction, targeted fix, explicit post-check

Normal Protocol Release Order ​

  1. vela-protocol
  2. vela-sdk
  3. vela-dashboard
  4. vela-webhook
  5. vela-checkout
  6. vela-widget
  7. vela-portal
  8. vela-admin
  9. vela-docs
  10. vela-demo
  11. internal-wiki

vela-web usually does not block protocol releases.

Commerce OS Release Order ​

Commerce changes that alter public types, event payloads, dashboard APIs, or hosted checkout deploy in this order:

  1. Fresh/migrated D1 compatibility and backend consumer
  2. @velapay/sdk and @velapay/webhook
  3. Dashboard API and UI
  4. Hosted checkout
  5. Public docs
  6. Internal wiki

Payment, refund, and protocol execution flags are independent. Start a rollout with execution disabled, complete read-only smoke checks, enable payments, verify one confirmed payment and reconciliation, then enable refunds. A failure disables the affected flag before Worker or D1 rollback.

The current accepted rollout is devnet-only. Follow vela-dashboard/docs/runbooks/v19-commerce-release-gates.md and record acceptance in vela-dashboard/docs/runbooks/v1.9-devnet-rollout-report.md.

Compatibility Pair ​

vela-protocol and vela-sdk are the mandatory compatibility pair.

If protocol IDL, accounts, or events change:

  • SDK IDL must be updated
  • SDK exported types must compile
  • SDK event schemas must reflect public payloads
  • downstream runtime repos must use the compatible SDK version or local path

Do not deploy protocol changes while the SDK still models the previous interface.

Pre-Release Checklist ​

Interface freeze ​

  • [ ] Instruction accounts and args are final.
  • [ ] Account layout is final.
  • [ ] Event payloads are final.
  • [ ] Program IDs are confirmed unchanged unless intentionally rotating.
  • [ ] IDLs are regenerated or confirmed current.
  • [ ] SDK IDL copies match protocol artifacts.

Consumer audit ​

  • [ ] Search for affected fields across repos.
  • [ ] Patch instruction builders.
  • [ ] Patch deserializers.
  • [ ] Patch event schemas and fixtures.
  • [ ] Patch UI assumptions and token labels.
  • [ ] Patch docs/examples.

Verification ​

  • [ ] vela-protocol: bun run verify:rollout
  • [ ] vela-protocol: bun run verify:deployed after deploy
  • [ ] vela-sdk: bun run release:verify
  • [ ] vela-dashboard: targeted worker/indexer tests
  • [ ] vela-webhook: build and tests
  • [ ] vela-checkout: typecheck
  • [ ] vela-widget: typecheck
  • [ ] docs/wiki builds if public explanation changed

Versioning Rules ​

SDK ​

Use semantic versioning:

ChangeVersion bump
Backwards-compatible helper or exportPatch
New optional protocol field supportMinor
Required instruction/account/event changeMinor before 1.0, major after 1.0
Runtime-breaking removalMajor after 1.0; avoid before 1.0 unless unavoidable

Pre-1.0 does not mean casual. Treat every published SDK release as externally consumed.

Protocol ​

Protocol has two kinds of versions:

  • program identity: the Solana program address
  • interface version: IDL/account/event shape

A program upgrade keeps the same identity but may still change the interface. Downstream releases care about the interface version, not only the address.

Release Notes Template ​

Use this format in internal notes or PR descriptions:

md
# Release: <name>

Date:
Operator:
Commit(s):

## Summary

## Protocol Impact

- Program IDs changed: yes/no
- IDL changed: yes/no
- Account layout changed: yes/no
- Event shape changed: yes/no
- Token semantics changed: yes/no

## Repos Updated

## Verification

## Deployment

## Rollback / Mitigation

## Follow-Up

Rollback Posture ​

Solana program upgrades are not like simple web rollbacks.

SurfaceRollback approach
Protocol programUpgrade again to previous known-good artifact if authority allows
SDKPublish fixed package or pin consumers back to previous version
Dashboard/webhook workersRedeploy previous Worker build
Checkout/widget/portal/adminRedeploy previous app build
Docs/wikiRevert content and rebuild

For protocol, keep previous .so artifacts and IDLs for each deployed release. If a previous artifact is not available, rollback becomes reconstruction, not rollback.

Release Stop Conditions ​

Stop the release if any of these happen:

  • program keypair address does not match manifest
  • wallet is not the expected upgrade authority
  • SDK IDL does not match protocol IDL
  • verify:rollout fails
  • on-chain byte hash does not match local artifact after deploy
  • webhook schemas reject valid new events
  • dashboard/worker rewrites token identity incorrectly
  • any money path falls back silently
  • a fake or unrelated signature can confirm a payment or refund
  • browser input can change the configured Solana cluster
  • concurrent refunds can reserve more than the paid balance
  • an auditor mutation returns anything other than 403
  • commerce outbox events cannot be replayed idempotently by event ID

Internal knowledge base for the Vela Labs workspace.