From 6e2f08f96a62fef91e71d0e2cfc5be8851cb58c4 Mon Sep 17 00:00:00 2001 From: jochen Date: Tue, 3 Nov 2026 16:24:07 +0100 Subject: [PATCH] =?UTF-8?q?provisioner=5Fdelete's=20description=20names=20?= =?UTF-8?q?no=20removed=20controller=20verb:=20it=20asks=20nobody,=20so=20?= =?UTF-8?q?the=20operator=20is=20asked=20on=20the=20operator=20channel=20f?= =?UTF-8?q?irst=20and=20named=20in=20why=20and=20by=20(ADR=200604=20=C2=A7?= =?UTF-8?q?8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- go/provider/harness/retirement.go | 3 ++- go/provider/harness/retirement_test.go | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/go/provider/harness/retirement.go b/go/provider/harness/retirement.go index f9162f2..b134d98 100644 --- a/go/provider/harness/retirement.go +++ b/go/provider/harness/retirement.go @@ -541,7 +541,8 @@ func RetirementTools(h *Harness) []stdio.Tool { }}, {Name: "provisioner_delete", Description: "Delete one RETIRED consumer — its login and its data — for good. Refused for anything active or " + - "asked for. Use the controller's `cleanup delete`, which records the hand act.", + "asked for. It asks nobody: ask the operator on the operator channel first, and name that answer in why and " + + "by, which the hand-act log keeps (novox/hq ADR 0604 §8).", Input: withOne, Run: func(args map[string]any) (any, error) { consumer := argString(args, "consumer") diff --git a/go/provider/harness/retirement_test.go b/go/provider/harness/retirement_test.go index 0c59f84..c2533d0 100644 --- a/go/provider/harness/retirement_test.go +++ b/go/provider/harness/retirement_test.go @@ -482,6 +482,10 @@ func TestTheToolsAnswer(t *testing.T) { tools := map[string]func(map[string]any) (any, error){} for _, tool := range RetirementTools(w.h) { tools[tool.Name] = tool.Run + // L3: the delete names no removed controller verb, and says who must be asked first (ADR 0604 §8). + if tool.Name == "provisioner_delete" && (strings.Contains(tool.Description, "controller") || !strings.Contains(tool.Description, "operator channel")) { + t.Errorf("provisioner_delete says %q", tool.Description) + } } if len(tools) != 4 { t.Fatalf("%d tools", len(tools))