package semantic_evolution_test import ( "errors" "testing" "git.cin.su/m/Assistant/contracts/capability" "git.cin.su/m/Assistant/modules/capability/domain" "git.cin.su/m/Assistant/platform/ids" ) func TestHistoricalV1HealthRemainsExplicitlyInterpretable(t *testing.T) { historical := capability.Health{CapabilityID: capability.CapabilityID(ids.ID("historical")), State: capability.HealthDegraded, Reason: capability.ReasonCognitiveProvidersUnavailable, Revision: 1, SemanticVersion: capability.HealthV1} if err := domain.ValidateHealth(historical); err != nil { t.Fatalf("historical V1 health rejected: %v", err) } if historical.ObservedAtUnixMillis != nil { t.Fatal("V1 must preserve the absence of V2 observation time") } } func TestV2RequiresObservationTimeAndRejectsUnknownVersion(t *testing.T) { observed := int64(1720000000000) v2 := capability.Health{CapabilityID: capability.CapabilityID(ids.ID("current")), State: capability.HealthAvailable, Reason: capability.ReasonNone, Revision: 2, SemanticVersion: capability.HealthV2, ObservedAtUnixMillis: &observed} if err := domain.ValidateHealth(v2); err != nil { t.Fatalf("V2 health rejected: %v", err) } v2.SemanticVersion = 3 if err := domain.ValidateHealth(v2); !errors.Is(err, domain.ErrUnsupportedHealthVersion) { t.Fatalf("unknown version error = %v", err) } }