Skip to main content

Operations

Live

Release loop

  1. 1

    Preflight

    Run lint/tests and validate env/deployment artifacts.

  2. 2

    Deploy contracts

    Use bun deployment wrappers and refresh schemas when needed.

  3. 3

    Deploy apps/indexer

    Ship client/admin and update indexer config for new addresses.

  4. 4

    Post-deploy verify

    Confirm routes, query surfaces, and module activation states.

Contract deployment procedure (mainnet -> sepolia -> arbitrum)

Use wrapper scripts from repo root:

# 0) Mainnet ENS receiver (required before Arbitrum)
bun --filter @green-goods/contracts deploy:dry:mainnet
bun --filter @green-goods/contracts deploy:mainnet

# 1) Sepolia deployment
bun --filter @green-goods/contracts deploy:dry:sepolia
bun --filter @green-goods/contracts deploy:sepolia
bun --filter @green-goods/contracts verify:post-deploy:sepolia

# 2) Arbitrum deployment
bun --filter @green-goods/contracts deploy:dry:arbitrum
bun --filter @green-goods/contracts deploy:arbitrum
bun --filter @green-goods/contracts verify:post-deploy:arbitrum

Deployment behavior:

  • Mainnet deploy writes ensReceiver into packages/contracts/deployments/1-latest.json.
  • After successful mainnet broadcast, ENS_L1_RECEIVER is auto-populated in root .env.
  • Arbitrum ENS path is send-only: transaction send must succeed; L1 settlement is not awaited in flow.

Validation notes:

  • deploy:dry:* runs full deployment simulation against target RPC (no broadcast), including runtime checks.
  • deploy:preflight:* runs compile-only preflight (no RPC calls).
  • If post-deploy verify fails with contract ... does not have any code, the checked deployments/<chain>-latest.json file is stale or points to a different deployment than the one on-chain.

Operational checks

  1. bun format && bun lint && bun test
  2. Contract test suites including fork/E2E where relevant.
  3. Docs updates for behavioral changes in same PR.
  4. bun run docs:audit passes with no warnings.
  5. Deployment/indexer status table updated in docs.

Next best action

Close the release loop by validating activation truth before publishing release notes.

Check deployment status