Implementation Checklist
Build Checklist
Use this before wiring a new seed module, birth hook, game, route, or partner integration into a soToken collection.
All integrations must preserve the core soToken invariant: active object support is bounded by the configured interval of token balance and the launch’s LOA/BOA policy.
Seed module checklist
- Implements the expected seed module interface for the target soToken.
- Returns a nonzero seed when possible.
- Returns a stable
birthPathlabel that indexers can group. - Uses
contextas typed data, not ambiguous string parsing. - Treats the caller as the ledger, not the end user.
- Does not depend on off-chain servers for final seed truth.
- Has tests for repeated claims, empty context, malformed context, and zero-seed fallback.
Birth hook checklist
- Verifies the real recipient.
- Verifies the external action or game condition.
- Calls
claimFor(owner, amount, context)on the intended ledger. - Does not expose arbitrary public minting.
- Does not claim more than the verified action allows.
- Emits source events with enough data for the app to explain the birth.
- Has an admin or creator-controlled revoke path.
- Handles replay protection if signatures or off-chain attestations are used.
App and docs checklist
- Show the interval, maximum object supply, renderer, and seed module.
- Label creator-provided hooks that Mirage has not reviewed.
- Do not call claims "mints". Users are claiming a balance-backed object.
- Do not describe soToken objects as standard ERC-721 NFTs.
Test checklist
- Under-supported wallets cannot claim.
- Creator-approved hook can claim for a supported wallet.
- Unapproved hook cannot call
claimFor. - Revoked hook stops future hook claims.
- Hook claims and direct claims produce consistent birth records.
- Native object transfers move the supporting token interval with the object when object transfers are enabled.