{
  "currentPhase": "pre-upgrade",
  "network": "mainnet",
  "lastUpdated": "2026-05-28T23:11:00Z",
  "slots": {
    "stopTransactionSlot": 2680,
    "stopNetworkSlot": 2780
  },
  "autoHardForkDelta": 60,
  "mesaGenesisTimestamp": "2026-06-03T18:00:00Z",
  "bundles": [],
  "phases": {
    "pre-upgrade": {
      "label": "Pre-Upgrade",
      "duration": "Weeks before fork",
      "goal": "Every participant prepared and running the stop-slot release.",
      "whatHappens": "Node operators verify hardware, choose upgrade mode, install the stop-slot release, and prepare infrastructure.",
      "roles": [
        {
          "role": "Block Producers",
          "actions": [
            "Verify hardware: 32 GB RAM, 8-core CPU with AVX/BMI2",
            "Install stop-slot release before the stop-transaction-slot",
            "Verify node is synced and reports correct version"
          ]
        },
        {
          "role": "Archive Nodes",
          "actions": [
            "Install stop-slot release",
            "Create a database backup before running the upgrade script"
          ]
        },
        {
          "role": "SNARK Workers",
          "actions": [
            "Install stop-slot release",
            "Confirm worker connectivity to coordinator"
          ]
        },
        {
          "role": "Exchanges",
          "actions": [
            "Pause deposits and withdrawals window aligned with stop-transaction-slot",
            "Communicate maintenance window to users"
          ]
        }
      ]
    },
    "state-finalization": {
      "label": "State Finalization",
      "duration": "~5 hours",
      "goal": "Network reaches consensus on a final state. No new transactions accepted.",
      "whatHappens": "At the stop-transaction-slot, nodes stop accepting transactions. Block production continues with empty blocks for ~100 slots.",
      "roles": [
        {
          "role": "Block Producers",
          "actions": [
            "<strong>Keep your node running</strong> — block density during finalization is critical"
          ]
        },
        {
          "role": "Archive Nodes",
          "actions": [
            "Keep archive running to capture all finalized blocks"
          ]
        },
        {
          "role": "Exchanges",
          "actions": [
            "Confirm deposits/withdrawals remain paused until post-upgrade verification"
          ]
        }
      ]
    },
    "upgrade": {
      "label": "Upgrade",
      "duration": "Hours (network halted)",
      "goal": "Network halts, state exported, Mesa release published.",
      "whatHappens": "The network stops at the stop-network-slot. Final state is exported and the Mesa release is built.",
      "roles": [
        {
          "role": "Block Producers (Automode)",
          "actions": [
            "No action needed — your node transitions automatically"
          ]
        },
        {
          "role": "Block Producers (Manual)",
          "actions": [
            "Stop your node after the network halts",
            "Install the Mesa release and restart with updated flags"
          ]
        },
        {
          "role": "Archive Nodes",
          "actions": [
            "Run the archive upgrade script against the Mesa release",
            "Verify integrity with the archive hardfork toolbox"
          ]
        }
      ]
    },
    "post-upgrade": {
      "label": "Post-Upgrade",
      "duration": "After first Mesa block",
      "goal": "Block production resumes on Mesa. Verify and return to normal operations.",
      "whatHappens": "The first Mesa block is produced. Operators verify their nodes are on the new chain and the ecosystem returns to normal operation.",
      "roles": [
        {
          "role": "Block Producers",
          "actions": [
            "Verify sync status is <code>Synced</code> and Chain ID matches Mesa",
            "Confirm block height is advancing"
          ]
        },
        {
          "role": "Archive Nodes",
          "actions": [
            "Run <code>mina-archive-hardfork-toolbox verify-upgrade</code>",
            "Validate fork block integrity"
          ]
        },
        {
          "role": "Exchanges",
          "actions": [
            "Re-enable deposits and withdrawals once the chain is verified",
            "Update node binaries to the Mesa release in production"
          ]
        }
      ]
    }
  },
  "artifacts": {
    "preFork": {
      "label": "Pre-Fork Artifacts",
      "description": "Install these before the stop-transaction-slot.",
      "imagesByCodename": {
        "noble": {
          "label": "Noble",
          "images": {
            "automode": {
              "label": "Daemon (automode)",
              "image": null,
              "status": "pending"
            },
            "legacy": {
              "label": "Daemon (legacy/manual)",
              "image": "gcr.io/o1labs-192920/mina-daemon:3.4.0-0e8410e-noble-mesa-mut",
              "status": "available"
            },
            "archive": {
              "label": "Archive node",
              "image": "gcr.io/o1labs-192920/mina-archive:3.4.0-0e8410e-noble-mesa-mut",
              "status": "available"
            },
            "rosetta": {
              "label": "Rosetta Node",
              "image": "gcr.io/o1labs-192920/mina-rosetta:3.4.0-0e8410e-noble-mesa-mut",
              "status": "available"
            }
          }
        },
        "bookworm": {
          "label": "Bookworm",
          "images": {
            "automode": {
              "label": "Daemon (automode)",
              "image": "gcr.io/o1labs-192920/mina-daemon-auto-hardfork:4.0.0-rc1-8a637fd-bookworm-mesa-mut",
              "status": "available"
            },
            "legacy": {
              "label": "Daemon (legacy/manual)",
              "image": "gcr.io/o1labs-192920/mina-daemon:3.4.0-0e8410e-bookworm-mesa-mut",
              "status": "available"
            },
            "archive": {
              "label": "Archive node",
              "image": "gcr.io/o1labs-192920/mina-archive:3.4.0-0e8410e-bookworm-mesa-mut",
              "status": "available"
            },
            "rosetta": {
              "label": "Rosetta Node",
              "image": "gcr.io/o1labs-192920/mina-rosetta:3.4.0-0e8410e-bookworm-mesa-mut",
              "status": "available"
            }
          }
        },
        "bullseye": {
          "label": "Bullseye",
          "images": {
            "automode": {
              "label": "Daemon (automode)",
              "image": "gcr.io/o1labs-192920/mina-daemon-auto-hardfork:4.0.0-rc1-8a637fd-bullseye-mesa-mut",
              "status": "available"
            },
            "legacy": {
              "label": "Daemon (legacy/manual)",
              "image": "gcr.io/o1labs-192920/mina-daemon:3.4.0-0e8410e-bullseye-mesa-mut",
              "status": "available"
            },
            "archive": {
              "label": "Archive node",
              "image": "gcr.io/o1labs-192920/mina-archive:3.4.0-0e8410e-bullseye-mesa-mut",
              "status": "available"
            },
            "rosetta": {
              "label": "Rosetta Node",
              "image": "gcr.io/o1labs-192920/mina-rosetta:3.4.0-0e8410e-bullseye-mesa-mut",
              "status": "available"
            }
          }
        },
        "focal": {
          "label": "Focal",
          "images": {
            "automode": {
              "label": "Daemon (automode)",
              "image": null,
              "status": "pending"
            },
            "legacy": {
              "label": "Daemon (legacy/manual)",
              "image": "gcr.io/o1labs-192920/mina-daemon:3.4.0-0e8410e-focal-mesa-mut",
              "status": "available"
            },
            "archive": {
              "label": "Archive node",
              "image": "gcr.io/o1labs-192920/mina-archive:3.4.0-0e8410e-focal-mesa-mut",
              "status": "available"
            },
            "rosetta": {
              "label": "Rosetta Node",
              "image": "gcr.io/o1labs-192920/mina-rosetta:3.4.0-0e8410e-focal-mesa-mut",
              "status": "available"
            }
          }
        },
        "jammy": {
          "label": "Jammy",
          "images": {
            "automode": {
              "label": "Daemon (automode)",
              "image": null,
              "status": "pending"
            },
            "legacy": {
              "label": "Daemon (legacy/manual)",
              "image": "gcr.io/o1labs-192920/mina-daemon:3.4.0-0e8410e-jammy-mesa-mut",
              "status": "available"
            },
            "archive": {
              "label": "Archive node",
              "image": "gcr.io/o1labs-192920/mina-archive:3.4.0-0e8410e-jammy-mesa-mut",
              "status": "available"
            },
            "rosetta": {
              "label": "Rosetta Node",
              "image": "gcr.io/o1labs-192920/mina-rosetta:3.4.0-0e8410e-jammy-mesa-mut",
              "status": "available"
            }
          }
        }
      },
      "genesisConfig": {
        "genesis": {
          "genesis_state_timestamp": "2026-05-28T20:00:00Z"
        },
        "ledger": {
          "add_genesis_winner": false,
          "s3_data_hash": "c26d9e43dfc1a0435b64e44dccfe31dc1b8b2efb46fc49aacdba6e8656f30e5f",
          "hash": "jxcCwMcYXnJ8JM3zFUY4sd9H5zGkQXQJEcgvhZbEzCM7RdbDTxi"
        },
        "epoch_data": {
          "staking": {
            "seed": "2vahsgRV5nDPmtgr2Xo2Uq2dkngfSgvg7d1TKqQbY3wUS2ZDxCC3",
            "s3_data_hash": "344bff5f314ba83b842dd5bc076f8be99986ce050a0a9e7c77865b0fe1a4ea24",
            "hash": "jy2zgmSQWeRgUNhndmeyPyjsEVXXf55izvkFYmdFP51dLbRRs1E"
          },
          "next": {
            "seed": "2vbH4D8B76WMYPRFgeuVvdWVhv6tAFoCJtg83yuJT1dud3QVSiZn",
            "s3_data_hash": "57d732e8e386919e571564290be3e5fae136faa305646085f53f7c533f37ec98",
            "hash": "jxsFVXHoseM7dWHAX1rpRPnGKML3WqaezJokKPLypLZF2Bh74Tj"
          }
        }
      },
      "stopSlot": 2680,
      "debians": {
        "repo": "packages.o1test.net",
        "component": "mut",
        "codename": "bullseye",
        "setupCmd": "echo 'deb [trusted=yes] http://packages.o1test.net bullseye mut' | sudo tee /etc/apt/sources.list.d/mina.list\nsudo apt-get update",
        "packages": {
          "automode": {
            "label": "Daemon (automode)",
            "name": "mina-mesa-mut-automode",
            "version": "4.0.0-rc1-8a637fd",
            "arch": "amd64",
            "status": "available"
          },
          "legacy": {
            "label": "Daemon (legacy/manual)",
            "name": "mina-mesa-mut",
            "version": "3.4.0-0e8410e",
            "arch": "amd64",
            "status": "available"
          },
          "archive": {
            "label": "Archive node",
            "name": "mina-archive-mesa-mut",
            "version": "3.4.0-0e8410e",
            "arch": "amd64",
            "status": "available"
          },
          "rosetta": {
            "label": "Rosetta Node",
            "name": "mina-rosetta-mesa-mut",
            "version": "3.4.0-0e8410e",
            "arch": "amd64",
            "status": "available"
          }
        }
      }
    },
    "postFork": {
      "label": "Post-Fork Artifacts (Mesa)",
      "description": "Published after the fork. Install the Mesa release to join the new chain.",
      "imagesByCodename": {
        "noble": {
          "label": "Noble",
          "images": {
            "daemon": { "label": "Mesa daemon", "image": null, "status": "pending" },
            "archive": { "label": "Mesa archive", "image": null, "status": "pending" },
            "rosetta": { "label": "Mesa Rosetta", "image": null, "status": "pending" }
          }
        },
        "bookworm": {
          "label": "Bookworm",
          "images": {
            "daemon": { "label": "Mesa daemon", "image": null, "status": "pending" },
            "archive": { "label": "Mesa archive", "image": null, "status": "pending" },
            "rosetta": { "label": "Mesa Rosetta", "image": null, "status": "pending" }
          }
        },
        "bullseye": {
          "label": "Bullseye",
          "images": {
            "daemon": { "label": "Mesa daemon", "image": null, "status": "pending" },
            "archive": { "label": "Mesa archive", "image": null, "status": "pending" },
            "rosetta": { "label": "Mesa Rosetta", "image": null, "status": "pending" }
          }
        },
        "focal": {
          "label": "Focal",
          "images": {
            "daemon": { "label": "Mesa daemon", "image": null, "status": "pending" },
            "archive": { "label": "Mesa archive", "image": null, "status": "pending" },
            "rosetta": { "label": "Mesa Rosetta", "image": null, "status": "pending" }
          }
        },
        "jammy": {
          "label": "Jammy",
          "images": {
            "daemon": { "label": "Mesa daemon", "image": null, "status": "pending" },
            "archive": { "label": "Mesa archive", "image": null, "status": "pending" },
            "rosetta": { "label": "Mesa Rosetta", "image": null, "status": "pending" }
          }
        }
      },
      "configJsonGzUrl": null,
      "archiveDumpUrl": null,
      "forkConfig": null,
      "debians": {
        "repo": "packages.o1test.net",
        "component": "mut",
        "codename": "bullseye",
        "packages": {
          "daemon": {
            "label": "Mesa daemon",
            "name": "mina-mesa-mut",
            "version": null,
            "arch": "amd64",
            "status": "pending"
          },
          "archive": {
            "label": "Mesa archive",
            "name": "mina-archive-mesa-mut",
            "version": null,
            "arch": "amd64",
            "status": "pending"
          },
          "rosetta": {
            "label": "Mesa Rosetta",
            "name": "mina-rosetta-mesa-mut",
            "version": null,
            "arch": "amd64",
            "status": "pending"
          }
        }
      }
    },
    "static": {
      "explorer": {
        "label": "Block Explorer",
        "url": "https://o1-labs.github.io/mina-explorer/#/?network=trailblazer-mut",
        "note": "Select trailblazer-mut network"
      },
      "peerList": {
        "label": "Peer list",
        "url": "https://storage.googleapis.com/o1labs-gitops-infrastructure/mina-mesa-mut/mina-mesa-mut-peer-list-url.txt"
      },
      "genesisConfig": {
        "label": "Genesis config (runtime_config.json)",
        "url": "https://storage.googleapis.com/o1labs-gitops-infrastructure/mina-mesa-mut/runtime_config.json"
      },
      "precomputedBlocks": {
        "label": "Precomputed blocks",
        "url": "https://storage.googleapis.com/mesa-mut-precomputed-blocks/mina-mesa-mut",
        "copyUrl": "https://storage.googleapis.com/mesa-mut-precomputed-blocks/mina-mesa-mut"
      },
      "stateDump": {
        "label": "State dump",
        "url": "https://storage.googleapis.com/o1labs-gitops-infrastructure/mina-mesa-mut-1/mina-mesa-mut",
        "copyUrl": "https://storage.googleapis.com/o1labs-gitops-infrastructure/mina-mesa-mut-1/mina-mesa-mut"
      },
      "archiveDumps": {
        "label": "Archive DB dumps",
        "url": "https://storage.googleapis.com/mina-archive-dumps/mina-mesa-mut",
        "pattern": "mina-mesa-mut-1-archive-dump-*.sql.tar.gz",
        "copyUrl": "https://storage.googleapis.com/mina-archive-dumps/mina-mesa-mut"
      },
      "docs": {
        "label": "Mesa Upgrade Docs",
        "url": "{{docsBaseUrl}}{{docs.mesa}}"
      }
    }
  },
  "endpoints": {
    "label": "Endpoints",
    "description": "Live endpoints you can use against the trailblazer-mut network.",
    "items": [
      { "label": "Explorer", "url": "https://o1-labs.github.io/mina-explorer/#/?network=trailblazer-mut", "note": "Trailblazer MUT block explorer" },
      { "label": "Mesa Trail gql", "url": "https://plain-1-graphql.mesa-mut.minaprotocol.com/graphql", "note": "Mina node GraphQL endpoint; also used for Auro" },
      { "label": "Archive Node API", "url": "https://archive-node-api.mesa-mut.minaprotocol.com/", "note": "Archive node query endpoint" }
    ]
  },
  "milestones": [
    {
      "id": "network-live",
      "name": "Network live",
      "step": 1,
      "summary": "Pre-fork network starts at genesis timestamp. Operators connect, sync, and verify their setup.",
      "status": "done",
      "date": "2026-05-28T20:00:00Z",
      "phase": "pre-upgrade",
      "detail": {
        "description": "The pre-fork network starts at the genesis timestamp. Node operators can connect and verify their infrastructure.",
        "whatItMeans": [
          "Operators can test Docker images and Debian packages against real builds",
          "Archive upgrade script can be tested on a live database"
        ],
        "links": [
          {
            "label": "Preflight Network docs",
            "url": "{{docsBaseUrl}}{{docs.preflight}}"
          }
        ]
      }
    },
    {
      "id": "stop-slot-release",
      "name": "Stop-slot release published",
      "step": 2,
      "summary": "Release containing stop-slot logic is published. All operators must install before the stop-transaction-slot.",
      "status": "done",
      "date": "2026-05-28T20:00:00Z",
      "phase": "pre-upgrade",
      "detail": {
        "description": "The stop-slot release contains the halt logic. All node operators must install before the fork.",
        "whatItMeans": [
          "All operators must upgrade to this release before the stop-transaction-slot",
          "Automode users: this release bundles both pre-fork and post-fork binaries"
        ],
        "links": [
          {
            "label": "Requirements",
            "url": "{{docsBaseUrl}}{{docs.requirements}}"
          },
          {
            "label": "Upgrade Modes",
            "url": "{{docsBaseUrl}}{{docs.upgradeModes}}"
          }
        ]
      }
    },
    {
      "id": "stop-tx-slot",
      "name": "Stop-transaction-slot reached",
      "step": 3,
      "summary": "Network stops accepting user transactions. Block production continues with empty blocks for ~5 hours.",
      "status": "pending",
      "date": "2026-06-03T10:00:00Z",
      "phase": "state-finalization",
      "detail": {
        "description": "At the predefined global slot, the network stops accepting new transactions. Empty blocks produced for ~100 slots.",
        "whatItMeans": [
          "Block producers: keep your node running",
          "Archive operators: keep archive running to capture all finalized blocks",
          "Chain is alive but idle"
        ],
        "links": [
          {
            "label": "State Finalization details",
            "url": "{{docsBaseUrl}}{{docs.stateFinalization}}"
          }
        ]
      }
    },
    {
      "id": "stop-net-slot",
      "name": "Network halts",
      "step": 4,
      "summary": "Block production stops entirely. Chain frozen, state exported for Mesa genesis.",
      "status": "pending",
      "date": "2026-06-03T15:00:00Z",
      "phase": "upgrade",
      "detail": {
        "description": "Block production halts entirely at the stop-network-slot. No blocks produced from this point. The final state is used to build the Mesa release.",
        "whatItMeans": [
          "No blocks produced at all from this point",
          "Automode nodes detect the halt automatically",
          "State export begins for Mesa genesis"
        ],
        "links": [
          {
            "label": "Upgrade phase details",
            "url": "{{docsBaseUrl}}{{docs.upgrade}}"
          }
        ]
      }
    },
    {
      "id": "mesa-release",
      "name": "Mesa release published",
      "step": 5,
      "summary": "Mesa packages and images released, automode transitions at autoHardForkDelta (slot 2840) — same moment as Mesa genesis.",
      "status": "pending",
      "date": "2026-06-03T18:00:00Z",
      "phase": "upgrade",
      "detail": {
        "description": "The Mesa release is published. Docker images, Debian packages, and archive dumps become available. Mesa genesis has not been reached yet.",
        "whatItMeans": [
          "Mesa artifacts deployed but genesis has not been reached yet",
          "Automode nodes: dispatcher will activate at genesis time",
          "Manual nodes: install Mesa release, wait for genesis"
        ],
        "links": [
          {
            "label": "Upgrade steps",
            "url": "{{docsBaseUrl}}{{docs.upgrade}}"
          }
        ]
      }
    },
    {
      "id": "genesis",
      "name": "Block production resumes on Mesa",
      "step": 6,
      "summary": "First Mesa block is produced at the genesis timestamp. The upgraded network is now live.",
      "status": "pending",
      "date": "2026-06-03T18:00:00Z",
      "phase": "post-upgrade",
      "detail": {
        "description": "The first Mesa block is produced. The upgraded network is now live.",
        "whatItMeans": [
          "Block producers: verify sync status and Chain ID",
          "SNARK workers: reconnect to upgraded coordinator",
          "Mesa network is live"
        ],
        "links": [
          {
            "label": "Post-Upgrade verification",
            "url": "{{docsBaseUrl}}{{docs.postUpgrade}}"
          }
        ]
      }
    },
    {
      "id": "post-upgrade-validation",
      "name": "Post-upgrade validation",
      "step": 7,
      "summary": "Block production rate, archive integrity and chain ID verified. Mesa is stable.",
      "status": "pending",
      "date": "2026-06-03T20:00:00Z",
      "phase": "post-upgrade",
      "detail": {
        "description": "Validate that the Mesa network is operating correctly. Block production rate, archive integrity, and chain ID are all verified.",
        "whatItMeans": [
          "Block production rate and finalization confirmed healthy",
          "Archive nodes verified for data integrity across the fork block",
          "Exchanges may begin re-enabling deposits and withdrawals"
        ],
        "links": [
          {
            "label": "Archive Toolbox",
            "url": "{{docsBaseUrl}}{{docs.archiveToolbox}}"
          }
        ]
      }
    },
    {
      "id": "ongoing-validation",
      "name": "Ongoing network validation",
      "step": 8,
      "summary": "Continuous monitoring of the Mesa chain. Operators report on stability, archive consistency, and explorer parity.",
      "status": "pending",
      "date": null,
      "phase": "post-upgrade",
      "detail": {
        "description": "After the upgrade is confirmed successful, the protocol team continues to monitor block production, peer health, and archive consistency for several epochs.",
        "whatItMeans": [
          "Block producers: continue reporting any sync or chain ID anomalies",
          "Archive operators: long-running consistency checks against the public dumps",
          "No additional operator action required if the chain remains healthy"
        ],
        "links": []
      }
    }
  ],
  "announcements": [
    {
      "date": "2026-05-28",
      "text": "Mesa Upgrade Test (MUT) network <code>trailblazer-mut</code> is live. Initial pre-fork build <code>3.4.0-0e8410e</code> (automode <code>4.0.0-rc1-8a637fd</code>). Mesa genesis Jun 3, 18:00 UTC."
    }
  ]
}
