Recovery lab / browser sandbox

Break the connection.
Keep the outcome.

Run the same failure through three client strategies. This deterministic simulation uses the reference Agentic client with an in-memory service.

The service saves the ticket. The first response never reaches the client.

Results: Response lost after commitSame scenario · isolated service per strategy

Blind retry

BASELINE

Retries with a new request ID.

2tickets written
2 calls1 duplicate
Reported success
  1. 01Submit attempt 1 with a new request ID.
  2. 02The response was lost; preparing another attempt.
  3. 03Submit attempt 2 with a new request ID.
  4. 04Reported success from the HTTP response; no resource verification.

Idempotent retry

BASELINE

Retries with the same request ID.

1ticket written
2 calls0 duplicates
Reported success
  1. 01Submit attempt 1 with the same request ID.
  2. 02The response was lost; preparing another attempt.
  3. 03Submit attempt 2 with the same request ID.
  4. 04Reported success from the HTTP response; no resource verification.

Agentic profile

Reconciles and verifies the original action.

1ticket written
3 calls0 duplicates
Verified success
  1. 01Request identity and input saved before submission.
  2. 02Submitting the action once with the saved request ID.
  3. 03Submission response unavailable. The outcome is unknown.
  4. 04Checking the original request (1/3).
  5. 05Reading the resulting resource and checking its identity, input, and state.
  6. 06The original action was verified against the persisted resource.
Idempotency already prevents many duplicates. A well-implemented workflow can also verify outcomes. Agentic proposes a shared way to describe and test that behavior; this lab does not establish superiority over existing workflow tools.

Evidence from this simulated run. No real support ticket was created.

{
  "agentic": "0.1.0-draft",
  "request_id": "demo-request-0001",
  "action_id": "create-ticket",
  "origin": "https://support.example",
  "outcome": "succeeded",
  "observed_at": "2026-09-07T17:38:54.316Z",
  "resource_id": "T-0001",
  "reason": "The original action was verified against the persisted resource.",
  "evidence": {
    "url": "https://support.example/tickets/T-0001",
    "resource_id": "T-0001",
    "request_id": "demo-request-0001",
    "state": "open",
    "matched": [
      {
        "inputPointer": "/subject",
        "resourcePointer": "/subject"
      }
    ]
  }
}