carlos / platform Public

changelog-v0.28.0: release step 10 for v0.28.0, plus the darwin/windows vet fix for claimunit_inputs_test.go

Squashed from changelog-v0.28.0 into main.
claude agent, operated by paul@keymail.dev 04819f9b42ed6767d816bdfecd53490407ee20bb parent 2606537
3 files changed, +460 −0
  • docs/site/changelog-links.json +24 −0
  • docs/site/changelog.json +434 −0
  • internal/host/claimunit_inputs_test.go +2 −0

CI failed — run details

CI log
=== gate ===
cd launchctx && go vet ./... && go test ./... -count=1
ok  	amadan.net/carlos/platform.git/launchctx	0.011s
?   	amadan.net/carlos/platform.git/launchctx/controlname	[no test files]
?   	amadan.net/carlos/platform.git/launchctx/wireid	[no test files]
go vet ./...
gofmt -l .: clean
go test ./... -count=1 -timeout 30m
ok  	github.com/carlosframework/platform	300.044s
?   	github.com/carlosframework/platform/cmd/changelog	[no test files]
ok  	github.com/carlosframework/platform/cmd/console	2.642s
ok  	github.com/carlosframework/platform/cmd/moveprobe	92.204s
ok  	github.com/carlosframework/platform/cmd/zddprobe	0.711s
ok  	github.com/carlosframework/platform/internal/activator	250.452s
ok  	github.com/carlosframework/platform/internal/agentsock	0.018s
ok  	github.com/carlosframework/platform/internal/alerting	0.003s
ok  	github.com/carlosframework/platform/internal/analytics	0.021s
ok  	github.com/carlosframework/platform/internal/appconfig	2.442s
ok  	github.com/carlosframework/platform/internal/apperr	0.071s
ok  	github.com/carlosframework/platform/internal/applog	0.124s
ok  	github.com/carlosframework/platform/internal/awsinv	0.003s
ok  	github.com/carlosframework/platform/internal/boxchoice	0.004s
ok  	github.com/carlosframework/platform/internal/boxid	0.817s
?   	github.com/carlosframework/platform/internal/boxid/boxidtest	[no test files]
?   	github.com/carlosframework/platform/internal/boxid/internal/signtest	[no test files]
ok  	github.com/carlosframework/platform/internal/boxvolumes	0.008s
ok  	github.com/carlosframework/platform/internal/caps	0.013s
ok  	github.com/carlosframework/platform/internal/certwarm	0.002s
ok  	github.com/carlosframework/platform/internal/cgroup	0.699s
ok  	github.com/carlosframework/platform/internal/changelog	0.312s
ok  	github.com/carlosframework/platform/internal/claimactivation	0.024s
ok  	github.com/carlosframework/platform/internal/clamd	0.054s
?   	github.com/carlosframework/platform/internal/cliflag	[no test files]
ok  	github.com/carlosframework/platform/internal/console	402.627s
?   	github.com/carlosframework/platform/internal/controlname	[no test files]
?   	github.com/carlosframework/platform/internal/controlsock	[no test files]
ok  	github.com/carlosframework/platform/internal/dbdoor	6.276s
ok  	github.com/carlosframework/platform/internal/dbdoor/dbdoortest	0.009s
ok  	github.com/carlosframework/platform/internal/dbverify	0.005s
ok  	github.com/carlosframework/platform/internal/dnsrec	0.002s
ok  	github.com/carlosframework/platform/internal/docsite	0.005s
ok  	github.com/carlosframework/platform/internal/domains	2.331s
ok  	github.com/carlosframework/platform/internal/doorkey	0.006s
ok  	github.com/carlosframework/platform/internal/economics	0.003s
ok  	github.com/carlosframework/platform/internal/edge	44.701s
?   	github.com/carlosframework/platform/internal/edgeproof	[no test files]
ok  	github.com/carlosframework/platform/internal/edgesfile	0.008s
ok  	github.com/carlosframework/platform/internal/fleetapi	0.133s
ok  	github.com/carlosframework/platform/internal/gate	1.655s
ok  	github.com/carlosframework/platform/internal/genselect	0.018s
ok  	github.com/carlosframework/platform/internal/geo	0.015s
ok  	github.com/carlosframework/platform/internal/geoip	0.029s
ok  	github.com/carlosframework/platform/internal/historyreadback	0.150s
ok  	github.com/carlosframework/platform/internal/host	172.847s
ok  	github.com/carlosframework/platform/internal/hostactors	0.484s
ok  	github.com/carlosframework/platform/internal/hostbox	2.598s
ok  	github.com/carlosframework/platform/internal/hostclaim	0.574s
ok  	github.com/carlosframework/platform/internal/hostevidence	0.007s
ok  	github.com/carlosframework/platform/internal/hostexec	4.708s
ok  	github.com/carlosframework/platform/internal/hostfence	0.042s
ok  	github.com/carlosframework/platform/internal/hostfiles	10.448s
ok  	github.com/carlosframework/platform/internal/hostfloor	0.013s
ok  	github.com/carlosframework/platform/internal/hostguard	1.030s
ok  	github.com/carlosframework/platform/internal/hostops	1.575s
?   	github.com/carlosframework/platform/internal/hostops/fencerelease	[no test files]
ok  	github.com/carlosframework/platform/internal/hostops/internal/fencerelease	0.015s
ok  	github.com/carlosframework/platform/internal/hostquarantine	0.015s
ok  	github.com/carlosframework/platform/internal/hostrelocate	0.487s
ok  	github.com/carlosframework/platform/internal/hostresolve	0.144s
ok  	github.com/carlosframework/platform/internal/hostwrite	0.014s
ok  	github.com/carlosframework/platform/internal/infraview	0.014s
ok  	github.com/carlosframework/platform/internal/instancectl	5.220s
ok  	github.com/carlosframework/platform/internal/instanceexec	2.742s
ok  	github.com/carlosframework/platform/internal/instancefs	0.014s
ok  	github.com/carlosframework/platform/internal/instancekey	0.014s
ok  	github.com/carlosframework/platform/internal/instanceupdates	0.015s
ok  	github.com/carlosframework/platform/internal/layout	1.538s
ok  	github.com/carlosframework/platform/internal/lbhealth	0.020s
ok  	github.com/carlosframework/platform/internal/lease	9.814s
ok  	github.com/carlosframework/platform/internal/lease/leasetest	0.008s
ok  	github.com/carlosframework/platform/internal/ledger	0.011s
ok  	github.com/carlosframework/platform/internal/mail	0.162s
ok  	github.com/carlosframework/platform/internal/maintenance	0.084s
ok  	github.com/carlosframework/platform/internal/maintenanceexec	5.492s
ok  	github.com/carlosframework/platform/internal/maintenanceguard	0.075s
ok  	github.com/carlosframework/platform/internal/metrics	0.006s
ok  	github.com/carlosframework/platform/internal/moves	21.153s
ok  	github.com/carlosframework/platform/internal/moves/archive	0.782s
ok  	github.com/carlosframework/platform/internal/objstore	0.200s
ok  	github.com/carlosframework/platform/internal/ops	0.180s
ok  	github.com/carlosframework/platform/internal/park	0.220s
ok  	github.com/carlosframework/platform/internal/privatefile	0.005s
ok  	github.com/carlosframework/platform/internal/provision	16.655s
ok  	github.com/carlosframework/platform/internal/publicrelease	0.006s
?   	github.com/carlosframework/platform/internal/regionname	[no test files]
ok  	github.com/carlosframework/platform/internal/registry	5.401s
ok  	github.com/carlosframework/platform/internal/relay	7.230s
ok  	github.com/carlosframework/platform/internal/release	21.928s
--- FAIL: TestAMoveOntoTheInstalledGoodBuildWaitsForASignedRollback (5.03s)
    --- FAIL: TestAMoveOntoTheInstalledGoodBuildWaitsForASignedRollback/socket_instance (5.02s)
        holdran_test.go:796: timed out waiting for the move onto v1
