carlos / platform Public

docs: fleets v2 — spec grammar as shipped, region-pi pointer, status

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Paul Campbell d52edf4e2188f0351ede09fc30871fe771b8625e parent a168726
2 files changed, +11 −2
  • docs/superpowers/specs/2026-08-10-fleets-console-design.md +5 −2
  • infra/dev/region-pi.md +6 −0
diff --git a/docs/superpowers/specs/2026-08-10-fleets-console-design.md b/docs/superpowers/specs/2026-08-10-fleets-console-design.md
index e990b4df8..8d04feed0 100644
--- a/docs/superpowers/specs/2026-08-10-fleets-console-design.md
+++ b/docs/superpowers/specs/2026-08-10-fleets-console-design.md
@@ -2,7 +2,8 @@
**Date:** 2026-08-10
**Status:** Draft — designed autonomously from Paul's 2026-08-10 brief; decisions
-flagged **[Paul]** need his eyes before this is treated as approved.
+flagged **[Paul]** need his eyes before this is treated as approved. D1-D8 are
+implemented on branch `worktree-fleets-v2`, pending Paul's review.
**Depends on:** `2026-08-05-customer-fleets-design.md` (v1, PR #63 — this work
stacks on branch `worktree-customer-fleets` and merges after it).
**Related issues:** #73 (fleet API surface), #123/#130 (route records, PR #137).
@@ -78,7 +79,9 @@ account: count with `Region == ""` vs per-fleet).
ALTER TABLE fleet_boxes ADD COLUMN tags TEXT NOT NULL DEFAULT '';
```
-Comma-separated, each tag `^[a-z0-9-]{1,24}$`, max 8 tags. Rows written
+Comma-separated, each tag `^[a-z0-9]([a-z0-9-]{0,22}[a-z0-9])?$` — lowercase
+`[a-z0-9-]`, 1-24 chars, hyphens interior only (leading/trailing hyphen
+rejected; Task 1 review ruling) — max 8 tags. Rows written
before the change parse unchanged (empty = untagged). `rev` bumps on tag
writes so the fingerprint/edge poll sees them (display-only today, but the
column must not be invisible to convergence when placement filters arrive).
diff --git a/infra/dev/region-pi.md b/infra/dev/region-pi.md
index 07cad7a9c..d0f48c86f 100644
--- a/infra/dev/region-pi.md
+++ b/infra/dev/region-pi.md
@@ -8,6 +8,12 @@ OS: 64-bit Raspberry Pi OS Lite — MANDATORY. Hosts pick release artifacts
by GOOS-GOARCH; this Pi resolves linux-arm64, the same artifact the
Graviton fleet runs. 32-bit resolves nothing.
+Fleet boxes are now first-class in the console: the account Fleet tab
+(`/a/{sqid}/fleet`) lists registered fleets and their boxes (with tags), and
+`/a/{sqid}/fleet/byo` is the canonical box-add + hardening instructions —
+prefer it over hand-assembling the steps below when walking someone else
+through joining a box.
+
Follow infra/remote-host.md with these dev-platform values:
- Tofu: the customer root lives in `paulca/pi-fleet` (private), consuming