Production checklist
A PressChain integration is production-ready when it can explain its authority, survive infrastructure failure and recover without compromising user signing or protocol meaning. Use this checklist before treating a testnet prototype as launch-quality software.Network and deployment
- Verify the expected Chain ID at runtime.
- Load addresses from an approved environment-specific deployment manifest.
- Verify every ABI against the deployed contract version.
- Keep testnet and future mainnet configuration physically separate.
- Reject unknown networks for write actions.
- Record deployment start blocks for indexers.
Identity and authorization
- Use
window.presschainfor PressChain-native browser authorization. - Never ask the user to paste a private key or recovery phrase.
- Respond to account, chain and lock changes.
- Re-read role, bond and relationship state before signing.
- Distinguish platform roles from protocol role IDs.
- Keep outlet authority separate from generic protocol role.
Capsule publishing
- Use canonical
bytes32Capsule identifiers. - Normalize content before hashing.
- Build metadata with the active schema version.
- Verify durable source and media URIs.
- Hash canonical cover media where required.
- Track the publication transaction to a receipt.
- Read the resulting Capsule back from authoritative state.
- Preserve revision history instead of overwriting it.
Evidence
- Distinguish official, community and dispute paths.
- Verify evidence artifact hashes.
- Treat external content as untrusted input.
- Display submitter and relationship provenance.
- Handle inactive and finalized state explicitly.
- Prevent predictable duplicate vote attempts in the UI.
Economics
- Resolve fee class from current action policy.
- Resolve amount from the active network economics configuration.
- Keep bond, protocol fee, funded value and gas visually separate.
- Store token quantities as integer base units.
- Respect treasury floors and budget controls.
- Revalidate settlement eligibility.
RPC and transactions
- Set timeouts for RPC reads.
- Retry only safe operations with bounded backoff.
- Persist transaction hashes immediately after submission.
- Reconcile ambiguous timeouts before resubmitting.
- Decode domain reverts where possible.
- Monitor RPC error rate and latency.
Indexing
- Store block number and block hash with the cursor.
- Store transaction hash and log index with events.
- Make event application idempotent.
- Implement reorganization rollback.
- Reconcile important mutable state with contract reads.
- Monitor head lag, failed events and reconciliation mismatches.
- Keep enrichment fields separate from canonical fields.
API
- Do not assume planned routes exist.
- Honor API version and response contracts.
- Enforce authentication and scope for future protected surfaces.
- Keep current read-only boundaries read-only.
- Return structured errors that distinguish unavailable state from empty state.
External content
- Enforce fetch timeouts and size limits.
- Prevent access to internal network ranges from server-side fetchers.
- Use MIME allowlists for previews.
- Isolate PDF and document rendering.
- Cache verified artifacts by content hash when possible.
Observability
Monitor at minimum:- RPC availability and latency
- chain head height
- indexer head and lag
- API health
- transaction failure rate by action
- bounty engine evaluation and settlement failures
- PressKey authorization errors in the client
- external artifact verification failures
Recovery drills
Before launch, rehearse:- RPC outage
- indexer rebuild
- API state unavailable
- signer lock during a prepared action
- ambiguous transaction submission timeout
- duplicate event replay
- failed evidence artifact fetch
- economic action blocked by treasury policy
- contract or application pause procedure