Workflow Guard Planner

Converts 17 closed capability facts into a deterministic guard sequence, honest guarantee, recovery rule, and residual risks. It performs no external call, creates no coordination state, and explicitly abstains from ordinary one-time low-risk work.

Use when

  • A repeated, scheduled, parallel, quota-sensitive, or duplicate-sensitive external workflow needs a deterministic reliability plan.
  • An agent must select sidecar guards, verification, recovery, and the strongest honest guarantee from known capability facts.

Do not use when

  • The task is one ordinary low-risk read or write with no retry, concurrency, schedule, quota, freshness, or duplicate concern.
  • The request is simply to create one note or record now.
  • External payloads, credentials, URLs, records, or provider-specific execution are required.

Invocation contract

HTTP
/v1/tools/workflow-guard-planner
Version
1.0.0
Mode
lookup
Idempotency
not required
Retention
Capability enums are evaluated in memory. The planner accepts no payloads, credentials, URLs, or external record identifiers and retains no request state.
Tested with
17-field reliability contract v1, deterministic TypeScript/Python parity cases

Positive and negative examples

{
  "input": {
    "contract_version": "1",
    "operation_class": "create",
    "item_operation_class": null,
    "duplicate_harm": "material",
    "parallel_workers": 3,
    "scheduled": true,
    "retry_possible": true,
    "provider_idempotency": "none",
    "destination_search": "eventual",
    "stable_marker": true,
    "conditional_write": false,
    "read_after_write": true,
    "delivery_status": false,
    "compensation": "manual",
    "shared_rate_limit": false,
    "maximum_concurrency": null,
    "freshness_required": false
  },
  "output": {
    "valid": true,
    "decision": "sidecar",
    "decision_reason": "reliability-guard-required",
    "profile": "create-once",
    "additional_profiles": [
      "scheduled-run"
    ],
    "guarantee": "duplicate-resistant",
    "stages": [
      {
        "order": 1,
        "actor": "caller",
        "action": "derive_opaque_operation_identity"
      },
      {
        "order": 2,
        "actor": "agent-enhancer",
        "action": "acquire_run_lock",
        "candidate_tool": "penny-lock"
      },
      {
        "order": 3,
        "actor": "agent-enhancer",
        "action": "acquire_lock",
        "candidate_tool": "penny-lock"
      },
      {
        "order": 4,
        "actor": "external-plugin",
        "action": "search_stable_marker"
      },
      {
        "order": 5,
        "actor": "external-plugin",
        "action": "create"
      },
      {
        "order": 6,
        "actor": "external-plugin",
        "action": "read_after_write"
      },
      {
        "order": 7,
        "actor": "agent-enhancer",
        "action": "mark_seen_after_verification",
        "candidate_tool": "global-seen-stamp"
      },
      {
        "order": 8,
        "actor": "caller",
        "action": "report_outcome"
      }
    ],
    "timeout_recovery": "search_marker_then_bounded_recheck",
    "residual_risks": [
      "no_cross_plugin_transaction",
      "destination_search_is_eventually_consistent",
      "lock_has_bounded_ttl",
      "seen_stamp_is_advisory"
    ],
    "unsupported_claims": [
      "sidecar_state_proves_external_completion",
      "cross_plugin_exactly_once"
    ]
  },
  "negative": [
    {
      "scenario": "The task is one ordinary low-risk read or write with no retry, concurrency, schedule, quota, freshness, or duplicate concern.",
      "expected_error": "INVALID_INPUT",
      "charged": false
    }
  ]
}

Deterministic errors

CodeRetryChargedRecovery
INVALID_INPUTfalsefalseCorrect the request to match input_schema.
TOOL_PAUSEDtruefalseWait for the operator to resume the tool.
RATE_LIMITEDtruefalseRetry after the response Retry-After interval.
DEPENDENCY_UNAVAILABLEtruefalseRetry with the same idempotency identity.

Full machine manifest

The HTTP, OpenAPI, MCP, llms.txt, and ARD descriptions are generated from this same registry record.

Open JSON manifest →