Loading
Draft: 馃毇 Make observer deck and errata processing durable
Summary
This MR extracts the shared observer durability machinery required by !4931 (merged) into a separate prerequisite change.
It ensures observer state is persisted before scanner progress is acknowledged, and prevents in-memory deck or errata state from advancing ahead of durable storage.
Changes
- Add persistence acknowledgements to observed transaction deliveries.
- Return persistence failures from observation processing instead of acknowledging them silently.
- Persist deck mutations before applying them in memory.
- Add an optional
OnObservedTxInDurablecallback for chain clients that must durably record committed observations before deck entries are removed. - Add a durable errata outbox with stable delivery identifiers.
- Track local errata cleanup and THORChain commitment independently.
- Retain and retry errata records until both stages are complete.
- Apply errata deck cleanup atomically with its durable state transition.
- Add coverage for storage failures, callback failures, duplicate deliveries, retries, recovery, and committed-record pruning.
Scope
This MR contains only shared observer, deck, and errata durability infrastructure. It does not introduce the XMR certificate protocol or other XMR-specific spent-output behavior.
The XMR reliability MR should be rebased onto this prerequisite once it is merged. Companion changes provide the chain-specific durable callback and buffered persistence acknowledgement producers.