Skip to main content

Deployment Status

Overview of deployed Green Goods services, chain artifacts, and activation boundaries. A chain can have contract artifacts without having every schema, optional module, frontend build, or indexer surface active.

Service Endpoints

ServiceEnvironmentURL
Client PWAProductiongreengoods.app
Admin DashboardProductionadmin.greengoods.app
DocumentationProductiondocs.greengoods.app
Envio IndexerProductionHosted by Envio (GraphQL endpoint in .env)
Agent BotOperator-configuredTelegram bot runtime; package README includes deployment examples and a Fly.io hostname, but no checked-in Fly config or deployment manifest verifies an active production endpoint

Chain Deployments

Contract addresses are stored in deployment artifacts at packages/contracts/deployments/{chainId}-latest.json. This file is the single source of truth for all addresses.

Chain Readiness

ChainChain IDContract artifactEAS schemasIndexer coverageNotes
Sepolia11155111PresentWork / WorkApproval / Assessment configured in artifactPresent in packages/indexer/config.yamlPrimary testnet/development chain
Arbitrum42161PresentWork / WorkApproval / Assessment configured in artifactPresent in packages/indexer/config.yamlPrimary production mainnet target
Celo42220PresentWork schema UID present; Assessment and WorkApproval schema UIDs are zero in artifactNot present in packages/indexer/config.yamlPartial mainnet artifact; do not describe as fully indexed/activated

The target chain is set by VITE_CHAIN_ID at build time. Each frontend build is single-chain.

Module Readiness By Surface

Deployment artifacts, indexer config, and UI routes are separate readiness signals. A non-zero module address means the contract surface is deployed on that chain; it does not automatically mean every event is indexed or every user-facing route is production-ready.

SurfaceArbitrum 42161Sepolia 11155111Celo 42220Indexer coverageUI/code surface
Hats rolesModule deployedModule deployedModule not deployedHatsModule events configured for Arbitrum/SepoliaShared role hooks and admin role views
Cookie JarModule deployedModule deployedModule not deployedNo dedicated CookieJarModule contract in config.yaml; yield split amounts are indexed through YieldSplitterAdmin Hub Cookie Jar modals and shared Cookie Jar hooks
Octant vaultsModule/factory deployedModule/factory deployedModule not deployedOctantModule, dynamic OctantVault, and YieldSplitter events configured for Arbitrum/SepoliaAdmin vault views and shared vault hooks
HypercertsModule and marketplace adapter deployedModule and marketplace adapter deployedModule not deployedHypercertMinter events configured; marketplace adapter events are not currently configuredAdmin Hypercert wizard/listing components and shared Hypercert hooks
Gardens V2Module deployedModule deployedModule not deployedGardensModule events are not currently configuredAdmin signal-pool view and shared conviction hooks
Karma GAPModule deployedModule deployedModule not deployedNo dedicated KarmaGAPModule contract in config.yaml; resolver calls are not indexed as module eventsContract/resolver support; no standalone reporting UI verified
ENSgreenGoodsENS deployed; ensReceiver zerogreenGoodsENS and ensReceiver deployedNot deployedGreenGoodsENS events are not currently configuredShared ENS/profile hooks
GreenWillNo deployment artifact field; indexer address zeroNo deployment artifact field; indexer address zeroNo deployment artifact field; indexer address zeroHandlers exist, but GreenWill address is zero in config.yamlAdmin/client badge surfaces are implementation-gated

Deployment Artifact Structure

Each {chainId}-latest.json file contains addresses for all deployed contracts:

  • accountProxy / gardenAccountImpl / gardenToken -- Garden TBA system
  • actionRegistry / deploymentRegistry -- Protocol registries
  • assessmentResolver / workResolver / workApprovalResolver -- EAS resolvers
  • eas.address / eas.schemaRegistry -- EAS infrastructure
  • rootGarden -- Root garden address and token ID
  • hats.* -- Hats Protocol tree addresses

Zero addresses or missing module keys indicate a module has not been deployed or wired for that chain yet. This is not a blocker for unrelated protocol surfaces.

Hats Protocol Trees

Hats tree constants are defined in packages/contracts/src/lib/Hats.sol; module deployment determines whether they are active for a chain:

ChainTree IDCommunity Hat
Sepolia20220x000007e60002...
Arbitrum920x0000005c0002...
Celo310x0000001f0002...

Verification

Post-Deploy Verification

After any deployment, run the verification suite:

# Full verification (contract state + Etherscan)
cd packages/contracts && bun run verify:post-deploy:sepolia

# Etherscan verification only
cd packages/contracts && bun run verify:etherscan:sepolia

# Verify with indexer runtime check
cd packages/contracts && bun run verify:post-deploy:indexer:sepolia

EAS Immutable Validation

Resolver contracts have immutable _eas references that must match the chain's EAS deployment:

cd packages/contracts && node script/validate-eas-immutables.mjs
cd packages/contracts && node script/validate-resolver-eas.mjs

Health Monitoring

Checking Deployment Status

cd packages/contracts && bun run status

This reads the deployment artifacts and reports which contracts are deployed, their addresses, and whether they are verified on Etherscan.

Indexer Health

The indexer exposes a GraphQL endpoint. Query _metadata for sync status:

{
_metadata {
lastProcessedBlockNumber
lastProcessedTimestamp
}
}

Next page

Next: Deploy Contracts

Learn how the two-layer deployment system (TypeScript CLI + Solidity script) deploys and upgrades smart contracts.

Contract Deployments