Anchorage API reference
    Preparing search index...

    Type Alias RunRouterStartIdempotency

    RunRouterStartIdempotency:
        | "none"
        | {
            executionFence: ExecutionFenceWiring;
            live: (workflowId: string, runId: string) => Promise<boolean>;
            store: Exclude<StartIdempotencyWiring, "none">;
        }

    The router's idempotent-start wiring: either the typed opt-out, or a store paired with the liveness probe its replay decision depends on.

    'none' is written out as its own arm rather than allowed as a missing store field, so a host declares the absence instead of arriving at it.

    Type Declaration

    • "none"
    • {
          executionFence: ExecutionFenceWiring;
          live: (workflowId: string, runId: string) => Promise<boolean>;
          store: Exclude<StartIdempotencyWiring, "none">;
      }
      • executionFence: ExecutionFenceWiring

        The deployment execution fence, so a REPLAY can re-assert a proof-only fence's binding to the run this key already made.

        Named here rather than looked up, and required rather than optional, because it must be the fence over the SAME database the reservation lives in — a second store over a different binding would silently re-bind nothing. 'none' is the honest answer for a host with no fence.

        Named executionFence, like every other fence-carrying option in the package, so the wiring census can see it: a leaf that spelled the field differently would be one the census could not name, and an uncensused fence field is exactly the kind that quietly becomes optional.

      • live: (workflowId: string, runId: string) => Promise<boolean>

        Is a start for this run executing right now? Hosts wire createDoRunTopology(...).startLiveness; an in-process host wires its runtime's own isRunActive.

      • store: Exclude<StartIdempotencyWiring, "none">