carlos / platform Public

ci-split-host

Squashed from ci-split-host into main.
claude agent, operated by paul@keymail.dev ab4e9072dd1828be27d8e91cebb2fbf6fdd02e09 parent bcae2a7
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 (0 s)
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]
=== vet (19 s)
=== gofmt (0 s)
gofmt -l .: clean
=== rest (79 s)
?   	github.com/carlosframework/platform/cmd/changelog	[no test files]
ok  	github.com/carlosframework/platform/cmd/console	5.462s
ok  	github.com/carlosframework/platform/cmd/moveprobe	12.108s
ok  	github.com/carlosframework/platform/cmd/zddprobe	0.796s
ok  	github.com/carlosframework/platform/internal/activator	64.998s
ok  	github.com/carlosframework/platform/internal/agentsock	0.042s
ok  	github.com/carlosframework/platform/internal/alerting	0.014s
ok  	github.com/carlosframework/platform/internal/analytics	0.052s
ok  	github.com/carlosframework/platform/internal/appconfig	2.979s
ok  	github.com/carlosframework/platform/internal/apperr	0.141s
ok  	github.com/carlosframework/platform/internal/applog	0.365s
ok  	github.com/carlosframework/platform/internal/assetcache	0.127s
ok  	github.com/carlosframework/platform/internal/awsinv	0.009s
ok  	github.com/carlosframework/platform/internal/boxchoice	0.007s
ok  	github.com/carlosframework/platform/internal/boxid	0.987s
?   	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.025s
ok  	github.com/carlosframework/platform/internal/caps	0.034s
ok  	github.com/carlosframework/platform/internal/certwarm	0.007s
ok  	github.com/carlosframework/platform/internal/cgroup	0.903s
ok  	github.com/carlosframework/platform/internal/changelog	0.718s
ok  	github.com/carlosframework/platform/internal/claimactivation	1.494s
ok  	github.com/carlosframework/platform/internal/clamd	0.063s
?   	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	8.788s
ok  	github.com/carlosframework/platform/internal/dbdoor/dbdoortest	0.017s
ok  	github.com/carlosframework/platform/internal/dbquery	0.011s
ok  	github.com/carlosframework/platform/internal/dbreads	2.189s
?   	github.com/carlosframework/platform/internal/dbreads/dbreadstest	[no test files]
ok  	github.com/carlosframework/platform/internal/dbverify	0.011s
ok  	github.com/carlosframework/platform/internal/dnsrec	0.009s
ok  	github.com/carlosframework/platform/internal/docsite	0.022s
ok  	github.com/carlosframework/platform/internal/domains	2.917s
ok  	github.com/carlosframework/platform/internal/doorkey	0.008s
ok  	github.com/carlosframework/platform/internal/economics	0.004s
ok  	github.com/carlosframework/platform/internal/edge	50.788s
?   	github.com/carlosframework/platform/internal/edgeproof	[no test files]
ok  	github.com/carlosframework/platform/internal/edgesfile	0.016s
ok  	github.com/carlosframework/platform/internal/fleetapi	0.160s
ok  	github.com/carlosframework/platform/internal/gate	1.958s
ok  	github.com/carlosframework/platform/internal/genselect	0.019s
ok  	github.com/carlosframework/platform/internal/geo	0.014s
ok  	github.com/carlosframework/platform/internal/geoip	0.035s
ok  	github.com/carlosframework/platform/internal/historyreadback	0.228s
ok  	github.com/carlosframework/platform/internal/hostactors	7.783s
ok  	github.com/carlosframework/platform/internal/hostactors/awsmembership	0.004s
ok  	github.com/carlosframework/platform/internal/hostbox	3.516s
ok  	github.com/carlosframework/platform/internal/hostclaim	0.856s
ok  	github.com/carlosframework/platform/internal/hostenv	0.006s
ok  	github.com/carlosframework/platform/internal/hostevidence	0.008s
ok  	github.com/carlosframework/platform/internal/hostexec	7.969s
ok  	github.com/carlosframework/platform/internal/hostfence	0.034s
ok  	github.com/carlosframework/platform/internal/hostfiles	11.748s
ok  	github.com/carlosframework/platform/internal/hostfloor	0.015s
ok  	github.com/carlosframework/platform/internal/hostguard	1.068s
ok  	github.com/carlosframework/platform/internal/hostops	2.274s
?   	github.com/carlosframework/platform/internal/hostops/fencerelease	[no test files]
ok  	github.com/carlosframework/platform/internal/hostops/internal/fencerelease	0.012s
ok  	github.com/carlosframework/platform/internal/hostquarantine	0.012s
ok  	github.com/carlosframework/platform/internal/hostrelocate	0.727s
ok  	github.com/carlosframework/platform/internal/hostresolve	0.207s
ok  	github.com/carlosframework/platform/internal/hostwrite	0.014s
ok  	github.com/carlosframework/platform/internal/infraview	0.012s
ok  	github.com/carlosframework/platform/internal/instancectl	5.328s
ok  	github.com/carlosframework/platform/internal/instanceexec	2.828s
ok  	github.com/carlosframework/platform/internal/instancefs	0.008s
ok  	github.com/carlosframework/platform/internal/instancekey	0.003s
ok  	github.com/carlosframework/platform/internal/instanceupdates	0.015s
ok  	github.com/carlosframework/platform/internal/layout	2.168s
ok  	github.com/carlosframework/platform/internal/lbhealth	0.002s
ok  	github.com/carlosframework/platform/internal/lease	10.232s
ok  	github.com/carlosframework/platform/internal/lease/leasetest	0.553s
ok  	github.com/carlosframework/platform/internal/ledger	0.011s
ok  	github.com/carlosframework/platform/internal/mail	0.243s
ok  	github.com/carlosframework/platform/internal/maintenance	0.101s
ok  	github.com/carlosframework/platform/internal/maintenanceexec	6.909s
ok  	github.com/carlosframework/platform/internal/maintenanceguard	0.087s
ok  	github.com/carlosframework/platform/internal/metrics	0.014s
ok  	github.com/carlosframework/platform/internal/moves	31.863s
ok  	github.com/carlosframework/platform/internal/moves/archive	1.051s
ok  	github.com/carlosframework/platform/internal/objstore	0.248s
ok  	github.com/carlosframework/platform/internal/ops	0.281s
ok  	github.com/carlosframework/platform/internal/park	0.281s
ok  	github.com/carlosframework/platform/internal/plans	0.006s
ok  	github.com/carlosframework/platform/internal/privatefile	0.005s
ok  	github.com/carlosframework/platform/internal/provision	50.852s
ok  	github.com/carlosframework/platform/internal/publicrelease	0.008s
?   	github.com/carlosframework/platform/internal/regionname	[no test files]
ok  	github.com/carlosframework/platform/internal/registry	7.785s
ok  	github.com/carlosframework/platform/internal/relay	7.267s
ok  	github.com/carlosframework/platform/internal/release	33.501s
ok  	github.com/carlosframework/platform/internal/rollout	4.607s
ok  	github.com/carlosframework/platform/internal/rolloutwords	0.004s
ok  	github.com/carlosframework/platform/internal/rootaws	0.011s
ok  	github.com/carlosframework/platform/internal/rootparticipation	0.063s
ok  	github.com/carlosframework/platform/internal/rootstate	0.029s
ok  	github.com/carlosframework/platform/internal/runs	0.543s
ok  	github.com/carlosframework/platform/internal/s3compat	0.011s
ok  	github.com/carlosframework/platform/internal/safefile	0.010s
ok  	github.com/carlosframework/platform/internal/schedule	3.073s
ok  	github.com/carlosframework/platform/internal/seeds	0.026s
ok  	github.com/carlosframework/platform/internal/sim/engines	4.392s
ok  	github.com/carlosframework/platform/internal/sim/hostlife	27.203s
ok  	github.com/carlosframework/platform/internal/sim/litestreamfacts	5.297s
ok  	github.com/carlosframework/platform/internal/status	0.095s
ok  	github.com/carlosframework/platform/internal/steering	0.008s
ok  	github.com/carlosframework/platform/internal/stopevidence	0.203s
ok  	github.com/carlosframework/platform/internal/svcrole	0.003s
ok  	github.com/carlosframework/platform/internal/telemetry	0.014s
ok  	github.com/carlosframework/platform/internal/termfence	0.006s
ok  	github.com/carlosframework/platform/internal/tunnelclient	0.007s
ok  	github.com/carlosframework/platform/internal/unixdial	0.003s
ok  	github.com/carlosframework/platform/internal/updatewords	0.005s
ok  	github.com/carlosframework/platform/internal/usage	0.007s
ok  	github.com/carlosframework/platform/internal/version	0.004s
ok  	github.com/carlosframework/platform/internal/vet	1.681s
=== internal_console@0 (80 s)
ok  	github.com/carlosframework/platform/internal/console	77.582s
=== internal_console@1 (70 s)
ok  	github.com/carlosframework/platform/internal/console	65.231s
=== internal_console@2 (61 s)
ok  	github.com/carlosframework/platform/internal/console	57.496s
=== internal_console@3 (55 s)
ok  	github.com/carlosframework/platform/internal/console	52.290s
=== internal_console@4 (58 s)
ok  	github.com/carlosframework/platform/internal/console	55.132s
=== internal_console@5 (59 s)
ok  	github.com/carlosframework/platform/internal/console	55.354s
=== internal_console@6 (60 s)
ok  	github.com/carlosframework/platform/internal/console	57.034s
=== internal_console@7 (63 s)
ok  	github.com/carlosframework/platform/internal/console	59.889s
=== internal_host@0 (67 s)
ok  	github.com/carlosframework/platform/internal/host	64.450s
=== internal_host@1 (35 s)
ok  	github.com/carlosframework/platform/internal/host	32.724s
=== internal_host@2 (36 s)
ok  	github.com/carlosframework/platform/internal/host	33.548s
=== internal_host@3 (39 s)
ok  	github.com/carlosframework/platform/internal/host	36.730s
=== root@0 (72 s)
ok  	github.com/carlosframework/platform	69.651s
=== root@1 (52 s)
ok  	github.com/carlosframework/platform	49.464s
=== root@2 (63 s)
ok  	github.com/carlosframework/platform	60.677s
=== root@3 (59 s)
ok  	github.com/carlosframework/platform	56.994s
=== root@4 (65 s)
ok  	github.com/carlosframework/platform	62.409s
=== 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: cached, digest verified
  mc: cached, 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.027s
