spec: step A is done — Eleven serves from Carloku's shared fleet
proving.bdr.oncarlos.com serves Eleven's app shell over HTTPS, on a binary shipped through carlos, with no infrastructure created for it. Recorded in the spec: the exact command path, which of phase 1's proofs it closes, and two findings. Proofs closed. 1 (release delivery): deploy shipped ffd3de0 and promoted it to edge; the reconcile pass materialised the route and the edge stamps x-carlos-version: ffd3de0. 2 (manifest shape): instances enable pinned the app to bdr.oncarlos.com and the one-label rule held. 3 (the product runs on CARLOS): the box logs lchat listening on unix:/run/carlos/proving.bdr.oncarlos.com.sock, and the served page carries Eleven's own CSP — connect-src naming home.elevenmessenger.com — not a platform placeholder. Signing in and creating a space is the remaining half and needs a person. Hibernation worked with nothing configured for it: the record went Setting up → serving → Asleep on its own. Two findings carried into the spec: - The admin link names the wrong host. lchat prints http://localhost:1747/admin#token=... on first boot because it only ever knew a socket, so an operator must hand-edit the host. Tedious across 31 hosts and a trap for anyone pasting it as printed. - The architecture defaults disagree. carlos ship/deploy default --target linux-arm64; Eleven's committed binary is lchat-linux-amd64 and build-linux.sh defaults ARCH=amd64. Nothing catches it until the box tries to exec. Docs-only change; go build ./... and gofmt -l . both clean.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NPZAr4Cvqr8enLymeNo2Qp
1 file changed,
+49
−0
docs/superpowers/specs/2026-08-29-eleven-carloku-migration-design.md+49 −0
CI passed — run details
diff --git a/docs/superpowers/specs/2026-08-29-eleven-carloku-migration-design.md b/docs/superpowers/specs/2026-08-29-eleven-carloku-migration-design.md| index 700c8fce5..0820a4f74 100644 |
| --- a/docs/superpowers/specs/2026-08-29-eleven-carloku-migration-design.md |
| +++ b/docs/superpowers/specs/2026-08-29-eleven-carloku-migration-design.md |
| @@ -178,6 +178,55 @@ reach: sidecars (proof 4) and the disposition of `lchat router`'s hooks and |
| links (proof 5), both of which want a box Eleven controls. Everything from |
| "The infrastructure already exists in the right shape" onward is step B. |
| +### Step A is done — 2026-09-05 |
| + |
| +Eleven runs on Carloku. `proving.bdr.oncarlos.com` serves Eleven's app shell |
| +over HTTPS from the shared fleet, on a binary shipped through `carlos`. |
| + |
| +The whole path, for the record: |
| + |
| + ARCH=arm64 ./deploy/build-linux.sh # in Eleven's repo → lchat-linux-arm64 |
| + carlos apps create --account eleven --app proving |
| + carlos deploy --account eleven --app proving --target linux-arm64 \ |
| + --version ffd3de0 lchat-linux-arm64 |
| + carlos instances enable --account eleven --app proving |
| + carlos instances create --account eleven --app proving \ |
| + --host proving.bdr.oncarlos.com --channel edge |
| + |
| +**What that proves.** |
| + |
| +- **Proof 1, release delivery, end to end.** `deploy` shipped `ffd3de0` and |
| + promoted it to `edge`; the box's reconcile pass materialised the route and |
| + the adopt installed the binary. The edge stamps `x-carlos-version: ffd3de0`. |
| +- **Proof 2, the manifest shape.** `instances enable` pinned the app to |
| + `bdr.oncarlos.com` and the one-label rule held: `proving` is one label under |
| + the account's platform subdomain, and the console checked the host against |
| + the manifest before minting the record. |
| +- **Proof 3, the product runs on CARLOS.** The box logs |
| + `lchat listening on unix:/run/carlos/proving.bdr.oncarlos.com.sock |
| + (db: /data/proving.bdr.oncarlos.com.db)`, and the served page carries |
| + Eleven's own CSP — `connect-src` naming `home.elevenmessenger.com`, the |
| + giphy and youtube-nocookie sources — not a platform placeholder. Signing in |
| + and creating a space is the remaining half of this proof and needs a person. |
| +- **Hibernation works, unprompted.** The record read `Setting up`, then served, |
| + then went to `Asleep` on its own. The instance woke for a request and slept |
| + again with nothing configured for it. |
| + |
| +**Two findings worth carrying.** |
| + |
| +1. **The admin link names the wrong host.** On first boot lchat prints |
| + `http://localhost:1747/admin#token=…` because it has no idea what hostname |
| + fronts it — it only ever knew a socket. An operator has to hand-edit the |
| + host before the link works. Harmless once, tedious across 31 hosts, and a |
| + trap for anyone who pastes it as printed. Worth a fix in Eleven: derive the |
| + link's origin from a public-host env var when one is set. |
| + |
| +2. **The architecture default is a real trip hazard.** `carlos ship` and |
| + `carlos deploy` default `--target linux-arm64`; Eleven's committed binary is |
| + `lchat-linux-amd64` and its `build-linux.sh` defaults `ARCH=amd64`. The two |
| + defaults disagree, and nothing catches it until the box tries to exec the |
| + binary. Eleven's build matrix should produce arm64 for Carloku. |
| + |
| ### Step B — the proving box |
| **The infrastructure already exists in the right shape.** `infra/dev-mesh/` in |