package conformance import ( "testing" "error-code-system/domains" "error-code-system/errcode" ) func TestSeedCatalog(t *testing.T) { reg := errcode.NewRegistry() domains.RegisterAll(reg) seen := map[errcode.Code]struct{}{} for _, def := range reg.List("") { if !def.Code.Valid() { t.Fatalf("invalid code %s", def.Code) } if err := def.Validate(); err != nil { t.Fatal(err) } if _, ok := seen[def.Code]; ok { t.Fatalf("duplicate %s", def.Code) } seen[def.Code] = struct{}{} if def.SideEffects != errcode.SideEffectNone && def.Retry == errcode.RetryAlways { t.Fatalf("%s: side_effects=%s forbids retry=always", def.Code, def.SideEffects) } for _, alias := range def.Aliases { got, ok := reg.Lookup(alias) if !ok || got.Code != def.Code { t.Fatalf("alias %s -> %+v ok=%v", alias, got.Code, ok) } } } legacy := map[string]errcode.Code{ "canceled": errcode.AgentCanceled, "deadline_exceeded": errcode.AgentDeadlineExceeded, "budget_exceeded": errcode.AgentBudgetExceeded, "provider_unavailable": errcode.AgentProviderUnavailable, "provider_rejected": errcode.AgentProviderRejected, "tool_rejected": errcode.AgentToolRejected, "path_outside_workspace": errcode.AgentPathOutsideWorkspace, "missing_capability": errcode.AgentMissingCapability, "missing_deliverable": errcode.AgentMissingDeliverable, "empty_output": errcode.AgentEmptyOutput, "unknown_outcome": errcode.AgentUnknownOutcome, "internal": errcode.AgentInternal, "PROMPT_EMPTY": errcode.AgentPromptEmpty, "UNAUTHORIZED": errcode.AgentUnauthorized, "TIMEOUT": errcode.AgentTimeout, "CANCELLED": errcode.AgentCanceled, "TRANSIENT": errcode.AgentTransient, "MISSING_TARGET": errcode.AgentMissingDeliverable, "RUN_FAILED": errcode.AgentRunFailed, } for alias, want := range legacy { got, ok := reg.Lookup(alias) if !ok || got.Code != want { t.Fatalf("legacy %s => %s, got %+v ok=%v", alias, want, got.Code, ok) } } unknown := reg.Resolve("not-a-code") if unknown.Code != errcode.SysUnknownCode || unknown.Retry != errcode.RetryNever || unknown.SideEffects != errcode.SideEffectUnknown { t.Fatalf("fallback %+v", unknown) } if unknown.HTTP != 500 { t.Fatalf("fallback http %d", unknown.HTTP) } for _, domain := range []string{"sys", "agent", "squad"} { if len(reg.List(domain)) == 0 { t.Fatalf("domain %s empty", domain) } } }