Root docs
Repository viewer
Legacy docs parity surface
Back to repository viewer
Repository document

Mainnet Go-Live Checklist

mainnet-go-live-checklist.md

Boundary

This route preserves legacy markdown access inside the Next.js surface. The raw repository file remains authoritative.

Open raw file

Mainnet Go-Live Checklist

This checklist is the shortest practical path to decide whether PrivateDAO is ready for a real mainnet cutover.

Use it as a go or no-go surface, not as marketing copy.

1. Repository Integrity

All repository-bound checks must pass first.

  • `bash scripts/verify-all.sh`
  • `npm run verify:frontend-surface`
  • `npm run verify:submission-registry`
  • `npm run verify:generated-artifacts`
  • `npm run verify:cryptographic-manifest`

Required outcome:

  • reviewer artifacts are fresh
  • proof registries are aligned
  • runtime and operational evidence are current
  • additive V3 hardening proof remains current
  • no stale generated files remain

2. Program And Authority Controls

Before mainnet, authority handling must be explicit and hardened.

  • upgrade authority is moved to an explicit multisig or governance-owned path
  • treasury operator path is documented
  • token admin path is documented
  • authority rotation procedure is documented and rehearsed
  • emergency ownership and veto authority are understood by operators

Blocking condition:

  • do not cut over while a single personal key still acts as an unchecked production authority

3. External Security Review

Repository quality is not a substitute for an external audit.

  • external audit is completed
  • findings are reviewed and closed or accepted with explicit residual-risk notes
  • critical and high findings are not left unresolved
  • the audit scope covers the deployed program version intended for mainnet

Blocking condition:

  • do not call the system mainnet-ready while external audit status is still effectively pending

4. Wallet And Runtime Validation

Mainnet readiness requires real signer environments, not repo-only confidence.

  • Phantom runtime capture recorded
  • Solflare runtime capture recorded
  • Backpack runtime capture recorded
  • Glow runtime capture recorded
  • Android runtime capture recorded when Android is a supported path

Canonical evidence:

  • `docs/runtime/real-device.generated.md`
  • `docs/runtime/real-device-captures.json`

Blocking condition:

  • do not claim production readiness while real-device runtime evidence is still missing

5. RPC And Monitoring Readiness

The protocol depends on RPC infrastructure. Treat that dependency as part of production design.

  • primary and fallback RPCs are selected
  • rate-limit behavior is understood
  • transaction failure alerts are routed
  • proposal lifecycle alerts are routed
  • operational diagnostics are tested against the chosen providers

Required outcome:

  • operators know which RPC is primary, which one is fallback, and what to do when either degrades

6. Treasury Safety

Treasury movement is the highest-consequence path and must be reviewed separately.

  • recipient validation paths are reviewed
  • token mint and ownership assumptions are reviewed
  • treasury funding and execution runbooks are rehearsed
  • rollback, pause, or containment procedures are written

Blocking condition:

  • do not cut over while treasury recovery or emergency handling remains undocumented

7. ZK Boundary Decision

The current stack anchors proposal-bound proof material on-chain, records parallel on-chain verification receipts in the legacy path, and keeps Groth16 witness generation and proving off-chain. The V2 strict security layer adds `DaoSecurityPolicy`, `ProposalExecutionPolicySnapshot`, `ProposalProofVerification`, threshold-attested proof records, canonical payload binding, and expiry checks.

Before mainnet, be explicit about what is and is not claimed.

  • on-chain proof anchors are verified
  • on-chain parallel verification receipts are reviewed
  • V2 strict proof policy is initialized for the target DAO when strict finalization is required
  • any policy change after initialization is performed through `update_dao_security_policy_v2` and reviewed as monotonic, not a rollback
  • `ProposalExecutionPolicySnapshot` exists for proposals that will use V2 strict finalization
  • proposal policy snapshots are treated as immutable object-level records once captured
  • off-chain proof generation and proving flow are reviewed
  • explorer-visible anchor path is documented
  • operator messaging does not overstate the enforcement boundary

Required outcome:

  • the team can state clearly which path is active: legacy proof anchoring, threshold-attested V2 strict finalization, or future cryptographic verifier CPI. Do not describe threshold attestation as cryptographic verification.

8. Confidential Settlement V2 Boundary

Strict confidential payout execution is only mainnet-candidate when the V2 evidence path is active.

  • `SettlementEvidence` exists for every strict confidential payout execution
  • `SettlementEvidence.status == Verified`
  • settlement evidence binds to the DAO, proposal, payout plan, payout fields, and source-specific evidence kind
  • `SettlementConsumptionRecord` is created exactly once per evidence account
  • evidence TTL and attestor policy are reviewed
  • REFHE and MagicBlock trust boundaries are described as attested unless a cryptographic receipt or verifier CPI is integrated

Blocking condition:

  • do not claim cryptographic settlement verification when the active mode is threshold-attested settlement evidence

9. Release Ceremony

Mainnet cutover should be treated as an operational ceremony, not an ad hoc deploy.

  • release ceremony is reviewed
  • release drill evidence is current
  • go-live attestation is regenerated
  • deployment attestation is regenerated
  • acceptance matrix and proof package are current

Canonical evidence:

  • `docs/mainnet-blockers.json`
  • `docs/mainnet-blockers.md`
  • `docs/release-ceremony.md`
  • `docs/release-drill.generated.md`
  • `docs/deployment-attestation.generated.json`
  • `docs/go-live-attestation.generated.json`
  • `docs/mainnet-acceptance-matrix.generated.md`
  • `docs/mainnet-proof-package.generated.md`

10. Final Decision Rule

PrivateDAO is ready for mainnet cutover only when all of the following are true:

  • repository verification passes
  • `npm run verify:mainnet-blockers` passes with all external blockers explicitly tracked
  • authority handling is hardened
  • external security review is complete
  • real-device wallet evidence exists
  • RPC and monitoring operations are prepared
  • treasury procedures are documented and rehearsed
  • ZK boundary language is honest and stable
  • release ceremony artifacts are current

If any of these remain open, the correct state is:

  • devnet-proven
  • internally hardened
  • reviewable
  • not yet cleared for mainnet cutover