=== RUN   TestT4StorageProbeMinio
2026/10/25 00:03:27 moves: T4: STORE: list: operation error S3: ListObjectsV2, https response error StatusCode: 403, RequestID: 18E19CDEBB60E18B, 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.023s
=== RUN   TestS3StoreMinioContract
=== RUN   TestS3StoreMinioContract/conditional_get_and_etag_listing
=== RUN   TestS3StoreMinioContract/bump_through_every_mutation_path
--- PASS: TestS3StoreMinioContract (0.03s)
    --- 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.030s
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:03:29 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/25 00:03:29 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/25 00:03:29 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/25 00:03:29 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/25 00:03:29 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/25 00:03:29 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/25 00:03:29 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/25 00:03:29 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/25 00:03:29 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/25 00:03:29 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000003
2026/10/25 00:03:29 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000003 maxTXID=0000000000000003 size=454
2026/10/25 00:03:29 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000003 txid.db=0000000000000003
2026/10/25 00:03:29 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/25 00:03:29 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%3A38379: could not determine target mailbox
    agent.go:135: dbreads: dbr_dethm7jozsmbjcqrafvasrmj64: planned 3 files (1544 bytes) and restored to 3 in 12ms
    agent.go:135: dbreads: dbr_dethm7jozsmbjcqrafvasrmj64: output 5 bytes in 1 confirmed chunks in 2ms
2026/10/25 00:03:30 console: db read dbr_dethm7jozsmbjcqrafvasrmj64: relayed 1 chunks (102 bytes) in 1.004s, ended done
    agent.go:135: dbreads: dbr_k6pld3uojpqyexg4jhyrviepte: planned 1 files (720 bytes) and restored to 1 in 10ms
    agent.go:135: dbreads: dbr_k6pld3uojpqyexg4jhyrviepte: output 5 bytes in 1 confirmed chunks in 1ms
2026/10/25 00:03:31 console: db read dbr_k6pld3uojpqyexg4jhyrviepte: relayed 1 chunks (102 bytes) in 1.005s, ended done
    agent.go:135: dbreads: dbr_hpt4jbqt75zm6brx2zkzci6zzm: planned 3 files (1544 bytes) and held through 3 in 9ms
    agent.go:135: dbreads: dbr_hpt4jbqt75zm6brx2zkzci6zzm: output 1544 bytes in 1 confirmed chunks in 1ms
2026/10/25 00:03:32 console: db read dbr_hpt4jbqt75zm6brx2zkzci6zzm: relayed 1 chunks (1641 bytes) in 1.004s, ended done
=== RUN   TestDBForwardMinio/by_disconnect
=== NAME  TestDBForwardMinio
    agent.go:135: dbreads: dbr_52qkvkebpmphwxb2omd2m7stau: planned 3 files (1544 bytes) and restored to 3 in 10ms
2026/10/25 00:03:32 console: db read dbr_52qkvkebpmphwxb2omd2m7stau: relayed 0 chunks (0 bytes) in 18ms, ended client gone
    agent.go:135: dbreads: dbr_52qkvkebpmphwxb2omd2m7stau: output 5 bytes in 1 confirmed chunks in 103ms
=== RUN   TestDBForwardMinio/by_timeout
=== NAME  TestDBForwardMinio
    agent.go:135: dbreads: dbr_pdetksg23gcziiglderbza37h4: planned 3 files (1544 bytes) and restored to 3 in 9ms
2026/10/25 00:03:52 console: db read dbr_pdetksg23gcziiglderbza37h4: relayed 0 chunks (0 bytes) in 19.144s, ended no-result
    agent.go:135: dbreads: dbr_pdetksg23gcziiglderbza37h4: output 5 bytes in 1 confirmed chunks in 19.118s
--- PASS: TestDBForwardMinio (22.59s)
    --- PASS: TestDBForwardMinio/by_disconnect (0.23s)
    --- PASS: TestDBForwardMinio/by_timeout (19.25s)
PASS
ok  	github.com/carlosframework/platform/internal/console	22.611s
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