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 OnObservedTxInDurable callback 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.

Merge request reports

Loading
Loading