Documentation
¶
Overview ¶
Package runtimeapply defines the provider-neutral durable operation journal contract for a sealed runtimeexecutor Apply. It owns no persistence, executor selection, transport, provider lifecycle, credential, lease, or generation authority.
Index ¶
- Constants
- func ValidateFinalization(operation Operation, finalization Finalization) error
- func ValidateOperationForRequest(parent runtimeexecutor.ExecutionRequest, operation Operation) error
- func ValidateReservation(operation Operation, reservation Reservation) error
- func ValidateSnapshot(operation Operation, snapshot Snapshot) error
- func ValidateStepCommit(operation Operation, commit StepCommit) error
- func VerifyStepResult(step Step, result runtimeexecutor.ExecutionResult) error
- type CompensationMode
- type Disposition
- type FailureCode
- type Finalization
- type HealthExpectation
- type Journal
- type Operation
- type OperationState
- type RecoveryStore
- type Reservation
- type RuntimeExpectation
- type Snapshot
- type Step
- type StepCommit
- type StepSnapshot
- type StepState
Constants ¶
const APIVersion = "kombify.runtime-apply-operation/v1alpha1"
Variables ¶
This section is empty.
Functions ¶
func ValidateFinalization ¶
func ValidateFinalization(operation Operation, finalization Finalization) error
func ValidateReservation ¶
func ValidateReservation(operation Operation, reservation Reservation) error
func ValidateSnapshot ¶
func ValidateStepCommit ¶
func ValidateStepCommit(operation Operation, commit StepCommit) error
func VerifyStepResult ¶
VerifyStepResult rejects a journal replay unless it is the exact verified child result for the registered step and expected runtime/health set.
Types ¶
type CompensationMode ¶
type CompensationMode string
const ( CompensationNone CompensationMode = "none" CompensationExplicit CompensationMode = "explicit" )
type Disposition ¶
type Disposition string
const ( DispositionAcquired Disposition = "acquired" DispositionResume Disposition = "resume" DispositionReplay Disposition = "replay" DispositionInProgress Disposition = "in-progress" DispositionConflict Disposition = "conflict" )
type FailureCode ¶
type FailureCode string
const ( FailureExecutorFailed FailureCode = "executor-failed" FailureCancelled FailureCode = "cancelled" //nolint:misspell // Published failure-code wire value. FailureVerificationFailed FailureCode = "verification-failed" )
type Finalization ¶
type Finalization struct {
OperationID string `json:"operation_id"`
FenceToken string `json:"fence_token"`
ExpectedState OperationState `json:"expected_state"`
State OperationState `json:"state"`
}
type HealthExpectation ¶
type Journal ¶
type Journal interface {
Begin(context.Context, Operation) (Reservation, error)
CommitStep(context.Context, StepCommit) (Snapshot, error)
Finalize(context.Context, Finalization) (Snapshot, error)
}
Journal is the persistence-neutral durable SPI. Implementations own atomic storage, fencing, retention, and abandoned-operation policy only.
type Operation ¶
type Operation struct {
APIVersion string `json:"api_version"`
OperationID string `json:"operation_id"`
ParentRequestDigest string `json:"parent_request_digest"`
PlanHash string `json:"plan_hash"`
ManifestHash string `json:"manifest_hash"`
GenerationReceiptHash string `json:"generation_receipt_hash"`
RequirementsHash string `json:"requirements_hash"`
EvidenceBundleHash string `json:"evidence_bundle_hash"`
Executor runtimeexecutor.ExecutorIdentity `json:"executor"`
Steps []Step `json:"steps"`
}
Operation binds a complete parent request to its exact sorted child set. OperationID deliberately equals ParentRequestDigest: a retry can resume only the same sealed authority, while new evidence or authority creates a new operation.
func NewOperation ¶
type OperationState ¶
type OperationState string
const ( OperationRunning OperationState = "running" OperationReconcileRequired OperationState = "reconcile-required" OperationCompleted OperationState = "completed" OperationCompensated OperationState = "compensated" )
type RecoveryStore ¶
type RecoveryStore interface {
SaveApplyRecovery(context.Context, string, []byte) error
LoadApplyRecovery(context.Context, string) ([]byte, error)
}
RecoveryStore owns opaque canonical recovery-capsule custody by exact request digest. The consumer validates bytes before Save and after Load; implementations own only atomic persistence and exact-digest lookup.
type Reservation ¶
type Reservation struct {
Disposition Disposition `json:"disposition"`
FenceToken string `json:"fence_token,omitempty"`
Snapshot *Snapshot `json:"snapshot,omitempty"`
}
Reservation is the closed atomic Begin result. Acquired and resume return an opaque fencing token. Replay returns only a completed exact snapshot.
type RuntimeExpectation ¶
type Snapshot ¶
type Snapshot struct {
OperationID string `json:"operation_id"`
State OperationState `json:"state"`
Steps []StepSnapshot `json:"steps"`
}
type Step ¶
type Step struct {
ID string `json:"id"`
RequestDigest string `json:"request_digest"`
PlanHash string `json:"plan_hash"`
ManifestHash string `json:"manifest_hash"`
GenerationReceiptHash string `json:"generation_receipt_hash"`
RequirementsHash string `json:"requirements_hash"`
EvidenceBundleHash string `json:"evidence_bundle_hash"`
ArtifactSetHash string `json:"artifact_set_hash"`
Executor runtimeexecutor.ExecutorIdentity `json:"executor"`
Runtime []RuntimeExpectation `json:"runtime"`
Health []HealthExpectation `json:"health"`
Compensation CompensationMode `json:"compensation"`
}
Step is one exact independently journaled child request. Compensation is a declared capability only; it is never inferred from an executor or failure.
func NewStep ¶
func NewStep(request runtimeexecutor.ExecutionRequest, compensation CompensationMode) (Step, error)
type StepCommit ¶
type StepCommit struct {
OperationID string `json:"operation_id"`
FenceToken string `json:"fence_token"`
StepID string `json:"step_id"`
RequestDigest string `json:"request_digest"`
ExpectedState StepState `json:"expected_state"`
State StepState `json:"state"`
Result *runtimeexecutor.ExecutionResult `json:"result,omitempty"`
FailureCode FailureCode `json:"failure_code,omitempty"`
CompensationReceiptDigest string `json:"compensation_receipt_digest,omitempty"`
}
StepCommit is one atomic fenced journal transition. Stores must reject a stale token and a request digest that differs from the registered step.
type StepSnapshot ¶
type StepSnapshot struct {
StepID string `json:"step_id"`
RequestDigest string `json:"request_digest"`
State StepState `json:"state"`
Result *runtimeexecutor.ExecutionResult `json:"result,omitempty"`
FailureCode FailureCode `json:"failure_code,omitempty"`
CompensationReceiptDigest string `json:"compensation_receipt_digest,omitempty"`
}