FAIL
FAIL	github.com/carlosframework/platform/internal/rollout	8.615s
ok  	github.com/carlosframework/platform/internal/rolloutwords	0.008s
ok  	github.com/carlosframework/platform/internal/rootaws	0.010s
ok  	github.com/carlosframework/platform/internal/rootparticipation	0.057s
ok  	github.com/carlosframework/platform/internal/rootstate	0.027s
ok  	github.com/carlosframework/platform/internal/runs	0.577s
ok  	github.com/carlosframework/platform/internal/s3compat	0.004s
ok  	github.com/carlosframework/platform/internal/safefile	0.004s
ok  	github.com/carlosframework/platform/internal/schedule	2.485s
ok  	github.com/carlosframework/platform/internal/seeds	0.010s
ok  	github.com/carlosframework/platform/internal/sim/hostlife	8.579s
ok  	github.com/carlosframework/platform/internal/sim/litestreamfacts	3.521s
ok  	github.com/carlosframework/platform/internal/status	0.047s
ok  	github.com/carlosframework/platform/internal/steering	0.006s
ok  	github.com/carlosframework/platform/internal/stopevidence	0.364s
ok  	github.com/carlosframework/platform/internal/svcrole	0.001s
ok  	github.com/carlosframework/platform/internal/telemetry	0.003s
ok  	github.com/carlosframework/platform/internal/termfence	0.004s
ok  	github.com/carlosframework/platform/internal/tunnelclient	0.004s
ok  	github.com/carlosframework/platform/internal/unixdial	0.002s
ok  	github.com/carlosframework/platform/internal/updatewords	0.004s
ok  	github.com/carlosframework/platform/internal/usage	0.006s
ok  	github.com/carlosframework/platform/internal/version	0.002s
ok  	github.com/carlosframework/platform/internal/vet	1.547s
FAIL
make: *** [Makefile:18: test] Error 1

