string Value { get; }
Source
Gets the opaque manifest identifier.
Identifies one immutable, one-Flow retention manifest.
DurableRetentionManifestId New()
Creates a cryptographically random manifest identifier.
string Value { get; }
Source
Gets the opaque manifest identifier.
Identifies the versioned canonical bytes represented by a SHA-256 digest.
This value identifies source correspondence only. It never claims that an application-owned external archive is durable, available, encrypted, or legally sufficient.
string SchemaId { get; }
Source
Gets the versioned canonicalization schema.
string Sha256 { get; }
Source
Gets the lowercase SHA-256 digest.
Requests a bounded, non-mutating assessment of one Flow retention closure.
Assessment never archives, changes state, or deletes. It applies no universal age threshold: applications own the policy that decides which terminal Flow to assess.
DurableScopeId ScopeId { get; }
Source
Gets the application-authorized owner scope.
DurableFlowInstanceId FlowInstanceId { get; }
Source
Gets the one Flow candidate.
int MaximumClosureItems { get; }
Source
Gets the maximum inventory count, from one through 10,000.
int MaximumArchiveBytes { get; }
Source
Gets the maximum canonical archive size, from one byte through 64 MiB.
Reports a bounded Flow retention decision and its reproducible source facts.
DurableScopeId ScopeId { get; }
Source
Gets the assessed scope.
DurableFlowInstanceId FlowInstanceId { get; }
Source
Gets the assessed Flow.
DurableRetentionAssessmentStatus Status { get; }
Source
Gets whether the provider proved safety, found a blocker, or could not prove the closure.
DurableRetentionAssessmentReason Reason { get; }
Source
Gets the privacy-safe deterministic explanation.
DurableRetentionDigest? ClosureDigest { get; }
Source
Gets the canonical closure digest when the source could be inventoried.
DurableRetentionDigest? SourceWatermark { get; }
Source
Gets the current source watermark when the source could be inventoried.
int ClosureItemCount { get; }
Source
Gets the canonical inventory item count.
long ArchiveByteCount { get; }
Source
Gets the exact canonical archive byte count when available.
Reports immutable manifest facts together with its current lifecycle projection.
DurableRetentionManifestId ManifestId { get; }
Source
Gets the immutable manifest identity.
DurableScopeId ScopeId { get; }
Source
Gets the owning scope.
DurableFlowInstanceId FlowInstanceId { get; }
Source
Gets the single Flow selected by this manifest.
DurableRetentionDigest ClosureDigest { get; }
Source
Gets the immutable canonical closure digest.
DurableRetentionDigest SourceWatermark { get; }
Source
Gets the immutable source watermark recorded when the manifest was created.
int ClosureItemCount { get; }
Source
Gets the frozen inventory count.
long ArchiveByteCount { get; }
Source
Gets the frozen canonical archive size.
DurableRetentionManifestState State { get; }
Source
Gets the current event-derived lifecycle state.
long LifecycleSequence { get; }
Source
Gets the compare-and-swap sequence for the projected lifecycle state.
DateTimeOffset CreatedAtUtc { get; }
Source
Gets when immutable manifest facts were recorded.
Requests creation of an immutable manifest from a successful bounded assessment.
DurableCommandId CommandId { get; }
Source
Gets the idempotent command identity.
DurableRetentionAssessment Assessment { get; }
Source
Gets the successful assessment whose source facts must still match.
DurableCommandFingerprint Fingerprint { get; }
Source
Gets the versioned semantic command fingerprint.
Reports an immutable-manifest creation result.
DurableRetentionManifestCreateOutcome Outcome { get; }
Source
Gets whether this command created or replayed the manifest.
DurableRetentionManifest Manifest { get; }
Source
Gets the immutable manifest and its current projection.
Represents a content-addressed adopter assertion about a durable-flow archive package.
string ReceiptId { get; }
Source
Gets the adopter-owned opaque receipt identity; it is not a URI or external-storage claim.
DurableRetentionDigest PackageDigest { get; }
Source
Gets the DFA1
package digest claimed by the archive writer.
DurableRetentionDigest ClosureDigest { get; }
Source
Gets the frozen closure digest named by the receipt.
int RecordCount { get; }
Source
Gets the canonical package record count.
Returns a reproducible DFA1
archive package without writing to external storage.
DurableRetentionManifest Manifest { get; }
Source
Gets the manifest whose exact source facts the package represents.
ReadOnlyMemory<byte> Bytes { get; }
Source
Gets the reproducible package bytes. The caller writes these bytes to application-owned storage.
DurableRetentionDigest PackageDigest { get; }
Source
Gets the package's canonical SHA-256 digest.
int RecordCount { get; }
Source
Gets the manifest-ordered record count.
Reports a successful lifecycle command.
DurableRetentionManifestId ManifestId { get; }
Source
Gets the affected manifest.
DurableRetentionMutationOutcome Outcome { get; }
Source
Gets whether the mutation was applied, duplicated, or found after purge.
DurableRetentionManifestState State { get; }
Source
Gets the projected lifecycle state after the command.
long LifecycleSequence { get; }
Source
Gets the projected lifecycle sequence after the command.
Requests one idempotent, compare-and-swap retention lifecycle mutation.
DurableScopeId ScopeId { get; }
Source
Gets the application-authorized scope.
DurableRetentionManifestId ManifestId { get; }
Source
Gets the exact target manifest.
DurableCommandId CommandId { get; }
Source
Gets the idempotent command identity.
string ActorId { get; }
Source
Gets the privacy-safe authorized actor identity.
string ReasonCode { get; }
Source
Gets the privacy-safe audit reason.
long ExpectedLifecycleSequence { get; }
Source
Gets the required current lifecycle sequence.
DurableCommandFingerprint Fingerprint { get; }
Source
Gets the versioned semantic fingerprint.
Records an adopter assertion that it stored one DFA1
package externally.
DurableArchiveReceiptV1 Receipt { get; }
Source
Gets the opaque external-archive assertion to record.
Requests source-correspondence verification for a recorded archive receipt.
Requests an explicit hold placement or release on a verified retention manifest.
bool PlaceHold { get; }
Source
Gets whether this command places rather than releases the hold.
Requests the separately authorized, irreversible purge of a verified and unheld manifest.
Provides application-authorized verified retention lifecycle operations for one Flow at a time.
The application owns authorization, retention cadence, external archive transport, encryption, availability, and compliance. This API never accepts a date-range delete, archive URI, arbitrary SQL, continuation token, or a multi-Flow manifest. Verification proves only that the claimed package corresponds to the frozen source set.
ValueTask<DurableOperationResult<DurableRetentionAssessment>> AssessAsync(DurableRetentionAssessmentRequest request, CancellationToken cancellationToken = default)
Assesses one bounded Flow closure without mutating source rows.
ValueTask<DurableOperationResult<DurableRetentionManifestCreateResult>> CreateManifestAsync(DurableRetentionManifestCreateRequest request, CancellationToken cancellationToken = default)
Freezes a still-matching successful assessment as an immutable manifest.
ValueTask<DurableOperationResult<DurableRetentionManifest>> GetManifestAsync(DurableScopeId scopeId, DurableRetentionManifestId manifestId, CancellationToken cancellationToken = default)
Reads one scope-isolated manifest lifecycle projection.
ValueTask<DurableOperationResult<DurableArchivePackageV1>> BuildArchivePackageAsync(DurableScopeId scopeId, DurableRetentionManifestId manifestId, CancellationToken cancellationToken = default)
Builds a reproducible package from a still-matching immutable manifest without external I/O.
ValueTask<DurableOperationResult<DurableRetentionMutationResult>> RecordArchiveReceiptAsync(DurableRetentionRecordArchiveReceiptRequest request, CancellationToken cancellationToken = default)
Records an adopter-provided archive receipt; this does not verify external storage.
ValueTask<DurableOperationResult<DurableRetentionMutationResult>> VerifyArchiveAsync(DurableRetentionVerifyArchiveRequest request, CancellationToken cancellationToken = default)
Rebuilds the source package and verifies source correspondence with the receipt.
ValueTask<DurableOperationResult<DurableRetentionMutationResult>> SetHoldAsync(DurableRetentionHoldRequest request, CancellationToken cancellationToken = default)
Places or releases an application-owned hold on a verified manifest.
ValueTask<DurableOperationResult<DurableRetentionMutationResult>> PurgeAsync(DurableRetentionPurgeRequest request, CancellationToken cancellationToken = default)
Atomically records separate purge authorization and deletes only verified manifest-covered source rows.
Requests a privacy-bounded snapshot of one work aggregate in an already authorized scope.
DurableScopeId ScopeId { get; }
Source
Gets the trusted owning scope.
DurableWorkId WorkId { get; }
Source
Gets the opaque work identifier.
Reports authoritative work state without returning the original work payload or provider diagnostics.
Registered names, versions, and terminal codes accept only ASCII letters, digits, hyphens, underscores, periods, and colons. Empty, whitespace-only, control-containing, and other-character values are rejected; a terminal code may instead be null.
DurableScopeId ScopeId { get; }
Source
Gets the trusted owning scope.
DurableWorkId WorkId { get; }
Source
Gets the work aggregate identity.
string ActivityId { get; }
Source
Gets the immutable effect activity identity.
string WorkName { get; }
Source
Gets the registered Work name, limited to 200 durable-identifier characters.
string WorkVersion { get; }
Source
Gets the registered Work version, limited to 100 durable-identifier characters.
DurableWorkState State { get; }
Source
Gets the current authoritative state.
DurableProviderSafety ProviderSafety { get; }
Source
Gets the accepted provider ambiguity policy.
string ProviderKey { get; }
Source
Gets the immutable provider-safe idempotency key.
int AttemptNumber { get; }
Source
Gets the number of claims that reached this aggregate.
long Revision { get; }
Source
Gets the optimistic-concurrency revision.
DateTimeOffset AcceptedAtUtc { get; }
Source
Gets the authoritative store acceptance timestamp.
DateTimeOffset DueAtUtc { get; }
Source
Gets the current eligibility timestamp.
DateTimeOffset UpdatedAtUtc { get; }
Source
Gets the most recent authoritative update timestamp.
DateTimeOffset? TerminalAtUtc { get; }
Source
Gets the terminal timestamp when terminal.
string? TerminalCode { get; }
Source
Gets the safe terminal or suspension code, limited to 120 durable-identifier characters, when present.
DurableEncodedPayload? Result { get; }
Source
Gets the encoded terminal business result when work succeeded.
The original work payload and stale provider observations are intentionally not returned.
Requests an audited cancellation under optimistic concurrency.
The application must authorize the actor and scope before calling this API. Actor and reason values must be privacy-safe identifiers, not free-form user content.
DurableScopeId ScopeId { get; }
Source
Gets the trusted owning scope.
DurableWorkId WorkId { get; }
Source
Gets the work aggregate identity.
string ActorId { get; }
Source
Gets the privacy-safe authorized actor identity written to history.
string ReasonCode { get; }
Source
Gets the privacy-safe reason code written to history.
long ExpectedRevision { get; }
Source
Gets the required current revision.
Reports a successful work cancellation command.
void Deconstruct(out DurableWorkId WorkId, out DurableWorkCancelOutcome Outcome, out DurableWorkState State, out long Revision)
Deconstructs the result in its original positional-record field order.
DurableWorkId WorkId { get; }
Source
Gets the affected Work aggregate.
DurableWorkCancelOutcome Outcome { get; }
Source
Gets the accepted cancellation outcome.
DurableWorkState State { get; }
Source
Gets the resulting authoritative Work state.
long Revision { get; }
Source
Gets the resulting aggregate revision.
Requests one bounded, ordered, payload-free page of Work operations in an authorized scope.
DurableScopeId ScopeId { get; }
Source
Gets the trusted owning scope.
DurableWorkState? State { get; }
Source
Gets the optional public Work state filter.
bool RequiresRecoveryReleaseOnly { get; }
Source
Gets whether only nonterminal rows owned by an older runtime epoch should be returned.
int PageSize { get; }
Source
Gets the maximum page size.
string? ContinuationToken { get; }
Source
Gets the prior page's opaque continuation token.
Reports one payload-free Work inventory item for recovery and operations.
Registered names, versions, and terminal codes accept only ASCII letters, digits, hyphens, underscores, periods, and colons. Empty, whitespace-only, control-containing, and other-character values are rejected; a terminal code may instead be null.
DurableWorkId WorkId { get; }
Source
Gets the opaque Work identity.
string ActivityId { get; }
Source
Gets the immutable activity identity used for cross-surface correlation.
string WorkName { get; }
Source
Gets the registered Work name, limited to 200 durable-identifier characters.
string WorkVersion { get; }
Source
Gets the immutable Work version, limited to 100 durable-identifier characters.
DurableWorkState State { get; }
Source
Gets the public authoritative state.
DurableProviderSafety ProviderSafety { get; }
Source
Gets the immutable provider-safety class.
int AttemptNumber { get; }
Source
Gets the current attempt number.
long Revision { get; }
Source
Gets the current aggregate revision required by operator commands.
DateTimeOffset AcceptedAtUtc { get; }
Source
Gets the authoritative store acceptance time.
DateTimeOffset DueAtUtc { get; }
Source
Gets the current eligibility time.
DateTimeOffset UpdatedAtUtc { get; }
Source
Gets the last authoritative mutation time.
string? TerminalCode { get; }
Source
Gets the safe terminal or suspension code, limited to 120 durable-identifier characters, when present.
bool CancellationRequested { get; }
Source
Gets whether cancellation intent has been recorded.
bool RequiresRecoveryRelease { get; }
Source
Gets whether this nonterminal Work row belongs to an older runtime epoch.
Reports one bounded Work inventory page.
IReadOnlyList<DurableWorkListItem> Items { get; }
Source
Gets the ordered payload-free items.
string? ContinuationToken { get; }
Source
Gets the opaque token for the next page, or null
when complete.
Provides application-authorized query and cancellation operations for work aggregates.
ValueTask<DurableOperationResult<DurableWorkSnapshot>> GetAsync(DurableWorkGetRequest request, CancellationToken cancellationToken = default)
Reads one scoped work snapshot.
ValueTask<DurableOperationResult<DurableWorkListResult>> ListAsync(DurableWorkListRequest request, CancellationToken cancellationToken = default)
Lists one bounded payload-free Work inventory page in an already authorized scope.
ValueTask<DurableOperationResult<DurableWorkCancelResult>> CancelAsync(DurableWorkCancelRequest request, CancellationToken cancellationToken = default)
Requests audited cancellation under optimistic concurrency.
Requests disabling an owning durable scope and fencing every prior scope generation.
DurableScopeId ScopeId { get; }
Source
Gets the trusted owning scope.
string ActorId { get; }
Source
Gets the privacy-safe authorized actor identity.
string ReasonCode { get; }
Source
Gets the privacy-safe reason code.
long ExpectedGeneration { get; }
Source
Gets the required active generation.
Reports a successful scope disable command.
void Deconstruct(out DurableScopeId ScopeId, out DurableScopeDisableOutcome Outcome, out long Generation)
Deconstructs the result in its original positional-record field order.
DurableScopeId ScopeId { get; }
Source
Gets the disabled owning scope.
DurableScopeDisableOutcome Outcome { get; }
Source
Gets the accepted disable outcome.
long Generation { get; }
Source
Gets the resulting scope lifecycle generation.
Provides application-authorized scope lifecycle fencing.
ValueTask<DurableOperationResult<DurableScopeDisableResult>> DisableAsync(DurableScopeDisableRequest request, CancellationToken cancellationToken = default)
Disables a scope and increments its generation atomically.
Reports the authoritative result of a work operator command.
void Deconstruct(out DurableWorkId WorkId, out DurableWorkOperatorOutcome Outcome, out DurableWorkState State, out long Revision)
Deconstructs the result in its original positional-record field order.
DurableWorkId WorkId { get; }
Source
Gets the affected Work aggregate.
DurableWorkOperatorOutcome Outcome { get; }
Source
Gets the idempotent operator-command outcome.
DurableWorkState State { get; }
Source
Gets the resulting authoritative Work state.
long Revision { get; }
Source
Gets the resulting aggregate revision.
Requests side-effect-free reconciliation for suspended ReconcileBeforeRetry work.
DurableScopeId ScopeId { get; }
Source
Gets the trusted owning scope.
DurableWorkId WorkId { get; }
Source
Gets the suspended work aggregate.
DurableCommandId CommandId { get; }
Source
Gets the idempotent operator command identity.
string ActorId { get; }
Source
Gets the authorized privacy-safe actor identity.
string ReasonCode { get; }
Source
Gets the privacy-safe reason code.
long ExpectedRevision { get; }
Source
Gets the expected work revision.
DurableCommandFingerprint Fingerprint { get; }
Source
Gets the computed semantic command fingerprint.
Requests an audited resolution for ManualResolution work.
DurableScopeId ScopeId { get; }
Source
Gets the trusted owning scope.
DurableWorkId WorkId { get; }
Source
Gets the suspended work aggregate.
DurableCommandId CommandId { get; }
Source
Gets the idempotent operator command identity.
string ActorId { get; }
Source
Gets the authorized privacy-safe actor identity.
string ReasonCode { get; }
Source
Gets the privacy-safe reason code.
long ExpectedRevision { get; }
Source
Gets the expected work revision.
DurableManualResolutionKind Resolution { get; }
Source
Gets the provider proof supplied by the operator.
DurableEncodedPayload? Result { get; }
Source
Gets the exact registered result when the effect is proven applied.
DurableCommandFingerprint Fingerprint { get; }
Source
Gets the computed semantic command fingerprint.
Requests release of suspended work only when its effect policy proves a retry is safe.
DurableScopeId ScopeId { get; }
Source
Gets the trusted owning scope.
DurableWorkId WorkId { get; }
Source
Gets the suspended work aggregate.
DurableCommandId CommandId { get; }
Source
Gets the idempotent operator command identity.
string ActorId { get; }
Source
Gets the authorized privacy-safe actor identity.
string ReasonCode { get; }
Source
Gets the privacy-safe reason code.
long ExpectedRevision { get; }
Source
Gets the expected work revision.
DurableCommandFingerprint Fingerprint { get; }
Source
Gets the computed semantic command fingerprint.
Requests release of nonterminal work fenced by a rotated restore epoch.
DurableScopeId ScopeId { get; }
Source
Gets the trusted owning scope.
DurableWorkId WorkId { get; }
Source
Gets the old-epoch nonterminal work aggregate.
DurableCommandId CommandId { get; }
Source
Gets the idempotent operator command identity.
string ActorId { get; }
Source
Gets the authorized privacy-safe actor identity.
string ReasonCode { get; }
Source
Gets the privacy-safe reason code.
long ExpectedRevision { get; }
Source
Gets the expected work revision.
DurableCommandFingerprint Fingerprint { get; }
Source
Gets the computed semantic command fingerprint.
Provides audited recovery operations for suspended durable work.
Applications must authorize scope and actor before calling this surface. Reconciliation is a provider read and must never repeat the mutation. Manual resolution accepts only an exact registered result or proof of no effect. Safe retry and recovery release fail closed when a prior permit remains ambiguous.
ValueTask<DurableOperationResult<DurableWorkOperatorResult>> ReconcileAsync(DurableWorkReconcileRequest request, CancellationToken cancellationToken = default)
Runs the registered side-effect-free reconciler and commits its proof.
ValueTask<DurableOperationResult<DurableWorkOperatorResult>> ResolveAsync(DurableWorkManualResolutionRequest request, CancellationToken cancellationToken = default)
Commits authorized applied or proven-not-applied provider truth for manual work or canceled replay-safe ambiguity.
Idempotent and provider-keyed work is eligible only while suspended with an ambiguous permit and a preserved cancellation request. Applied proof becomes succeeded-after-cancel; proven-not-applied proof becomes canceled before effect. This lets an operator honor cancellation without authorizing replay.
ValueTask<DurableOperationResult<DurableWorkOperatorResult>> RetrySafeAsync(DurableWorkRetrySafeRequest request, CancellationToken cancellationToken = default)
Releases suspended work only when replay is safe under its immutable provider policy.
This audited command explicitly overrides and consumes a preserved cancellation request before making work eligible again. Use ResolveAsync
instead when provider proof can honor cancellation without replay.
ValueTask<DurableOperationResult<DurableWorkOperatorResult>> ReleaseAfterRecoveryAsync(DurableWorkRecoveryReleaseRequest request, CancellationToken cancellationToken = default)
Re-fences old-epoch nonterminal work to the configured runtime epoch without erasing due time or effect evidence.
Reports compatibility, heartbeat, sweep, drain, and due-dispatch lag without exposing durable payloads.
Worker ids and problem codes accept only ASCII letters, digits, hyphens, underscores, periods, and colons. Empty, whitespace-only, control-containing, and other-character values are rejected; a problem code may instead be null.
DurableRuntimeHealthState State { get; }
Source
Gets the overall liveness verdict.
string? ProblemCode { get; }
Source
Gets the stable diagnostic code, limited to 120 durable-identifier characters, for a non-healthy verdict.
bool WasStoreObserved { get; }
Source
Gets whether the provider completed an authoritative-store observation for this assessment.
This is false only for DurableRuntimeHealthState.Unavailable
. Manually constructed snapshots declare their provenance through State
.
bool SchemaCompatible { get; }
Source
Gets whether installed reader and writer ranges include this package.
A false value on an DurableRuntimeHealthState.Unavailable
snapshot means compatibility was not established; it does not mean the store was observed to be incompatible.
bool EpochCompatible { get; }
Source
Gets whether the configured out-of-band runtime epoch matches the store.
A false value on an DurableRuntimeHealthState.Unavailable
snapshot means compatibility was not established; it does not mean the store was observed to have a different epoch.
int InstalledSchemaVersion { get; }
Source
Gets the highest installed schema migration.
int RequiredSchemaVersion { get; }
Source
Gets the schema migration required by this package.
Guid ConfiguredRuntimeEpoch { get; }
Source
Gets the process-configured out-of-band recovery epoch.
Guid? ActiveRuntimeEpoch { get; }
Source
Gets the store-wide active recovery epoch, when readable.
string WorkerId { get; }
Source
Gets the privacy-safe configured worker identity, limited to 200 durable-identifier characters.
Guid? WorkerInstanceId { get; }
Source
Gets the process-instance correlation id currently owning the worker identity.
DurableRuntimeSurface HostedSurfaces { get; }
Source
Gets the surfaces this worker is configured to pump.
DateTimeOffset ObservedAtUtc { get; }
Source
Gets the time of this assessment.
This is database statement time when WasStoreObserved
is true and process time when an DurableRuntimeHealthState.Unavailable
assessment could not observe the store.
DateTimeOffset? StartedAtUtc { get; }
Source
Gets when the current worker instance first registered.
DateTimeOffset? LastHeartbeatAtUtc { get; }
Source
Gets the most recent attempted pump heartbeat.
DateTimeOffset? LastSuccessfulSweepAtUtc { get; }
Source
Gets the most recent successfully completed bounded sweep.
bool IsDraining { get; }
Source
Gets whether this worker is refusing new passes while already-started operations drain.
bool IsPassActive { get; }
Source
Gets whether this worker instance has an in-flight bounded pump pass.
long DueDispatchCount { get; }
Source
Gets the number of selected-surface dispatch rows currently overdue and available or reclaimable.
DateTimeOffset? OldestDueAtUtc { get; }
Source
Gets the oldest selected-surface available or reclaimable dispatch instant.
TimeSpan? OldestDueAge { get; }
Source
Gets the authoritative-store-observed age of the oldest overdue dispatch.
bool CanEnableActivation { get; }
Source
Gets whether the current complete assessment authorizes enabling an activation path.
This is an authorization from the current assessment, not a permanent deployment toggle. Host liveness and application-traffic policy remain application-owned.
bool CanAttemptPump { get; }
Source
Gets whether the current assessment permits an authoritative provider pump attempt.
This is an advisory host precheck. Provider admission remains authoritative, so callers should avoid a check-then-act dependency and handle the result from the admission-aware pump directly.
bool IsReady { get; }
Source
Gets whether the durable runtime control plane is currently ready.
This does not prove application-traffic readiness, dependency liveness beyond this assessment, or successful business work.
Reads the configured worker's provider-backed compatibility and liveness snapshot.
This API is safe to expose through an application-owned health endpoint. It contains no payloads or scope and aggregate identifiers. Applications should alert on DurableRuntimeHealthState.Unavailable
, DurableRuntimeHealthState.Stale
, an incompatible schema or epoch, and oldest-due age outside their own service objective.
ValueTask<DurableRuntimeHealthSnapshot> GetAsync(CancellationToken cancellationToken = default)
Reads one non-mutating health snapshot.
Controls process-local graceful drain for the configured worker identity.
Beginning drain prevents future pump passes from claiming new aggregates. It does not revoke an effect permit, cancel provider I/O already in progress, or wait for the caller's currently running pass. The host must wait for its in-flight pass to return before shutting down. Resume is intended for a canceled deployment rollback, not for bypassing a restore or compatibility fence.
ValueTask BeginDrainAsync(CancellationToken cancellationToken = default)
Marks the current worker instance as draining and refuses subsequent pump passes.
ValueTask ResumeAsync(CancellationToken cancellationToken = default)
Clears process-local drain after compatibility and recovery preconditions remain satisfied.
Validates provider-facing identifiers at the contract boundary.
void Require(DurableScopeId value, string parameterName)
Requires a non-default scope identifier.
value
parameterName
ArgumentException
void Require(DurableWorkId value, string parameterName)
Requires a non-default work identifier.
value
parameterName
ArgumentException
void Require(DurableCommandId value, string parameterName)
Requires a non-default command identifier.
value
parameterName
ArgumentException
void Require(DurableFlowInstanceId value, string parameterName)
Requires a non-default Flow instance identifier.
value
parameterName
ArgumentException
string Require(string value, string parameterName, int maximumLength)
Requires bounded portable identifier text.
value
parameterName
maximumLength
The original validated value.
ArgumentException
Accepted characters are ASCII letters, digits, hyphens, underscores, periods, and colons.
string RequireSha256(string value, string parameterName)
Requires exactly 64 lowercase hexadecimal SHA-256 characters.
value
parameterName
The original validated digest.
ArgumentNullException
value
is null
.ArgumentException
Bounds one runtime pump pass for hosted and externally activated execution.
int MaximumItems { get; }
Source
Gets the total item bound.
TimeSpan TimeBudget { get; }
Source
Gets the wall-clock budget for discovering and beginning additional items.
An already-started provider call or authoritative-store transaction may finish past this budget. The runtime does not manufacture an ambiguous external outcome merely to enforce a hard stopwatch deadline.
DurableRuntimeSurface Surfaces { get; }
Source
Gets the selected durable surfaces.
Summarizes one bounded runtime pump pass without high-cardinality identifiers.
int Discovered { get; }
Source
Gets discovered candidate count.
int Claimed { get; }
Source
Gets successfully claimed count.
int Processed { get; }
Source
Gets successfully processed count.
int Deferred { get; }
Source
Gets policy-deferred count.
int Failed { get; }
Source
Gets safely failed or suspended count.
bool HasMore { get; }
Source
Gets whether immediately eligible work may remain.
DateTimeOffset? NextDueAtUtc { get; }
Source
Gets the earliest known future due time.
TimeSpan Elapsed { get; }
Source
Gets elapsed duration of the bounded pass.
Reports whether one admission-aware pump invocation completed or stopped before application execution.
DurableRuntimePumpAttemptKind.Refused
, DurableRuntimePumpAttemptKind.Unavailable
, and DurableRuntimePumpAttemptKind.Incompatible
certify only that this invocation did not enter application execution. They do not establish the status of an earlier invocation whose response was lost, another process, or item-level external effects.
DurableRuntimePumpAttemptKind Kind { get; }
Source
Gets the closed attempt outcome.
DurableRuntimePumpResult? Result { get; }
Source
Gets the completed pump result, or null when execution did not begin.
string? ProblemCode { get; }
Source
Gets the provider-neutral incompatibility or unavailability code, when applicable.
Executes one bounded pass of the authoritative durable runtime.
Hosted loops and external activators must call this same primitive. A notification, queue, or HTTP wake-up may accelerate a pass but cannot become a correctness dependency.
ValueTask<DurableRuntimePumpResult> RunOnceAsync(DurableRuntimePumpRequest request, CancellationToken cancellationToken = default)
Executes one bounded processing pass.
Attempts authoritative admission and, when admitted, executes one bounded durable runtime pump pass.
The Try
contract applies only to expected pre-execution admission outcomes. Caller cancellation, application-execution failures, terminal-bookkeeping failures, malformed provider state, and unclassified exceptions propagate. A caller may make a new policy-controlled attempt after a returned pre-execution outcome, but a returned outcome does not prove the status of an earlier invocation whose response was lost.
ValueTask<DurableRuntimePumpAttempt> TryRunOnceAsync(DurableRuntimePumpRequest request, CancellationToken cancellationToken = default)
Attempts authoritative admission and executes one bounded pass when admitted.
request
cancellationToken
A closed attempt that distinguishes completion, refusal, provider unavailability, and incompatibility.
OperationCanceledException
Exception
Carries one provider claim across the storage-to-executor boundary.
Providers create this only after a scoped, fenced claim succeeds. The claim is not authorization by itself; the provider must record the matching effect permit before invoking prepared work.
DurableWorkExecutionContext ToExecutionContext()
Creates the validated application execution context for this provider claim.
DurableScopeId ScopeId { get; }
Source
Gets the trusted owning scope.
DurableWorkId WorkId { get; }
Source
Gets the immutable work aggregate identifier.
string ActivityId { get; }
Source
Gets the immutable provider-operation activity identifier.
string WorkName { get; }
Source
Gets the registered work name.
string WorkVersion { get; }
Source
Gets the registered work version.
DurableEncodedPayload Payload { get; }
Source
Gets the encoded work payload.
DurableProviderSafety ProviderSafety { get; }
Source
Gets the provider ambiguity policy snapshot.
int AttemptNumber { get; }
Source
Gets the monotonically increasing attempt number.
long LeaseGeneration { get; }
Source
Gets the claim lease generation.
long ScopeGeneration { get; }
Source
Gets the owning scope lifecycle generation.
string RuntimeEpoch { get; }
Source
Gets the out-of-band recovery epoch.
Wraps already prepared application work for invocation after the provider commits its effect permit.
ValueTask<DurableEncodedPayload> InvokeAsync(CancellationToken cancellationToken = default)
Invokes the prepared application executor and returns its encoded terminal result.
ValueTask<DurableEncodedWorkExit> InvokeExitAsync(CancellationToken cancellationToken = default)
Invokes the prepared application executor and returns its encoded exit fact.
cancellationToken
CancellationToken.None
.
The encoded exit fact. Legacy prepared Work produces a DurableWorkExitKind.Succeeded
fact wrapping the encoded terminal result.
Providers that understand typed durable exits must call this member after their effect permit commits. Legacy prepared Work retains exact success behavior because its default implementation wraps InvokeAsync
as DurableWorkExitKind.Succeeded
.
Adapts validated provider claims to adopter-owned work registrations.
DurablePreparedWorkInvocation Prepare(DurableWorkRegistration registration, IServiceProvider services, DurableClaimedWork claim)
Prepares an application executor without performing provider I/O.
ValueTask<DurableEncodedEffectReconciliation> ReconcileAsync(DurableWorkRegistration registration, IServiceProvider services, DurableClaimedWork claim, CancellationToken cancellationToken = default)
Runs the adopter-owned side-effect-free reconciler for a validated provider claim.
References one retained child-Work evidence fact without disclosing a result payload, provider response, or credentials.
DurableFlowRepairEvidenceReference Completed(DurableWorkId childWorkId, long expectedChildWorkRevision, long childWorkHistoryEventId, string expectedChildResultSha256)
Creates evidence for a retained terminal child result.
DurableFlowRepairEvidenceReference ProvenNotApplied(DurableWorkId childWorkId, long expectedChildWorkRevision, long childWorkHistoryEventId, DurableCommandId requiredWorkOperatorCommandId)
Creates evidence for a named completed manual resolution that proved the effect was not applied.
DurableWorkId ChildWorkId { get; }
Source
Gets the child Work aggregate that supplied the retained evidence.
long ExpectedChildWorkRevision { get; }
Source
Gets the child Work revision that must still match under the repair transaction lock.
long ChildWorkHistoryEventId { get; }
Source
Gets the positive append-only child Work history event identity.
string? ExpectedChildResultSha256 { get; }
Source
Gets the expected retained child-result digest for the completed-effect assertion, if applicable.
DurableCommandId? RequiredWorkOperatorCommandId { get; }
Source
Gets the required completed manual-resolution command for the no-effect assertion, if applicable.
Requests an audited, revision-fenced assertion about one suspended child-effect Flow.
DurableFlowRepairRequest AssertChildEffectCompleted(DurableScopeId scopeId, DurableFlowInstanceId instanceId, DurableCommandId commandId, long expectedFlowRevision, string expectedSuspensionDescriptorSha256, DurableWorkId childWorkId, long expectedChildWorkRevision, long childWorkHistoryEventId, string expectedChildResultSha256, string actorId, string reasonCode)
Creates a completed-effect repair request from a retained child result digest.
DurableFlowRepairRequest AssertChildEffectNotApplied(DurableScopeId scopeId, DurableFlowInstanceId instanceId, DurableCommandId commandId, long expectedFlowRevision, string expectedSuspensionDescriptorSha256, DurableWorkId childWorkId, long expectedChildWorkRevision, long childWorkHistoryEventId, DurableCommandId requiredWorkOperatorCommandId, string actorId, string reasonCode)
Creates a no-effect repair request from a named proven-not-applied manual resolution.
DurableScopeId ScopeId { get; }
Source
Gets the trusted owning scope.
DurableFlowInstanceId InstanceId { get; }
Source
Gets the suspended Flow instance.
DurableCommandId CommandId { get; }
Source
Gets the idempotent repair command identity.
long ExpectedFlowRevision { get; }
Source
Gets the Flow revision that must match under lock.
string ExpectedSuspensionDescriptorSha256 { get; }
Source
Gets the expected V1 suspension descriptor digest.
DurableFlowRepairAction Action { get; }
Source
Gets the closed repair assertion.
DurableFlowRepairEvidenceReference Evidence { get; }
Source
Gets the bounded retained evidence reference.
string ActorId { get; }
Source
Gets the privacy-safe audit actor identifier; it does not authorize the call.
string ReasonCode { get; }
Source
Gets the privacy-safe machine-readable repair reason.
DurableCommandFingerprint Fingerprint { get; }
Source
Gets the versioned semantic fingerprint used for replay and collision comparison.
Provides an immutable, payload-free receipt for an accepted Flow repair assertion.
DurableScopeId ScopeId { get; }
Source
Gets the trusted scope that owns every referenced durable record.
DurableFlowInstanceId InstanceId { get; }
Source
Gets the repaired Flow instance.
DurableCommandId CommandId { get; }
Source
Gets the stable repair command and receipt identity.
DurableFlowRepairAction Action { get; }
Source
Gets the accepted repair assertion.
DurableCommandFingerprint RequestFingerprint { get; }
Source
Gets the original versioned request fingerprint.
string SuspensionDescriptorSha256 { get; }
Source
Gets the locked V1 suspension descriptor digest.
DurableFlowRepairEvidenceReference Evidence { get; }
Source
Gets the retained evidence reference bound into the receipt digest.
string ActorId { get; }
Source
Gets the privacy-safe audit actor identifier.
string ReasonCode { get; }
Source
Gets the privacy-safe repair reason code.
DurableFlowState PriorState { get; }
Source
Gets the Flow state before the repair mutation.
long PriorRevision { get; }
Source
Gets the Flow revision before the repair mutation.
DurableFlowState ResultingState { get; }
Source
Gets the Flow state after the repair mutation.
long ResultingRevision { get; }
Source
Gets the Flow revision after the repair mutation.
long ResultingFlowHistoryEventId { get; }
Source
Gets the append-only Flow history event written by the repair.
DateTimeOffset AcceptedAtUtc { get; }
Source
Gets the accepted UTC instant normalized to PostgreSQL microsecond precision.
string ReceiptSha256 { get; }
Source
Gets the canonical V1 SHA-256 digest of this payload-free receipt.
Reports the terminal result of an audited Flow repair command.
DurableFlowRepairOutcome Outcome { get; }
Source
Gets the idempotent repair outcome.
DurableFlowRepairReceipt? Receipt { get; }
Source
Gets the immutable receipt for an applied or duplicate result, if any.
DurableProblem? Problem { get; }
Source
Gets the stable refusal, race, or conflict problem, if any.
DurableFlowState? ObservedFlowState { get; }
Source
Gets the safely observed Flow state when the Flow was found.
long? ObservedFlowRevision { get; }
Source
Gets the safely observed Flow revision when the Flow was found.
Requests a payload-free repair assessment for one authorized Flow instance.
DurableScopeId ScopeId { get; }
Source
Gets the trusted owning scope.
DurableFlowInstanceId InstanceId { get; }
Source
Gets the Flow instance to inspect.
Describes one currently legal or specifically refused payload-free repair candidate.
DurableFlowRepairAction Action { get; }
Source
Gets the repair action this candidate describes.
DurableFlowRepairEvidenceReference Evidence { get; }
Source
Gets the payload-free retained evidence needed to submit the action.
DurableProblem? RefusalProblem { get; }
Source
Gets an optional stable reason this action is presently refused.
Provides a payload-free, advisory repair view that can become stale before submission.
DurableFlowInstanceId InstanceId { get; }
Source
Gets the assessed Flow instance.
DurableFlowState State { get; }
Source
Gets the observed Flow state.
long Revision { get; }
Source
Gets the observed Flow revision.
string? SuspensionDescriptorSchema { get; }
Source
Gets the V1 descriptor schema, when the persisted suspension is repairable.
string? SuspensionDescriptorSha256 { get; }
Source
Gets the V1 descriptor digest, when the persisted suspension is repairable.
Guid? ActivityWaitId { get; }
Source
Gets the one activity wait identity, when applicable.
DurableWorkId? ChildWorkId { get; }
Source
Gets the linked child Work identity, when applicable.
long? ChildWorkRevision { get; }
Source
Gets the observed child Work revision, when applicable.
IReadOnlyList<DurableFlowRepairCandidate> Candidates { get; }
Source
Gets the immutable payload-free candidate list.
Provides application-authorized, evidence-first repairs for child-effect Flow suspensions.
This preview surface does not authenticate callers, infer scope from untrusted input, return payloads, or execute child Work. GetAssessmentAsync
is advisory only; callers must submit a fresh revision-bound request. Do not use IDurableFlowClient.ReleaseSuspensionAsync
as a repair fallback for these suspensions.
ValueTask<DurableOperationResult<DurableFlowRepairAssessment>> GetAssessmentAsync(DurableFlowRepairAssessmentRequest request, CancellationToken cancellationToken = default)
Returns a payload-free repair assessment for a trusted scope and Flow instance.
ValueTask<DurableOperationResult<DurableFlowRepairResult>> RepairAsync(DurableFlowRepairRequest request, CancellationToken cancellationToken = default)
Commits one evidence-backed assertion or returns its stable terminal replay, refusal, race, or conflict.
Creates canonical versioned fingerprints for provider/operator mutation commands.
DurableCommandFingerprint Create(string schemaId, DurableScopeId scopeId, DurableWorkId workId, string actorId, string reasonCode, long expectedRevision, DurableManualResolutionKind? resolution = null, DurableEncodedPayload? result = null)
Hashes the ordered semantic fields of one Work operator command.
schemaId
scopeId
workId
actorId
reasonCode
expectedRevision
resolution
result
A canonical fingerprint for persisted replay/conflict comparison.
Any change to field ordering or encoding requires a new schemaId
.
DurableCommandFingerprint CreateFlowRepair(DurableScopeId scopeId, DurableFlowInstanceId instanceId, long expectedFlowRevision, string expectedSuspensionDescriptorSha256, DurableFlowRepairAction action, DurableFlowRepairEvidenceReference evidence, string actorId, string reasonCode)
Hashes the ordered semantic fields of one evidence-backed Flow repair command.
scopeId
instanceId
expectedFlowRevision
expectedSuspensionDescriptorSha256
action
evidence
actorId
reasonCode
A canonical fingerprint for persisted replay and collision comparison.
Command identity is deliberately excluded: it selects the idempotency record rather than its semantic content. Any change to field ordering or length-prefixed encoding requires a new action-specific schema identifier.
string GetFlowRepairSchemaId(DurableFlowRepairAction action)
Gets the versioned semantic fingerprint schema for one repair assertion.
action
The action-specific fingerprint schema identifier.
ArgumentOutOfRangeException
action
is undefined.string CreateFlowRepairReceipt(DurableScopeId scopeId, DurableFlowInstanceId instanceId, DurableCommandId commandId, DurableFlowRepairAction action, DurableCommandFingerprint requestFingerprint, string suspensionDescriptorSha256, DurableFlowRepairEvidenceReference evidence, string actorId, string reasonCode, DurableFlowState priorState, long priorRevision, DurableFlowState resultingState, long resultingRevision, long resultingFlowHistoryEventId, DateTimeOffset acceptedAtUtc)
Hashes the ordered fields of an accepted payload-free Flow repair receipt.
scopeId
instanceId
commandId
action
requestFingerprint
suspensionDescriptorSha256
evidence
actorId
reasonCode
priorState
priorRevision
resultingState
resultingRevision
resultingFlowHistoryEventId
acceptedAtUtc
The lowercase hexadecimal SHA-256 receipt digest.
Field ordering and length-prefixed encoding are persisted V1 receipt semantics. Changing either requires a new receipt schema and migration rather than a silent hash change.
Classifies the safety of removing one exact Flow history source set.
Provides a privacy-safe, deterministic reason for a retention assessment.
Represents the append-only lifecycle state projected for a frozen retention manifest.
Identifies an idempotent manifest-create result.
Identifies an idempotent lifecycle mutation result.
Identifies an accepted work cancellation outcome.
Identifies an accepted scope disable outcome.
Identifies an idempotent operator mutation outcome.
Identifies the proof supplied by an authorized manual-resolution command.
Describes the safe, low-cardinality liveness state of one configured durable runtime worker.
Selects which durable surfaces a bounded pump pass may process.
Identifies the outcome of one admission-aware durable runtime pump attempt.
Identifies the closed set of evidence-backed Flow repair assertions supported by the Provider API.
These values deliberately do not include a generic resume, release, or force-terminate operation. A host must authorize the trusted scope before it calls this API; ActorId
is immutable audit metadata, not proof of authorization.
Identifies the stable outcome of an idempotent Flow repair request.