carlos / movement Public

Copy round three approved: name field, joke names, and the CSP fix ship

Seven strings approved with no edits recorded. Ned Ludd, John Cagey and Max
Tokens as the per-stance name placeholders, "Continue" for the sign-in
button that used to promise an email it does not always send, and the name
field's label and error.

No placeholders remain, so the canonical host accepts again and the CSP fix
can finally reach production — the app has been refusing to serve its own
fix since the moment the fix was written, which is the gate working rather
than an accident.

approved.json now carries 50 strings.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Paul Campbell 22fb41d64707bc051347a06d20149248e509af9c parent 7afdfda
4 files changed, +35 −10
  • copy-review/approved.json +25 −3
  • copy-review/result.json +1 −0
  • copy-review/server.log +2 −0
  • internal/movement/copy.go +7 −7
diff --git a/copy-review/approved.json b/copy-review/approved.json
index 7848ed4..e153fe7 100644
--- a/copy-review/approved.json
+++ b/copy-review/approved.json
@@ -14,6 +14,10 @@
"original": "Email",
"edited": false
},
+ {
+ "id": "admin.col.name",
+ "text": "Name"
+ },
{
"id": "admin.col.stance",
"text": "Stance",
@@ -102,6 +106,10 @@
"original": "That doesn't look like an email address.",
"edited": false
},
+ {
+ "id": "form.badname",
+ "text": "We need something to call you."
+ },
{
"id": "form.email",
"text": "Your email address",
@@ -118,6 +126,22 @@
"original": "Leave this field empty",
"edited": false
},
+ {
+ "id": "form.name",
+ "text": "Your name"
+ },
+ {
+ "id": "form.name.placeholder.curious",
+ "text": "John Cagey"
+ },
+ {
+ "id": "form.name.placeholder.enthusiast",
+ "text": "Max Tokens"
+ },
+ {
+ "id": "form.name.placeholder.never",
+ "text": "Ned Ludd"
+ },
{
"id": "form.nojs",
"text": "JS required to help prevent bots.",
@@ -182,9 +206,7 @@
},
{
"id": "signin.submit",
- "text": "Send me a link",
- "original": "Send me a link",
- "edited": false
+ "text": "Continue"
},
{
"id": "signin.title",
diff --git a/copy-review/result.json b/copy-review/result.json
new file mode 100644
index 0000000..e877a51
--- /dev/null
+++ b/copy-review/result.json
@@ -0,0 +1 @@
+{"action":"approve","guidance":null,"strings":[{"id":"form.name","text":"Your name","original":"Your name","edited":false},{"id":"form.name.placeholder.never","text":"Ned Ludd","original":"Ned Ludd","edited":false},{"id":"form.name.placeholder.curious","text":"John Cagey","original":"John Cagey","edited":false},{"id":"form.name.placeholder.enthusiast","text":"Max Tokens","original":"Max Tokens","edited":false},{"id":"form.badname","text":"We need something to call you.","original":"We need something to call you.","edited":false},{"id":"admin.col.name","text":"Name","original":"Name","edited":false},{"id":"signin.submit","text":"Continue","original":"Continue","edited":false}]}
\ No newline at end of file
diff --git a/copy-review/server.log b/copy-review/server.log
index e8cab15..63c45da 100644
--- a/copy-review/server.log
+++ b/copy-review/server.log
@@ -1,3 +1,5 @@
REVIEW_URL: http://docs-t1.tail5fd3ba.ts.net:41343
REVIEW_URL_FALLBACK: http://100.119.180.57:41343
Copy review running
+Result written to copy-review/result.json
+Exiting: review submitted
diff --git a/internal/movement/copy.go b/internal/movement/copy.go
index e06ddd9..042ce15 100644
--- a/internal/movement/copy.go
+++ b/internal/movement/copy.go
@@ -56,11 +56,11 @@ var table = map[string]entry{
"tear.instruction": {"Take the one that's yours.", false},
// Awaiting review: the name field, added 2026-09-03.
- "form.name": {"PLACEHOLDER name label", true},
- "form.name.placeholder.never": {"PLACEHOLDER never name", true},
- "form.name.placeholder.curious": {"PLACEHOLDER curious name", true},
- "form.name.placeholder.enthusiast": {"PLACEHOLDER enthusiast name", true},
- "form.badname": {"PLACEHOLDER we need something to call you", true},
+ "form.name": {"Your name", false},
+ "form.name.placeholder.never": {"Ned Ludd", false},
+ "form.name.placeholder.curious": {"John Cagey", false},
+ "form.name.placeholder.enthusiast": {"Max Tokens", false},
+ "form.badname": {"We need something to call you.", false},
// The form.
"form.email": {"Your email address", false},
@@ -88,7 +88,7 @@ var table = map[string]entry{
// Admin.
"signin.title": {"Sign in", false},
- "signin.submit": {"PLACEHOLDER signin button", true},
+ "signin.submit": {"Continue", false},
"signin.sent": {"If that address can sign in, there's a link on its way to it.", false},
"admin.title": {"Signups", false},
"admin.confirmed": {"confirmed", false},
@@ -96,7 +96,7 @@ var table = map[string]entry{
"admin.export": {"Download CSV", false},
"admin.empty": {"Nobody has confirmed yet.", false},
"admin.signout": {"Sign out", false},
- "admin.col.name": {"PLACEHOLDER name column", true},
+ "admin.col.name": {"Name", false},
"admin.col.email": {"Email", false},
"admin.col.stance": {"Stance", false},
"admin.col.when": {"Confirmed", false},