Contracts without acceptance become infinite warranty
Contract projects lose shared language between “code pushed” and “mainnet safe.” A delivery checklist turns scope, tests, audit, key ceremony, upgrade rights, and monitoring into checkboxes. We lock threat model and immutability boundaries in discovery before feature lists. Below is a shared Definition of Done. Fold this into KSX Studio discover→design→build→launch: named owner, Definition of Done, staging proof, and rollback so verbal alignment does not drift.
Scope: chain, standards, non-negotiables
Document target chain, standards, upgradeability, pause, admin roles. Marketing copy is not a permissions matrix. Fold this into KSX discover→design→build→launch checks on staging so verbal alignment does not drop the requirement. Fold this into KSX Studio discover→design→build→launch: named owner, Definition of Done, staging proof, and rollback so verbal alignment does not drift.
Tests: unit, fork, invariants
Cover happy and failure paths; fork tests for external deps; invariants against economic attacks. Coverage % is not a scenario list. Fold this into KSX discover→design→build→launch checks on staging so verbal alignment does not drop the requirement. Fold this into KSX Studio discover→design→build→launch: named owner, Definition of Done, staging proof, and rollback so verbal alignment does not drift.
Audit and fix loop
Define audit scope, known issues, retest proof. Schedule real audit windows—not a night-before glance. Fold this into KSX discover→design→build→launch checks on staging so verbal alignment does not drop the requirement. Fold this into KSX Studio discover→design→build→launch: named owner, Definition of Done, staging proof, and rollback so verbal alignment does not drift.
Keys and multisig ceremony
Document deploy keys, admins, treasury signers, backups, rotation. No personal hot wallets as prod admin. Rehearse a dry-run deploy. Fold this into KSX discover→design→build→launch checks on staging so verbal alignment does not drop the requirement. Fold this into KSX Studio discover→design→build→launch: named owner, Definition of Done, staging proof, and rollback so verbal alignment does not drift.
Upgrades and emergency pause
If upgradeable: proxy pattern, timelock, alerts. If not: migration plan and user comms. Publish pause rights and unpause conditions. Fold this into KSX discover→design→build→launch checks on staging so verbal alignment does not drop the requirement. Fold this into KSX Studio discover→design→build→launch: named owner, Definition of Done, staging proof, and rollback so verbal alignment does not drift.
Pin frontend to contract versions
Version-control ABI and addresses; verify on explorers; ban stale address caches. Show contract version tags in the dApp. Fold this into KSX discover→design→build→launch checks on staging so verbal alignment does not drop the requirement. Fold this into KSX Studio discover→design→build→launch: named owner, Definition of Done, staging proof, and rollback so verbal alignment does not drift.
72-hour post-mainnet watch
Watch anomalous events, fees, pause drills. Name incident contacts. Acceptance includes docs, runbooks, knowledge transfer—not just repo access. Fold this into KSX discover→design→build→launch checks on staging so verbal alignment does not drop the requirement. Fold this into KSX Studio discover→design→build→launch: named owner, Definition of Done, staging proof, and rollback so verbal alignment does not drift.
Checklist
- 1Signed permissions matrix + threat model
- 2Scenario list + fork results archived
- 3Audit report + retest records
- 4Multisig/key ceremony confirmation
- 5Monitoring, runbook, 72h on-call roster
Key takeaways
- Done means security and ops—not features alone.
- Key ceremony and upgrade policy align before coding.
- Address pinning and mainnet watch are part of delivery.
FAQ
- Audit small contracts?
- At least peer review + full tests; external audit when funds or upgrade rights exist.
- Client wants same-day mainnet?
- Refuse to skip audit/keys. Offer gated testnet or allowlisted mainnet first.
- Should agency hold admin keys?
- Co-manage briefly, then transfer to client multisig. Contract the handoff date and liability split.