carlos / platform Public

settings-4: apply Paul's approved copy for the settings.box strings

All ten settings.box.* drafts approved unchanged on 2026-10-12; the
approved record is docs/superpowers/plans/2026-10-07-instance-settings-4-copy.json
and TestApprovedCopyIsApplied pins it. TODO-COPY markers removed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude agent, operated by paul@keymail.dev 9d7cdee25933bdd79f8d30179090ae0601556f6b parent 33fc55f
3 files changed, +19 −2
  • docs/superpowers/plans/2026-10-07-instance-settings-4-copy.json +16 −0
  • internal/activator/logsink.go +1 −1
  • internal/updatewords/words_box.go +2 −1
diff --git a/docs/superpowers/plans/2026-10-07-instance-settings-4-copy.json b/docs/superpowers/plans/2026-10-07-instance-settings-4-copy.json
new file mode 100644
index 000000000..a19fa1f1d
--- /dev/null
+++ b/docs/superpowers/plans/2026-10-07-instance-settings-4-copy.json
@@ -0,0 +1,16 @@
+{
+ "approved_by": "Paul",
+ "approved_on": "2026-10-12",
+ "entries": [
+ {"id": "settings.box.reason.adopt", "file": "internal/updatewords/words_box.go", "text": "following its channel"},
+ {"id": "settings.box.reason.pin", "file": "internal/updatewords/words_box.go", "text": "pinned to %s"},
+ {"id": "settings.box.reason.request", "file": "internal/updatewords/words_box.go", "text": "updating to %s (Update now)"},
+ {"id": "settings.box.reason.manual", "file": "internal/updatewords/words_box.go", "text": "manual updates: stays on %s"},
+ {"id": "settings.box.reason.major", "file": "internal/updatewords/words_box.go", "text": "held at major %d: stays on %s"},
+ {"id": "settings.box.reason.unknown", "file": "internal/updatewords/words_box.go", "text": "build unknown: use Update now or set a pin"},
+ {"id": "settings.box.reason.new", "file": "internal/updatewords/words_box.go", "text": "new instance: takes the channel's build"},
+ {"id": "settings.box.reason.baking", "file": "internal/updatewords/words_box.go", "text": "Update now waits for %s to finish its safety delay on this box"},
+ {"id": "settings.box.reason.failed", "file": "internal/updatewords/words_box.go", "text": "%s failed on this box, so it is not installed"},
+ {"id": "settings.box.request-failed", "file": "internal/updatewords/words_box.go", "text": "Update now to %s failed: the instance stayed on its previous build"}
+ ]
+}
diff --git a/internal/activator/logsink.go b/internal/activator/logsink.go
index 9256a744e..47d8a3d00 100644
--- a/internal/activator/logsink.go
+++ b/internal/activator/logsink.go
@@ -52,7 +52,7 @@ var absPathToken = regexp.MustCompile(`(^|[\s"(=])(/[\w@.\-/]+)`)
func memberSafeWakeReason(err error) string {
// The held wake check's refusals (settings spec §4.3 rule 3; ruling
// R-WAKEWORDS). Unknown and failed need the member's action, so they get
- // the settings words (drafts, TODO-COPY until approved; R-COPY). A wait
+ // the settings words (approved copy, settings plan 4). A wait
// for root that ran out, or a repoint after it, is the platform's own
// work and reopens by itself: the fence's existing wording.
if errors.Is(err, errBuildUnknown) {
diff --git a/internal/updatewords/words_box.go b/internal/updatewords/words_box.go
index 86934e875..69acbfbae 100644
--- a/internal/updatewords/words_box.go
+++ b/internal/updatewords/words_box.go
@@ -1,7 +1,8 @@
package updatewords
func init() {
- // TODO-COPY: draft, awaiting Paul's copy review (settings plan 4)
+ // Approved by Paul on 2026-10-12, unchanged from the drafts
+ // (docs/superpowers/plans/2026-10-07-instance-settings-4-copy.json).
add(
Draft{ID: "settings.box.reason.adopt", Text: "following its channel", Context: "Why an instance runs the build it does: it takes its channel's builds as they arrive. Shown in carlos instances list and on the instance page."},
Draft{ID: "settings.box.reason.pin", Text: "pinned to %s", Context: "The instance is pinned. %s is the build."},