host:strong logged 226 health.changed events in one hour, oscillating down/healthy while the host was fine throughout. host:hubris did it 126 times. runCheck wrote entity_status.health on every check completion, so an entity's health was simply whichever of its checks finished most recently. A host with six checks reported whichever facet happened to be sampled last, and one failing probe alternating with five passing ones flapped forever. resolveSignal forced "healthy" too, a second path by which one passing probe erased another probe's genuine failure. On this fleet the trigger is a known false positive: the scheduler's network vantage point cannot ICMP host:strong, so its ping check fails while every ssh-script check succeeds. Under last-writer-wins that single probe declared the whole host down, twice a minute. Each check now records its own verdict (check_defs.last_health, migration 027) and the entity's health is the worst across its enabled checks. A failing probe now degrades the entity honestly and *stably*, without erasing what the other five report, and health.changed fires only when that aggregate actually moves. Checks that have never run are ignored rather than counted as unknown, so adding a check cannot drag a known-good entity down before it has a verdict. Also declares service:oikos in the seed. The previous commit re-pointed the mcp ingress at it, but the entity only ever existed in the production database — so a fresh seed (a new install, or a DR restore) failed on an unresolvable edge. Caught by seeding an empty database rather than a copy of prod, which is the only way that class of bug shows up. Co-Authored-By: Claude <noreply@anthropic.com>
458 lines
9.3 KiB
Go
458 lines
9.3 KiB
Go
// Code generated by sqlc. DO NOT EDIT.
|
|
// versions:
|
|
// sqlc v1.29.0
|
|
|
|
package sqlcgen
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
type AgentActivity struct {
|
|
ID int64
|
|
Ts time.Time
|
|
AgentID uuid.UUID
|
|
SessionID *string
|
|
ActivityType string
|
|
ToolName *string
|
|
EntityID *uuid.UUID
|
|
InputSummary *string
|
|
OutputSummary *string
|
|
DurationMs *int32
|
|
TokenCount *int32
|
|
Success *bool
|
|
CorrelationID *string
|
|
}
|
|
|
|
type AgentMessage struct {
|
|
ID uuid.UUID
|
|
SessionID uuid.UUID
|
|
Role string
|
|
Content []byte
|
|
CreatedAt time.Time
|
|
}
|
|
|
|
type AgentSession struct {
|
|
ID uuid.UUID
|
|
Title string
|
|
Actor string
|
|
CreatedAt time.Time
|
|
LastActiveAt time.Time
|
|
Goal string
|
|
Status string
|
|
Outcome *string
|
|
Summary string
|
|
EntityID *uuid.UUID
|
|
CompletionNudges int32
|
|
Blocker string
|
|
ClosedAt *time.Time
|
|
}
|
|
|
|
type Approval struct {
|
|
EntityID uuid.UUID
|
|
SubjectEntityID *uuid.UUID
|
|
Action string
|
|
RiskClass string
|
|
Kind string
|
|
Payload []byte
|
|
Status string
|
|
TokenHash *string
|
|
ExpiresAt time.Time
|
|
DecidedAt *time.Time
|
|
DecidedBy *uuid.UUID
|
|
CreatedAt time.Time
|
|
MatrixEventID *string
|
|
AlertSentAt *time.Time
|
|
}
|
|
|
|
type ApprovalRule struct {
|
|
ID uuid.UUID
|
|
EntityType *string
|
|
Action string
|
|
RiskClass string
|
|
AutonomyLevel string
|
|
ScopeEntity *uuid.UUID
|
|
Version int32
|
|
UpdatedAt time.Time
|
|
}
|
|
|
|
type AuditLog struct {
|
|
ID int64
|
|
Ts time.Time
|
|
ActorType string
|
|
ActorID *uuid.UUID
|
|
Action string
|
|
EntityID *uuid.UUID
|
|
Method *string
|
|
Path *string
|
|
StatusCode *int32
|
|
Detail []byte
|
|
SourceIp *string
|
|
CorrelationID *string
|
|
SessionID *uuid.UUID
|
|
}
|
|
|
|
type AutonomySetting struct {
|
|
Key string
|
|
Value string
|
|
Version int32
|
|
UpdatedAt time.Time
|
|
}
|
|
|
|
type CheckDef struct {
|
|
EntityID uuid.UUID
|
|
TargetID *uuid.UUID
|
|
TargetType *string
|
|
Kind string
|
|
Config []byte
|
|
IntervalS int32
|
|
TimeoutS int32
|
|
Zone *string
|
|
Enabled bool
|
|
UpdatedAt time.Time
|
|
// When this check last executed. NULL = never, due immediately. Compared against interval_s to decide due-ness.
|
|
LastRunAt *time.Time
|
|
// This check's own most recent verdict (healthy/degraded/down/unknown). entity_status.health is the worst of these across the target's enabled checks.
|
|
LastHealth *string
|
|
}
|
|
|
|
type Classification struct {
|
|
EntityID uuid.UUID
|
|
SignalEntityID *uuid.UUID
|
|
TargetEntityID *uuid.UUID
|
|
Action string
|
|
RecommendedAction []byte
|
|
RiskClass string
|
|
Route string
|
|
BlastRadius []uuid.UUID
|
|
PatternConfidence *float32
|
|
SkillID *uuid.UUID
|
|
AutonomyCheck *string
|
|
Reasoning []byte
|
|
CorrelationID string
|
|
CreatedAt time.Time
|
|
}
|
|
|
|
type ContextFile struct {
|
|
Path string
|
|
Hash string
|
|
LastChanged time.Time
|
|
}
|
|
|
|
type ContextVersion struct {
|
|
Singleton bool
|
|
Version int64
|
|
UpdatedAt time.Time
|
|
}
|
|
|
|
type Entity struct {
|
|
ID uuid.UUID
|
|
Slug string
|
|
Type string
|
|
Name string
|
|
State *string
|
|
Attributes []byte
|
|
MaintenanceUntil *time.Time
|
|
Version int32
|
|
CreatedAt time.Time
|
|
UpdatedAt time.Time
|
|
EnrolledAt *time.Time
|
|
EnrolledBy *uuid.UUID
|
|
}
|
|
|
|
type EntityStatus struct {
|
|
EntityID uuid.UUID
|
|
Health string
|
|
LastCheckAt *time.Time
|
|
Details []byte
|
|
UpdatedAt time.Time
|
|
}
|
|
|
|
type EntityType struct {
|
|
Name string
|
|
ParentType *string
|
|
IsAbstract bool
|
|
Domain string
|
|
Layer string
|
|
Description *string
|
|
LifecycleID *string
|
|
AttributeSchema []byte
|
|
SchemaVersion int32
|
|
Status string
|
|
CreatedAt time.Time
|
|
UpdatedAt time.Time
|
|
// Check kinds this type warrants, resolved through parent_type. NULL means undeclared (an ontology gap), [] means explicitly unmonitorable, ["http","resource"] means declared kinds. Populated from seeds/ontology.yaml.
|
|
MonitoringSpec []byte
|
|
}
|
|
|
|
type Event struct {
|
|
ID int64
|
|
Ts time.Time
|
|
Type string
|
|
EntityID *uuid.UUID
|
|
Severity string
|
|
Source string
|
|
Data []byte
|
|
CorrelationID *string
|
|
}
|
|
|
|
type Execution struct {
|
|
EntityID uuid.UUID
|
|
ClassificationID *uuid.UUID
|
|
SignalEntityID *uuid.UUID
|
|
TargetEntityID *uuid.UUID
|
|
Action string
|
|
RiskClass string
|
|
ApprovalID *uuid.UUID
|
|
AgentID *uuid.UUID
|
|
SkillID *uuid.UUID
|
|
SkillVersion *int32
|
|
Status string
|
|
Result []byte
|
|
DurationMs *int32
|
|
Verified bool
|
|
CorrelationID string
|
|
StartedAt *time.Time
|
|
CompletedAt *time.Time
|
|
CreatedAt time.Time
|
|
}
|
|
|
|
type ExecutionLog struct {
|
|
ExecutionID uuid.UUID
|
|
Ts time.Time
|
|
Seq int32
|
|
Stream string
|
|
Chunk string
|
|
}
|
|
|
|
type Feedback struct {
|
|
EntityID uuid.UUID
|
|
ExecutionID uuid.UUID
|
|
Outcome string
|
|
Observation *string
|
|
Lesson *string
|
|
UnexpectedSideEffects []string
|
|
Tags []string
|
|
CreatedAt time.Time
|
|
}
|
|
|
|
type IdempotencyKey struct {
|
|
Key string
|
|
Actor string
|
|
RequestHash string
|
|
ResponseCode *int32
|
|
ResponseBody []byte
|
|
CreatedAt time.Time
|
|
}
|
|
|
|
type KnowledgeEntity struct {
|
|
EntityID uuid.UUID
|
|
Title string
|
|
Content string
|
|
Source *string
|
|
Tags []string
|
|
CreatedAt time.Time
|
|
UpdatedAt time.Time
|
|
ContentHash *string
|
|
Search interface{}
|
|
EditedBy string
|
|
DeletedAt *time.Time
|
|
}
|
|
|
|
type KnowledgeRevision struct {
|
|
ID int64
|
|
EntityID uuid.UUID
|
|
Title string
|
|
Content string
|
|
Source *string
|
|
Tags []string
|
|
EditedBy string
|
|
VersionAt time.Time
|
|
RevisedAt time.Time
|
|
}
|
|
|
|
type Ledger struct {
|
|
Ts time.Time
|
|
ExecutionID uuid.UUID
|
|
TargetEntityID *uuid.UUID
|
|
Action string
|
|
RiskClass string
|
|
Status string
|
|
Verified bool
|
|
Route *string
|
|
Reasoning []byte
|
|
ApprovalStatus *string
|
|
DecidedBy *uuid.UUID
|
|
AgentID *uuid.UUID
|
|
CorrelationID string
|
|
}
|
|
|
|
type LifecycleDef struct {
|
|
ID string
|
|
States []string
|
|
DefaultState string
|
|
TerminalStates []string
|
|
Transitions []byte
|
|
CreatedAt time.Time
|
|
}
|
|
|
|
type MetricRollups1d struct {
|
|
Bucket interface{}
|
|
EntityID uuid.UUID
|
|
Metric string
|
|
AvgValue float64
|
|
MinValue interface{}
|
|
MaxValue interface{}
|
|
SampleCount int64
|
|
}
|
|
|
|
type MetricRollups1h struct {
|
|
Bucket interface{}
|
|
EntityID uuid.UUID
|
|
Metric string
|
|
AvgValue float64
|
|
MinValue interface{}
|
|
MaxValue interface{}
|
|
SampleCount int64
|
|
}
|
|
|
|
type MetricSample struct {
|
|
Ts time.Time
|
|
EntityID uuid.UUID
|
|
Metric string
|
|
Value float64
|
|
Tags []byte
|
|
}
|
|
|
|
type NomosPlanExecution struct {
|
|
ExecutionID uuid.UUID
|
|
SessionID uuid.UUID
|
|
ContinuedAt *time.Time
|
|
CreatedAt time.Time
|
|
}
|
|
|
|
type Pattern struct {
|
|
EntityID uuid.UUID
|
|
AppliesType string
|
|
Action string
|
|
Pattern string
|
|
Confidence float32
|
|
EvidenceCount int32
|
|
SuccessCount int32
|
|
FailureCount int32
|
|
Status string
|
|
Quarantined bool
|
|
Version int32
|
|
LastValidatedAt *time.Time
|
|
CreatedAt time.Time
|
|
}
|
|
|
|
type ProvisioningStep struct {
|
|
ID uuid.UUID
|
|
EntityID uuid.UUID
|
|
ExecutionID uuid.UUID
|
|
StepOrder int32
|
|
StepName string
|
|
Status string
|
|
StartedAt *time.Time
|
|
FinishedAt *time.Time
|
|
ErrorMessage *string
|
|
CreatedAt time.Time
|
|
UpdatedAt time.Time
|
|
}
|
|
|
|
type Relationship struct {
|
|
SourceID uuid.UUID
|
|
TargetID uuid.UUID
|
|
Type string
|
|
Attributes []byte
|
|
ValidFrom time.Time
|
|
ValidTo *time.Time
|
|
}
|
|
|
|
type RelationshipType struct {
|
|
Name string
|
|
Inverse *string
|
|
SourceType string
|
|
TargetType string
|
|
Cardinality string
|
|
Description *string
|
|
CreatedAt time.Time
|
|
}
|
|
|
|
type RiskClass struct {
|
|
Name string
|
|
Description *string
|
|
ApprovalRequired string
|
|
AutonomyAllowed bool
|
|
}
|
|
|
|
type SeedVersion struct {
|
|
File string
|
|
ContentHash string
|
|
AppliedAt time.Time
|
|
}
|
|
|
|
type SessionPlanStep struct {
|
|
ID uuid.UUID
|
|
SessionID uuid.UUID
|
|
Seq int32
|
|
Title string
|
|
Detail string
|
|
Status string
|
|
ExecutionID *uuid.UUID
|
|
TargetSlug *string
|
|
StartedAt *time.Time
|
|
FinishedAt *time.Time
|
|
CreatedAt time.Time
|
|
Generation int32
|
|
}
|
|
|
|
type SessionQuestion struct {
|
|
ID uuid.UUID
|
|
SessionID uuid.UUID
|
|
Prompt string
|
|
Context []byte
|
|
Status string
|
|
Answer *string
|
|
CreatedAt time.Time
|
|
AnsweredAt *time.Time
|
|
}
|
|
|
|
type Signal struct {
|
|
EntityID uuid.UUID
|
|
Kind string
|
|
Severity string
|
|
TargetEntityID *uuid.UUID
|
|
CheckID *uuid.UUID
|
|
Evidence *string
|
|
LikelyCause *string
|
|
State string
|
|
OccurrenceCount int32
|
|
FirstSeenAt time.Time
|
|
LastSeenAt time.Time
|
|
FlapCount int32
|
|
HoldDownUntil *time.Time
|
|
MuteUntil *time.Time
|
|
CreatedAt time.Time
|
|
UpdatedAt time.Time
|
|
}
|
|
|
|
type Skill struct {
|
|
EntityID uuid.UUID
|
|
Version int32
|
|
Name string
|
|
Procedure []byte
|
|
AppliesType *string
|
|
Action string
|
|
PatternIds []uuid.UUID
|
|
Status string
|
|
SuccessRate *float32
|
|
ChangedBy *uuid.UUID
|
|
ChangeReason *string
|
|
LastUsedAt *time.Time
|
|
CreatedAt time.Time
|
|
}
|