Merge pull request #122 from carlosframework/claude-md-small-things
CLAUDE.md: deploy reality after the small-things batch
1 file changed,
+21
−9
CLAUDE.md+21 −9
diff --git a/CLAUDE.md b/CLAUDE.md| index 78fbb0c81..55fc89614 100644 |
| --- a/CLAUDE.md |
| +++ b/CLAUDE.md |
| @@ -49,8 +49,9 @@ deliver or verify its result. |
| ## Build & test |
| -- `go build ./...`, `go vet ./...`, `go test ./... -count=1` — all clean, all |
| - 18 packages, before any commit lands. |
| +- `go build ./...`, `go vet ./...`, `go test ./... -count=1` — all clean, |
| + every package (21 as of 2026-08-08; the count grows), before any commit |
| + lands. |
| - `gofmt -l` clean for files you touch (three pre-existing unformatted files |
| elsewhere are left alone). |
| - `.github/workflows/ci.yml` runs that same gate on every PR, plus a |
| @@ -106,10 +107,21 @@ deliver or verify its result. |
| form: ship → promote → wait until `X-Carlos-Version` on the URL reports the |
| shipped build over 2xx. Verify deploys with that header (`curl -sI |
| --resolve`), never a cached answer. |
| -- **Consoles still need their manual restart** (`systemctl restart |
| - console.service`, both boxes): they are addr-backed routes with bespoke |
| - units, which the adopt pass's restart dispatch cannot cycle — and until the |
| - restart, the route-table header claims the adopted build while the old |
| - process serves (issue #110). Promote → adopt (seconds now) → restart, as |
| - ever, for console-style routes; ordinary unit/exec tenants restart |
| - themselves. |
| +- **Console restarts: manual until the route is unit-stamped** (#110, fixed |
| + in main 916cd6b, not yet rolled). Routes can now name the systemd unit that |
| + owns their process (`carlos route -registry /data/registry.db -host |
| + <console-host> -unit console.service`, run as carlos, not root); a stamped |
| + route is cycled by adoption itself, and a failed named-unit restart rolls |
| + the adoption back instead of stamping a lying header. Until a box runs |
| + 916cd6b+ AND its console row is stamped, the old rule stands: promote → |
| + adopt → `systemctl restart console.service`, and the header overclaims |
| + until the restart. Ordinary unit/exec tenants restart themselves either way. |
| +- **`carlos restart -app X`** (#113, merged 916cd6b, live after the same |
| + roll): member-facing process cycle with no version or config change — |
| + console door touches `apps/<acct>/<app>/restart-gen.json` + bumps the |
| + serial; boxes act on the serial move (exec children bounced in-process, |
| + unit-shaped routes via root `carlos adopt -restart-only` through |
| + `carlos-restart.path`, which update-platform-binary.sh arms since pinfra |
| + PR #10). Hibernating instances are never woken. Static routes carry |
| + `X-Carlos-Version` from the same roll (#112), so `carlos deploy -kind |
| + static -host <site>` verifies static sites too. |