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>
5 files changed,
+30
−29
approved_copy_zdd_test.go+18 −0copy-review/strings.json+0 −26docs/superpowers/plans/2026-10-11-zero-downtime-flag-readiness-copy.json+9 −0internal/console/apiretry.go+1 −1internal/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 |