Go, conditional go, no go
Written before the decision has to be made, so that the answer is read rather than argued.
- The twelve conditions that all have to hold before anyone may open the window.
- What separates a conditional go from wishful thinking: a named mitigation with an owner and a deadline.
- The thirteen no go conditions, any single one of which stops the launch without a vote.
- That two named approvers are needed to say go, and one person is enough to say no go.
- Why waiting costs a week and opening on a broken parser costs every artifact minted before anyone noticed.
The window opens once. There is no way to reopen it, extend it, or take it back. A decision that permanent should not be made by whoever is most tired at the end of a long week.
Go
All of these are true. If they are, open the window. They are not weighted and they do not trade against each other, so a gap in any one of them stops the launch unless that exact gap is named in the conditional go table below.
- Golden vectors pass on the exact build that will run.
- Two independent implementations produce identical state roots across the full rehearsal range.
- Both indexers are synced to the mainnet tip and readiness behaves correctly.
- The mainnet deployment record exists, names two approvers, and both have approved.
spec_sha256published, and matching whatstatusreports on both indexers.- A full mint has been completed on signet by someone who did not build the tooling, following only the published walkthrough.
- Every deliberate failure rehearsal produced the correct reason code and a clear explanation in the product.
- A restore drill has been completed, with the measured recovery time written down.
- Every statistic in the product comes from a live call and has an honest empty state.
- The three limits appear in the product itself.
- Alerts route to a named on call person for the whole window.
- Documentation is published, links resolve, and the byte examples have been recomputed.
Conditional go
Open the window, with a specific mitigation named, owned, and published.
| Condition | Mitigation |
|---|---|
| Only one indexer is production ready, and the second is behind but agreeing so far | Publish that cross verification is running against a non production instance, and finish the
second before h_open + 144 |
| The planner is not finished | Ship without it. Minting is possible with raw transaction construction, and the walkthrough covers it. Do not ship a planner that has not been rehearsed. |
| A render pack is incomplete | Ship without renders. They are a view, not the state. |
| A cosmetic or copy defect in a non critical surface | Fix it in the first week, and list it publicly as known |
| Metrics history is thin because the stack is new | Watch manually for the first 144 blocks and set thresholds from observed behaviour |
| Documentation has a gap in an advanced area, such as the canonical encoding | Say so on the page, point at the golden vectors as the authority, and record it as incomplete |
A conditional go is only conditional if the mitigation has an owner and a deadline. Without both, it is a no go wearing optimism.
No go
Any one of these stops the launch. Not a discussion, not a vote.
- Golden vectors fail, on any case.
- Two implementations disagree on any state root, anywhere, unresolved.
- The deployment record is missing, unapproved, or has fewer than two approvers.
- Window heights have not been checked arithmetically against 4032 and 4032.
- The indexer serves data while unsynced, or readiness reports ready when it is not.
- Reorg rollback and replay do not reproduce the same state root in testing.
- Any surface shows a number that did not come from a live call.
- Any surface simulates a successful mint, or shows a countdown that is not a real block count.
- The mint flow can produce a transaction that loses a user's coins, in any tested path.
- A rehearsal mint failed for a reason nobody can explain.
- No restore drill has been completed.
- Nobody is on call.
- The honest limits are not in the product.
Who decides
- Go requires two approvers, the same two named on the deployment record.
- Any single person on the team can call a no go, and it stands until the condition is resolved.
- A conditional go requires the mitigation owner to accept it in writing.
- The decision, the date, the block height, and the names are recorded.
Delaying is cheap
Nothing is lost by opening the window later. There is no competitor race, no expiring opportunity, and no promised date to break, because the announcement publishes heights and those heights can be republished. The public Firstlight Seals page declines to name an opening height for the same reason. The only irreversible mistake available is opening a window that should not have opened.
Do not open. The cost of waiting a week is a week. The cost of opening on a broken parser is every artifact minted before it was found.