lifecycle

package
v0.1.15 Latest Latest
Warning

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

Go to latest
Published: Jun 22, 2026 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// DerivedStatusPending indicates no runs have started (all queued or no runs).
	DerivedStatusPending = "pending"
	// DerivedStatusRunning indicates at least one run is currently running.
	DerivedStatusRunning = "running"
	// DerivedStatusCompleted indicates all runs finished with no failures.
	DerivedStatusCompleted = "completed"
	// DerivedStatusFailed indicates at least one run failed (and none running).
	DerivedStatusFailed = "failed"
	// DerivedStatusCancelled indicates the wave was stopped and runs were cancelled.
	DerivedStatusCancelled = "cancelled"
)

Derived wave status constants representing the wave-level state computed from run statuses.

Variables

This section is empty.

Functions

func ChainPredecessor

func ChainPredecessor(jobID domaintypes.JobID, jobsByID map[domaintypes.JobID]store.Job) *store.Job

ChainPredecessor returns the job in jobsByID whose NextID points to jobID, or nil if no such job exists.

func DeriveWaveStatus

func DeriveWaveStatus(counts *domaintypes.RunCounts) string

DeriveWaveStatus computes a single wave-level status from run counts. Precedence order: cancelled > running > failed > completed > pending.

func IsGateJobType

func IsGateJobType(jobType domaintypes.JobType) bool

IsGateJobType reports whether jobType is a gate variant (pre or post).

func IsTerminalRunStatus

func IsTerminalRunStatus(status domaintypes.RunStatus) bool

IsTerminalRunStatus reports whether the run status is terminal.

func IsTerminalWaveStatus

func IsTerminalWaveStatus(status domaintypes.WaveStatus) bool

IsTerminalWaveStatus reports whether the wave status is terminal.

func JobStatusFromExitCode

func JobStatusFromExitCode(exitCode int) domaintypes.JobStatus

JobStatusFromExitCode maps a completed process exit code to terminal status. 0 => Success, 1 => Fail, any other value => Error.

func JobStatusFromExitCodeForJobType

func JobStatusFromExitCodeForJobType(jobType domaintypes.JobType, exitCode int) domaintypes.JobStatus

JobStatusFromExitCodeForJobType maps process exit codes to terminal status with job-type-specific overrides.

func JobStatusFromRunError

func JobStatusFromRunError(err error) domaintypes.JobStatus

JobStatusFromRunError maps a job execution error to the appropriate terminal job status. context.Canceled and context.DeadlineExceeded produce Cancelled; all other errors produce Error. This is the canonical status-from-error mapping consumed across all nodeagent execution paths.

func StackExpectationFromMigStack

func StackExpectationFromMigStack(stack contracts.MigStack) *contracts.StackExpectation

StackExpectationFromMigStack converts a detected MigStack to a StackExpectation, or returns nil for unknown stacks.

Types

type ClaimDecision

type ClaimDecision struct {
	// AdvanceRunToRunning is true when the run should be transitioned
	// from Queued to Running.
	AdvanceRunToRunning bool
}

ClaimDecision is the pure output of claim transition evaluation.

func EvaluateClaimDecision

func EvaluateClaimDecision(jobType domaintypes.JobType, runStatus domaintypes.RunStatus) ClaimDecision

EvaluateClaimDecision computes whether the run should advance to Running.

type CompletionChainAction

type CompletionChainAction int

CompletionChainAction is the chain management action required after a job completes.

const (
	// CompletionChainNoAction means no chain management is needed (e.g. success with no successor).
	CompletionChainNoAction CompletionChainAction = iota
	// CompletionChainCancelRemainder cancels remaining non-terminal jobs in the chain.
	CompletionChainCancelRemainder
	// CompletionChainAdvanceNext promotes the next linked job for execution.
	CompletionChainAdvanceNext
)

type CompletionDecision

type CompletionDecision struct {
	ChainAction CompletionChainAction
}

CompletionDecision is the pure output of completion transition evaluation.

func EvaluateCompletionDecision

func EvaluateCompletionDecision(
	jobType domaintypes.JobType,
	jobStatus domaintypes.JobStatus,
	hasNext bool,
) CompletionDecision

EvaluateCompletionDecision computes the chain management action required after a job completes. It is pure: no I/O is performed. hasNext should be true when the completed job has a linked successor (NextID != nil).

type RunCompletionEval

type RunCompletionEval struct {
	ShouldFinish bool
	RunState     migsapi.RunState
}

RunCompletionEval is the pure evaluation result for run completion.

func EvaluateWaveCompletionFromRunCounts

func EvaluateWaveCompletionFromRunCounts(counts []store.CountRunsByWaveStatusRow) RunCompletionEval

EvaluateWaveCompletionFromRunCounts determines whether a wave can be marked Finished. Returns ShouldFinish=true when all runs are in terminal states, along with the derived run state (succeeded, failed, or cancelled).

Jump to

Keyboard shortcuts

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