runstate

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Aug 22, 2026 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const CurrentSchemaVersion = "1"

Variables

This section is empty.

Functions

func Delete

func Delete(repo, runID string) error

func Save

func Save(repo string, run Run) error

func SaveLocked

func SaveLocked(repo string, run Run) error

SaveLocked persists one run while the caller holds WithLock. It is exposed within the internal module so workspace operations can hold one lock across their Git and runstate critical section without recursive file locking.

func ValidRunID

func ValidRunID(runID string) bool

func WithLock

func WithLock(repo string, fn func() error) error

WithLock serializes runstate mutations for one repository across processes. The lock file is deliberately outside the individual run JSON files so the critical section also covers worktree and branch operations owned by a workspace capability.

Types

type AuditPackage

type AuditPackage struct {
	Objective      string               `json:"objective"`
	DiffDigest     string               `json:"diff_digest"`
	Verdict        string               `json:"verdict"`
	EvidenceDigest string               `json:"evidence_digest"`
	ReceiptRef     string               `json:"receipt_ref,omitempty"`
	Iterations     int                  `json:"iterations"`
	Warnings       []string             `json:"warnings"`
	CheckEvidence  []CheckEvidenceAudit `json:"check_evidence,omitempty"`
	Remediations   []RemediationAudit   `json:"remediations,omitempty"`
}

type CheckEvidenceAudit

type CheckEvidenceAudit struct {
	Check          string   `json:"check"`
	Status         string   `json:"status"`
	Repository     string   `json:"repository,omitempty"`
	RunID          string   `json:"run_id,omitempty"`
	JobID          string   `json:"job_id,omitempty"`
	LogDigest      string   `json:"log_digest,omitempty"`
	LogTruncated   bool     `json:"log_truncated,omitempty"`
	AnnotationPath []string `json:"annotation_paths,omitempty"`
	EvidenceDigest string   `json:"evidence_digest"`
}

type Context

type Context struct {
	ProjectID string   `json:"project_id,omitempty"`
	Refs      []string `json:"refs,omitempty"`
}

type Lint

type Lint struct {
	Level   string `json:"level"`
	Rule    string `json:"rule"`
	Message string `json:"message"`
	Field   string `json:"field,omitempty"`
}

type MissionInput

type MissionInput struct {
	Objective            string        `json:"objective"`
	Context              Context       `json:"context,omitempty"`
	AcceptanceCriteria   []string      `json:"acceptance_criteria,omitempty"`
	VerificationCommands [][]string    `json:"verification_commands,omitempty"`
	AllowedPaths         []string      `json:"allowed_paths,omitempty"`
	ForbiddenPaths       []string      `json:"forbidden_paths,omitempty"`
	RiskHint             string        `json:"risk_hint,omitempty"`
	Program              *ProgramInput `json:"program,omitempty"`
}

MissionInput is the persisted shape of the input used to compile a mission. It lives in runstate so the on-disk contract does not depend on a capability.

type MissionSnapshot

type MissionSnapshot struct {
	MissionID            string     `json:"mission_id"`
	Ceremony             string     `json:"ceremony"`
	Objective            string     `json:"objective"`
	AcceptanceCriteria   []string   `json:"acceptance_criteria"`
	VerificationCommands [][]string `json:"verification_commands"`
	AllowedPaths         []string   `json:"allowed_paths"`
	ForbiddenPaths       []string   `json:"forbidden_paths"`
	Risk                 string     `json:"risk"`
	Lint                 []Lint     `json:"lint"`
	Program              *Program   `json:"program,omitempty"`
}

type Program

type Program struct {
	ProgramID     string   `json:"program_id"`
	MissionIDs    []string `json:"mission_ids"`
	OpenQuestions []string `json:"open_questions"`
	DeliverAtEnd  bool     `json:"deliver_at_end,omitempty"`
}

type ProgramInput

type ProgramInput struct {
	OpenQuestions []string              `json:"open_questions"`
	Missions      []ProgramMissionInput `json:"missions"`
	DeliverAtEnd  bool                  `json:"deliver_at_end,omitempty"`
}

type ProgramMissionInput

type ProgramMissionInput struct {
	Objective            string     `json:"objective"`
	Context              Context    `json:"context,omitempty"`
	AcceptanceCriteria   []string   `json:"acceptance_criteria,omitempty"`
	VerificationCommands [][]string `json:"verification_commands,omitempty"`
	AllowedPaths         []string   `json:"allowed_paths,omitempty"`
	ForbiddenPaths       []string   `json:"forbidden_paths,omitempty"`
	RiskHint             string     `json:"risk_hint,omitempty"`
	After                []int      `json:"after,omitempty"`
}

type ProgramMissionState

type ProgramMissionState struct {
	Index      int           `json:"index"`
	Status     string        `json:"status"`
	Iterations int           `json:"iterations"`
	Audit      *AuditPackage `json:"audit,omitempty"`
	Warnings   []string      `json:"warnings,omitempty"`
}

type RemediationAudit

type RemediationAudit struct {
	Action           string   `json:"action"`
	Check            string   `json:"check"`
	Class            string   `json:"class"`
	Objective        string   `json:"objective,omitempty"`
	AllowedPaths     []string `json:"allowed_paths,omitempty"`
	BudgetIterations int      `json:"budget_iterations"`
	Reason           string   `json:"reason"`
}

type Run

type Run struct {
	SchemaVersion     string                `json:"schema_version"`
	RunID             string                `json:"run_id"`
	MissionID         string                `json:"mission_id"`
	MissionInput      MissionInput          `json:"mission_input"`
	Mission           MissionSnapshot       `json:"mission"`
	Status            Status                `json:"status"`
	CreatedAt         time.Time             `json:"created_at"`
	BaseSHA           string                `json:"base_sha"`
	Branch            string                `json:"branch"`
	Worktree          string                `json:"worktree"`
	ReviewedDigest    string                `json:"reviewed_digest,omitempty"`
	ReviewedAt        time.Time             `json:"reviewed_at,omitempty"`
	AppliedCommit     string                `json:"applied_commit,omitempty"`
	ArchivePatch      string                `json:"archive_patch,omitempty"`
	ArchiveDigest     string                `json:"archive_digest,omitempty"`
	ProgramID         string                `json:"program_id,omitempty"`
	ProgramMissionIDs []string              `json:"program_mission_ids,omitempty"`
	ProgramCursor     int                   `json:"program_cursor,omitempty"`
	ProgramEscalated  []int                 `json:"program_escalated,omitempty"`
	ProgramMissions   []ProgramMissionState `json:"program_missions,omitempty"`
	Audit             *AuditPackage         `json:"audit,omitempty"`
}

func List

func List(repo string) ([]Run, error)

func Load

func Load(repo, runID string) (Run, error)

func (*Run) Transition

func (r *Run) Transition(next Status) error

type Status

type Status string
const (
	StatusOpen      Status = "open"
	StatusReviewed  Status = "reviewed"
	StatusApplied   Status = "applied"
	StatusDiscarded Status = "discarded"
	StatusCorrupted Status = "corrupted"
)

Jump to

Keyboard shortcuts

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