Skip to content

Prove served durable completion, projection and recovery hand-off (C2c2e E4) - #265

Merged
shoedog merged 1 commit into
mainfrom
feat/served-recovery-handoff-c2c2e4
Nov 1, 2026
Merged

shoedog merged 1 commit into
mainfrom
feat/served-recovery-handoff-c2c2e4

Conversation

@shoedog

@shoedog shoedog commented Oct 31, 2026

Copy link
Copy Markdown
Owner

Summary

Lane G C2c2e sub-slice E4 (order E2→E3→E4→E1→E5→E6), test-only: served-produced candidate records feed the existing boot/detached/batch recovery, refusal, projection and publication paths with no new recovery format. Production A2A/MCP selection stays disabled.

  • Settled A rejection before restart → B resumes once under a new linked attempt; completed B is never reprompted; downstream sees only B's committed text (full boot recovery + detached/batch parity).
  • Missing, preparing, polled/unknown, corrupt, drifted and lineage-conflicting served records → zero provider effects; durable refusal projects Interrupted as failed; a late refusal preserves an existing terminal.
  • One logical node completion on live delivery and reattachment, truthful reached-provider evidence, exact locators, one terminal output; checkpoint replay adds no candidate completion; primary publication failure blocks downstream.
  • Folded E3 smells: per-session cleanup-exactly-once, served cancel/cleanup-error precedence (now with per-variant expected cause), every boundary handshake under a named 15 s timeout, reservation-fault test uses the real accounting schema.

Verification

  • Implementer (Claude Code Sonnet 5.5, container): workspace 6,367 passed / 0 failed / 13 ignored (CARGO_INCREMENTAL=0, 4 test threads); fmt, clippy -D warnings, hygiene clean; wire SHA equals base.
  • The bridge verify step failed 2 tests in binaries this PR does not touch (accounting_production::direct_governance::r3_cold_successor_sequence_is_safe, accounting_compatibility::external_store_beneath_regular_file_retains_child_failure_and_continues) under heavy host load; both pass on the host at load 1.2.
  • Host: fmt, clippy (-p a2a-bridge --tests -D warnings) clean; fallback_workflow 159/159; uncapped_order_and_wire_control byte-identical to base.
  • Review: gpt-6.1-sol + Opus 5.5 (Opus synth) APPROVE round 1. Its one material finding (the owner-conflict case failed on id decode, not lineage) was fixed in a targeted test-only round with a valid minted id plus a restore-owner control; orchestrator diff check.

Deferred (SMELL)

  • Reattachment is checked via store/journal, not A2A resubscribe → add an end-to-end resubscribe case in E5.
  • Interrupted-as-failed test feeds a fixed refusal message rather than projecting a real recovery refusal through a hub.

🤖 Generated with Claude Code

https://claude.ai/code/session_017izEynabPeSUBT573AtvaZ

…c2e4)

Tests only; no production source change was needed. Records written by the real
served chain runner (refused terminal publication models the crash) are fed
through the coordinator's full boot recovery and the batch consumer:

- a settled rejection resumes B once under a new linked attempt, completed B is
  never re-prompted/re-resolved, and downstream sees only B's committed text;
- missing, preparing, prepared, fenced, polled, corrupt, drifted and
  lineage-conflicting evidence refuses with no provider or accounting effects;
- a refusal that cannot be persisted invents no terminal, and a late refusal
  preserves an existing terminal task;
- live delivery and the durable reattach evidence show one node completion with
  exact locators and one terminal output, matching the ordinary route's
  provider-reach evidence; Interrupted projects as failed; a primary publication
  failure prevents downstream execution.

Also folds the E3 review smells: served cancellation asserts per-session cleanup
exactly once and adds cancel-error/cleanup-error variants that keep ordinary
precedence; every boundary handshake sits under one named timeout; the
reservation-fault test lets the accounting store create its own schema and adds
only the fault trigger.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>


Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017izEynabPeSUBT573AtvaZ
@shoedog
shoedog merged commit 7ed2030 into main Nov 1, 2026
6 checks passed
@shoedog
shoedog deleted the feat/served-recovery-handoff-c2c2e4 branch November 1, 2026 22:30
@github-actions github-actions Bot locked and limited conversation to collaborators Nov 1, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant