Apply namespace scopes to inspections and diagnostics

This commit is contained in:
2026-10-17 06:17:16 +00:00
parent aa54b8d1c4
commit 15f79ce7b1
6 changed files with 186 additions and 30 deletions

View File

@@ -164,6 +164,104 @@ func TestWithNamespacesViewsCanPrepareConcurrently(t *testing.T) {
wait.Wait()
}
func TestWithNamespacesRoutesInspectionsAndSmokeSelections(t *testing.T) {
engine := newNamespacedContractEngine(t, &fakeLLMClient{response: &promptkit.GenerateResponse{Content: "reply"}})
scoped, err := engine.WithNamespaces(promptkit.Namespaces{
Prompt: "alpha", Profile: "beta", Backend: "alpha",
})
if err != nil {
t.Fatal(err)
}
prompt, err := scoped.InspectPrompt(context.Background(), "shared")
if err != nil || prompt.PromptID != "alpha/shared" {
t.Fatalf("scoped prompt inspection = %+v, error %v", prompt, err)
}
profile, err := scoped.InspectProfile(context.Background(), "shared")
if err != nil || profile.ProfileID != "beta/shared" {
t.Fatalf("scoped profile inspection = %+v, error %v", profile, err)
}
requirements, err := scoped.InspectRequirements(context.Background(), promptkit.RequirementInspectionRequest{
PromptID: "shared", ProfileID: "shared",
})
if err != nil || requirements.PromptID != "alpha/shared" || requirements.ProfileID != "beta/shared" {
t.Fatalf("scoped requirements inspection = %+v, error %v", requirements, err)
}
qualifiedPrompt, err := scoped.InspectPrompt(context.Background(), "beta/shared")
if err != nil || qualifiedPrompt.PromptID != "beta/shared" {
t.Fatalf("qualified prompt inspection = %+v, error %v", qualifiedPrompt, err)
}
// Explicit profile selection keeps precedence over the supplied backend,
// while prompt, profile, and backend caller references are independently
// validated/qualified. The profile's configured backend remains exact.
report, err := scoped.SmokeTest(context.Background(), promptkit.SmokeTestRequest{
Kind: promptkit.SmokeTestReachability, PromptID: "shared", ProfileID: "shared", BackendID: "backend",
})
if err != nil {
t.Fatal(err)
}
if report.Target.PromptID != "alpha/shared" || report.Target.ProfileID != "beta/shared" ||
report.Target.BackendID != "beta/backend" || report.Target.SelectionSource != "profile" {
t.Fatalf("scoped smoke selection = %+v", report.Target)
}
backendReport, err := scoped.SmokeTest(context.Background(), promptkit.SmokeTestRequest{
Kind: promptkit.SmokeTestReachability, BackendID: "backend",
})
if err != nil {
t.Fatal(err)
}
if backendReport.Target.BackendID != "alpha/backend" || backendReport.Target.SelectionSource != "backend" {
t.Fatalf("scoped backend diagnostic selection = %+v", backendReport.Target)
}
defaultedReport, err := scoped.SmokeTest(context.Background(), promptkit.SmokeTestRequest{
Kind: promptkit.SmokeTestReachability, PromptID: "shared",
})
if err != nil {
t.Fatal(err)
}
if defaultedReport.Target.PromptID != "alpha/shared" || defaultedReport.Target.ProfileID != "root-only" ||
defaultedReport.Target.SelectionSource != "prompt" {
t.Fatalf("configured prompt default was rewritten by scope: %+v", defaultedReport.Target)
}
for _, run := range []func() error{
func() error { _, err := scoped.InspectPrompt(context.Background(), "alpha/beta/shared"); return err },
func() error { _, err := scoped.InspectProfile(context.Background(), "alpha/beta/shared"); return err },
func() error {
_, err := scoped.InspectRequirements(context.Background(), promptkit.RequirementInspectionRequest{
PromptID: "alpha/beta/shared", ProfileID: "shared",
})
return err
},
func() error {
_, err := scoped.SmokeTest(context.Background(), promptkit.SmokeTestRequest{
Kind: promptkit.SmokeTestReachability, PromptID: "alpha/beta/shared",
})
return err
},
func() error {
_, err := scoped.SmokeTest(context.Background(), promptkit.SmokeTestRequest{
Kind: promptkit.SmokeTestReachability, ProfileID: "alpha/beta/shared",
})
return err
},
func() error {
_, err := scoped.SmokeTest(context.Background(), promptkit.SmokeTestRequest{
Kind: promptkit.SmokeTestReachability, ProfileID: "shared", BackendID: "alpha/beta/backend",
})
return err
},
} {
if err := run(); !errors.Is(err, promptkit.ErrInvalidRequest) {
t.Errorf("malformed supplied ID error = %v, want ErrInvalidRequest", err)
}
}
if _, err := scoped.InspectPrompt(context.Background(), "missing"); !errors.Is(err, promptkit.ErrPromptNotFound) {
t.Errorf("well-formed missing prompt error = %v, want ErrPromptNotFound", err)
}
}
func newNamespacedContractEngine(t *testing.T, client promptkit.LLMClient) *promptkit.Engine {
t.Helper()
var inputs []configkit.Input
@@ -175,9 +273,10 @@ func newNamespacedContractEngine(t *testing.T, client promptkit.LLMClient) *prom
"backend": namespace + "/backend", "model": namespace + "-model",
}},
"prompts": map[string]any{"shared": map[string]any{
"version": "1",
"messages": []any{map[string]any{"role": "user", "content": "Hello"}},
"output": map[string]any{"format": "text", "validation_mode": "none"},
"version": "1",
"default_profile": "root-only",
"messages": []any{map[string]any{"role": "user", "content": "Hello"}},
"output": map[string]any{"format": "text", "validation_mode": "none"},
}},
}))
if err != nil {