carlos / platform Public

zdd-readiness: approved copy for the no-signing-key retry strings, pinned

Paul approved the three strings unchanged on 2026-10-12. The TODO-COPY markers are gone, the record is docs/superpowers/plans/2026-10-11-zero-downtime-flag-readiness-copy.json, and TestZeroDowntimeReadinessCopyIsApplied pins it. The copy-review scratch directory is removed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude agent, operated by paul@keymail.dev 3b05492b88227de2674f21a270b33691e31062c8 parent 13dffea
5 files changed, +30 −29
  • approved_copy_zdd_test.go +18 −0
  • copy-review/strings.json +0 −26
  • docs/superpowers/plans/2026-10-11-zero-downtime-flag-readiness-copy.json +9 −0
  • internal/console/apiretry.go +1 −1
  • internal/console/browserretry.go +2 −2
diff --git a/approved_copy_zdd_test.go b/approved_copy_zdd_test.go
index fffdb3d0e..d8fa29c7c 100644
--- a/approved_copy_zdd_test.go
+++ b/approved_copy_zdd_test.go
@@ -71,3 +71,21 @@ func TestZeroDowntimeCopyIsApplied(t *testing.T) {
}
checkApprovedCopy(t, raw, ".", zddCopyIDs, zddCopyFragments)
}
+
+// zddReadinessCopyIDs is the flag-readiness copy inventory: the three
+// no-signing-key retry strings Paul approved unchanged on 2026-10-12.
+var zddReadinessCopyIDs = []string{
+ "zdd-readiness.retry-no-key.api",
+ "zdd-readiness.retry-no-key.browser-title",
+ "zdd-readiness.retry-no-key.browser-body",
+}
+
+// Every string Paul approved in the flag-readiness copy review is present,
+// byte for byte, in the file the record names.
+func TestZeroDowntimeReadinessCopyIsApplied(t *testing.T) {
+ raw, err := os.ReadFile("docs/superpowers/plans/2026-10-11-zero-downtime-flag-readiness-copy.json")
+ if err != nil {
+ t.Fatal(err)
+ }
+ checkApprovedCopy(t, raw, ".", zddReadinessCopyIDs, nil)
+}
diff --git a/copy-review/strings.json b/copy-review/strings.json
deleted file mode 100644
index 74af60790..000000000
--- a/copy-review/strings.json
+++ /dev/null
@@ -1,26 +0,0 @@
-[
- {
- "id": "zdd-readiness.retry-no-key.api",
- "section": "Retry on a read-only console: command line",
- "label": "No signing key (command line and API)",
- "text": "no signing key on this host. this console cannot request a retry",
- "context": "Printed by `carlos instances retry` when the console it talks to is read-only and has no signing key. A retry is now a grant the console signs, so a console without the key cannot make one. The line sits beside the existing \"no deployment bucket on this host. this console cannot request a retry\", and the person reading it is an operator or developer at a terminal.",
- "notes": "Lower case, full stop then a new sentence, no em dashes. Sent as the body of an HTTP 503 answer. Sibling of the no deployment bucket line."
- },
- {
- "id": "zdd-readiness.retry-no-key.browser-title",
- "section": "Retry on a read-only console: console page",
- "label": "Retry unavailable (title)",
- "text": "Retry unavailable",
- "context": "The heading of the error a member sees on an instance's page after pressing the Retry button on a read-only console. The next string is its body, and the two are read together.",
- "notes": "Short title. Pairs with zdd-readiness.retry-no-key.browser-body."
- },
- {
- "id": "zdd-readiness.retry-no-key.browser-body",
- "section": "Retry on a read-only console: console page",
- "label": "No signing key (body)",
- "text": "No signing key on this host, so this console cannot request a retry.",
- "context": "The explanation under the \"Retry unavailable\" heading. It tells the member why the Retry button did nothing: this console has no signing key, so it cannot ask the box to try the failed build again.",
- "notes": "Same fact as the command line string, written as a sentence for the browser. Pairs with zdd-readiness.retry-no-key.browser-title."
- }
-]
diff --git a/docs/superpowers/plans/2026-10-11-zero-downtime-flag-readiness-copy.json b/docs/superpowers/plans/2026-10-11-zero-downtime-flag-readiness-copy.json
new file mode 100644
index 000000000..1f443c4a9
--- /dev/null
+++ b/docs/superpowers/plans/2026-10-11-zero-downtime-flag-readiness-copy.json
@@ -0,0 +1,9 @@
+{
+ "approved_by": "Paul",
+ "approved_on": "2026-10-12",
+ "entries": [
+ {"id": "zdd-readiness.retry-no-key.api", "file": "internal/console/apiretry.go", "text": "no signing key on this host. this console cannot request a retry"},
+ {"id": "zdd-readiness.retry-no-key.browser-title", "file": "internal/console/browserretry.go", "text": "Retry unavailable"},
+ {"id": "zdd-readiness.retry-no-key.browser-body", "file": "internal/console/browserretry.go", "text": "No signing key on this host, so this console cannot request a retry."}
+ ]
+}
diff --git a/internal/console/apiretry.go b/internal/console/apiretry.go
index 3d4086d75..cab729851 100644
--- a/internal/console/apiretry.go
+++ b/internal/console/apiretry.go
@@ -34,7 +34,7 @@ const (
apiRetryNotHeld = "%s is not held back by a failed build, as far as its box last reported, so there is nothing to retry"
// apiRetryNoKey is a read-only console's answer: a retry is a grant the
// root key signs (spec §11), and there is no key here to sign it.
- apiRetryNoKey = "no signing key on this host. this console cannot request a retry" // TODO-COPY(zdd-readiness.retry-no-key.api)
+ apiRetryNoKey = "no signing key on this host. this console cannot request a retry"
)
var (
diff --git a/internal/console/browserretry.go b/internal/console/browserretry.go
index 1c2c14a67..d20bf1e42 100644
--- a/internal/console/browserretry.go
+++ b/internal/console/browserretry.go
@@ -15,8 +15,8 @@ import (
// The browser door's answer on a read-only console (apiRetryNoKey's twin).
const (
- browserRetryNoKeyTitle = "Retry unavailable" // TODO-COPY(zdd-readiness.retry-no-key.browser-title)
- browserRetryNoKey = "No signing key on this host, so this console cannot request a retry." // TODO-COPY(zdd-readiness.retry-no-key.browser-body)
+ browserRetryNoKeyTitle = "Retry unavailable"
+ browserRetryNoKey = "No signing key on this host, so this console cannot request a retry."
)
// handleInstanceRetry is the instance page's Retry (spec §9.2): the browser