Runs started by a scoped service credential (PRO-6214): a run role that names its commands, sees only its own runs, and starts each keyed run exactly once
Fleet (Tito's back office) needs to run its Classic import and recurring sync through carlos run without a person's token. Amends run spec § 2 ruling 1 for the run role only. Spec: docs/superpowers/specs/2026-10-24-service-runs-design.md; plan: docs/superpowers/plans/2026-10-24-service-runs.md. - svcrole.Run, reachable only through svcrole.Exactly(Run); Allow(Run) panics, so no Allow set can carry Admin through a run door. - A run credential is app-bound and carries its own credential_id (128-bit, unique, kept on rotate, new on every mint, backfilled once) and the command prefixes it may run (carlos services create --role run --commands "..."), word for word, fail-closed; CLIPrincipal refuses any run row it cannot fully read. - The six run doors admit a run service for its own runs only (keyed on the credential, kind-scoped); another caller's run answers exactly as an unknown id; the open-run refusal is redacted for services; the requester is shown as "started by service <name> for <email> (as stated by the service)". - Idempotency-Key: the admitted key is recorded in the instance record by the same CAS that admits the run (run_keys, 24h, 32 per caller), so twins and retries never run twice; keyed creates stay off (503 keys_not_ready) until CARLOS_RUN_KEYS=on. carlos run --idempotency-key; GET .../runs?key=. - Run handler refusals carry stable codes; docs/site/cli.md documents the role, the commands rule, the run API, the codes and the key lifetime. Reviewed task by task (Opus), whole-branch by Fable and by Astra (gpt-6-astra, high), with every finding addressed. Copy approved by Paul 2026-10-24. Census approved by Paul (census owner) 2026-10-24 at ffe8f40a, re-sealed onto main 3d7cbe30 with no change to the approved claims (docs/superpowers/notes/census-proposal-pro-6214-service-runs.md).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
50 files changed,
+6092
−205
apimode.go+21 −13auth.go+10 −0cmd/console/main.go+1 −0docs/site/cli.md+72 −2docs/superpowers/notes/census-proposal-pro-6214-service-runs.md+138 −0docs/superpowers/plans/2026-10-24-service-runs.md+489 −0docs/superpowers/specs/2026-10-08-carlos-run-design.md+2 −0docs/superpowers/specs/2026-10-24-service-runs-design.md+318 −0internal/console/apiruns.go+446 −44internal/console/apiruns_key_test.go+819 −0internal/console/apiruns_service_test.go+873 −0internal/console/apirunsfollow.go+52 −35internal/console/apiservices.go+86 −13internal/console/authcli.go+17 −5internal/console/authstore.go+115 −6internal/console/claim_invariant_fixtures_test.go+6 −0internal/console/deploycred_test.go+5 −5internal/console/deploydoors_test.go+1 −1internal/console/deploymixed_test.go+1 −1internal/console/deployscope_test.go+1 −1internal/console/deploysign_test.go+2 −2internal/console/server.go+7 −0internal/console/svcpage.go+41 −5internal/console/svcprincipal.go+126 −18internal/console/svcprincipal_run_test.go+572 −0internal/console/svcroutes_test.go+51 −9internal/console/templates/account_settings.html+5 −2internal/console/testdata/claim-routes.txt+1 −0internal/host/runevents.go+6 −1internal/host/runevents_service_test.go+32 −0internal/provision/plan9_b8_census_test.go+1 −1internal/provision/provision.go+9 −0internal/provision/run.go+102 −3internal/provision/run_keys_test.go+409 −0internal/provision/service_runs_census_test.go+56 −0internal/provision/testdata/plan14-root-reads-chain.tsv+2 −0internal/provision/testdata/plan14-root-reads-pro-6214-service-runs-decisions.tsv+20 −0internal/provision/testdata/plan14-root-reads-pro-6214-service-runs.tsv+38 −0internal/runs/commands.go+134 −0internal/runs/commands_test.go+156 −0internal/runs/keys.go+111 −0internal/runs/keys_test.go+123 −0internal/runs/runs.go+56 −4internal/runs/runs_test.go+5 −5internal/svcrole/svcrole.go+39 −4internal/svcrole/svcrole_test.go+104 −0run.go+77 −7run_test.go+197 −0services.go+39 −10services_cli_test.go+98 −8
CI passed — run details
CI log
=== gate ===
.amadan/test-gate.sh
=== launchctx (1 s)
ok amadan.net/carlos/platform.git/launchctx 0.012s
? amadan.net/carlos/platform.git/launchctx/controlname [no test files]
? amadan.net/carlos/platform.git/launchctx/wireid [no test files]
=== vet (19 s)
=== gofmt (1 s)
gofmt -l .: clean
=== rest (178 s)
? github.com/carlosframework/platform/cmd/changelog [no test files]
ok github.com/carlosframework/platform/cmd/console 4.024s
ok github.com/carlosframework/platform/cmd/moveprobe 11.770s
ok github.com/carlosframework/platform/cmd/zddprobe 0.777s
ok github.com/carlosframework/platform/internal/activator 58.113s
ok github.com/carlosframework/platform/internal/agentsock 0.021s
ok github.com/carlosframework/platform/internal/alerting 0.008s
ok github.com/carlosframework/platform/internal/analytics 0.020s
ok github.com/carlosframework/platform/internal/appconfig 2.960s
ok github.com/carlosframework/platform/internal/apperr 0.113s
ok github.com/carlosframework/platform/internal/applog 0.204s
ok github.com/carlosframework/platform/internal/assetcache 0.118s
ok github.com/carlosframework/platform/internal/awsinv 0.007s
ok github.com/carlosframework/platform/internal/boxchoice 0.005s
ok github.com/carlosframework/platform/internal/boxid 0.920s
? 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.010s
ok github.com/carlosframework/platform/internal/caps 0.016s
ok github.com/carlosframework/platform/internal/certwarm 0.004s
ok github.com/carlosframework/platform/internal/cgroup 0.829s
ok github.com/carlosframework/platform/internal/changelog 0.469s
ok github.com/carlosframework/platform/internal/claimactivation 1.201s
ok github.com/carlosframework/platform/internal/clamd 0.061s
? 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.585s
ok github.com/carlosframework/platform/internal/dbdoor/dbdoortest 0.013s
ok github.com/carlosframework/platform/internal/dbquery 0.007s
ok github.com/carlosframework/platform/internal/dbreads 2.114s
? github.com/carlosframework/platform/internal/dbreads/dbreadstest [no test files]
ok github.com/carlosframework/platform/internal/dbverify 0.007s
ok github.com/carlosframework/platform/internal/dnsrec 0.003s
ok github.com/carlosframework/platform/internal/docsite 0.008s
ok github.com/carlosframework/platform/internal/domains 2.922s
ok github.com/carlosframework/platform/internal/doorkey 0.007s
ok github.com/carlosframework/platform/internal/economics 0.004s
ok github.com/carlosframework/platform/internal/edge 45.870s
? github.com/carlosframework/platform/internal/edgeproof [no test files]
ok github.com/carlosframework/platform/internal/edgesfile 0.008s
ok github.com/carlosframework/platform/internal/fleetapi 0.135s
ok github.com/carlosframework/platform/internal/gate 1.658s
ok github.com/carlosframework/platform/internal/genselect 0.016s
ok github.com/carlosframework/platform/internal/geo 0.016s
ok github.com/carlosframework/platform/internal/geoip 0.029s
ok github.com/carlosframework/platform/internal/historyreadback 0.155s
ok github.com/carlosframework/platform/internal/host 147.891s
ok github.com/carlosframework/platform/internal/hostactors 6.378s
ok github.com/carlosframework/platform/internal/hostactors/awsmembership 0.007s
ok github.com/carlosframework/platform/internal/hostbox 3.094s
ok github.com/carlosframework/platform/internal/hostclaim 0.721s
ok github.com/carlosframework/platform/internal/hostenv 0.009s
ok github.com/carlosframework/platform/internal/hostevidence 0.012s
ok github.com/carlosframework/platform/internal/hostexec 5.526s
ok github.com/carlosframework/platform/internal/hostfence 0.032s
ok github.com/carlosframework/platform/internal/hostfiles 10.305s
ok github.com/carlosframework/platform/internal/hostfloor 0.017s
ok github.com/carlosframework/platform/internal/hostguard 1.077s
ok github.com/carlosframework/platform/internal/hostops 2.039s
? github.com/carlosframework/platform/internal/hostops/fencerelease [no test files]
ok github.com/carlosframework/platform/internal/hostops/internal/fencerelease 0.002s
ok github.com/carlosframework/platform/internal/hostquarantine 0.002s
ok github.com/carlosframework/platform/internal/hostrelocate 0.672s
ok github.com/carlosframework/platform/internal/hostresolve 0.163s
ok github.com/carlosframework/platform/internal/hostwrite 0.003s
ok github.com/carlosframework/platform/internal/infraview 0.002s
ok github.com/carlosframework/platform/internal/instancectl 5.255s
ok github.com/carlosframework/platform/internal/instanceexec 2.787s
ok github.com/carlosframework/platform/internal/instancefs 0.005s
ok github.com/carlosframework/platform/internal/instancekey 0.005s
ok github.com/carlosframework/platform/internal/instanceupdates 0.021s
ok github.com/carlosframework/platform/internal/layout 1.825s
ok github.com/carlosframework/platform/internal/lbhealth 0.008s
ok github.com/carlosframework/platform/internal/lease 10.114s
ok github.com/carlosframework/platform/internal/lease/leasetest 0.550s
ok github.com/carlosframework/platform/internal/ledger 0.017s
ok github.com/carlosframework/platform/internal/mail 0.244s
ok github.com/carlosframework/platform/internal/maintenance 0.089s
ok github.com/carlosframework/platform/internal/maintenanceexec 5.587s
ok github.com/carlosframework/platform/internal/maintenanceguard 0.091s
ok github.com/carlosframework/platform/internal/metrics 0.010s
ok github.com/carlosframework/platform/internal/moves 22.482s
ok github.com/carlosframework/platform/internal/moves/archive 1.094s
ok github.com/carlosframework/platform/internal/objstore 0.303s
ok github.com/carlosframework/platform/internal/ops 0.260s
ok github.com/carlosframework/platform/internal/park 0.284s
ok github.com/carlosframework/platform/internal/plans 0.009s
ok github.com/carlosframework/platform/internal/privatefile 0.010s
ok github.com/carlosframework/platform/internal/provision 24.769s
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 5.760s
ok github.com/carlosframework/platform/internal/relay 7.228s
ok github.com/carlosframework/platform/internal/release 26.005s
ok github.com/carlosframework/platform/internal/rollout 3.877s
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.062s
ok github.com/carlosframework/platform/internal/rootstate 0.027s
ok github.com/carlosframework/platform/internal/runs 0.641s
ok github.com/carlosframework/platform/internal/s3compat 0.005s
ok github.com/carlosframework/platform/internal/safefile 0.005s
ok github.com/carlosframework/platform/internal/schedule 2.716s
ok github.com/carlosframework/platform/internal/seeds 0.012s
ok github.com/carlosframework/platform/internal/sim/engines 2.702s
ok github.com/carlosframework/platform/internal/sim/hostlife 11.846s
ok github.com/carlosframework/platform/internal/sim/litestreamfacts 3.896s
ok github.com/carlosframework/platform/internal/status 0.076s
ok github.com/carlosframework/platform/internal/steering 0.007s
ok github.com/carlosframework/platform/internal/stopevidence 0.274s
ok github.com/carlosframework/platform/internal/svcrole 0.002s
ok github.com/carlosframework/platform/internal/telemetry 0.005s
ok github.com/carlosframework/platform/internal/termfence 0.004s
ok github.com/carlosframework/platform/internal/tunnelclient 0.005s
ok github.com/carlosframework/platform/internal/unixdial 0.004s
ok github.com/carlosframework/platform/internal/updatewords 0.005s
ok github.com/carlosframework/platform/internal/usage 0.005s
ok github.com/carlosframework/platform/internal/version 0.002s
ok github.com/carlosframework/platform/internal/vet 1.709s
=== internal_console@0 (84 s)
ok github.com/carlosframework/platform/internal/console 82.249s
=== internal_console@1 (42 s)
ok github.com/carlosframework/platform/internal/console 40.047s
=== internal_console@2 (44 s)
ok github.com/carlosframework/platform/internal/console 42.415s
=== internal_console@3 (46 s)
ok github.com/carlosframework/platform/internal/console 44.887s
=== internal_console@4 (43 s)
ok github.com/carlosframework/platform/internal/console 41.596s
=== internal_console@5 (39 s)
ok github.com/carlosframework/platform/internal/console 37.621s
=== internal_console@6 (44 s)
ok github.com/carlosframework/platform/internal/console 42.504s
=== internal_console@7 (47 s)
ok github.com/carlosframework/platform/internal/console 45.879s
=== root@0 (111 s)
ok github.com/carlosframework/platform 109.201s
=== root@1 (98 s)
ok github.com/carlosframework/platform 96.331s
=== root@2 (79 s)
ok github.com/carlosframework/platform 77.136s
=== 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.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.023s
=== RUN TestT4StorageProbeMinio
2026/10/24 21:44:16 moves: T4: STORE: list: operation error S3: ListObjectsV2, https response error StatusCode: 403, RequestID: 18E1954682F48B01, 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.031s
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/24 21:44:19 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:44:19 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:44:19 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:44:19 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:44:19 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:44:19 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:44:19 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000003
2026/10/24 21:44:19 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000003 maxTXID=0000000000000003 size=454
2026/10/24 21:44:19 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000003 txid.db=0000000000000003
2026/10/24 21:44:19 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:44:19 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:44:19 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:44:19 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/24 21:44:19 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%3A39131: could not determine target mailbox
agent.go:135: dbreads: dbr_2p7wp2pvsrn2ero3l2qij7sgea: planned 3 files (1544 bytes) and restored to 3 in 10ms
agent.go:135: dbreads: dbr_2p7wp2pvsrn2ero3l2qij7sgea: output 5 bytes in 1 confirmed chunks in 1ms
2026/10/24 21:44:20 console: db read dbr_2p7wp2pvsrn2ero3l2qij7sgea: relayed 1 chunks (102 bytes) in 1.004s, ended done
agent.go:135: dbreads: dbr_qq3cjueylh5uf7hzygwjmij764: planned 1 files (720 bytes) and restored to 1 in 8ms
agent.go:135: dbreads: dbr_qq3cjueylh5uf7hzygwjmij764: output 5 bytes in 1 confirmed chunks in 1ms
2026/10/24 21:44:21 console: db read dbr_qq3cjueylh5uf7hzygwjmij764: relayed 1 chunks (102 bytes) in 1.003s, ended done
agent.go:135: dbreads: dbr_rf5rpuiha6pgvdzwgka25vihqi: planned 3 files (1544 bytes) and held through 3 in 9ms
agent.go:135: dbreads: dbr_rf5rpuiha6pgvdzwgka25vihqi: output 1544 bytes in 1 confirmed chunks in 1ms
2026/10/24 21:44:22 console: db read dbr_rf5rpuiha6pgvdzwgka25vihqi: relayed 1 chunks (1641 bytes) in 1.004s, ended done
=== RUN TestDBForwardMinio/by_disconnect
=== NAME TestDBForwardMinio
agent.go:135: dbreads: dbr_c44syfsi3spogq2byr3r5coauq: planned 3 files (1544 bytes) and restored to 3 in 9ms
2026/10/24 21:44:22 console: db read dbr_c44syfsi3spogq2byr3r5coauq: relayed 0 chunks (0 bytes) in 17ms, ended client gone
agent.go:135: dbreads: dbr_c44syfsi3spogq2byr3r5coauq: output 5 bytes in 1 confirmed chunks in 103ms
=== RUN TestDBForwardMinio/by_timeout
=== NAME TestDBForwardMinio
agent.go:135: dbreads: dbr_vrdpbcbsn44lz2maekbfxheewi: planned 3 files (1544 bytes) and restored to 3 in 9ms
2026/10/24 21:44:42 console: db read dbr_vrdpbcbsn44lz2maekbfxheewi: relayed 0 chunks (0 bytes) in 19.51s, ended no-result
agent.go:135: dbreads: dbr_vrdpbcbsn44lz2maekbfxheewi: output 5 bytes in 1 confirmed chunks in 19.486s
--- PASS: TestDBForwardMinio (22.94s)
--- PASS: TestDBForwardMinio/by_disconnect (0.22s)
--- PASS: TestDBForwardMinio/by_timeout (19.62s)
PASS
ok github.com/carlosframework/platform/internal/console 22.965s
minio contract: PASS
apimode.goLoading diff…
auth.goLoading diff…
cmd/console/main.goLoading diff…
docs/site/cli.mdLoading diff…
docs/superpowers/notes/census-proposal-pro-6214-service-runs.mdLoading diff…
docs/superpowers/plans/2026-10-24-service-runs.mdLoading diff…
docs/superpowers/specs/2026-10-08-carlos-run-design.mdLoading diff…
docs/superpowers/specs/2026-10-24-service-runs-design.mdLoading diff…
internal/console/apiruns.goLoading diff…
internal/console/apiruns_key_test.goLoading diff…
internal/console/apiruns_service_test.goLoading diff…
internal/console/apirunsfollow.goLoading diff…
internal/console/apiservices.goLoading diff…
internal/console/authcli.goLoading diff…
internal/console/authstore.goLoading diff…
internal/console/claim_invariant_fixtures_test.goLoading diff…
internal/console/deploycred_test.goLoading diff…
internal/console/deploydoors_test.goLoading diff…
internal/console/deploymixed_test.goLoading diff…
internal/console/deployscope_test.goLoading diff…
internal/console/deploysign_test.goLoading diff…
internal/console/server.goLoading diff…
internal/console/svcpage.goLoading diff…
internal/console/svcprincipal.goLoading diff…
internal/console/svcprincipal_run_test.goLoading diff…
internal/console/svcroutes_test.goLoading diff…
internal/console/templates/account_settings.htmlLoading diff…
internal/console/testdata/claim-routes.txtLoading diff…
internal/host/runevents.goLoading diff…
internal/host/runevents_service_test.goLoading diff…
internal/provision/plan9_b8_census_test.goLoading diff…
internal/provision/provision.goLoading diff…
internal/provision/run.goLoading diff…
internal/provision/run_keys_test.goLoading diff…
internal/provision/service_runs_census_test.goLoading diff…
internal/provision/testdata/plan14-root-reads-chain.tsvLoading diff…
internal/provision/testdata/plan14-root-reads-pro-6214-service-runs-decisions.tsvLoading diff…
internal/provision/testdata/plan14-root-reads-pro-6214-service-runs.tsvLoading diff…
internal/runs/commands.goLoading diff…
internal/runs/commands_test.goLoading diff…
internal/runs/keys.goLoading diff…
internal/runs/keys_test.goLoading diff…
internal/runs/runs.goLoading diff…
internal/runs/runs_test.goLoading diff…
internal/svcrole/svcrole.goLoading diff…
internal/svcrole/svcrole_test.goLoading diff…
run.goLoading diff…
run_test.goLoading diff…
services.goLoading diff…
services_cli_test.goLoading diff…