Initial SWOOSH executor and reducer implementation
This commit is contained in:
123
state.go
Normal file
123
state.go
Normal file
@@ -0,0 +1,123 @@
|
||||
package swoosh
|
||||
|
||||
import "time"
|
||||
|
||||
// CouncilMember represents one elected or proposed council participant.
|
||||
// This struct must be stable across replicas and serialization order.
|
||||
type CouncilMember struct {
|
||||
ID string `json:"id"`
|
||||
Role string `json:"role"`
|
||||
PublicKey string `json:"public_key"`
|
||||
VoteWeight int `json:"vote_weight"`
|
||||
Signatures []string `json:"signatures"`
|
||||
Status string `json:"status"`
|
||||
Epoch uint64 `json:"epoch"`
|
||||
}
|
||||
|
||||
// EnvResource defines one environment allocation or provisioned asset.
|
||||
// It is used by the Environment phase to track compute or service resources.
|
||||
type EnvResource struct {
|
||||
ID string `json:"id"`
|
||||
Type string `json:"type"`
|
||||
Address string `json:"address"`
|
||||
Capacity string `json:"capacity"`
|
||||
AllocatedAt time.Time `json:"allocated_at"`
|
||||
ReleasedAt time.Time `json:"released_at"`
|
||||
HealthStatus string `json:"health_status"`
|
||||
Provider string `json:"provider"`
|
||||
}
|
||||
|
||||
// OrchestratorState captures the full replicated SWOOSH state machine.
|
||||
type OrchestratorState struct {
|
||||
Meta struct {
|
||||
Version string
|
||||
SchemaHash string
|
||||
}
|
||||
|
||||
Boot struct {
|
||||
Licensed bool
|
||||
LicenseExpiry time.Time
|
||||
NodeID string
|
||||
}
|
||||
|
||||
Ingestion struct {
|
||||
Phase string
|
||||
ContentHash string
|
||||
SourceSet []string
|
||||
LastError string
|
||||
Epoch uint64
|
||||
}
|
||||
|
||||
Council struct {
|
||||
Phase string
|
||||
PlannedRoles []string
|
||||
Members []CouncilMember
|
||||
QuorumCertHash string
|
||||
MCPHealthGreen bool
|
||||
Epoch uint64
|
||||
}
|
||||
|
||||
Environment struct {
|
||||
Phase string
|
||||
CapacityOK bool
|
||||
Health string
|
||||
Resources []EnvResource
|
||||
Epoch uint64
|
||||
}
|
||||
|
||||
Execution struct {
|
||||
Phase string
|
||||
ActiveWindowID string
|
||||
BeatIndex uint64
|
||||
PlanLocked bool
|
||||
Approvals uint32
|
||||
Epoch uint64
|
||||
}
|
||||
|
||||
Control struct {
|
||||
Paused bool
|
||||
Degraded bool
|
||||
Recovering bool
|
||||
}
|
||||
|
||||
Policy struct {
|
||||
Quarantined bool
|
||||
Rationale string
|
||||
}
|
||||
|
||||
HLCLast string
|
||||
StateHash string
|
||||
}
|
||||
|
||||
// TransitionProposal encapsulates a requested state transition.
|
||||
type TransitionProposal struct {
|
||||
CurrentStateHash string `json:"current_state_hash"`
|
||||
TransitionName string `json:"transition"`
|
||||
InputsHash string `json:"inputs_hash"`
|
||||
Signer string `json:"signer"`
|
||||
IdemKey string `json:"idem_key"`
|
||||
HLC string `json:"hlc"`
|
||||
WindowID string `json:"window_id"`
|
||||
Evidence []string `json:"evidence"`
|
||||
}
|
||||
|
||||
// GuardOutcome aggregates guard evaluation for a transition.
|
||||
type GuardOutcome struct {
|
||||
LicenseOK bool
|
||||
BackbeatOK bool
|
||||
QuorumOK bool
|
||||
PolicyOK bool
|
||||
MCPHealthy bool
|
||||
Rationale []string
|
||||
}
|
||||
|
||||
// WALRecord captures append-only transition metadata for replay and audit.
|
||||
type WALRecord struct {
|
||||
StatePreHash string `json:"state_pre_hash"`
|
||||
StatePostHash string `json:"state_post_hash"`
|
||||
Transition TransitionProposal `json:"transition"`
|
||||
Guard GuardOutcome `json:"guard"`
|
||||
AppliedAtHLC string `json:"applied_hlc"`
|
||||
AppliedAtUnixNs int64 `json:"applied_unix_ns"`
|
||||
Index uint64 `json:"index"`
|
||||
}
|
||||
Reference in New Issue
Block a user