73 lines
2.5 KiB
Go
73 lines
2.5 KiB
Go
package checkpoint
|
|
|
|
import "time"
|
|
|
|
const (
|
|
WorkspaceSchemaVersion = "notarius.workspace.v3"
|
|
WorkspaceSchemaVersionV2 = "notarius.workspace.v2"
|
|
WorkspaceSchemaVersionV1 = "notarius.workspace.v1"
|
|
)
|
|
|
|
type StageName string
|
|
|
|
const (
|
|
StageSource StageName = "source"
|
|
StageExtract StageName = "extract"
|
|
StageMerge StageName = "merge"
|
|
StageNormalize StageName = "normalize"
|
|
)
|
|
|
|
type StageStatus string
|
|
|
|
const (
|
|
StatusPending StageStatus = "pending"
|
|
StatusRunning StageStatus = "running"
|
|
StatusSucceeded StageStatus = "succeeded"
|
|
StatusSucceededWithRejections StageStatus = "succeeded_with_rejections"
|
|
StatusFailed StageStatus = "failed"
|
|
StatusInvalidated StageStatus = "invalidated"
|
|
)
|
|
|
|
type StageManifest struct {
|
|
WorkspaceSchemaVersion string `json:"workspace_schema_version"`
|
|
Stage StageName `json:"stage"`
|
|
StepID string `json:"step_id,omitempty"`
|
|
LaneID string `json:"lane_id,omitempty"`
|
|
ModuleKey string `json:"module_key,omitempty"`
|
|
DependencyFingerprints []Fingerprint `json:"dependency_fingerprints,omitempty"`
|
|
Status StageStatus `json:"status"`
|
|
OutputDigests []Fingerprint `json:"output_digests,omitempty"`
|
|
ValidationStatus string `json:"validation_status,omitempty"`
|
|
Rejections []RejectionSummary `json:"rejections,omitempty"`
|
|
StartedAt *time.Time `json:"started_at,omitempty"`
|
|
CompletedAt *time.Time `json:"completed_at,omitempty"`
|
|
Metadata map[string]string `json:"metadata,omitempty"`
|
|
}
|
|
type RejectionSummary struct {
|
|
ValidatorName string `json:"validator_name,omitempty"`
|
|
ReasonCode string `json:"reason_code,omitempty"`
|
|
Message string `json:"message,omitempty"`
|
|
Count int `json:"count,omitempty"`
|
|
}
|
|
type SourceManifest struct {
|
|
StageManifest
|
|
SourceID string `json:"source_id,omitempty"`
|
|
}
|
|
type ExtractLaneManifest struct {
|
|
StageManifest
|
|
ChunkCount int `json:"chunk_count,omitempty"`
|
|
OutputCount int `json:"output_count,omitempty"`
|
|
}
|
|
type MergeLaneManifest struct {
|
|
StageManifest
|
|
InputCount int `json:"input_count,omitempty"`
|
|
}
|
|
type NormalizeLaneManifest struct {
|
|
StageManifest
|
|
InputCount int `json:"input_count,omitempty"`
|
|
}
|
|
|
|
func NewStageManifest(stage StageName, status StageStatus) StageManifest {
|
|
return StageManifest{WorkspaceSchemaVersion: WorkspaceSchemaVersion, Stage: stage, Status: status}
|
|
}
|