internal/app/finalize
import "github.com/nilstate/scafld/v2/internal/app/finalize"
Package finalize owns the host-facing accountability finalization use case.
Functions
func Run(ctx context.Context, snapshotter Snapshotter, acceptanceRunner AcceptanceRunner, signer Signer, input Input) (Output, error)
Source: internal/app/finalize/finalize.go:101
Run executes deterministic snapshot and acceptance checks, then calibrates the accepted review evidence and mints a receipt. The model review itself is deliberately outside this use case and must already be present in input.
Types
type AcceptanceRunner
Source: internal/app/finalize/finalize.go:25
AcceptanceRunner evaluates declared acceptance criteria.
type AcceptanceRunner interface {
Evaluate(context.Context, acceptance.EvaluateInput) (acceptance.EvaluateOutput, error)
}Methods
Evaluate func(context.Context, acceptance.EvaluateInput) (acceptance.EvaluateOutput, error)
type FileFact
Source: internal/app/finalize/finalize.go:63
FileFact carries the per-file snapshot facts the reviewer evidence reuses, so review does not re-list and re-hash the tree the snapshot already walked.
type FileFact struct {
Path string
Status string
SHA256 string
}Fields
Path stringStatus stringSHA256 string
type Input
Source: internal/app/finalize/finalize.go:70
Input configures one gate run.
type Input struct {
TaskID string
SessionID string
Scope []string
BaseRef string
Review ReviewEvidence
SpecFingerprint string
HostUnderReview receipt.HostUnderReview
Independence receipt.Independence
Criteria []acceptance.Criterion
WorkDir string
Env []string
Timeout time.Duration
IdleTimeout time.Duration
PriorLedgerHead string
MintedAt time.Time
}Fields
TaskID stringSessionID stringScope []stringBaseRef stringReview ReviewEvidenceSpecFingerprint stringHostUnderReview receipt.HostUnderReviewIndependence receipt.IndependenceCriteria []acceptance.CriterionWorkDir stringEnv []stringTimeout time.DurationIdleTimeout time.DurationPriorLedgerHead stringMintedAt time.Time
type Output
Source: internal/app/finalize/finalize.go:89
Output is the structured gate result.
type Output struct {
Verdict string
Acceptance acceptance.EvaluateOutput
Findings []review.Finding
Receipt *receipt.Envelope
Independence receipt.Independence
Reason string
}Fields
Verdict stringAcceptance acceptance.EvaluateOutputFindings []review.FindingReceipt *receipt.EnvelopeIndependence receipt.IndependenceReason string
type ReviewEvidence
Source: internal/app/finalize/finalize.go:32
ReviewEvidence is the accepted result of the independent review already recorded in the session ledger. Finalization consumes this evidence; it never invokes a provider or re-runs a model review.
type ReviewEvidence struct {
Dossier review.Dossier
Provenance []receipt.Provenance
Ignored []string
Reviewer receipt.Reviewer
}Fields
Dossier review.DossierProvenance []receipt.ProvenanceIgnored []stringReviewer receipt.Reviewer
type Signer
Source: internal/app/finalize/finalize.go:40
Signer signs the canonical receipt body.
type Signer interface {
Sign(receipt.Body) (receipt.DetachedSignature, error)
}Methods
Sign func(receipt.Body) (receipt.DetachedSignature, error)
type Snapshot
Source: internal/app/finalize/finalize.go:51
Snapshot captures the deterministic tree facts included in the receipt.
type Snapshot struct {
TreeSHA string
BaseCommit string
HeadCommit string
FileDigests map[string]string
Files []FileFact
IgnoredUnreviewed []string
Deleted []string
}Fields
TreeSHA stringBaseCommit stringHeadCommit stringFileDigests map[string]stringFiles []FileFactIgnoredUnreviewed []stringDeleted []string
type SnapshotInput
Source: internal/app/finalize/finalize.go:45
SnapshotInput scopes the tree fingerprint.
type SnapshotInput struct {
Scope []string
BaseRef string
}Fields
Scope []stringBaseRef string
type Snapshotter
Source: internal/app/finalize/finalize.go:20
Snapshotter computes the commit-free tree facts reviewed by finalization.
type Snapshotter interface {
Snapshot(context.Context, SnapshotInput) (Snapshot, error)
}Methods
Snapshot func(context.Context, SnapshotInput) (Snapshot, error)
