magicblock-labs / magicblock-labs/magicblock-validator

Persist and recover committor intent execution stages

Open
#1,702 0 comments 0 reactions 1 assignee View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Rust
Stars
58
Forks
58
Avg merge
22h 1m
Merged PRs (30d)
53

Description

## Goal

A restart shouldn't mean losing pending intents or repeating transactions that already succeeded. Record execution progress in outbox accounts so the committor can pick up where it left off.

## Why

The tricky part is knowing what happened before the restart. An intent might not have started, a transaction might still be pending, or the commit might have succeeded while finalization is unfinished.

A confirmation timeout doesn't tell us which happened. Before retrying, check the previous transaction's status so we don't submit the same work twice.

## Scope

Replace the committor persister with outbox-backed recovery, following [MIMD-0025](https://github.com/magicblock-labs/magicblock-validator/discussions/1246) and [MIMD-0027](https://github.com/magicblock-labs/magicblock-validator/discussions/1416).

Keep enough information to resume each stage safely:

- Record accepted intents and execution-stage changes, including pending signatures and blockhashes.
- Recover both single-stage and two-stage execution, checking pending transactions before replacing an attempt.
- Validate stage transitions. If only finalization needs retrying, retain the confirmed commit signature.
- Clean up completed intents so recovery doesn't pick them up again.

Before rollout, we still need to decide how to recover work stored by the old persister. Shutdown coordination is tracked separately in #1262.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.