necoherence/request_progression
Types
pub type Accepted {
Accepted(identity: RequestIdentity)
}
Constructors
-
Accepted(identity: RequestIdentity)
pub type AdapterCommand {
StartCommand(
identity: RequestIdentity,
footprint: RequestFootprint,
)
CancelCommand(
identity: RequestIdentity,
handle: ExecutionHandle,
)
}
Constructors
-
StartCommand( identity: RequestIdentity, footprint: RequestFootprint, ) -
CancelCommand(identity: RequestIdentity, handle: ExecutionHandle)
pub type AdapterFailure {
StartAdapterFailure(identity: RequestIdentity, detail: String)
CompletionAdapterFailure(
identity: RequestIdentity,
handle: ExecutionHandle,
detail: String,
)
CancellationAdapterFailure(
identity: RequestIdentity,
handle: ExecutionHandle,
detail: String,
)
}
Constructors
-
StartAdapterFailure(identity: RequestIdentity, detail: String) -
CompletionAdapterFailure( identity: RequestIdentity, handle: ExecutionHandle, detail: String, ) -
CancellationAdapterFailure( identity: RequestIdentity, handle: ExecutionHandle, detail: String, )
pub type AdapterResult(result) {
AppliedSignal(AdapterSignal(result))
AdapterFailed(AdapterFailure)
}
Constructors
-
AppliedSignal(AdapterSignal(result)) -
AdapterFailed(AdapterFailure)
pub type AdapterSignal(result) {
Started(identity: RequestIdentity, handle: ExecutionHandle)
Completed(
identity: RequestIdentity,
handle: ExecutionHandle,
value: result,
)
CancelledAtAdapter(
identity: RequestIdentity,
handle: ExecutionHandle,
)
}
Constructors
-
Started(identity: RequestIdentity, handle: ExecutionHandle) -
Completed( identity: RequestIdentity, handle: ExecutionHandle, value: result, ) -
CancelledAtAdapter( identity: RequestIdentity, handle: ExecutionHandle, )
pub type CancelDecisionResult {
CancelledDecision(
snapshot: RequestProgressionSnapshot,
identity: RequestIdentity,
)
CancelCommandDecision(
snapshot: RequestProgressionSnapshot,
running: Running,
command: AdapterCommand,
)
CancelDecisionRejected(
snapshot: RequestProgressionSnapshot,
failure: CancelFailure,
)
}
Constructors
-
CancelledDecision( snapshot: RequestProgressionSnapshot, identity: RequestIdentity, ) -
CancelCommandDecision( snapshot: RequestProgressionSnapshot, running: Running, command: AdapterCommand, ) -
CancelDecisionRejected( snapshot: RequestProgressionSnapshot, failure: CancelFailure, )
pub type CancelFailure {
CancelUnknownRequest(identity: RequestIdentity)
CancelRequestAlreadyTerminal(identity: RequestIdentity)
CancelMissingExecutionHandle(identity: RequestIdentity)
}
Constructors
-
CancelUnknownRequest(identity: RequestIdentity) -
CancelRequestAlreadyTerminal(identity: RequestIdentity) -
CancelMissingExecutionHandle(identity: RequestIdentity)
pub type CompletionObservationFailure {
CompletionUnknown(identity: RequestIdentity)
CompletionNotRunning(identity: RequestIdentity)
CompletionHandleMismatch(identity: RequestIdentity)
CompletionIdentityMismatch(
identity: RequestIdentity,
other: RequestIdentity,
)
CompletionSignalMismatch(identity: RequestIdentity)
CompletionAdapterFailureObserved(
identity: RequestIdentity,
detail: String,
)
CancellationAdapterFailureObserved(
identity: RequestIdentity,
detail: String,
)
}
Constructors
-
CompletionUnknown(identity: RequestIdentity) -
CompletionNotRunning(identity: RequestIdentity) -
CompletionHandleMismatch(identity: RequestIdentity) -
CompletionIdentityMismatch( identity: RequestIdentity, other: RequestIdentity, ) -
CompletionSignalMismatch(identity: RequestIdentity) -
CompletionAdapterFailureObserved( identity: RequestIdentity, detail: String, ) -
CancellationAdapterFailureObserved( identity: RequestIdentity, detail: String, )
pub type CompletionObservationResult(result) {
CompletionApplied(
snapshot: RequestProgressionSnapshot,
identity: RequestIdentity,
value: result,
)
CompletionSuperseded(
snapshot: RequestProgressionSnapshot,
identity: RequestIdentity,
)
CompletionCancelled(
snapshot: RequestProgressionSnapshot,
identity: RequestIdentity,
)
CompletionObservationFailed(
snapshot: RequestProgressionSnapshot,
failure: CompletionObservationFailure,
)
}
Constructors
-
CompletionApplied( snapshot: RequestProgressionSnapshot, identity: RequestIdentity, value: result, ) -
CompletionSuperseded( snapshot: RequestProgressionSnapshot, identity: RequestIdentity, ) -
CompletionCancelled( snapshot: RequestProgressionSnapshot, identity: RequestIdentity, ) -
CompletionObservationFailed( snapshot: RequestProgressionSnapshot, failure: CompletionObservationFailure, )
pub type ConfiguredSafetyLimit {
ConfiguredSafetyLimit(resource: String, maximum: Int)
}
Constructors
-
ConfiguredSafetyLimit(resource: String, maximum: Int)
pub type CostSelection {
ExecuteNow(
identity: RequestIdentity,
evidence: EvidenceVersion,
cost: Int,
)
RemainPending(
identity: RequestIdentity,
evidence: EvidenceVersion,
cost: Int,
)
}
Constructors
-
ExecuteNow( identity: RequestIdentity, evidence: EvidenceVersion, cost: Int, ) -
RemainPending( identity: RequestIdentity, evidence: EvidenceVersion, cost: Int, )
pub type EvidenceVersion {
EvidenceVersion(
identifier: String,
digest: String,
artifact_path: String,
)
}
Constructors
-
EvidenceVersion( identifier: String, digest: String, artifact_path: String, )
pub type ExecutionHandle {
ExecutionHandle(value: String)
}
Constructors
-
ExecutionHandle(value: String)
pub type MeaningPermission {
Permitted(
identity: RequestIdentity,
evidence: List(EvidenceVersion),
)
Ordered(
identity: RequestIdentity,
evidence: List(EvidenceVersion),
)
Denied(identity: RequestIdentity, reason: PermissionDenial)
}
Constructors
-
Permitted( identity: RequestIdentity, evidence: List(EvidenceVersion), ) -
Ordered( identity: RequestIdentity, evidence: List(EvidenceVersion), ) -
Denied(identity: RequestIdentity, reason: PermissionDenial)
pub type PermissionDenial {
Denial(String)
}
Constructors
-
Denial(String)
pub type RequestEffectClass {
PureEffect
OrderedEffect
}
Constructors
-
PureEffect -
OrderedEffect
pub type RequestEntry {
RequestEntry(
identity: RequestIdentity,
footprint: RequestFootprint,
demand: ResourceDemand,
phase: RequestPhase,
meaning_permission: MeaningPermission,
cost_selection: option.Option(CostSelection),
execution_handle: option.Option(ExecutionHandle),
)
}
Constructors
-
RequestEntry( identity: RequestIdentity, footprint: RequestFootprint, demand: ResourceDemand, phase: RequestPhase, meaning_permission: MeaningPermission, cost_selection: option.Option(CostSelection), execution_handle: option.Option(ExecutionHandle), )
pub type RequestFootprint {
RequestFootprint(
reads: List(String),
writes: List(String),
effect_class: RequestEffectClass,
)
}
Constructors
-
RequestFootprint( reads: List(String), writes: List(String), effect_class: RequestEffectClass, )
pub type RequestIdentity {
RequestIdentity(
kind: String,
provenance: String,
revision: Int,
)
}
Constructors
-
RequestIdentity(kind: String, provenance: String, revision: Int)
pub type RequestInput {
RequestInput(
identity: RequestIdentity,
footprint: RequestFootprint,
demand: ResourceDemand,
permission: MeaningPermission,
)
}
Constructors
-
RequestInput( identity: RequestIdentity, footprint: RequestFootprint, demand: ResourceDemand, permission: MeaningPermission, )
pub type RequestPhase {
Pending
Preparing
Publishing
Published
Superseded
Cancelled
Failed
}
Constructors
-
Pending -
Preparing -
Publishing -
Published -
Superseded -
Cancelled -
Failed
pub type RequestPolicy {
LatestWins
Fifo
AllExecute
}
Constructors
-
LatestWins -
Fifo -
AllExecute
pub type RequestProgressionSnapshot {
RequestProgressionSnapshot(
policy: RequestPolicy,
budget: ResourceBudget,
current_identity: option.Option(RequestIdentity),
entries: List(RequestEntry),
revision: Int,
)
}
Constructors
-
RequestProgressionSnapshot( policy: RequestPolicy, budget: ResourceBudget, current_identity: option.Option(RequestIdentity), entries: List(RequestEntry), revision: Int, )
pub type ResourceBudget {
ResourceBudget(
pending_maximum: ConfiguredSafetyLimit,
in_flight_maximum: ConfiguredSafetyLimit,
concurrent_maximum: ConfiguredSafetyLimit,
)
}
Constructors
-
ResourceBudget( pending_maximum: ConfiguredSafetyLimit, in_flight_maximum: ConfiguredSafetyLimit, concurrent_maximum: ConfiguredSafetyLimit, )
pub type ResourceDemand {
ResourceDemand(pending: Int, in_flight: Int, concurrent: Int)
}
Constructors
-
ResourceDemand(pending: Int, in_flight: Int, concurrent: Int)
pub type Running {
Running(identity: RequestIdentity, handle: ExecutionHandle)
}
Constructors
-
Running(identity: RequestIdentity, handle: ExecutionHandle)
pub type StartDecisionFailure {
StartUnknownRequest(identity: RequestIdentity)
StartRequestNotPending(identity: RequestIdentity)
StartPolicyOrderBlocked(identity: RequestIdentity)
StartPermissionDenied(
identity: RequestIdentity,
reason: PermissionDenial,
)
StartPermissionIdentityMismatch(
identity: RequestIdentity,
other: RequestIdentity,
)
StartPermissionNotOrdered(identity: RequestIdentity)
StartCostSelectionIdentityMismatch(
identity: RequestIdentity,
other: RequestIdentity,
)
StartInFlightLimitExceeded(
demand: ResourceDemand,
budget: ResourceBudget,
)
StartConcurrentLimitExceeded(
demand: ResourceDemand,
budget: ResourceBudget,
)
}
Constructors
-
StartUnknownRequest(identity: RequestIdentity) -
StartRequestNotPending(identity: RequestIdentity) -
StartPolicyOrderBlocked(identity: RequestIdentity) -
StartPermissionDenied( identity: RequestIdentity, reason: PermissionDenial, ) -
StartPermissionIdentityMismatch( identity: RequestIdentity, other: RequestIdentity, ) -
StartPermissionNotOrdered(identity: RequestIdentity) -
StartCostSelectionIdentityMismatch( identity: RequestIdentity, other: RequestIdentity, ) -
StartInFlightLimitExceeded( demand: ResourceDemand, budget: ResourceBudget, ) -
StartConcurrentLimitExceeded( demand: ResourceDemand, budget: ResourceBudget, )
pub type StartDecisionResult {
Execute(
snapshot: RequestProgressionSnapshot,
starting: Starting,
command: AdapterCommand,
)
Deferred(
snapshot: RequestProgressionSnapshot,
accepted: Accepted,
)
StartDecisionRejected(
snapshot: RequestProgressionSnapshot,
failure: StartDecisionFailure,
)
}
Constructors
-
Execute( snapshot: RequestProgressionSnapshot, starting: Starting, command: AdapterCommand, ) -
Deferred( snapshot: RequestProgressionSnapshot, accepted: Accepted, ) -
StartDecisionRejected( snapshot: RequestProgressionSnapshot, failure: StartDecisionFailure, )
pub type StartObservationFailure {
StartObservationUnknownRequest(identity: RequestIdentity)
StartRequestNotStarting(identity: RequestIdentity)
StartIdentityMismatch(
identity: RequestIdentity,
other: RequestIdentity,
)
StartSignalMismatch(identity: RequestIdentity)
StartAdapterFailureObserved(
identity: RequestIdentity,
detail: String,
)
}
Constructors
-
StartObservationUnknownRequest(identity: RequestIdentity) -
StartRequestNotStarting(identity: RequestIdentity) -
StartIdentityMismatch( identity: RequestIdentity, other: RequestIdentity, ) -
StartSignalMismatch(identity: RequestIdentity) -
StartAdapterFailureObserved( identity: RequestIdentity, detail: String, )
pub type StartObservationResult {
StartObservationPublishing(
snapshot: RequestProgressionSnapshot,
running: Running,
)
StartObservationFailed(
snapshot: RequestProgressionSnapshot,
failure: StartObservationFailure,
)
}
Constructors
-
StartObservationPublishing( snapshot: RequestProgressionSnapshot, running: Running, ) -
StartObservationFailed( snapshot: RequestProgressionSnapshot, failure: StartObservationFailure, )
pub type Starting {
Starting(identity: RequestIdentity, command: AdapterCommand)
}
Constructors
-
Starting(identity: RequestIdentity, command: AdapterCommand)
pub type SubmitFailure {
SubmitDuplicateIdentity(identity: RequestIdentity)
SubmitPendingLimitExceeded(
demand: ResourceDemand,
budget: ResourceBudget,
)
}
Constructors
-
SubmitDuplicateIdentity(identity: RequestIdentity) -
SubmitPendingLimitExceeded( demand: ResourceDemand, budget: ResourceBudget, )
pub type SubmitResult {
SubmitAccepted(
snapshot: RequestProgressionSnapshot,
accepted: Accepted,
)
SubmitRejected(
snapshot: RequestProgressionSnapshot,
failure: SubmitFailure,
)
}
Constructors
-
SubmitAccepted( snapshot: RequestProgressionSnapshot, accepted: Accepted, ) -
SubmitRejected( snapshot: RequestProgressionSnapshot, failure: SubmitFailure, )
Values
pub fn apply_completion_observation(
snapshot: RequestProgressionSnapshot,
running: Running,
observed: AdapterResult(result),
) -> CompletionObservationResult(result)
pub fn apply_start_observation(
snapshot: RequestProgressionSnapshot,
starting: Starting,
observed: AdapterResult(result),
) -> StartObservationResult
pub fn decide_cancel(
snapshot: RequestProgressionSnapshot,
identity: RequestIdentity,
) -> CancelDecisionResult
pub fn decide_start(
snapshot: RequestProgressionSnapshot,
accepted: Accepted,
selection: CostSelection,
) -> StartDecisionResult
pub fn derive_concurrent(
snapshot: RequestProgressionSnapshot,
) -> ResourceDemand
pub fn derive_in_flight(
snapshot: RequestProgressionSnapshot,
) -> ResourceDemand
pub fn derive_pending(
snapshot: RequestProgressionSnapshot,
) -> ResourceDemand
pub fn empty(
policy: RequestPolicy,
budget: ResourceBudget,
) -> RequestProgressionSnapshot
pub fn submit(
snapshot: RequestProgressionSnapshot,
request: RequestInput,
) -> SubmitResult