runtimeapply

package
v0.41.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 24, 2026 License: Apache-2.0 Imports: 6 Imported by: 0

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

View Source
const APIVersion = "kombify.runtime-apply-operation/v1alpha1"

Variables

This section is empty.

Functions

func ValidateFinalization

func ValidateFinalization(operation Operation, finalization Finalization) error

func ValidateOperationForRequest

func ValidateOperationForRequest(parent runtimeexecutor.ExecutionRequest, operation Operation) error

func ValidateReservation

func ValidateReservation(operation Operation, reservation Reservation) error

func ValidateSnapshot

func ValidateSnapshot(operation Operation, snapshot Snapshot) error

func ValidateStepCommit

func ValidateStepCommit(operation Operation, commit StepCommit) error

func VerifyStepResult

func VerifyStepResult(step Step, result runtimeexecutor.ExecutionResult) error

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 HealthExpectation struct {
	RequirementID string `json:"requirement_id"`
	TargetRef     string `json:"target_ref"`
}

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

func NewOperation(parent runtimeexecutor.ExecutionRequest, steps []Step) (Operation, error)

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 RuntimeExpectation struct {
	RequirementID string `json:"requirement_id"`
	InstanceRef   string `json:"instance_ref"`
}

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"`
}

type StepState

type StepState string
const (
	StepPending     StepState = "pending"
	StepRunning     StepState = "running"
	StepSucceeded   StepState = "succeeded"
	StepFailed      StepState = "failed"
	StepCompensated StepState = "compensated"
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL