Internal

internal/app/harden

Package harden opens and completes spec hardening rounds.

import "github.com/nilstate/scafld/v2/internal/app/harden"

Package harden opens and completes spec hardening rounds.

Variables

Source: internal/app/harden/harden.go:21

var (
	// ErrMissingSpecStore is returned when hardening has no spec store.
	ErrMissingSpecStore = errors.New("missing spec store")
	// ErrNoHardenRound is returned when marking pass without an open round.
	ErrNoHardenRound = errors.New("no harden round exists")
	// ErrSpecNotDraft is returned when hardening a non-draft spec.
	ErrSpecNotDraft = errors.New("harden only operates on drafts")
	// ErrInvalidHardenEvidence is returned when a hardening round has unverified citations.
	ErrInvalidHardenEvidence = errors.New("invalid harden evidence")
)

Functions

func Run(ctx context.Context, store SpecStore, clock Clock, input Input) (Output, error)

Source: internal/app/harden/harden.go:64

Run opens a hardening round or marks the latest round passed.

Types

type Clock

Source: internal/app/harden/harden.go:39

Clock supplies hardening timestamps.

type Clock interface {
	Now() time.Time
}
Methods
  • Now func() time.Time

type Input

Source: internal/app/harden/harden.go:44

Input describes a hardening operation.

type Input struct {
	TaskID     string
	MarkPassed bool
	Root       string
	Prompt     string
}
Fields
  • TaskID string
  • MarkPassed bool
  • Root string
  • Prompt string

type Output

Source: internal/app/harden/harden.go:52

Output describes the opened or completed hardening round.

type Output struct {
	TaskID       string            `json:"task_id"`
	Path         string            `json:"path"`
	HardenStatus spec.HardenStatus `json:"harden_status"`
	RoundID      string            `json:"round_id"`
	MarkedPassed bool              `json:"marked_passed"`
	NextCommand  string            `json:"next_command"`
	Prompt       string            `json:"prompt"`
	Warnings     []string          `json:"warnings"`
}
Fields
  • TaskID string `json:"task_id"`
  • Path string `json:"path"`
  • HardenStatus spec.HardenStatus `json:"harden_status"`
  • RoundID string `json:"round_id"`
  • MarkedPassed bool `json:"marked_passed"`
  • NextCommand string `json:"next_command"`
  • Prompt string `json:"prompt"`
  • Warnings []string `json:"warnings"`

type SpecStore

Source: internal/app/harden/harden.go:33

SpecStore is the spec persistence port used by hardening.

type SpecStore interface {
	Load(context.Context, string) (spec.Model, string, error)
	Save(context.Context, string, spec.Model) error
}
Methods
  • Load func(context.Context, string) (spec.Model, string, error)
  • Save func(context.Context, string, spec.Model) error