Enforce reorg-aware, idempotent indexing with stable event identity keys, replay safety, and clear optimistic vs confirmed consistency tiers. Use when touching DB writes or replay logic.
Installation
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Enforce reorg-aware, idempotent indexing with stable event identity keys, replay safety, and clear optimistic vs confirmed consistency tiers. Use when touching DB writes or replay logic.
Indexer Reorg + Idempotency
When to use
Adding/changing event handlers, DB schema, or replay/re-sync behavior.
Any modification to how you store logs, claims, or day/month aggregates.
Goal (Definition of Done)
✅ Every handler is safe to replay (idempotent).
✅ Reorgs do not leave “ghost” rows or double-counts.
✅ You can rebuild projections from raw events.
Canonical identity keys
Use unique keys:
(txHash, logIndex) as primary event identity (preferred)
or (blockNumber, logIndex) only if txHash is unavailable (rare)
Store raw logs in event_raw (or equivalent) to support rebuilds.
Reorg handling
On reorg, revert projections derived from orphaned blocks.