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"` }