Skip to content

Fix checkpoint publication and recovery boundaries - #44

Closed
GCdePaula wants to merge 12 commits into
feature/projection-egressfrom
fix/stack-40-review
Closed

GCdePaula wants to merge 12 commits into
feature/projection-egressfrom
fix/stack-40-review

Conversation

@GCdePaula

@GCdePaula GCdePaula commented Sep 19, 2026

Copy link
Copy Markdown
Collaborator

Closes the review fixes for stack #40, stacked on #43. Enforces the checkpoint and recovery boundaries needed to avoid publishing invalid finalized state, replaying already-accounted inputs, or deleting registered snapshots.

  • Refuse finalized snapshot/state exports and accepted /history receipts after persisted canonical divergence, including a matching batch followed by divergent acceptance in the same L1 block.
  • Require the trusted checkpoint block B to be at or before the fixed recovery stop C before replay or baseline publication. A lagging L1 view returns retryable exit 20. Document the exporter's pending-direct eligibility obligation: A < B alone is insufficient.
  • Treat missing or structurally corrupt referenced snapshot artifacts as terminal, including failures discovered during streaming; preserve operational I/O error classification.
  • Preserve registered snapshots across relative/absolute paths, symlinks, and mount aliases by comparing filesystem identities. Inspect every retained reference before deleting orphans.
  • Bound SDK snapshot response-header waits while allowing the body to outlive that timeout. Strengthen regressions for the strict recovery-prefix cutoff, checkpoint publication failures, crash leases, and cold-replica state; retain harness logs on CI failure.

Validation at 209a3b1:

  • macOS host suite: 760 passed, zero failed, one existing ignored doctest. Workspace check, strict Clippy, formatting, and Markdown links passed; the new firmlink regression fails against the old path comparison and passes with the fix.
  • Both push CI and PR CI completed successfully, including Rust, canonical guest, rollups E2E, and watchdog image checks. The PR run passed all 49 rollups scenarios; watchdog Lua reported 3 passed, 1 opt-in scenario skipped.

Detailed validation records the test scope and remaining application-specific recovery-export work. The earlier intermittent C-host WebSocket reset remains an open investigation; the added CI logs support diagnosing a recurrence.

@GCdePaula
GCdePaula added this pull request to stack #40 September 19, 2026 04:44
stack merge was automatically disabled September 21, 2026 12:48

Pull Request is not mergeable

stack merge was automatically disabled September 21, 2026 13:09

Pull Request is not mergeable

stack merge was automatically disabled September 21, 2026 13:09

Pull Request is not mergeable

stack merge was automatically disabled September 21, 2026 13:12

Pull Request is not mergeable

stack merge was automatically disabled September 21, 2026 13:13

Pull Request is not mergeable

stack merge was automatically disabled September 21, 2026 13:32

Pull Request is not mergeable

stack merge was automatically disabled September 21, 2026 13:34

Pull Request is not mergeable

stack merge was automatically disabled September 21, 2026 20:18

Pull Request is not mergeable

stack merge was automatically disabled September 22, 2026 13:30

Pull Request is not mergeable

stack merge was automatically disabled September 22, 2026 13:34

Pull Request is not mergeable

stack merge was automatically disabled September 22, 2026 14:58

Pull Request is not mergeable

@GCdePaula

Copy link
Copy Markdown
Collaborator Author

Superseded by #45.

@GCdePaula GCdePaula closed this Sep 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants