carlos / platform Public

Merge remote-tracking branch 'origin/main' into plans-3b-never-sleep

claude agent, operated by paul@keymail.dev 7d5725779aa5dadabc558cc96ac32cbc9fea0c6d parent 8ecf33fparent ab4e907
3 files changed, +207 −28
  • .amadan/test-gate.sh +3 −3
  • .amadan/test-weights.sh +45 −15
  • .amadan/test-weights.tsv +159 −10

CI passed — run details

CI log
=== gate ===
.amadan/test-gate.sh
=== launchctx (1 s)
ok  	amadan.net/carlos/platform.git/launchctx	0.015s
?   	amadan.net/carlos/platform.git/launchctx/controlname	[no test files]
?   	amadan.net/carlos/platform.git/launchctx/wireid	[no test files]
=== vet (13 s)
=== gofmt (1 s)
gofmt -l .: clean
=== rest (65 s)
?   	github.com/carlosframework/platform/cmd/changelog	[no test files]
ok  	github.com/carlosframework/platform/cmd/console	3.970s
ok  	github.com/carlosframework/platform/cmd/moveprobe	11.720s
ok  	github.com/carlosframework/platform/cmd/zddprobe	0.734s
ok  	github.com/carlosframework/platform/internal/activator	58.003s
ok  	github.com/carlosframework/platform/internal/agentsock	0.032s
ok  	github.com/carlosframework/platform/internal/alerting	0.003s
ok  	github.com/carlosframework/platform/internal/analytics	0.037s
ok  	github.com/carlosframework/platform/internal/appconfig	3.126s
ok  	github.com/carlosframework/platform/internal/apperr	0.118s
ok  	github.com/carlosframework/platform/internal/applog	0.207s
ok  	github.com/carlosframework/platform/internal/assetcache	0.115s
ok  	github.com/carlosframework/platform/internal/awsinv	0.005s
ok  	github.com/carlosframework/platform/internal/boxchoice	0.012s
ok  	github.com/carlosframework/platform/internal/boxid	0.707s
?   	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.015s
ok  	github.com/carlosframework/platform/internal/caps	0.017s
ok  	github.com/carlosframework/platform/internal/certwarm	0.004s
ok  	github.com/carlosframework/platform/internal/cgroup	0.753s
ok  	github.com/carlosframework/platform/internal/changelog	0.487s
ok  	github.com/carlosframework/platform/internal/claimactivation	1.017s
ok  	github.com/carlosframework/platform/internal/clamd	0.060s
?   	github.com/carlosframework/platform/internal/cliflag	[no test files]
?   	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	7.827s
ok  	github.com/carlosframework/platform/internal/dbdoor/dbdoortest	0.011s
ok  	github.com/carlosframework/platform/internal/dbquery	0.008s
ok  	github.com/carlosframework/platform/internal/dbreads	2.154s
?   	github.com/carlosframework/platform/internal/dbreads/dbreadstest	[no test files]
ok  	github.com/carlosframework/platform/internal/dbverify	0.012s
ok  	github.com/carlosframework/platform/internal/dnsrec	0.004s
ok  	github.com/carlosframework/platform/internal/docsite	0.019s
ok  	github.com/carlosframework/platform/internal/domains	3.226s
ok  	github.com/carlosframework/platform/internal/doorkey	0.013s
ok  	github.com/carlosframework/platform/internal/economics	0.010s
ok  	github.com/carlosframework/platform/internal/edge	45.501s
?   	github.com/carlosframework/platform/internal/edgeproof	[no test files]
ok  	github.com/carlosframework/platform/internal/edgesfile	0.014s
ok  	github.com/carlosframework/platform/internal/fleetapi	0.268s
ok  	github.com/carlosframework/platform/internal/gate	2.151s
ok  	github.com/carlosframework/platform/internal/genselect	0.034s
ok  	github.com/carlosframework/platform/internal/geo	0.023s
ok  	github.com/carlosframework/platform/internal/geoip	0.053s
ok  	github.com/carlosframework/platform/internal/historyreadback	0.279s
ok  	github.com/carlosframework/platform/internal/hostactors	7.014s
ok  	github.com/carlosframework/platform/internal/hostactors/awsmembership	0.010s
ok  	github.com/carlosframework/platform/internal/hostbox	3.447s
ok  	github.com/carlosframework/platform/internal/hostclaim	1.051s
ok  	github.com/carlosframework/platform/internal/hostenv	0.013s
ok  	github.com/carlosframework/platform/internal/hostevidence	0.009s
ok  	github.com/carlosframework/platform/internal/hostexec	5.584s
ok  	github.com/carlosframework/platform/internal/hostfence	0.053s
ok  	github.com/carlosframework/platform/internal/hostfiles	10.017s
ok  	github.com/carlosframework/platform/internal/hostfloor	0.023s
ok  	github.com/carlosframework/platform/internal/hostguard	1.099s
ok  	github.com/carlosframework/platform/internal/hostops	2.331s
?   	github.com/carlosframework/platform/internal/hostops/fencerelease	[no test files]
ok  	github.com/carlosframework/platform/internal/hostops/internal/fencerelease	0.004s
ok  	github.com/carlosframework/platform/internal/hostquarantine	0.009s
ok  	github.com/carlosframework/platform/internal/hostrelocate	0.674s
ok  	github.com/carlosframework/platform/internal/hostresolve	0.208s
ok  	github.com/carlosframework/platform/internal/hostwrite	0.004s
ok  	github.com/carlosframework/platform/internal/infraview	0.003s
ok  	github.com/carlosframework/platform/internal/instancectl	5.239s
ok  	github.com/carlosframework/platform/internal/instanceexec	2.847s
ok  	github.com/carlosframework/platform/internal/instancefs	0.005s
ok  	github.com/carlosframework/platform/internal/instancekey	0.004s
ok  	github.com/carlosframework/platform/internal/instanceupdates	0.008s
ok  	github.com/carlosframework/platform/internal/layout	1.989s
ok  	github.com/carlosframework/platform/internal/lbhealth	0.009s
ok  	github.com/carlosframework/platform/internal/lease	10.068s
ok  	github.com/carlosframework/platform/internal/lease/leasetest	0.574s
ok  	github.com/carlosframework/platform/internal/ledger	0.015s
ok  	github.com/carlosframework/platform/internal/mail	0.277s
ok  	github.com/carlosframework/platform/internal/maintenance	0.082s
ok  	github.com/carlosframework/platform/internal/maintenanceexec	5.716s
ok  	github.com/carlosframework/platform/internal/maintenanceguard	0.132s
ok  	github.com/carlosframework/platform/internal/metrics	0.007s
ok  	github.com/carlosframework/platform/internal/moves	22.661s
ok  	github.com/carlosframework/platform/internal/moves/archive	1.258s
ok  	github.com/carlosframework/platform/internal/objstore	0.259s
ok  	github.com/carlosframework/platform/internal/ops	0.260s
ok  	github.com/carlosframework/platform/internal/park	0.369s
ok  	github.com/carlosframework/platform/internal/plans	0.006s
ok  	github.com/carlosframework/platform/internal/privatefile	0.004s
ok  	github.com/carlosframework/platform/internal/provision	22.746s
ok  	github.com/carlosframework/platform/internal/publicrelease	0.010s
?   	github.com/carlosframework/platform/internal/regionname	[no test files]
ok  	github.com/carlosframework/platform/internal/registry	6.007s
ok  	github.com/carlosframework/platform/internal/relay	7.188s
ok  	github.com/carlosframework/platform/internal/release	26.407s
ok  	github.com/carlosframework/platform/internal/rollout	3.759s
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.071s
ok  	github.com/carlosframework/platform/internal/rootstate	0.030s
ok  	github.com/carlosframework/platform/internal/runs	0.566s
ok  	github.com/carlosframework/platform/internal/s3compat	0.010s
ok  	github.com/carlosframework/platform/internal/safefile	0.013s
ok  	github.com/carlosframework/platform/internal/schedule	2.959s
ok  	github.com/carlosframework/platform/internal/seeds	0.017s
ok  	github.com/carlosframework/platform/internal/sim/engines	2.621s
ok  	github.com/carlosframework/platform/internal/sim/hostlife	10.279s
ok  	github.com/carlosframework/platform/internal/sim/litestreamfacts	3.687s
ok  	github.com/carlosframework/platform/internal/status	0.146s
ok  	github.com/carlosframework/platform/internal/steering	0.016s
ok  	github.com/carlosframework/platform/internal/stopevidence	0.239s
ok  	github.com/carlosframework/platform/internal/svcrole	0.004s
ok  	github.com/carlosframework/platform/internal/telemetry	0.011s
ok  	github.com/carlosframework/platform/internal/termfence	0.016s
ok  	github.com/carlosframework/platform/internal/tunnelclient	0.004s
ok  	github.com/carlosframework/platform/internal/unixdial	0.006s
ok  	github.com/carlosframework/platform/internal/updatewords	0.006s
ok  	github.com/carlosframework/platform/internal/usage	0.007s
ok  	github.com/carlosframework/platform/internal/version	0.007s
ok  	github.com/carlosframework/platform/internal/vet	1.748s
=== internal_console@0 (69 s)
ok  	github.com/carlosframework/platform/internal/console	67.493s
=== internal_console@1 (47 s)
ok  	github.com/carlosframework/platform/internal/console	46.042s
=== internal_console@2 (46 s)
ok  	github.com/carlosframework/platform/internal/console	44.961s
=== internal_console@3 (45 s)
ok  	github.com/carlosframework/platform/internal/console	43.866s
=== internal_console@4 (47 s)
ok  	github.com/carlosframework/platform/internal/console	45.732s
=== internal_console@5 (43 s)
ok  	github.com/carlosframework/platform/internal/console	41.518s
=== internal_console@6 (41 s)
ok  	github.com/carlosframework/platform/internal/console	39.679s
=== internal_console@7 (48 s)
ok  	github.com/carlosframework/platform/internal/console	46.599s
=== internal_host@0 (65 s)
ok  	github.com/carlosframework/platform/internal/host	63.439s
=== internal_host@1 (31 s)
ok  	github.com/carlosframework/platform/internal/host	29.056s
=== internal_host@2 (31 s)
ok  	github.com/carlosframework/platform/internal/host	29.046s
=== internal_host@3 (32 s)
ok  	github.com/carlosframework/platform/internal/host	30.131s
=== root@0 (70 s)
ok  	github.com/carlosframework/platform	68.480s
=== root@1 (49 s)
ok  	github.com/carlosframework/platform	47.733s
=== root@2 (61 s)
ok  	github.com/carlosframework/platform	59.566s
=== root@3 (54 s)
ok  	github.com/carlosframework/platform	52.301s
=== root@4 (56 s)
ok  	github.com/carlosframework/platform	54.516s
=== 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: 50659490 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.03s)
    --- 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.02s)
        --- 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.038s
=== RUN   TestT4StorageProbeMinio
2026/10/25 00:28:19 moves: T4: STORE: list: operation error S3: ListObjectsV2, https response error StatusCode: 403, RequestID: 18E19E3A241E9BC3, 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.028s
=== RUN   TestS3StoreMinioContract
=== RUN   TestS3StoreMinioContract/conditional_get_and_etag_listing
=== RUN   TestS3StoreMinioContract/bump_through_every_mutation_path
--- PASS: TestS3StoreMinioContract (0.04s)
    --- PASS: TestS3StoreMinioContract/conditional_get_and_etag_listing (0.01s)
    --- PASS: TestS3StoreMinioContract/bump_through_every_mutation_path (0.02s)
PASS
ok  	github.com/carlosframework/platform/internal/release	0.043s
Bucket created successfully `local/dbf-deploy`.
Bucket created successfully `local/dbf-data-ie`.
Bucket created successfully `local/dbf-data-uk`.
local/dbf-deploy versioning is enabled
Created policy `dbf-console` successfully.
Created policy `dbf-ukbox` successfully.
Added user `dbfconsole` successfully.
Added user `dbfukbox` successfully.
Attached Policies: [dbf-console]
To User: dbfconsole
Attached Policies: [dbf-ukbox]
To User: dbfukbox
=== RUN   TestDBForwardMinio
2026/10/25 00:28:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/25 00:28:22 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/25 00:28:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/25 00:28:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/25 00:28:22 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/25 00:28:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/25 00:28:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000003
2026/10/25 00:28:22 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000003 maxTXID=0000000000000003 size=454
2026/10/25 00:28:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000003 txid.db=0000000000000003
2026/10/25 00:28:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/25 00:28:22 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/25 00:28:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/25 00:28:22 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/25 00:28:22 console: could not notify member@example.com of a CLI token issue: keymail: lookup member@example.com: keymail: GET /api/federation/lookup?addr=member%40example.com&from=console%40127.0.0.1%3A46215: could not determine target mailbox
    agent.go:135: dbreads: dbr_mrcndo47qxw4vfi7hm7dp6u6qi: planned 3 files (1544 bytes) and restored to 3 in 17ms
    agent.go:135: dbreads: dbr_mrcndo47qxw4vfi7hm7dp6u6qi: output 5 bytes in 1 confirmed chunks in 2ms
2026/10/25 00:28:23 console: db read dbr_mrcndo47qxw4vfi7hm7dp6u6qi: relayed 1 chunks (102 bytes) in 1.006s, ended done
    agent.go:135: dbreads: dbr_g4feoq2ein4ekovq7yavtqzp2a: planned 1 files (720 bytes) and restored to 1 in 11ms
    agent.go:135: dbreads: dbr_g4feoq2ein4ekovq7yavtqzp2a: output 5 bytes in 1 confirmed chunks in 3ms
2026/10/25 00:28:24 console: db read dbr_g4feoq2ein4ekovq7yavtqzp2a: relayed 1 chunks (102 bytes) in 1.008s, ended done
    agent.go:135: dbreads: dbr_3scehjznjfpk4abnuakug7nuxe: planned 3 files (1544 bytes) and held through 3 in 16ms
    agent.go:135: dbreads: dbr_3scehjznjfpk4abnuakug7nuxe: output 1544 bytes in 1 confirmed chunks in 1ms
2026/10/25 00:28:25 console: db read dbr_3scehjznjfpk4abnuakug7nuxe: relayed 1 chunks (1641 bytes) in 1.006s, ended done
=== RUN   TestDBForwardMinio/by_disconnect
=== NAME  TestDBForwardMinio
    agent.go:135: dbreads: dbr_y5fefhsdsx42nvu42apppfmp2e: planned 3 files (1544 bytes) and restored to 3 in 14ms
2026/10/25 00:28:25 console: db read dbr_y5fefhsdsx42nvu42apppfmp2e: relayed 0 chunks (0 bytes) in 35ms, ended client gone
    agent.go:135: dbreads: dbr_y5fefhsdsx42nvu42apppfmp2e: output 5 bytes in 1 confirmed chunks in 106ms
=== RUN   TestDBForwardMinio/by_timeout
=== NAME  TestDBForwardMinio
    agent.go:135: dbreads: dbr_lnmsyzhz5x7jz4zzobwmfbbc5m: planned 3 files (1544 bytes) and restored to 3 in 16ms
2026/10/25 00:28:45 console: db read dbr_lnmsyzhz5x7jz4zzobwmfbbc5m: relayed 0 chunks (0 bytes) in 19.496s, ended no-result
    agent.go:135: dbreads: dbr_lnmsyzhz5x7jz4zzobwmfbbc5m: output 5 bytes in 1 confirmed chunks in 19.466s
    agent.go:135: dbreads: list the uk queue: operation error S3: ListObjectsV2, https response error StatusCode: 0, RequestID: , HostID: , canceled, context canceled
--- PASS: TestDBForwardMinio (23.01s)
    --- PASS: TestDBForwardMinio/by_disconnect (0.25s)
    --- PASS: TestDBForwardMinio/by_timeout (19.61s)
PASS
ok  	github.com/carlosframework/platform/internal/console	23.027s
minio contract: PASS
diff --git a/.amadan/test-gate.sh b/.amadan/test-gate.sh
index f1f02c9cd..1b1ae46f6 100755
--- a/.amadan/test-gate.sh
+++ b/.amadan/test-gate.sh
@@ -33,7 +33,7 @@
# next) can surface here. That is a bug in the test, not in the split.
set -eu
-: "${TEST_SPLIT=./internal/console=8 .=3}"
+: "${TEST_SPLIT=./internal/console=8 ./internal/host=4 .=5}"
weights=$(pwd)/.amadan/test-weights.tsv
# A shard count that is not a whole number of at least 1 would take a
@@ -192,10 +192,10 @@ for spec in $TEST_SPLIT; do
fi
# Longest-processing-time first: heaviest test onto the least-loaded
- # shard. Unweighted tests count as 0.2 s.
+ # shard. Unweighted tests count as 0.05 s (see test-weights.sh).
awk -v pkg="$pkg" -v n="$shards" -F '\t' '
FILENAME == ARGV[1] { if ($1 == pkg) w[$2] = $3; next }
- { print (($0 in w) ? w[$0] : 0.2) "\t" $0 }
+ { print (($0 in w) ? w[$0] : 0.05) "\t" $0 }
' "$weights" "$out/list-$tag" | sort -t "$(printf '\t')" -k1,1gr -k2,2 |
awk -v n="$shards" -F '\t' '
{
diff --git a/.amadan/test-weights.sh b/.amadan/test-weights.sh
index 651e4a271..6efc4c14a 100755
--- a/.amadan/test-weights.sh
+++ b/.amadan/test-weights.sh
@@ -7,9 +7,15 @@
# .amadan/test-weights.sh console.json root.json
#
# Measure on a quiet machine with the temp root on tmpfs, as CI has it, or
-# the fsync-heavy tests weigh several times what they do there. Only
-# top-level tests of a second or more are kept; everything else is dealt
-# as short, which is what it is.
+# the fsync-heavy tests weigh several times what they do there.
+#
+# Only the packages in the given files are rewritten; rows for other
+# packages are kept. A top-level test of a quarter-second or more gets a
+# row. A test that called t.Parallel (its JSON has a "pause") overlaps
+# with its neighbours, so its weight is its time divided by 8, roughly
+# what it adds to its shard's wall clock. Everything unlisted is dealt as
+# short (test-gate.sh counts it as 0.05 s), which is what it is: host's
+# 2,500 small serial tests average about 0.025 s.
set -eu
[ $# -gt 0 ] || {
@@ -18,20 +24,44 @@ set -eu
}
out=.amadan/test-weights.tsv
+tab=$(printf '\t')
+new=$(mktemp "${TMPDIR:-/tmp}/test-weights-XXXXXX")
+trap 'rm -f "$new" "$out.tmp"' EXIT
+cat "$@" | awk '
+ /"Test":"/ {
+ if (!match($0, /"Test":"[^"]*"/)) next
+ test = substr($0, RSTART + 8, RLENGTH - 9)
+ if (index(test, "/")) next
+ if (!match($0, /"Package":"[^"]*"/)) next
+ pkg = substr($0, RSTART + 11, RLENGTH - 12)
+ key = pkg "\t" test
+ if ($0 ~ /"Action":"pause"/) { parallel[key] = 1; next }
+ if ($0 !~ /"Action":"(pass|fail)"/) next
+ if (!match($0, /"Elapsed":[0-9.]+/)) next
+ secs[key] = substr($0, RSTART + 10, RLENGTH - 10) + 0
+ }
+ END {
+ for (k in secs) {
+ w = (k in parallel) ? secs[k] / 8 : secs[k]
+ if (w >= 0.25) printf "%s\t%.2f\n", k, w
+ }
+ # A package line with no weighted test still marks its rows as replaced.
+ for (k in secs) { split(k, f, "\t"); seen[f[1]] = 1 }
+ for (p in seen) printf "#pkg\t%s\n", p
+ }
+' >"$new"
{
printf '# package\ttest\tseconds (.amadan/test-weights.sh, %s)\n' "$(date -u +%Y-%m-%d)"
- cat "$@" | awk '
- /"Action":"(pass|fail)"/ && /"Test":"/ {
- if (!match($0, /"Test":"[^"]*"/)) next
- test = substr($0, RSTART + 8, RLENGTH - 9)
- if (index(test, "/")) next
- if (!match($0, /"Package":"[^"]*"/)) next
- pkg = substr($0, RSTART + 11, RLENGTH - 12)
- if (!match($0, /"Elapsed":[0-9.]+/)) next
- secs = substr($0, RSTART + 10, RLENGTH - 10) + 0
- if (secs >= 1) printf "%s\t%s\t%.1f\n", pkg, test, secs
- }
- ' | sort -t "$(printf '\t')" -k1,1 -k3,3gr
+ {
+ grep -v '^#pkg' "$new"
+ if [ -f "$out" ]; then
+ awk -F "$tab" -v newf="$new" '
+ BEGIN { while ((getline l < newf) > 0) { split(l, f, "\t"); if (f[1] == "#pkg") replaced[f[2]] = 1 } }
+ /^#/ { next }
+ !($1 in replaced)
+ ' "$out"
+ fi
+ } | sort -t "$tab" -k1,1 -k3,3gr
} >"$out.tmp"
mv "$out.tmp" "$out"
echo "wrote $out: $(($(wc -l <"$out") - 1)) weighted tests"
diff --git a/.amadan/test-weights.tsv b/.amadan/test-weights.tsv
index 6241b5499..374c15546 100644
--- a/.amadan/test-weights.tsv
+++ b/.amadan/test-weights.tsv
@@ -1,4 +1,71 @@
-# package test seconds (.amadan/test-weights.sh, 2026-10-21)
+# package test seconds (.amadan/test-weights.sh, 2026-10-24)
+github.com/carlosframework/platform TestDBForwardPrintsNothingForABadAnswer 67.13
+github.com/carlosframework/platform TestDBForwardThroughTheBackhaulHop 55.06
+github.com/carlosframework/platform TestDBForwardLongRequestThroughTheEdge 42.79
+github.com/carlosframework/platform TestMovesStringsAreRecorded 9.39
+github.com/carlosframework/platform TestCanaryCreateMakesAOneLabelHost 8.25
+github.com/carlosframework/platform TestE2EDomainsAttachThroughDeploy 8.18
+github.com/carlosframework/platform TestCanaryRegionReusesACanaryPastTheListCap 6.61
+github.com/carlosframework/platform TestAuthCLI 5.05
+github.com/carlosframework/platform TestRunEmailEnableFlowCustomDomainPrintsRecordsAndPolls 5.02
+github.com/carlosframework/platform TestMovesGateBitesOnTheRealRecord 4.39
+github.com/carlosframework/platform TestE2ELogsThroughConsole 4.04
+github.com/carlosframework/platform TestMovesApprovedCopyIsApplied 3.91
+github.com/carlosframework/platform TestMovesLegacyExemptionsAreLegacy 3.42
+github.com/carlosframework/platform TestDBForwardParityThroughTheCLI 3.31
+github.com/carlosframework/platform TestDBForwardPullParityThroughTheCLI 3.18
+github.com/carlosframework/platform TestMovesSinksAreSentences 3.00
+github.com/carlosframework/platform TestMovesSinkAllowListIsHonest 2.99
+github.com/carlosframework/platform TestMovesFunctionValuesAreNotSinks 2.63
+github.com/carlosframework/platform TestMovesHomeRegionCallSiteInventory 2.42
+github.com/carlosframework/platform TestSharedCarlosLocation 2.26
+github.com/carlosframework/platform TestCanaryTooLongForOneLabelRefusesBeforeAnyWrite 2.11
+github.com/carlosframework/platform TestE2EDeployThroughConsole 2.06
+github.com/carlosframework/platform TestDeployExitsHonestlyWhenDNSIsNotPointingYet 2.02
+github.com/carlosframework/platform TestDeployStaticRedeployWithRecordGetsDNSGuidance 2.02
+github.com/carlosframework/platform TestResolveModeExpiredOffersRelogin 2.02
+github.com/carlosframework/platform TestAuthLoginStoresACredential 2.01
+github.com/carlosframework/platform TestAuthLoginUsesConfiguredDefault 2.01
+github.com/carlosframework/platform TestAuthWhoamiPrintsMemberships 2.01
+github.com/carlosframework/platform TestConsoleMovedOfferLogsInAndRepointsConfig 2.01
+github.com/carlosframework/platform TestResolveModeOffersLoginAndContinues 2.01
+github.com/carlosframework/platform TestResolveModeUnconfiguredPromptsForURL 2.01
+github.com/carlosframework/platform TestWaitForDomainVerifiedSucceeds 2.00
+github.com/carlosframework/platform TestDBForwardPullInterruptedLeavesNothing 1.99
+github.com/carlosframework/platform TestDBForwardMixedVersions 1.91
+github.com/carlosframework/platform TestDBForwardPullSavesNothingForABadAnswer 1.81
+github.com/carlosframework/platform TestPlan13NoDirectPlacementEngineComparison 1.70
+github.com/carlosframework/platform TestE2EDBThroughConsole 1.49
+github.com/carlosframework/platform TestWatchRolloutListFailuresTimeOutNamingTheList 1.20
+github.com/carlosframework/platform TestAuthLoginDenied 1.00
+github.com/carlosframework/platform TestDBForwardPullOnAQueryOnlyConsole 0.97
+github.com/carlosframework/platform TestDeployWatchReadsTheConsolesList 0.90
+github.com/carlosframework/platform TestDBForwardRefusesSQLThatIsNotUTF8 0.88
+github.com/carlosframework/platform TestEndToEndSmoke 0.70
+github.com/carlosframework/platform TestCanaryRegionRefusesBeforeAnyWrite 0.49
+github.com/carlosframework/platform TestWatchRolloutFallbackGetsTheRemainingTime 0.41
+github.com/carlosframework/platform TestRegionHAS3ClientsUseS3Compat 0.35
+github.com/carlosframework/platform TestRouteCLI 0.33
+github.com/carlosframework/platform TestTenantInheritsActivationSocket 0.31
+github.com/carlosframework/platform TestWatchProbeMatchesAWholeToken 0.31
+github.com/carlosframework/platform TestWatchRolloutAlwaysTruncatedNamesTheUnlistedHost 0.30
+github.com/carlosframework/platform TestWatchRolloutDarkBoxNeverPollsOverHTTP 0.30
+github.com/carlosframework/platform TestWatchRolloutFinalSurvivesADarkBoxButNotANewerBuild 0.30
+github.com/carlosframework/platform TestWatchRolloutIdleSchedulerBeforeInstallIsPending 0.30
+github.com/carlosframework/platform TestWatchRolloutIncompleteJoinIsNotNoReports 0.30
+github.com/carlosframework/platform TestWatchRolloutLaterReportReclassifiesAURLLiveHost 0.30
+github.com/carlosframework/platform TestWatchRolloutNeverPollsATargetMissingFromACompleteList 0.30
+github.com/carlosframework/platform TestWatchRolloutNewerBuildNamesWhatIsInstalled 0.30
+github.com/carlosframework/platform TestWatchRolloutOpenSettleHoldsTheWatch 0.30
+github.com/carlosframework/platform TestWatchRolloutRefusingBoxIsPendingWithItsReason 0.30
+github.com/carlosframework/platform TestWatchRolloutStopsPollingAURLHostThatDropsOffTheList 0.30
+github.com/carlosframework/platform TestWatchRolloutUnknownUnavailableCodeIsNeverPolled 0.30
+github.com/carlosframework/platform TestEnvironmentBundlesCLI 0.27
+github.com/carlosframework/platform TestRouteAccountDefaultsToOpsAndAllOptsIn 0.26
+github.com/carlosframework/platform TestRouteUnitStampsAnExistingRoute 0.26
+github.com/carlosframework/platform TestFollowRunCtrlCWhileARequestIsInFlight 0.25
+github.com/carlosframework/platform TestScopedKeysCLI 0.25
+github.com/carlosframework/platform TestSeededWiredCopyIsApplied 0.25
github.com/carlosframework/platform/internal/console TestClaimConsoleMutationInvariant 60.1
github.com/carlosframework/platform/internal/console TestClaimConsoleMutationInvariantWitnesses 12.3
github.com/carlosframework/platform/internal/console TestRetiringAnInstancePurgesItsMoveLogRows 9.3
@@ -37,12 +104,94 @@ github.com/carlosframework/platform/internal/console TestAnIncompletePlacementRe
github.com/carlosframework/platform/internal/console TestClaimLossPagesScanProgressSurvivesRestartAndWraps 1.0
github.com/carlosframework/platform/internal/console TestCreateDoorsRefuseWithNoRoomBeforeRegistering 1.0
github.com/carlosframework/platform/internal/console TestDBReadRequestBoundClampsAForgedDeadline 1.0
-github.com/carlosframework/platform TestDBForwardPrintsNothingForABadAnswer 67.0
-github.com/carlosframework/platform TestDBForwardLongRequestThroughTheEdge 44.5
-github.com/carlosframework/platform TestDBForwardThroughTheBackhaulHop 44.1
-github.com/carlosframework/platform TestDBForwardPullParityThroughTheCLI 4.8
-github.com/carlosframework/platform TestDBForwardParityThroughTheCLI 4.6
-github.com/carlosframework/platform TestDBForwardPullInterruptedLeavesNothing 2.1
-github.com/carlosframework/platform TestDBForwardMixedVersions 1.9
-github.com/carlosframework/platform TestDBForwardPullSavesNothingForABadAnswer 1.8
-github.com/carlosframework/platform TestDBForwardRefusesSQLThatIsNotUTF8 1.0
+github.com/carlosframework/platform/internal/host TestClaimAckRefreshProductionClient 20.09
+github.com/carlosframework/platform/internal/host TestStalledIndexGetKeepsReconcileWalking 5.03
+github.com/carlosframework/platform/internal/host TestPlan14Fix5MainEquivalence 4.37
+github.com/carlosframework/platform/internal/host TestPlan9D3ProbeReadinessRefusesOutsideTheContract 3.60
+github.com/carlosframework/platform/internal/host TestServingParkNestedBindMount 2.33
+github.com/carlosframework/platform/internal/host TestFilesSeedOrdinaryPreparationRestore 2.30
+github.com/carlosframework/platform/internal/host TestRunInterruptedWhileItsStopIsRetriedEndsAt125 2.25
+github.com/carlosframework/platform/internal/host TestRunTimesOutAtItsDeadlineNotAFullTimeoutLater 1.50
+github.com/carlosframework/platform/internal/host TestOfflineLandConvergesAfterACrashAtEveryPoint 1.32
+github.com/carlosframework/platform/internal/host TestPublishRecordReportsARetriedCreateAsPublished 1.32
+github.com/carlosframework/platform/internal/host TestOfflineMoveE2E 1.25
+github.com/carlosframework/platform/internal/host TestInstallRenameWaitsForTheFloorLock 1.12
+github.com/carlosframework/platform/internal/host TestOfflineLandMendsWhatIsMissing 1.02
+github.com/carlosframework/platform/internal/host TestRunTimesOut 1.00
+github.com/carlosframework/platform/internal/host TestPlan14GenerationRegistryRows 0.99
+github.com/carlosframework/platform/internal/host TestRootJoinTakesNothingFromItsTrigger 0.98
+github.com/carlosframework/platform/internal/host TestOfflineLandFailsEachMismatch 0.85
+github.com/carlosframework/platform/internal/host TestStep8CensusChangesReachOnlyClaimMode 0.75
+github.com/carlosframework/platform/internal/host TestPlan11Rev3ObservesRealInitTenant 0.72
+github.com/carlosframework/platform/internal/host TestPlan14RecoveryKnownRefusal 0.70
+github.com/carlosframework/platform/internal/host TestCanaryPointerReadWhenTheTicksIndexPollFails 0.69
+github.com/carlosframework/platform/internal/host TestRollbackRestartResetsThenRestarts 0.63
+github.com/carlosframework/platform/internal/host TestPlan14TimerIntentionBeforeMaterialization 0.62
+github.com/carlosframework/platform/internal/host TestContendedFloorLockDefersTheInstall 0.61
+github.com/carlosframework/platform/internal/host TestPlan14RollbackCanonicalReadiness 0.61
+github.com/carlosframework/platform/internal/host TestPlan9D3ServingReadinessIsUnchanged 0.60
+github.com/carlosframework/platform/internal/host TestProbeRefusesForeignPeer 0.60
+github.com/carlosframework/platform/internal/host TestServingParkLedgerKeepsLastStartedDatabase 0.56
+github.com/carlosframework/platform/internal/host TestPlan14FirstRegistrationOperations 0.54
+github.com/carlosframework/platform/internal/host TestPlan14Fix4AdoptPerHostFailureExitsZero 0.54
+github.com/carlosframework/platform/internal/host TestRelocationInstallJournalWaitsForTheSweep 0.54
+github.com/carlosframework/platform/internal/host TestHeldStageLockWaiterOnARemovedFileRetries 0.52
+github.com/carlosframework/platform/internal/host TestPlan14ExecutionPreinstallationAuthority 0.52
+github.com/carlosframework/platform/internal/host TestPlan14ExecutionServingTransport 0.52
+github.com/carlosframework/platform/internal/host TestPublishRecordRefusesWhatEnrollmentWouldRefuse 0.52
+github.com/carlosframework/platform/internal/host TestPlan14RootMigrationTimerAdoption 0.51
+github.com/carlosframework/platform/internal/host TestPlan14SwapFailureSurvivesLegacyTampering 0.51
+github.com/carlosframework/platform/internal/host TestConsoleDigestRefusesOversized 0.50
+github.com/carlosframework/platform/internal/host TestHomeTargetFreshStateShowsOnlyTheHomeToken 0.49
+github.com/carlosframework/platform/internal/host TestPlan14RecoveryRebindAuthority 0.49
+github.com/carlosframework/platform/internal/host TestFilesSeedCombinedRecoveryAllowsUpdate 0.45
+github.com/carlosframework/platform/internal/host TestSystemUnitsSelectPrevByTheSeedsFloor 0.45
+github.com/carlosframework/platform/internal/host TestPlan12RecoveryRestoreSourceDatabase 0.44
+github.com/carlosframework/platform/internal/host TestT7WaitsOutAPublicationsRollback 0.44
+github.com/carlosframework/platform/internal/host TestJoiningServes503UntilItCanHostAndPublishesNoEdgesFile 0.43
+github.com/carlosframework/platform/internal/host TestRunSystemInstallChannelTakesPolicyAndIdentityTogether 0.42
+github.com/carlosframework/platform/internal/host TestProbeEnvPinCoversAnInstanceBoxVariable 0.41
+github.com/carlosframework/platform/internal/host TestRelocationReplacementActivationRefuses 0.41
+github.com/carlosframework/platform/internal/host TestRevertReplays 0.40
+github.com/carlosframework/platform/internal/host TestHeldPublicationRechecksInsideTheFreeze 0.39
+github.com/carlosframework/platform/internal/host TestPlan11Fix1NoProcessDerivesCoverage 0.39
+github.com/carlosframework/platform/internal/host TestServingParkRetainedReplacementWriteFailures 0.39
+github.com/carlosframework/platform/internal/host TestPlan14Fix4IncidentProductionWiring 0.38
+github.com/carlosframework/platform/internal/host TestPlan14GenerationRequiredArtifacts 0.38
+github.com/carlosframework/platform/internal/host TestPlan14OrdinaryDeleteParticipation 0.38
+github.com/carlosframework/platform/internal/host TestPlan14RootDispatchRejectsRegistryMutation 0.38
+github.com/carlosframework/platform/internal/host TestFilesSeedPreparationChangedController 0.37
+github.com/carlosframework/platform/internal/host TestPlan14SignedNamedRecoveryAuthority 0.37
+github.com/carlosframework/platform/internal/host TestR2LegacyLockContentionRetries 0.37
+github.com/carlosframework/platform/internal/host TestPlan14GenerationLocalRecoveryObligations 0.36
+github.com/carlosframework/platform/internal/host TestRelocationReplacementRefusesTheWrongStamp 0.36
+github.com/carlosframework/platform/internal/host TestPlan14ActiveRecoveryProcessCrash 0.34
+github.com/carlosframework/platform/internal/host TestPlan14ExecutionMigrationIsIndependent 0.34
+github.com/carlosframework/platform/internal/host TestPlan14InstalledLaunchProgramEvidence 0.34
+github.com/carlosframework/platform/internal/host TestPlan9Fix4RootAssemblyIgnoresReplacedLegacyDirectory 0.34
+github.com/carlosframework/platform/internal/host TestPlan14ProofObservationRejectsForgedRegistry 0.33
+github.com/carlosframework/platform/internal/host TestRelocationInstallKeyCheckRefusesWhatTheTenantPlants 0.32
+github.com/carlosframework/platform/internal/host TestRestoreWaitsForTheFloorLock 0.32
+github.com/carlosframework/platform/internal/host TestPlan14Fix4OrdinaryProductionWrapper 0.31
+github.com/carlosframework/platform/internal/host TestPlan14ParticipationFlagOffUpdate 0.31
+github.com/carlosframework/platform/internal/host TestRunEndedDuringASwitchWaitGetsItsOwnResult 0.30
+github.com/carlosframework/platform/internal/host TestRunOutputIsBoundedWhenEveryChunkFails 0.30
+github.com/carlosframework/platform/internal/host TestRunStagingEndsAtTheRunsDeadline 0.30
+github.com/carlosframework/platform/internal/host TestRunWhoseResultNeverLandedLeavesTheEndingToTheCloseOut 0.30
+github.com/carlosframework/platform/internal/host TestRunWithoutAResultIsNotDone 0.30
+github.com/carlosframework/platform/internal/host TestR2NamedFallbackMatchesMain 0.29
+github.com/carlosframework/platform/internal/host TestClaimProductionCensusInstallsThroughReconciler 0.28
+github.com/carlosframework/platform/internal/host TestPlan14AdoptionCanonicalReadiness 0.28
+github.com/carlosframework/platform/internal/host TestPlan14RollbackProcessCrash 0.28
+github.com/carlosframework/platform/internal/host TestPlan14SignedActiveFixAuthority 0.27
+github.com/carlosframework/platform/internal/host TestR3FallbackDoubleRestart 0.27
+github.com/carlosframework/platform/internal/host TestR3StickyBindingErrorMasksCrash 0.27
+github.com/carlosframework/platform/internal/host TestPlan14NamedUnitsWithoutDeploymentRecord 0.26
+github.com/carlosframework/platform/internal/host TestPlan9Fix1ResetWorkerAppliesBackoff 0.26
+github.com/carlosframework/platform/internal/host TestPlan12PendingRecoveryRejectsChangedIdentity 0.25
+github.com/carlosframework/platform/internal/host TestPlan13RecoveryHomeReceipt 0.25
+github.com/carlosframework/platform/internal/host TestPlan14BoundRestartShapeRefusal 0.25
+github.com/carlosframework/platform/internal/host TestPlan14FenceViewDeadline 0.25
+github.com/carlosframework/platform/internal/host TestPlan14ProofBindingProvenance 0.25
+github.com/carlosframework/platform/internal/host TestRecoverCensusDeadlineReachesTheSignedBinaryProof 0.25
+github.com/carlosframework/platform/internal/host TestRelocationInstallPublishesAndReadsUnderTheHeldStageLock 0.25