Merge origin/main (04819f9b, changelog v0.28.0 and the claimunit_inputs_test vet fix) into region-ha-2b-build
No census input moves: main's three files are docs/site JSON and a _test.go file, which no @coverage row counts. No overlay changed on main; 2b's overlay stays loaded last.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3 files changed,
+460
−0
docs/site/changelog-links.json+24 −0docs/site/changelog.json+434 −0internal/host/claimunit_inputs_test.go+2 −0
CI passed — run details
CI log
=== gate ===
cd launchctx && go vet ./... && go test ./... -count=1
ok amadan.net/carlos/platform.git/launchctx 0.013s
? 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 330.826s
? github.com/carlosframework/platform/cmd/changelog [no test files]
ok github.com/carlosframework/platform/cmd/console 4.094s
ok github.com/carlosframework/platform/cmd/moveprobe 94.127s
ok github.com/carlosframework/platform/cmd/zddprobe 0.780s
ok github.com/carlosframework/platform/internal/activator 251.983s
ok github.com/carlosframework/platform/internal/agentsock 0.025s
ok github.com/carlosframework/platform/internal/alerting 0.006s
ok github.com/carlosframework/platform/internal/analytics 0.036s
ok github.com/carlosframework/platform/internal/appconfig 2.824s
ok github.com/carlosframework/platform/internal/apperr 0.152s
ok github.com/carlosframework/platform/internal/applog 0.224s
ok github.com/carlosframework/platform/internal/awsinv 0.006s
ok github.com/carlosframework/platform/internal/boxchoice 0.006s
ok github.com/carlosframework/platform/internal/boxid 0.846s
? 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.012s
ok github.com/carlosframework/platform/internal/caps 0.014s
ok github.com/carlosframework/platform/internal/certwarm 0.003s
ok github.com/carlosframework/platform/internal/cgroup 0.748s
ok github.com/carlosframework/platform/internal/changelog 0.382s
ok github.com/carlosframework/platform/internal/claimactivation 0.043s
ok github.com/carlosframework/platform/internal/clamd 0.059s
? github.com/carlosframework/platform/internal/cliflag [no test files]
ok github.com/carlosframework/platform/internal/console 413.637s
? 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.155s
ok github.com/carlosframework/platform/internal/dbdoor/dbdoortest 0.018s
ok github.com/carlosframework/platform/internal/dbverify 0.008s
ok github.com/carlosframework/platform/internal/dnsrec 0.004s
ok github.com/carlosframework/platform/internal/docsite 0.007s
ok github.com/carlosframework/platform/internal/domains 2.684s
ok github.com/carlosframework/platform/internal/doorkey 0.009s
ok github.com/carlosframework/platform/internal/economics 0.005s
ok github.com/carlosframework/platform/internal/edge 46.402s
? github.com/carlosframework/platform/internal/edgeproof [no test files]
ok github.com/carlosframework/platform/internal/edgesfile 0.013s
ok github.com/carlosframework/platform/internal/fleetapi 0.186s
ok github.com/carlosframework/platform/internal/gate 1.665s
ok github.com/carlosframework/platform/internal/genselect 0.029s
ok github.com/carlosframework/platform/internal/geo 0.017s
ok github.com/carlosframework/platform/internal/geoip 0.037s
ok github.com/carlosframework/platform/internal/historyreadback 0.316s
ok github.com/carlosframework/platform/internal/host 183.057s
ok github.com/carlosframework/platform/internal/hostactors 7.158s
ok github.com/carlosframework/platform/internal/hostactors/awsmembership 0.024s
ok github.com/carlosframework/platform/internal/hostbox 3.609s
ok github.com/carlosframework/platform/internal/hostclaim 1.045s
ok github.com/carlosframework/platform/internal/hostenv 0.008s
ok github.com/carlosframework/platform/internal/hostevidence 0.006s
ok github.com/carlosframework/platform/internal/hostexec 6.883s
ok github.com/carlosframework/platform/internal/hostfence 0.086s
ok github.com/carlosframework/platform/internal/hostfiles 10.571s
ok github.com/carlosframework/platform/internal/hostfloor 0.021s
ok github.com/carlosframework/platform/internal/hostguard 1.054s
ok github.com/carlosframework/platform/internal/hostops 2.536s
? github.com/carlosframework/platform/internal/hostops/fencerelease [no test files]
ok github.com/carlosframework/platform/internal/hostops/internal/fencerelease 0.003s
ok github.com/carlosframework/platform/internal/hostquarantine 0.003s
ok github.com/carlosframework/platform/internal/hostrelocate 0.740s
ok github.com/carlosframework/platform/internal/hostresolve 0.348s
ok github.com/carlosframework/platform/internal/hostwrite 0.004s
ok github.com/carlosframework/platform/internal/infraview 0.006s
ok github.com/carlosframework/platform/internal/instancectl 5.280s
ok github.com/carlosframework/platform/internal/instanceexec 2.898s
ok github.com/carlosframework/platform/internal/instancefs 0.016s
ok github.com/carlosframework/platform/internal/instancekey 0.004s
ok github.com/carlosframework/platform/internal/instanceupdates 0.015s
ok github.com/carlosframework/platform/internal/layout 2.319s
ok github.com/carlosframework/platform/internal/lbhealth 0.005s
ok github.com/carlosframework/platform/internal/lease 10.034s
ok github.com/carlosframework/platform/internal/lease/leasetest 0.010s
ok github.com/carlosframework/platform/internal/ledger 0.013s
ok github.com/carlosframework/platform/internal/mail 0.258s
ok github.com/carlosframework/platform/internal/maintenance 0.096s
ok github.com/carlosframework/platform/internal/maintenanceexec 5.794s
ok github.com/carlosframework/platform/internal/maintenanceguard 0.177s
ok github.com/carlosframework/platform/internal/metrics 0.127s
ok github.com/carlosframework/platform/internal/moves 22.939s
ok github.com/carlosframework/platform/internal/moves/archive 1.196s
ok github.com/carlosframework/platform/internal/objstore 0.398s
ok github.com/carlosframework/platform/internal/ops 0.295s
ok github.com/carlosframework/platform/internal/park 0.448s
ok github.com/carlosframework/platform/internal/privatefile 0.005s
ok github.com/carlosframework/platform/internal/provision 41.522s
ok github.com/carlosframework/platform/internal/publicrelease 0.029s
? github.com/carlosframework/platform/internal/regionname [no test files]
ok github.com/carlosframework/platform/internal/registry 6.079s
ok github.com/carlosframework/platform/internal/relay 7.281s
ok github.com/carlosframework/platform/internal/release 25.007s
ok github.com/carlosframework/platform/internal/rollout 4.469s
ok github.com/carlosframework/platform/internal/rolloutwords 0.007s
ok github.com/carlosframework/platform/internal/rootaws 0.009s
ok github.com/carlosframework/platform/internal/rootparticipation 0.061s
ok github.com/carlosframework/platform/internal/rootstate 0.027s
ok github.com/carlosframework/platform/internal/runs 0.650s
ok github.com/carlosframework/platform/internal/s3compat 0.012s
ok github.com/carlosframework/platform/internal/safefile 0.011s
ok github.com/carlosframework/platform/internal/schedule 2.992s
ok github.com/carlosframework/platform/internal/seeds 0.017s
ok github.com/carlosframework/platform/internal/sim/hostlife 19.920s
ok github.com/carlosframework/platform/internal/sim/litestreamfacts 3.989s
ok github.com/carlosframework/platform/internal/status 0.083s
ok github.com/carlosframework/platform/internal/steering 0.009s
ok github.com/carlosframework/platform/internal/stopevidence 0.399s
ok github.com/carlosframework/platform/internal/svcrole 0.003s
ok github.com/carlosframework/platform/internal/telemetry 0.004s
ok github.com/carlosframework/platform/internal/termfence 0.004s
ok github.com/carlosframework/platform/internal/tunnelclient 0.006s
ok github.com/carlosframework/platform/internal/unixdial 0.005s
ok github.com/carlosframework/platform/internal/updatewords 0.007s
ok github.com/carlosframework/platform/internal/usage 0.004s
ok github.com/carlosframework/platform/internal/version 0.002s
ok github.com/carlosframework/platform/internal/vet 1.996s
=== cross ===
--- shard 0 of 5 ---
cross-compiling darwin/arm64
--- shard 1 of 5 ---
cross-compiling darwin/amd64
--- shard 2 of 5 ---
cross-compiling linux/arm64
linux/arm64 carlos binary: 49283234 bytes (ceiling 52000000)
--- shard 3 of 5 ---
cross-compiling windows/amd64
--- shard 4 of 5 ---
cross-compiling windows/arm64
=== minio-contract ===
minio contract: arm64, minio RELEASE.2025-09-07T16-13-09Z, mc RELEASE.2025-08-13T08-35-41Z
minio: downloading https://github.com/minio/minio/releases/download/RELEASE.2025-09-07T16-13-09Z/minio.linux-arm64.RELEASE.2025-09-07T16-13-09Z
minio: downloaded, digest verified
mc: downloading https://github.com/minio/mc/releases/download/RELEASE.2025-08-13T08-35-41Z/mc.linux-arm64.RELEASE.2025-08-13T08-35-41Z
mc: downloaded, digest verified
minio healthy on 127.0.0.1:20999
Added `local` successfully.
Bucket created successfully `local/contract-bucket`.
Bucket created successfully `local/denied-bucket`.
Created policy `contract-only` successfully.
Added user `scopeduser` successfully.
Attached Policies: [contract-only]
To User: scopeduser
buckets and scoped user ready
=== RUN TestDeliveredContractMinio
=== RUN TestDeliveredContractMinio/put
=== RUN TestDeliveredContractMinio/get_round-trips_the_body
=== RUN TestDeliveredContractMinio/list_shows_the_key
=== RUN TestDeliveredContractMinio/head_and_list_agree_on_the_version
=== RUN TestDeliveredContractMinio/the_app_cannot_tag_its_own_object
=== RUN TestDeliveredContractMinio/the_app_cannot_tag_its_own_object/not_by_PutObjectTagging
=== RUN TestDeliveredContractMinio/the_app_cannot_tag_its_own_object/and_not_by_x-amz-tagging_on_upload
=== RUN TestDeliveredContractMinio/the_app_cannot_tag_by_any_other_route
=== RUN TestDeliveredContractMinio/the_app_cannot_tag_by_any_other_route/not_by_CreateMultipartUpload
=== RUN TestDeliveredContractMinio/the_app_cannot_tag_by_any_other_route/not_by_CopyObject_with_a_REPLACE_tagging_directive
=== RUN TestDeliveredContractMinio/the_app_cannot_tag_by_any_other_route/but_multipart_itself_is_allowed
=== RUN TestDeliveredContractMinio/the_app_cannot_tag_by_any_other_route/and_copy_itself_is_allowed
=== RUN TestDeliveredContractMinio/the_app_cannot_tag_by_any_other_route/a_POST-policy_forged_tag_with_a_matching_version_is_still_not_a_verdict
=== RUN TestDeliveredContractMinio/the_app_cannot_tag_by_any_other_route/and_an_ordinary_tagged-with-something-else_upload_is_allowed
=== RUN TestDeliveredContractMinio/delete_removes_it
=== RUN TestDeliveredContractMinio/cross-bucket_denial
--- PASS: TestDeliveredContractMinio (0.02s)
--- PASS: TestDeliveredContractMinio/put (0.00s)
--- PASS: TestDeliveredContractMinio/get_round-trips_the_body (0.00s)
--- PASS: TestDeliveredContractMinio/list_shows_the_key (0.00s)
--- PASS: TestDeliveredContractMinio/head_and_list_agree_on_the_version (0.00s)
--- PASS: TestDeliveredContractMinio/the_app_cannot_tag_its_own_object (0.00s)
--- PASS: TestDeliveredContractMinio/the_app_cannot_tag_its_own_object/not_by_PutObjectTagging (0.00s)
--- PASS: TestDeliveredContractMinio/the_app_cannot_tag_its_own_object/and_not_by_x-amz-tagging_on_upload (0.00s)
--- PASS: TestDeliveredContractMinio/the_app_cannot_tag_by_any_other_route (0.01s)
--- PASS: TestDeliveredContractMinio/the_app_cannot_tag_by_any_other_route/not_by_CreateMultipartUpload (0.00s)
--- PASS: TestDeliveredContractMinio/the_app_cannot_tag_by_any_other_route/not_by_CopyObject_with_a_REPLACE_tagging_directive (0.00s)
--- PASS: TestDeliveredContractMinio/the_app_cannot_tag_by_any_other_route/but_multipart_itself_is_allowed (0.00s)
--- PASS: TestDeliveredContractMinio/the_app_cannot_tag_by_any_other_route/and_copy_itself_is_allowed (0.00s)
--- PASS: TestDeliveredContractMinio/the_app_cannot_tag_by_any_other_route/a_POST-policy_forged_tag_with_a_matching_version_is_still_not_a_verdict (0.00s)
--- PASS: TestDeliveredContractMinio/the_app_cannot_tag_by_any_other_route/and_an_ordinary_tagged-with-something-else_upload_is_allowed (0.00s)
--- PASS: TestDeliveredContractMinio/delete_removes_it (0.00s)
--- PASS: TestDeliveredContractMinio/cross-bucket_denial (0.00s)
PASS
ok github.com/carlosframework/platform/internal/objstore 0.022s
=== RUN TestT4StorageProbeMinio
2026/10/17 22:39:03 moves: T4: STORE: list: operation error S3: ListObjectsV2, https response error StatusCode: 403, RequestID: 18DF7233B6590756, HostID: 7c420053e0fbcd7f41653fdd92ffa2802c903d05303b1aa15adc2e8bb65d183f, api error SignatureDoesNotMatch: The request signature we calculated does not match the signature you provided. Check your key and signing method.
--- PASS: TestT4StorageProbeMinio (0.01s)
PASS
ok github.com/carlosframework/platform/internal/host 0.020s
minio contract: PASS
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 ( |