internal/app/build
import "github.com/nilstate/scafld/v2/internal/app/build"
Package build advances phase-bounded execution and projects evidence back into specs.
Variables
Source: internal/app/build/manual.go:16
var (
ErrCriterionNotFound = errors.New("acceptance criterion not found")
ErrManualCriterionRequired = errors.New("criterion is not manual")
ErrEvidenceDisposition = errors.New("evidence disposition must be pass or fail")
ErrEvidenceDigest = errors.New("evidence digest must be a SHA-256 hex digest")
ErrEvidenceActor = errors.New("evidence actor is required")
ErrEvidenceReason = errors.New("evidence reason is required")
)ErrSpecNotBuildable is returned when execution is attempted before approval or after terminal state.
Source: internal/app/build/build.go:21
var ErrSpecNotBuildable = errors.New("build requires approved, active, blocked, or failed-review state")Functions
func NewManualEvidence(criterionID, disposition, digest, actor, reason string) *ManualEvidence
Source: internal/app/build/manual.go:37
NewManualEvidence returns nil when no manual disposition was supplied, preserving the normal build path.
func Run(ctx context.Context, specs SpecStore, sessions SessionStore, workspace WorkspaceStatus, runner Runner, clock Clock, input Input) (Output, error)
Source: internal/app/build/build.go:78
Run advances the governed execution lifecycle. The first build call opens the first phase without running future acceptance. Later calls run evidence for the current phase, open the next phase, or move the task to review.
Types
type Clock
Source: internal/app/build/build.go:49
Clock supplies build timestamps.
type Clock interface{ Now() time.Time }Methods
Now func() time.Time
type Input
Source: internal/app/build/build.go:52
Input describes the task and working directory to build.
type Input struct {
TaskID string
CWD string
Env []string
Timeout time.Duration
IdleTimeout time.Duration
ManualEvidence *ManualEvidence
}Fields
TaskID stringCWD stringEnv []stringTimeout time.DurationIdleTimeout time.DurationManualEvidence *ManualEvidence
type ManualEvidence
Source: internal/app/build/manual.go:27
ManualEvidence is the operator-supplied disposition for one manual acceptance criterion. It is consumed as part of build, not as a separate lifecycle transition.
type ManualEvidence struct {
CriterionID string
Disposition string
EvidenceDigest string
Actor string
Reason string
}Fields
CriterionID stringDisposition stringEvidenceDigest stringActor stringReason string
type Output
Source: internal/app/build/build.go:62
Output summarizes one build lifecycle step.
type Output struct {
TaskID string `json:"task_id"`
Status spec.Status `json:"status"`
Phase string `json:"phase,omitempty"`
Passed int `json:"passed"`
Failed int `json:"failed"`
Next string `json:"next"`
Repair *gate.Failure `json:"repair,omitempty"`
}Fields
TaskID string`json:"task_id"`Status spec.Status`json:"status"`Phase string`json:"phase,omitempty"`Passed int`json:"passed"`Failed int`json:"failed"`Next string`json:"next"`Repair *gate.Failure`json:"repair,omitempty"`
func GateFailure() *gate.Failure
Source: internal/app/build/build.go:73
GateFailure exposes blocked build repair details to the CLI envelope.
type Runner
Source: internal/app/build/build.go:39
Runner executes acceptance commands.
type Runner interface {
Run(context.Context, execution.Request) (execution.Result, error)
}Methods
Run func(context.Context, execution.Request) (execution.Result, error)
type SessionStore
Source: internal/app/build/build.go:33
SessionStore is the session evidence port used by build.
type SessionStore interface {
Append(context.Context, string, session.Entry, string) (session.Session, error)
Load(context.Context, string) (session.Session, error)
}Methods
Append func(context.Context, string, session.Entry, string) (session.Session, error)Load func(context.Context, string) (session.Session, error)
type SpecStore
Source: internal/app/build/build.go:28
SpecStore is the spec persistence port used by build.
type SpecStore interface {
Load(context.Context, string) (spec.Model, string, error)
}Methods
Load func(context.Context, string) (spec.Model, string, error)
type WorkspaceStatus
Source: internal/app/build/build.go:44
WorkspaceStatus captures dirty workspace state when older sessions lack a task baseline.
type WorkspaceStatus interface {
ChangedFiles(context.Context) ([]string, error)
}Methods
ChangedFiles func(context.Context) ([]string, error)