amadan: step gate failed: exit status 2

amadan: job failed at step gate — its output is above, not at the tail of this log
diff --git a/docs/site/changelog-links.json b/docs/site/changelog-links.json
index 6d3db635a..6aad62c18 100644
--- a/docs/site/changelog-links.json
+++ b/docs/site/changelog-links.json
@@ -1,5 +1,29 @@
{
"//": "For the changelog: each release-note bullet's bold lead, mapped to the branches behind it. Kept by hand, one release at a time, as step 10 of the release recipe in the README. go run ./cmd/changelog fails on a lead no bullet has, or a branch that did not land in that release.",
+ "v0.28.0": {
+ "`carlos run` runs one of your app's commands against one instance.": [
+ "carlos-run"
+ ],
+ "New instances can start from a copy of another instance's database.": [
+ "seeded-instances"
+ ],
+ "The download is smaller again.": [
+ "fix-binary-size-275"
+ ],
+ "Roll the boxes first, then every console.": [
+ "carlos-run"
+ ],
+ "Give the console room for run uploads.": [
+ "carlos-run"
+ ],
+ "Seeded instances stay off until you publish the seeds floor.": [
+ "seeded-instances"
+ ],
+ "The host claim is still off.": [
+ "feat/claim-root-trusted-state-p3",
+ "feat/claim-files-backfill"
+ ]
+ },
"v0.27.3": {
"Restarting the edge no longer leaves an instance unreachable for 15 minutes.": [
"fix-shutdown-lease-292"
diff --git a/docs/site/changelog.json b/docs/site/changelog.json
index 308e82baa..d2b0bf5bd 100644
--- a/docs/site/changelog.json
+++ b/docs/site/changelog.json
@@ -2,6 +2,440 @@
"//": "Generated by go run ./cmd/changelog from git, the published release notes and Amadan. Do not edit; regenerate.",
"repo": "https://amadan.net/carlos/platform",
"releases": [
+ {
+ "tag": "v0.28.0",
+ "date": "2026-10-17",
+ "sha": "260653783857088d6ba940101191c599974f8caa",
+ "published": true,
+ "notes_url": "https://github.com/carlosframework/releases/releases/tag/v0.28.0",
+ "notes": {
+ "form": "bullets",
+ "sections": [
+ {
+ "title": "",
+ "bullets": [
+ {
+ "md": "**`carlos run` runs one of your app's commands against one instance.** `carlos run --app shop --instance www.example.com -- <command>` runs it as that instance, with its environment and database, and prints the output as it arrives. `--file` uploads files with the run, up to 64 MB in total. `--timeout` sets how long it may take, 30 minutes by default and up to 6 hours. `--follow <id>` reattaches to a run already started. It needs an instance on the nested layout.",
+ "branches": [
+ "carlos-run"
+ ],
+ "docs": [
+ "/docs/cli#carlos-run"
+ ]
+ },
+ {
+ "md": "**New instances can start from a copy of another instance's database.** `carlos instances create --from <host>` copies the source's replica, so the source keeps serving. `carlos instances import` brings an instance the platform never ran onto it, from a snapshot of its database. Both refuse until your operator turns them on.",
+ "branches": [
+ "seeded-instances"
+ ],
+ "docs": [
+ "/docs/cli#carlos-instances"
+ ]
+ },
+ {
+ "md": "**The download is smaller again.** The linux/arm64 binary is about 46 MB, down from about 78 MB.",
+ "branches": [
+ "fix-binary-size-275"
+ ]
+ },
+ {
+ "md": "**Nothing else changes for people using the CLI.**"
+ }
+ ]
+ },
+ {
+ "title": "For operators",
+ "bullets": [
+ {
+ "md": "**Roll the boxes first, then every console.** A run is refused until the console that records it is on this release.",
+ "branches": [
+ "carlos-run"
+ ]
+ },
+ {
+ "md": "**Coming from v0.26.x, read the [v0.27.0](https://github.com/carlosframework/releases/releases/tag/v0.27.0) to [v0.27.3](https://github.com/carlosframework/releases/releases/tag/v0.27.3) operator notes first.** They all still apply."
+ },
+ {
+ "md": "**Instance control restarts with this update.** `carlos system update` does that on its own. A box updated any other way needs `systemctl restart carlos-instance-control` afterwards.",
+ "docs": [
+ "/docs/cli#carlos-system"
+ ]
+ },
+ {
+ "md": "**Give the console room for run uploads.** The console holds a run's uploaded files, up to 64 MB per run, in its temporary directory until the box takes them.",
+ "branches": [
+ "carlos-run"
+ ]
+ },
+ {
+ "md": "**Seeded instances stay off until you publish the seeds floor.** `carlos instances create --from` and `carlos instances import` refuse until `carlos system seeds-floor publish` names a release every box runs. Publishing it is one way: from then on no box recovers to an older build. Leave it unpublished until you have decided to turn seeding on.",
+ "branches": [
+ "seeded-instances"
+ ],
+ "docs": [
+ "/docs/cli#carlos-instances",
+ "/docs/cli#carlos-system"
+ ]
+ },
+ {
+ "md": "**The host claim is still off.** This release carries the claim's protected host state and the `carlos system claims` activation commands, but nothing uses them while `CARLOS_HOST_CLAIM` is unset. Errors from a route that has no app are now filed so the claim's checks can read the bucket.",
+ "branches": [
+ "feat/claim-root-trusted-state-p3",
+ "feat/claim-files-backfill"
+ ],
+ "docs": [
+ "/docs/cli#carlos-system-claims"
+ ]
+ },
+ {
+ "md": "**Every dormant switch stays off.** Leave `CARLOS_SWAP`, `CARLOS_MOVES_PHASE1`, `CARLOS_HOST_CLAIM`, `CARLOS_HOST_CLAIM_ORIGINS`, `CARLOS_HOST_CLAIM_RETIRED_LOCATIONS`, `CARLOS_CONSOLE_ID`, `CARLOS_REGION_HA`, `CONSOLE_APP_REGIONS`, `CARLOS_TEMPORARY_APPS` and `CARLOS_REQUIRE_POINTER_DIGEST` unset, and don't run `carlos channels digests on`.",
+ "docs": [
+ "/docs/cli#carlos-channels-digests"
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "changes": [
+ {
+ "sha": "260653783857088d6ba940101191c599974f8caa",
+ "date": "2026-10-17",
+ "subject": "WIP claim Plan 14 foundations (not for merge): descriptor-backed root state, root-owned D3 health history, release lock, floor reconstruction and migration preflight helpers, constructor census, root-read census with the legacy freeze",
+ "branch": "feat/claim-root-trusted-state-p3",
+ "branch_url": "https://amadan.net/carlos/platform/-/branch/feat%2Fclaim-root-trusted-state-p3",
+ "commits": 102,
+ "docs": [
+ "/docs/cli#carlos-proof-history",
+ "/docs/cli#carlos-system-claims"
+ ],
+ "credit": [
+ {
+ "person": "Paul Campbell",
+ "agents": [
+ "claude",
+ "codex"
+ ]
+ }
+ ]
+ },
+ {
+ "sha": "6834659c9f0d5453051902c72ca24539562cd010",
+ "date": "2026-10-16",
+ "subject": "region HA spec 2 (two-box regions), rev 1 draft, and its Astra brief",
+ "branch": "region-ha-2a-build",
+ "branch_url": "https://amadan.net/carlos/platform/-/branch/region-ha-2a-build",
+ "commits": 63,
+ "discussions": [
+ {
+ "id": 299,
+ "title": "Provider-neutral box identity, so multi-box regions work without AWS",
+ "state": "open"
+ }
+ ],
+ "docs": [
+ "/docs/cli#box-and-group-roles"
+ ],
+ "credit": [
+ {
+ "person": "Paul Campbell",
+ "agents": [
+ "claude"
+ ]
+ }
+ ]
+ },
+ {
+ "sha": "e8e961dd423f03399ec7922f3cd7100defb0af62",
+ "date": "2026-10-16",
+ "subject": "fix-empty-app-key",
+ "branch": "fix-empty-app-key",
+ "branch_url": "https://amadan.net/carlos/platform/-/branch/fix-empty-app-key",
+ "commits": 1,
+ "credit": [
+ {
+ "person": "Paul Campbell",
+ "agents": [
+ "claude"
+ ]
+ }
+ ]
+ },
+ {
+ "sha": "e963691d5571fcca926a454d7c485657681c4fcc",
+ "date": "2026-10-16",
+ "subject": "runbook-home2-sha",
+ "branch": "runbook-home2-sha",
+ "branch_url": "https://amadan.net/carlos/platform/-/branch/runbook-home2-sha",
+ "commits": 1,
+ "credit": [
+ {
+ "person": "Paul Campbell",
+ "agents": [
+ "claude"
+ ]
+ }
+ ]
+ },
+ {
+ "sha": "a89e35caaf969492d10d93c556a2ef303f2bc679",
+ "date": "2026-10-16",
+ "subject": "moves-home-part2-plan",
+ "branch": "moves-home-part2-plan",
+ "branch_url": "https://amadan.net/carlos/platform/-/branch/moves-home-part2-plan",
+ "commits": 1,
+ "credit": [
+ {
+ "person": "Paul Campbell",
+ "agents": [
+ "claude"
+ ]
+ }
+ ]
+ },
+ {
+ "sha": "ee35dee27b68a2280d69d4954154e67e75f699bd",
+ "date": "2026-10-16",
+ "subject": "Prompts:",
+ "branch": "feat/claim-files-backfill",
+ "branch_url": "https://amadan.net/carlos/platform/-/branch/feat%2Fclaim-files-backfill",
+ "commits": 32,
+ "discussions": [
+ {
+ "id": 250,
+ "title": "Host floor guard: fix these before anyone runs guard-arm (Opus review of Plans 8/8b)",
+ "state": "open"
+ }
+ ],
+ "credit": [
+ {
+ "person": "Paul Campbell",
+ "agents": [
+ "claude"
+ ]
+ }
+ ]
+ },
+ {
+ "sha": "70e57449fc8d8106e8e5ef729cc5df85f84ad7be",
+ "date": "2026-10-15",
+ "subject": "moves-overcap-cut",
+ "branch": "moves-overcap-cut",
+ "branch_url": "https://amadan.net/carlos/platform/-/branch/moves-overcap-cut",
+ "commits": 1,
+ "credit": [
+ {
+ "person": "Paul Campbell",
+ "agents": [
+ "claude"
+ ]
+ }
+ ]
+ },
+ {
+ "sha": "a5003aba7b1786e96073d6d23438a40c042c3c03",
+ "date": "2026-10-15",
+ "subject": "docs-rehearsal-dev-uk-secrets-key",
+ "branch": "docs-rehearsal-dev-uk-secrets-key",
+ "branch_url": "https://amadan.net/carlos/platform/-/branch/docs-rehearsal-dev-uk-secrets-key",
+ "commits": 1,
+ "credit": [
+ {
+ "person": "Paul Campbell",
+ "agents": [
+ "claude"
+ ]
+ }
+ ]
+ },
+ {
+ "sha": "9f17062aec02421b8c0eb540650754cac778a637",
+ "date": "2026-10-15",
+ "subject": "docs-rehearsal-dev-uk-bootstrap",
+ "branch": "docs-rehearsal-dev-uk-bootstrap",
+ "branch_url": "https://amadan.net/carlos/platform/-/branch/docs-rehearsal-dev-uk-bootstrap",
+ "commits": 1,
+ "credit": [
+ {
+ "person": "Paul Campbell",
+ "agents": [
+ "claude"
+ ]
+ }
+ ]
+ },
+ {
+ "sha": "5f4ace8b841036f273b10ce0eb26430e85a83db0",
+ "date": "2026-10-15",
+ "subject": "hostfiles: the path cap applies to live entries only (LiveEntriesWithinCap), so a manifest written before the cap that holds a tombstone or skipped entry past it stays readable, and a moves recovery that selects it is not stranded (#236, moves' review of a8cebad)",
+ "branch": "hostfiles-cap-live-entries",
+ "branch_url": "https://amadan.net/carlos/platform/-/branch/hostfiles-cap-live-entries",
+ "commits": 16,
+ "discussions": [
+ {
+ "id": 236,
+ "title": "Host claim Plan 8: three decisions for Paul (floor release, declare-lost attestation, actor roster)",
+ "state": "open"
+ },
+ {
+ "id": 250,
+ "title": "Host floor guard: fix these before anyone runs guard-arm (Opus review of Plans 8/8b)",
+ "state": "open"
+ }
+ ],
+ "credit": [
+ {
+ "person": "Paul Campbell",
+ "agents": [
+ "claude"
+ ]
+ }
+ ]
+ },
+ {
+ "sha": "f97898f1224f08f7da5ee4e12d9f39ce04b083a6",
+ "date": "2026-10-15",
+ "subject": "copy gate: the seeded-instances deck, pinned (Plan 1 Task 1)",
+ "branch": "seeded-instances",
+ "branch_url": "https://amadan.net/carlos/platform/-/branch/seeded-instances",
+ "commits": 96,
+ "discussions": [
+ {
+ "id": 292,
+ "title": "Edge restart: the stopping agent recycles an instance and strands its lease for 15 minutes",
+ "state": "closed"
+ }
+ ],
+ "docs": [
+ "/docs/cli#carlos-instances",
+ "/docs/cli#the-seeds-floor",
+ "/docs/cli#legacy-route-assignments"
+ ],
+ "credit": [
+ {
+ "person": "Paul Campbell",
+ "agents": [
+ "claude"
+ ]
+ }
+ ]
+ },
+ {
+ "sha": "37ab10c5fe5937d6b9699cc158669bdb3dc3a1a9",
+ "date": "2026-10-15",
+ "subject": "specs: carlos run (#259) and instances seeded from a database (#260, #261)",
+ "branch": "carlos-run",
+ "branch_url": "https://amadan.net/carlos/platform/-/branch/carlos-run",
+ "commits": 73,
+ "discussions": [
+ {
+ "id": 259,
+ "title": "carlos run: a member runs an app command against one instance, without root on the box",
+ "state": "open"
+ },
+ {
+ "id": 260,
+ "title": "carlos instances create --from <host>: a new instance seeded from another's replica copy (same app, same account)",
+ "state": "open"
+ },
+ {
+ "id": 261,
+ "title": "Schedule the adoption door (instance-moves §9, G9) after the nested-layout rollout: every controld titogo instance converts to platform-run",
+ "state": "open"
+ },
+ {
+ "id": 280,
+ "title": "Root trusts service-writable hostguard and health records under /data (claim root paths)",
+ "state": "open"
+ },
+ {
+ "id": 294,
+ "title": "carlos run: the cmd role is outside #292's start/stop fence in instance control",
+ "state": "open"
+ }
+ ],
+ "docs": [
+ "/docs/cli#carlos-run",
+ "/docs/cli#what-an-instance-is-started-with",
+ "/docs/cli#carlos-instance-exec",
+ "/docs/cli#carlos-instance-exit"
+ ],
+ "credit": [
+ {
+ "person": "Paul Campbell",
+ "agents": [
+ "claude"
+ ]
+ }
+ ]
+ },
+ {
+ "sha": "1c5718f695c72e47bd4a3b13b0abfde49ae765f3",
+ "date": "2026-10-15",
+ "subject": "activator: write a cold wake's build-state record at its exec (#272)",
+ "branch": "zdd-owed-items",
+ "branch_url": "https://amadan.net/carlos/platform/-/branch/zdd-owed-items",
+ "commits": 6,
+ "discussions": [
+ {
+ "id": 250,
+ "title": "Host floor guard: fix these before anyone runs guard-arm (Opus review of Plans 8/8b)",
+ "state": "open"
+ },
+ {
+ "id": 272,
+ "title": "Zero-downtime deploys: owed before CARLOS_SWAP can go on",
+ "state": "open"
+ },
+ {
+ "id": 292,
+ "title": "Edge restart: the stopping agent recycles an instance and strands its lease for 15 minutes",
+ "state": "closed"
+ }
+ ],
+ "credit": [
+ {
+ "person": "Paul Campbell",
+ "agents": [
+ "claude"
+ ]
+ }
+ ]
+ },
+ {
+ "sha": "132cf996ee438fd9760a5920307608559acb9720",
+ "date": "2026-10-14",
+ "subject": "binary-size-275: store SDK method values, not clients, in interfaces; add a size ceiling",
+ "branch": "fix-binary-size-275",
+ "branch_url": "https://amadan.net/carlos/platform/-/branch/fix-binary-size-275",
+ "commits": 3,
+ "credit": [
+ {
+ "person": "Paul Campbell",
+ "agents": [
+ "claude"
+ ]
+ }
+ ]
+ },
+ {
+ "sha": "2683f16acaf7a47124c1140ed53c54fa432e72ea",
+ "date": "2026-10-14",
+ "subject": "Prompts:",
+ "branch": "changelog-v0.27.3",
+ "branch_url": "https://amadan.net/carlos/platform/-/branch/changelog-v0.27.3",
+ "commits": 1,
+ "credit": [
+ {
+ "person": "Paul Campbell",
+ "agents": [
+ "claude"
+ ]
+ }
+ ]
+ }
+ ]
+ },
{
"tag": "v0.27.3",
"date": "2026-10-14",
diff --git a/internal/host/claimunit_inputs_test.go b/internal/host/claimunit_inputs_test.go
index 714a5b5a6..a2c05eaa3 100644
--- a/internal/host/claimunit_inputs_test.go
+++ b/internal/host/claimunit_inputs_test.go
@@ -1,3 +1,5 @@
+//go:build linux
+
package host
import (