Skip to content

Make identical external-action settlement retries idempotent #707

Description

@flyingrobots

Outcome

An adapter may resubmit the exact previously admitted external-action settlement after an acknowledgement loss. Echo returns the original admitted settlement without appending history or granting effect authority. A different settlement for the same request and attempt obstructs as conflicting.

Evidence

cargo test -p warp-core --test external_action_protocol_tests duplicate_settlement_is_a_recovery_obstruction -- --exact passes on c684ddbb6ebb83edb4658ae590192e1eee83721e because the current protocol classifies an identical duplicate as DuplicateSettlement.

ExternalActionCoordinatorV1::claim_grant correctly refuses to recreate adapter execution authority after settlement. The missing surface is a no-effect reconciliation path for a retained settlement candidate.

Acceptance

  • exact retries return the original AdmittedExternalActionSettlementV1 and original settlement commit digest;
  • exact retries append no WAL frame or commit;
  • differing request, attempt, adapter, kind, schema, basis, canonical result, or evidence obstructs as ConflictingSettlement;
  • retry reconciliation cannot return a claim grant or execute an adapter;
  • recovered settled history supports the same exact-retry result after restart;
  • malformed candidates fail existing schema and digest validation before comparison;
  • fixed-seed mutation cases and bounded repeated retries preserve one settlement commit;
  • the provider/compiler seam and application vocabulary remain unchanged.

Consumer

Blocks flyingrobots/hello-echo#10.

Metadata

Metadata

Assignees

No one assigned

    Labels

    lane:asapMethod lane asap.legend:testMethod legend test.priority:highMethod priority high.roadmap-a1Roadmap A.1: bounded Hello external effectsruntimeRuntime coretype:enhancementMethod work type enhancement.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions