carlos / platform Public

Merge pull request #122 from carlosframework/claude-md-small-things

CLAUDE.md: deploy reality after the small-things batch
Paul Campbell 332aecafb08b719b3069b90d541e7788f0bd8967 parent 916cd6bparent 29f9768
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.