carlos / platform Public

console: lifetime create review fixes: each door's pending answer says it could not confirm, an exhausted counter is final, attach stays neutral and answers the family's 404

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude agent, operated by paul@keymail.dev 2a75caa7fc9485ff0815f3f467cd28d6b4eda415 parent a296037
10 files changed, +101 −33
  • docs/superpowers/notes/census-proposal-self-serve-moves-1.md +2 −0
  • internal/console/apidomains.go +3 −1
  • internal/console/apiinstanceimport.go +1 −1
  • internal/console/apiinstanceseed.go +5 −4
  • internal/console/domainattach.go +5 −4
  • internal/console/lifetimes.go +10 −2
  • internal/console/lifetimes_create.go +3 −0
  • internal/console/lifetimes_create_test.go +64 −19
  • internal/provision/self_serve_moves1_census_test.go +6 −0
  • internal/provision/testdata/plan14-root-reads-self-serve-moves-1.tsv +2 −2

CI failed — run details

CI log
=== gate ===
.amadan/test-gate.sh
=== launchctx (1 s)
ok  	amadan.net/carlos/platform.git/launchctx	0.014s
?   	amadan.net/carlos/platform.git/launchctx/controlname	[no test files]
?   	amadan.net/carlos/platform.git/launchctx/wireid	[no test files]
=== vet (17 s)
=== gofmt (2 s)
gofmt -l .: clean
=== rest (176 s)
?   	github.com/carlosframework/platform/cmd/changelog	[no test files]
ok  	github.com/carlosframework/platform/cmd/console	5.656s
ok  	github.com/carlosframework/platform/cmd/moveprobe	11.995s
ok  	github.com/carlosframework/platform/cmd/zddprobe	0.822s
ok  	github.com/carlosframework/platform/internal/activator	61.066s
ok  	github.com/carlosframework/platform/internal/agentsock	0.100s
ok  	github.com/carlosframework/platform/internal/alerting	0.101s
ok  	github.com/carlosframework/platform/internal/analytics	0.114s
ok  	github.com/carlosframework/platform/internal/appconfig	3.896s
ok  	github.com/carlosframework/platform/internal/apperr	0.226s
ok  	github.com/carlosframework/platform/internal/applog	0.224s
ok  	github.com/carlosframework/platform/internal/awsinv	0.015s
ok  	github.com/carlosframework/platform/internal/boxchoice	0.006s
ok  	github.com/carlosframework/platform/internal/boxid	0.941s
?   	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.016s
ok  	github.com/carlosframework/platform/internal/caps	0.074s
ok  	github.com/carlosframework/platform/internal/certwarm	0.015s
ok  	github.com/carlosframework/platform/internal/cgroup	0.813s
ok  	github.com/carlosframework/platform/internal/changelog	0.560s
ok  	github.com/carlosframework/platform/internal/claimactivation	1.252s
ok  	github.com/carlosframework/platform/internal/clamd	0.059s
?   	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	6.543s
ok  	github.com/carlosframework/platform/internal/dbdoor/dbdoortest	0.027s
ok  	github.com/carlosframework/platform/internal/dbverify	0.009s
ok  	github.com/carlosframework/platform/internal/dnsrec	0.015s
--- FAIL: TestFenceLanguagesAreDeclared (0.00s)
    fences_test.go:32: cli.md:2345: fence declares no language
    fences_test.go:32: cli.md:2351: fence declares no language
FAIL
FAIL	github.com/carlosframework/platform/internal/docsite	0.092s
ok  	github.com/carlosframework/platform/internal/domains	3.227s
ok  	github.com/carlosframework/platform/internal/doorkey	0.014s
ok  	github.com/carlosframework/platform/internal/economics	0.017s
ok  	github.com/carlosframework/platform/internal/edge	48.285s
?   	github.com/carlosframework/platform/internal/edgeproof	[no test files]
ok  	github.com/carlosframework/platform/internal/edgesfile	0.029s
ok  	github.com/carlosframework/platform/internal/fleetapi	0.232s
ok  	github.com/carlosframework/platform/internal/gate	2.435s
ok  	github.com/carlosframework/platform/internal/genselect	0.096s
ok  	github.com/carlosframework/platform/internal/geo	0.087s
ok  	github.com/carlosframework/platform/internal/geoip	0.033s
ok  	github.com/carlosframework/platform/internal/historyreadback	0.248s
ok  	github.com/carlosframework/platform/internal/host	143.899s
ok  	github.com/carlosframework/platform/internal/hostactors	8.365s
ok  	github.com/carlosframework/platform/internal/hostactors/awsmembership	0.014s
ok  	github.com/carlosframework/platform/internal/hostbox	5.934s
ok  	github.com/carlosframework/platform/internal/hostclaim	1.572s
ok  	github.com/carlosframework/platform/internal/hostenv	0.012s
ok  	github.com/carlosframework/platform/internal/hostevidence	0.036s
ok  	github.com/carlosframework/platform/internal/hostexec	9.024s
ok  	github.com/carlosframework/platform/internal/hostfence	0.128s
ok  	github.com/carlosframework/platform/internal/hostfiles	12.298s
ok  	github.com/carlosframework/platform/internal/hostfloor	0.043s
ok  	github.com/carlosframework/platform/internal/hostguard	1.276s
ok  	github.com/carlosframework/platform/internal/hostops	4.251s
?   	github.com/carlosframework/platform/internal/hostops/fencerelease	[no test files]
ok  	github.com/carlosframework/platform/internal/hostops/internal/fencerelease	0.003s
ok  	github.com/carlosframework/platform/internal/hostquarantine	0.002s
ok  	github.com/carlosframework/platform/internal/hostrelocate	1.707s
ok  	github.com/carlosframework/platform/internal/hostresolve	0.555s
ok  	github.com/carlosframework/platform/internal/hostwrite	0.011s
ok  	github.com/carlosframework/platform/internal/infraview	0.011s
ok  	github.com/carlosframework/platform/internal/instancectl	5.298s
ok  	github.com/carlosframework/platform/internal/instanceexec	2.954s
ok  	github.com/carlosframework/platform/internal/instancefs	0.047s
ok  	github.com/carlosframework/platform/internal/instancekey	0.011s
ok  	github.com/carlosframework/platform/internal/instanceupdates	0.030s
ok  	github.com/carlosframework/platform/internal/layout	3.739s
ok  	github.com/carlosframework/platform/internal/lbhealth	0.007s
ok  	github.com/carlosframework/platform/internal/lease	10.351s
ok  	github.com/carlosframework/platform/internal/lease/leasetest	1.160s
ok  	github.com/carlosframework/platform/internal/ledger	0.034s
ok  	github.com/carlosframework/platform/internal/mail	0.721s
ok  	github.com/carlosframework/platform/internal/maintenance	0.095s
ok  	github.com/carlosframework/platform/internal/maintenanceexec	6.219s
ok  	github.com/carlosframework/platform/internal/maintenanceguard	0.322s
ok  	github.com/carlosframework/platform/internal/metrics	0.020s
ok  	github.com/carlosframework/platform/internal/moves	27.259s
ok  	github.com/carlosframework/platform/internal/moves/archive	2.167s
ok  	github.com/carlosframework/platform/internal/objstore	1.143s
ok  	github.com/carlosframework/platform/internal/ops	0.605s
ok  	github.com/carlosframework/platform/internal/park	0.835s
ok  	github.com/carlosframework/platform/internal/plans	0.023s
ok  	github.com/carlosframework/platform/internal/privatefile	0.006s
ok  	github.com/carlosframework/platform/internal/provision	26.025s
ok  	github.com/carlosframework/platform/internal/publicrelease	0.036s
?   	github.com/carlosframework/platform/internal/regionname	[no test files]
ok  	github.com/carlosframework/platform/internal/registry	8.116s
ok  	github.com/carlosframework/platform/internal/relay	7.289s
ok  	github.com/carlosframework/platform/internal/release	32.448s
ok  	github.com/carlosframework/platform/internal/rollout	5.601s
ok  	github.com/carlosframework/platform/internal/rolloutwords	0.004s
ok  	github.com/carlosframework/platform/internal/rootaws	0.008s
ok  	github.com/carlosframework/platform/internal/rootparticipation	0.061s
ok  	github.com/carlosframework/platform/internal/rootstate	0.027s
ok  	github.com/carlosframework/platform/internal/runs	0.595s
ok  	github.com/carlosframework/platform/internal/s3compat	0.006s
ok  	github.com/carlosframework/platform/internal/safefile	0.007s
ok  	github.com/carlosframework/platform/internal/schedule	4.405s
ok  	github.com/carlosframework/platform/internal/seeds	0.023s
ok  	github.com/carlosframework/platform/internal/sim/hostlife	25.023s
ok  	github.com/carlosframework/platform/internal/sim/litestreamfacts	3.988s
ok  	github.com/carlosframework/platform/internal/status	0.163s
ok  	github.com/carlosframework/platform/internal/steering	0.007s
ok  	github.com/carlosframework/platform/internal/stopevidence	0.594s
ok  	github.com/carlosframework/platform/internal/svcrole	0.020s
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.007s
ok  	github.com/carlosframework/platform/internal/updatewords	0.005s
ok  	github.com/carlosframework/platform/internal/usage	0.014s
ok  	github.com/carlosframework/platform/internal/version	0.013s
ok  	github.com/carlosframework/platform/internal/vet	2.007s
FAIL
=== internal_console@0 (84 s)
ok  	github.com/carlosframework/platform/internal/console	81.651s
=== internal_console@1 (49 s)
ok  	github.com/carlosframework/platform/internal/console	46.398s
=== internal_console@2 (43 s)
ok  	github.com/carlosframework/platform/internal/console	40.766s
=== internal_console@3 (48 s)
2026/10/22 21:42:14 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:14 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:14 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:14 console: alert watch: no keymail grant for ops-b@keymail.dev — not notified (they must sign in to the console once)
2026/10/22 21:42:14 console: alert watch: no keymail grant for ops-b@keymail.dev — not notified (they must sign in to the console once)
2026/10/22 21:42:14 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:14 console: alert watch: keymail box-a/disk to ops-b@keymail.dev: context deadline exceeded
2026/10/22 21:42:14 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:14 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:14 console: backfilled account manifest for bab (ops)
2026/10/22 21:42:14 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:14 console: backfilled account manifest for bab (ops)
2026/10/22 21:42:14 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:14 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:14 console: box ie-old has the legacy role (by paul@keymail.dev, roster revision 2)
2026/10/22 21:42:14 console: box ie-old has the default role (by paul@keymail.dev, roster revision 3)
2026/10/22 21:42:14 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:14 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:14 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:14 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:14 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:14 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:15 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:15 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:15 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:15 console: app region bab/paul:  (default)
2026/10/22 21:42:15 console: backfilled account manifest for bab (ops)
2026/10/22 21:42:15 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:15 console: api ship bab/console: read app flags: SQL logic error: no such column: build_probe (1)
2026/10/22 21:42:15 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:15 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:15 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:15 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:15 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/22 21:42:15 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/22 21:42:15 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/22 21:42:15 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:15 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/22 21:42:15 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/22 21:42:15 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/22 21:42:15 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:15 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/22 21:42:15 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/22 21:42:15 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/22 21:42:15 console: api db bab/titogo/acme.go.tito.io: stream level 0 1-1: context canceled
2026/10/22 21:42:15 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:15 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:16 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:16 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:16 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:16 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:16 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:16 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:16 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:16 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:16 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:16 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:16 console: could not notify alice@keymail.dev of a CLI token issue: keymail: grant revoked or invalid
2026/10/22 21:42:16 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:16 console: could not notify alice@keymail.dev of a CLI token issue: keymail: grant revoked or invalid
2026/10/22 21:42:16 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:16 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:16 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:16 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:16 console: CARLOS_ACME_DELEGATION_ZONE "*.bad zone" is not a valid domain — delegation off, wildcard-enable requests refuse with "no delegation zone configured" until it's fixed
2026/10/22 21:42:16 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:16 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:17 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:17 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:17 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:17 console: could not notify alice@keymail.dev of a CLI token issue: Post "http://127.0.0.1:42403/api/app/send": dial tcp 127.0.0.1:42403: connect: connection refused
2026/10/22 21:42:17 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:17 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:17 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:17 console: import old.shop.example.com: write the record: the bucket refused the write
2026/10/22 21:42:17 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:17 console: finish seed sd_mbsuzncv2fkq6lgnxyevai3bam of bab/shop/old.bab.apps.example.net: tore down its store (bucket carlos-bab-shop-old)
2026/10/22 21:42:17 console: finished seed sd_mbsuzncv2fkq6lgnxyevai3bam of bab/shop/old.bab.apps.example.net
2026/10/22 21:42:17 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:17 console: import old.shop.example.com: seed sd_qdoyg447qcpruf3qywi4otdzoe moved on while it was checked (&{ID:sd_qdoyg447qcpruf3qywi4otdzoe Kind:import From: TXID: SHA256:dd9b20ff50b5deb0b975a4206846b45e1635146b14b80ba2b91468246a47d29d Bytes:8192 State:aborted Reason: By:alice@keymail.dev At:2026-10-22 21:42:17.586601538 +0000 UTC Replaces:127.0.0.1:8401 VerifyHash:f86413b13a787f9f20a1f3076cdadafdf4a872c37a12364ef3e5d866eee07550}); nothing put
2026/10/22 21:42:17 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:17 console: import old.shop.example.com: the record went while seed sd_5ygenflophb7aytedm6hefvs6u was checked; nothing put
2026/10/22 21:42:17 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:17 console: import old.shop.example.com: check: not a database
2026/10/22 21:42:17 console: import old.shop.example.com: seed sd_x5krenxveecufjb6rmdxq6f2ia moved on before its upload's the check was recorded; not aborted: provision: seed transition refused: seed sd_x5krenxveecufjb6rmdxq6f2ia is uploaded
2026/10/22 21:42:17 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:17 console: import old.shop.example.com: seed sd_u24ztyj5urytjvcd2lu5ovuici moved on while it was checked (&{ID:sd_u24ztyj5urytjvcd2lu5ovuici Kind:import From: TXID: SHA256:dd9b20ff50b5deb0b975a4206846b45e1635146b14b80ba2b91468246a47d29d Bytes:8192 State:uploaded Reason: By:alice@keymail.dev At:2026-10-22 21:42:17.781675052 +0000 UTC Replaces:127.0.0.1:8401 VerifyHash:631f94a0f99b7cd21f9bd615da5be4c0c3c876b75669f95172c3dbaa4abd3a51}); nothing put
2026/10/22 21:42:17 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:17 console: import bad.shop.example.com: seed "not-a-seed-id": seeds: not a seed id
2026/10/22 21:42:17 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:17 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:17 console: finished seed sd_7oiadwd22gxhi7n5xyns73micy of bab/shop/old.shop.example.com
2026/10/22 21:42:18 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:18 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:18 console: finished seed sd_ww5jm5pozkg4eyeou56eaymkmu of bab/shop/early.shop.example.com
2026/10/22 21:42:18 console: finished seed sd_mxjlafhp3t7sw5pom35vuqdfci of bab/shop/old.shop.example.com
2026/10/22 21:42:18 console: finished seed sd_dqjolberrkewbhb46xi3th4kw4 of bab/shop/refused.shop.example.com
2026/10/22 21:42:18 console: finished seed sd_ha7dzzqqpxd7dfahrqiyy5y3vm of bab/shop/rolled-back.shop.example.com
2026/10/22 21:42:18 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:18 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:18 console: api instance move bab/titogo/acme.go.tito.io: the claim is moving under mv_jtlyxcjf6ga35mbn5rn5ns3wqe but the record start failed: secret-detail: record put failed
2026/10/22 21:42:18 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:18 console: api instances delete bab/titogo/acme.go.tito.io: provision: claim retirement unavailable
2026/10/22 21:42:18 console: api instances delete bab/titogo/acme.go.tito.io: provision: claim retirement unavailable
2026/10/22 21:42:18 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:18 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:18 console: api instance move bab/titogo/acme.go.tito.io: typed move write refused: hostops: identity mismatch
2026/10/22 21:42:18 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:19 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:20 console: api instance move bab/titogo/acme.go.tito.io: declared loss refused: hostresolve: evidence or operation does not authorize resolution
2026/10/22 21:42:20 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:20 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:20 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:20 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:20 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:20 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:20 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:20 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:20 edges: box "uk-box" has an edges file under control/edges/ but no status snapshot at all, so no region outside the home is automatically eligible until it reports; said once
2026/10/22 21:42:20 edges: 1 edges file(s) under control/edges/ but no fresh box snapshot matched any of them, so automatic region placement sees the home alone (are edges and status in different buckets? see CARLOS_STATUS_BUCKET/CARLOS_STATUS_PREFIX)
2026/10/22 21:42:20 console: an incomplete read of the edges files or box snapshots (edges complete true, snapshots complete false), so no region outside the home is automatically eligible this request; said once
2026/10/22 21:42:21 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:21 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:21 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:21 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:21 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:21 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:21 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:21 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:21 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:21 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:22 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:22 console: api instances create bab/titogo: host claim check junk-titogo.bab.oncarlos.test: domains: claim junk-titogo.bab.oncarlos.test: invalid character 'o' in literal null (expecting 'u')
2026/10/22 21:42:22 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:22 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:22 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:22 console: api instances create bab/titogo: pipeline read: pipeline wrapper: invalid character 'o' in literal null (expecting 'u')
2026/10/22 21:42:22 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/22 21:42:22 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/22 21:42:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/22 21:42:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/22 21:42:22 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/22 21:42:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/22 21:42:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000003
2026/10/22 21:42:22 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000003 maxTXID=0000000000000003 size=454
2026/10/22 21:42:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000003 txid.db=0000000000000003
2026/10/22 21:42:22 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/22 21:42:22 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/22 21:42:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/22 21:42:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/22 21:42:22 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/22 21:42:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/22 21:42:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000003
2026/10/22 21:42:22 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000003 maxTXID=0000000000000003 size=454
2026/10/22 21:42:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000003 txid.db=0000000000000003
2026/10/22 21:42:22 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/22 21:42:22 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/22 21:42:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/22 21:42:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/22 21:42:22 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/22 21:42:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/22 21:42:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000003
2026/10/22 21:42:22 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000003 maxTXID=0000000000000003 size=454
2026/10/22 21:42:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000003 txid.db=0000000000000003
2026/10/22 21:42:22 console: from main.shop.example.com: upload canary.shop.example.com: access denied
2026/10/22 21:42:22 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/22 21:42:22 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/22 21:42:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/22 21:42:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/22 21:42:22 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/22 21:42:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/22 21:42:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000003
2026/10/22 21:42:22 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000003 maxTXID=0000000000000003 size=454
2026/10/22 21:42:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000003 txid.db=0000000000000003
2026/10/22 21:42:22 console: from main.shop.example.com: publish canary.shop.example.com: the bucket refused the write
2026/10/22 21:42:22 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/22 21:42:22 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/22 21:42:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/22 21:42:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/22 21:42:22 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/22 21:42:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/22 21:42:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000003
2026/10/22 21:42:22 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000003 maxTXID=0000000000000003 size=454
2026/10/22 21:42:22 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000003 txid.db=0000000000000003
2026/10/22 21:42:22 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:22 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:22 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:22 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:22 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:22 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:22 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:22 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:22 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:22 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:23 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:23 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:23 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:23 console: app region bab/widget:  (default)
2026/10/22 21:42:23 console: backfilled account manifest for bab (ops)
2026/10/22 21:42:23 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:23 console: relay enabled bab/titogo in eu-west-1 by alice@keymail.dev (incarnation 9bc9fef285561bd7, op 1)
2026/10/22 21:42:23 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:23 console: relay enabled bab/titogo in eu-west-1 by alice@keymail.dev (incarnation ea0e77cbf0707d7e, op 1)
2026/10/22 21:42:23 console: relay rotated eu-west-1 to kid k2, re-issued 1 app(s)
2026/10/22 21:42:23 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:23 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:23 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:23 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:23 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:23 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:23 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:23 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:23 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:23 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:23 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:23 console: api run bab/shop/acme.example.com run_dm4bbxl2y3wflqvpmyozn3uzcm: clear after ack: put refused; record read: <nil>
2026/10/22 21:42:23 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:23 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:23 console: api run bab/shop/acme.example.com run_3qisoy676lr7jbdldbger7zgbq: clear after ack: <nil>; record read: get refused
2026/10/22 21:42:23 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:24 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:24 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:24 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:24 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:24 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:24 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:25 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:25 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:25 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:25 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:25 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:25 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:25 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:25 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:25 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:25 console: api sidecars create bab/titogo: open registry: unable to open database file (14)
2026/10/22 21:42:25 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:25 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:25 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:25 console: could not notify alice@keymail.dev of a CLI token issue: Post "http://127.0.0.1:40175/api/app/send": dial tcp 127.0.0.1:40175: connect: connection refused
2026/10/22 21:42:25 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:25 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:25 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:25 console: api store provision bab: read entitlement: objstore: store/entitlements/bab.json: invalid character 'p' looking for beginning of value
2026/10/22 21:42:26 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:26 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:26 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:26 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:26 console: api store grant bab/titogo (bucket "other-uploads"): objstore: bucket or IAM user name belongs to another store: other-uploads
2026/10/22 21:42:26 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:26 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:26 console: api system antivirus: read: release: system/antivirus.json: schema 99 is not 1
2026/10/22 21:42:26 console: api system antivirus: replacing an unreadable record on disable: release: system/antivirus.json: schema 99 is not 1
2026/10/22 21:42:26 console: object scanning disabled deployment-wide by alice@keymail.dev
2026/10/22 21:42:26 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:27 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:27 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:27 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:27 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:27 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:27 console: backfilled account manifest for bab (ops)
2026/10/22 21:42:27 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:27 console: api updates bab/km/a.example.com: enable refused, not every box applies update settings: ie-1: runs a binary that does not apply update settings
2026/10/22 21:42:27 console: api updates bab/km/a.example.com: enable refused, not every box applies update settings: ie-1: runs a binary that does not apply update settings
2026/10/22 21:42:27 console: api updates bab/km/a.example.com: enable refused, not every box applies update settings: ie-1: runs a binary that does not apply update settings
2026/10/22 21:42:27 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:27 console: could not notify alice@keymail.dev of a CLI token issue: keymail: grant revoked or invalid
2026/10/22 21:42:27 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:27 console: could not notify alice@keymail.dev of a CLI token issue: keymail: grant revoked or invalid
2026/10/22 21:42:27 console: api updates bab/km policy: enable refused, not every box applies update settings: ie-1: runs a binary that does not apply update settings
2026/10/22 21:42:27 console: api updates bab/km policy: enable refused, not every box applies update settings: ie-1: runs a binary that does not apply update settings
2026/10/22 21:42:27 console: api updates bab/km policy: enable refused, not every box applies update settings: ie-1: runs a binary that does not apply update settings
2026/10/22 21:42:27 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:28 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:28 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:28 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:28 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:28 console: backfilled account manifest for bab (ops)
2026/10/22 21:42:28 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:28 console: backfilled account manifest for bab (ops)
2026/10/22 21:42:28 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:28 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:28 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:28 console: backfilled account manifest for bab (ops)
2026/10/22 21:42:28 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:28 console: backfilled account manifest for bab (ops)
2026/10/22 21:42:28 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:28 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:29 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:29 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:29 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:29 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:29 console: app region bab/rot-a0:  (default)
2026/10/22 21:42:29 console: backfilled account manifest for bab (ops)
2026/10/22 21:42:29 console: app region bab/rot-a1:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a2:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a3:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a4:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a5:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a6:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a7:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a8:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a9:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a10:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a11:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a12:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a13:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a14:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a15:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a16:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a17:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a18:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a19:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a20:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a21:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a22:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a23:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a24:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a25:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a26:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a27:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a28:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a29:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a30:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a31:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a32:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a33:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a34:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a35:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a36:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a37:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a38:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a39:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a40:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a41:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a42:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a43:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a44:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a45:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a46:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a47:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a48:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a49:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a50:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a51:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a52:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a53:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a54:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a55:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a56:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a57:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a58:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a59:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a60:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a61:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a62:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a63:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a64:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a65:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a66:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a67:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a68:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a69:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a70:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a71:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a72:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a73:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a74:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a75:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a76:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a77:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a78:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a79:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a80:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a81:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a82:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a83:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a84:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a85:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a86:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a87:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a88:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a89:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a90:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a91:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a92:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a93:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a94:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a95:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a96:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a97:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a98:  (default)
2026/10/22 21:42:29 console: app region bab/rot-a99:  (default)
2026/10/22 21:42:29 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:29 console: app region bab/person-a0:  (default)
2026/10/22 21:42:29 console: backfilled account manifest for bab (ops)
2026/10/22 21:42:29 console: app region bab/person-a1:  (default)
2026/10/22 21:42:29 console: app region bab/person-a2:  (default)
2026/10/22 21:42:29 console: app region bab/person-a3:  (default)
2026/10/22 21:42:29 console: app region bab/person-a4:  (default)
2026/10/22 21:42:29 console: app region bab/person-a5:  (default)
2026/10/22 21:42:29 console: app region bab/person-a6:  (default)
2026/10/22 21:42:29 console: app region bab/person-a7:  (default)
2026/10/22 21:42:29 console: app region bab/person-a8:  (default)
2026/10/22 21:42:29 console: app region bab/person-a9:  (default)
2026/10/22 21:42:29 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:29 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:29 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:29 console: production flag kass: production flag wrapper: invalid character 'n' looking for beginning of object key string
2026/10/22 21:42:29 console: backfilled account manifest for bab (ops)
2026/10/22 21:42:30 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:30 console: backfilled account manifest for bab (ops)
2026/10/22 21:42:30 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:30 console: backfilled account manifest for bab (ops)
2026/10/22 21:42:30 console: api updates bab/kass/web.kass.carlosapp.dev: enable refused, not every box applies update settings: linus-marquetry: runs a binary that does not apply update settings
2026/10/22 21:42:30 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:30 console: backfilled account manifest for bab (ops)
2026/10/22 21:42:30 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:30 console: backfilled account manifest for bab (ops)
2026/10/22 21:42:30 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:31 console: cli token revoke paul@keymail.dev: hostops: pending
2026/10/22 21:42:32 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:32 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:32 console: materialized account bac (Account) from the bucket
2026/10/22 21:42:32 console: materialized account bac (Account) from the bucket
2026/10/22 21:42:33 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:33 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:33 console: claim restore bab/kass: recovered (restored)
2026/10/22 21:42:33 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:33 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:33 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:33 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:33 console: claim restore bab/kass: recovered (restored)
2026/10/22 21:42:34 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:34 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:34 mail: disassociating tenant resource for bab/remove.example.com: lost disassociation response
2026/10/22 21:42:34 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:34 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:34 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:34 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:34 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:35 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:35 console: materialized account bac (Testco) from the bucket
2026/10/22 21:42:35 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:35 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:35 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:35 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:35 console: could not notify paul@keymail.dev of a CLI token issue: keymail: grant revoked or invalid
2026/10/22 21:42:35 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:35 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/22 21:42:35 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/22 21:42:35 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/22 21:42:35 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:35 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/22 21:42:35 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/22 21:42:35 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/22 21:42:35 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:35 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:35 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:35 console: backfilled account manifest for bab (ops)
2026/10/22 21:42:35 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:35 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:35 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:35 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:35 console: backfilled account manifest for bab (ops)
2026/10/22 21:42:35 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:35 console: could not notify alice@keymail.dev of a CLI token issue: keymail: grant revoked or invalid
2026/10/22 21:42:35 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:35 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:36 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:36 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:36 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:36 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:36 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:36 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:36 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:36 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:36 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:36 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:36 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:36 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:36 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:36 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:36 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:36 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:36 console: backfilled account manifest for bab (ops)
2026/10/22 21:42:36 console: geoip published ed972738 (GeoIP2-City, feed:test-feed)
2026/10/22 21:42:36 console: geoip feed test-feed: edition 2026-10 rejected: too large
2026/10/22 21:42:36 console: geoip database cccccccc (GeoIP2-City) followed from this box's edge
2026/10/22 21:42:36 console: geoip local state unreadable; keeping the loaded database
2026/10/22 21:42:36 console: geoip published ed972738 (GeoIP2-City, manual)
2026/10/22 21:42:36 console: geoip published ed972738 (GeoIP2-City, manual)
2026/10/22 21:42:37 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:37 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:37 console: backfilled account manifest for bab (ops)
2026/10/22 21:42:37 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:37 console: backfilled account manifest for bab (ops)
2026/10/22 21:42:37 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:37 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:37 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:37 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:37 console: invite to sam@gmail.com: no keymail mailbox, trying email
2026/10/22 21:42:37 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:37 console: invite to sam@keymail.dev by keymail: keymail: the recipient's proof-of-work price is above the console's cap
2026/10/22 21:42:37 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:37 console: invite to sam@keymail.dev: the recipient blocked the console on keymail; not emailing
2026/10/22 21:42:37 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:37 console: invite to sam@gmail.com: no keymail mailbox, trying email
2026/10/22 21:42:37 console: invite to sam@gmail.com by email: console mail: sending identity not verified yet
2026/10/22 21:42:37 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:37 console: invite to sam@gmail.com: no keymail mailbox, trying email
2026/10/22 21:42:37 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:37 console: backfilled account manifest for bab (ops)
2026/10/22 21:42:37 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:37 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:37 console: backfilled account manifest for bab (ops)
2026/10/22 21:42:37 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:37 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:40 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:40 console: could not notify alice@keymail.dev of a CLI token issue: keymail: grant revoked or invalid
2026/10/22 21:42:40 console: lifetimes: before -> draining
2026/10/22 21:42:40 console: lifetimes: draining -> on
2026/10/22 21:42:40 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:40 console: lifetimes: before -> draining
2026/10/22 21:42:40 console: lifetimes: draining -> on
2026/10/22 21:42:40 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:40 console: lifetimes: before -> draining
2026/10/22 21:42:40 console: lifetimes: draining -> on
2026/10/22 21:42:40 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:40 console: lifetimes: before -> draining
2026/10/22 21:42:40 console: lifetimes: draining -> on
2026/10/22 21:42:40 console: lifetimes: allocation 24ee4ebb75e96b334afa9a6c1f03d0b3 of one.shop.example.com: remove the stale record: the bucket did not answer (pending)
2026/10/22 21:42:40 console: api instances create bab/shop/one.shop.example.com: console: the lifetime operation is pending; recovery finishes it
2026/10/22 21:42:40 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:40 console: lifetimes: draining -> on
2026/10/22 21:42:40 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:40 console: lifetimes: before -> draining
2026/10/22 21:42:40 console: lifetimes: draining -> on
2026/10/22 21:42:40 console: could not notify alice@keymail.dev of a CLI token issue: keymail: grant revoked or invalid
2026/10/22 21:42:40 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:40 console: lifetimes: draining -> on
2026/10/22 21:42:40 console: lifetimes: allocation f0f75dbeed504b26036854dee6c6f500 of one.shop.example.com: commit: console: host_allocations op "f0f75dbeed504b26036854dee6c6f500" is committed and cannot move to committed (pending; the record stands)
2026/10/22 21:42:40 console: api instances create bab/shop/one.shop.example.com: console: the lifetime operation is pending; recovery finishes it
2026/10/22 21:42:40 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:40 console: lifetimes: before -> draining
2026/10/22 21:42:40 console: lifetimes: draining -> on
2026/10/22 21:42:40 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:40 console: lifetimes: draining -> on
2026/10/22 21:42:40 console: lifetimes: allocation de5835ad50ca2fd2cd1465c65913dda5 of one.shop.example.com: commit: console: host_allocations op "de5835ad50ca2fd2cd1465c65913dda5" is committed and cannot move to committed (pending; the record stands)
2026/10/22 21:42:40 console: api instances create bab/shop/one.shop.example.com: console: the lifetime operation is pending; recovery finishes it
2026/10/22 21:42:40 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:40 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/22 21:42:40 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/22 21:42:40 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/22 21:42:40 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/22 21:42:40 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/22 21:42:40 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/22 21:42:40 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000003
2026/10/22 21:42:40 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000003 maxTXID=0000000000000003 size=454
2026/10/22 21:42:40 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000003 txid.db=0000000000000003
2026/10/22 21:42:40 console: lifetimes: before -> draining
2026/10/22 21:42:40 console: lifetimes: draining -> on
2026/10/22 21:42:40 console: lifetimes: allocation 1b24204664d879d96fa8cf0db4dc6e5f of copy.shop.example.com: write the record: the bucket did not answer (pending)
2026/10/22 21:42:40 console: from main.shop.example.com: reserve copy.shop.example.com: console: the lifetime operation is pending; recovery finishes it
2026/10/22 21:42:40 console: seeds pass: abandoned seed sd_2lwhqueip6dlt2vwja4g5qqnpq of bab/shop/copy.shop.example.com (reserving since 2026-10-22T21:42:40Z)
2026/10/22 21:42:40 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:40 console: lifetimes: before -> draining
2026/10/22 21:42:40 console: lifetimes: draining -> on
2026/10/22 21:42:40 console: lifetimes: allocation 24fb8206c4fec61a74dd8f149faf7c5b of old.shop.example.com: write the record: the bucket did not answer (pending)
2026/10/22 21:42:40 console: import old.shop.example.com: write the record: console: the lifetime operation is pending; recovery finishes it
2026/10/22 21:42:40 console: seeds pass: abandoned seed sd_6zt26i5ufilcjiktsh53wqik2u of bab/shop/old.shop.example.com (awaiting-upload since 2026-10-22T21:42:40Z)
2026/10/22 21:42:40 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:40 console: lifetimes: before -> draining
2026/10/22 21:42:40 console: lifetimes: draining -> on
2026/10/22 21:42:40 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:40 console: lifetimes: before -> draining
2026/10/22 21:42:40 console: lifetimes: draining -> on
2026/10/22 21:42:40 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:40 console: could not notify alice@keymail.dev of a CLI token issue: keymail: grant revoked or invalid
2026/10/22 21:42:40 console: lifetimes: before -> draining
2026/10/22 21:42:40 console: lifetimes: draining -> on
2026/10/22 21:42:40 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:40 console: lifetimes: before -> draining
2026/10/22 21:42:40 console: lifetimes: draining -> on
2026/10/22 21:42:40 console: attach docs.example.com: record write: console: lifetimes: 404 page not found: file does not exist
2026/10/22 21:42:40 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:40 console: lifetimes: before -> draining
2026/10/22 21:42:40 console: lifetimes: draining -> on
2026/10/22 21:42:41 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:41 console: could not notify alice@keymail.dev of a CLI token issue: keymail: grant revoked or invalid
2026/10/22 21:42:41 console: lifetimes: before -> draining
2026/10/22 21:42:41 console: lifetimes: draining -> on
2026/10/22 21:42:41 console: lifetimes: allocation cc53582ff66b68ebc5d3e543084f8a52 of docs.example.com: write the slot: the bucket did not answer (pending)
2026/10/22 21:42:41 console: attach docs.example.com: record write: console: the lifetime operation is pending; recovery finishes it
2026/10/22 21:42:41 console: attach docs.example.com: the claim stays: console: another change to this hostname is still settling
2026/10/22 21:42:41 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:41 console: lifetimes: before -> draining
2026/10/22 21:42:41 console: lifetimes: draining -> on
2026/10/22 21:42:41 console: lifetimes: allocation 014b3fd1ee8103976435ceeacd41d4b5 of docs.example.com: write the record: the bucket did not answer (pending)
2026/10/22 21:42:41 console: attach docs.example.com: record write: console: the lifetime operation is pending; recovery finishes it
2026/10/22 21:42:41 console: attach docs.example.com: the claim stays: console: another change to this hostname is still settling
2026/10/22 21:42:41 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:41 console: could not notify alice@keymail.dev of a CLI token issue: keymail: grant revoked or invalid
2026/10/22 21:42:41 console: lifetimes: before -> draining
2026/10/22 21:42:41 console: lifetimes: draining -> on
2026/10/22 21:42:41 console: lifetimes: allocation 78c08cbe33e0828643af5cbace4860a0 of docs.example.com: commit: constraint failed: test: the commit is refused (1811) (pending; the record stands)
2026/10/22 21:42:41 console: attach docs.example.com: record write: console: the lifetime operation is pending; recovery finishes it
2026/10/22 21:42:41 console: attach docs.example.com: the claim stays: console: another change to this hostname is still settling
2026/10/22 21:42:41 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:41 console: lifetimes: before -> draining
2026/10/22 21:42:41 console: lifetimes: draining -> on
2026/10/22 21:42:41 console: audit system-update platform: sql: database is closed
2026/10/22 21:42:41 console: attach docs.example.com: record write: console: another change to this hostname is still settling
2026/10/22 21:42:41 console: attach docs.example.com: the claim stays: console: another change to this hostname is still settling
2026/10/22 21:42:41 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:41 console: lifetimes: before -> draining
2026/10/22 21:42:41 console: lifetimes: draining -> on
2026/10/22 21:42:41 console: attach docs.example.com: record write: console: lifetimes: docs.example.com is already held by web; choose another address
2026/10/22 21:42:41 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:41 console: lifetimes: before -> draining
2026/10/22 21:42:41 console: lifetimes: draining -> on
2026/10/22 21:42:41 console: could not notify alice@keymail.dev of a CLI token issue: keymail: grant revoked or invalid
2026/10/22 21:42:41 console: attach docs.example.com: record write: console: lifetimes: observe bab/shop/docs.example.com: the bucket did not answer
2026/10/22 21:42:41 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:41 console: could not notify alice@keymail.dev of a CLI token issue: keymail: grant revoked or invalid
2026/10/22 21:42:41 console: lifetimes: before -> draining
2026/10/22 21:42:41 console: lifetimes: draining -> on
2026/10/22 21:42:41 console: attach docs.example.com: record write: console: lifetimes: the app is in the trash
2026/10/22 21:42:41 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:41 console: could not notify alice@keymail.dev of a CLI token issue: keymail: grant revoked or invalid
2026/10/22 21:42:41 console: lifetimes: before -> draining
2026/10/22 21:42:41 console: lifetimes: draining -> on
2026/10/22 21:42:41 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:41 console: lifetimes: before -> draining
2026/10/22 21:42:41 console: lifetimes: draining -> on
2026/10/22 21:42:41 console: could not notify alice@keymail.dev of a CLI token issue: keymail: grant revoked or invalid
2026/10/22 21:42:41 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:41 console: lifetimes: before -> draining
2026/10/22 21:42:41 console: lifetimes: draining -> on
2026/10/22 21:42:41 console: could not notify alice@keymail.dev of a CLI token issue: keymail: lookup alice@keymail.dev: Get "http://127.0.0.1:33131/api/federation/lookup?addr=alice%40keymail.dev&from=console%40127.0.0.1%3A40505": dial tcp 127.0.0.1:33131: connect: connection refused
2026/10/22 21:42:41 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:41 console: could not notify alice@keymail.dev of a CLI token issue: keymail: grant revoked or invalid
2026/10/22 21:42:41 console: lifetimes: before -> draining
2026/10/22 21:42:41 console: lifetimes: draining -> on
2026/10/22 21:42:41 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:41 console: lifetimes: before -> draining
2026/10/22 21:42:41 console: lifetimes: draining -> on
2026/10/22 21:42:41 console: could not notify paul@keymail.dev of a CLI token issue: Post "http://127.0.0.1:34941/api/app/send": dial tcp 127.0.0.1:34941: connect: connection refused
2026/10/22 21:42:41 console: could not notify alice@keymail.dev of a CLI token issue: Post "http://127.0.0.1:34941/api/app/send": dial tcp 127.0.0.1:34941: connect: connection refused
2026/10/22 21:42:41 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:41 console: lifetimes: before -> draining
2026/10/22 21:42:41 console: lifetimes: draining -> on
2026/10/22 21:42:41 console: could not notify paul@keymail.dev of a CLI token issue: Post "http://127.0.0.1:41779/api/app/send": dial tcp 127.0.0.1:41779: connect: connection refused
2026/10/22 21:42:41 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:41 console: lifetimes: before -> draining
2026/10/22 21:42:41 console: lifetimes: draining -> on
2026/10/22 21:42:41 console: lifetimes: bab/shop/one.shop.example.com: console: lifetimes: fence apps/bab/shop/instances/one.shop.example.com.json: the bucket did not answer (pending)
2026/10/22 21:42:41 console: could not notify paul@keymail.dev of a CLI token issue: Post "http://127.0.0.1:37263/api/app/send": dial tcp 127.0.0.1:37263: connect: connection refused
2026/10/22 21:42:41 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:41 console: could not notify alice@keymail.dev of a CLI token issue: keymail: grant revoked or invalid
2026/10/22 21:42:41 console: lifetimes: the cutover marker is written (by paul@keymail.dev); admission is closed to legacy work
2026/10/22 21:42:41 console: lifetimes: draining -> on
2026/10/22 21:42:42 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:42 console: lifetimes: the cutover marker is written (by paul@keymail.dev); admission is closed to legacy work
2026/10/22 21:42:42 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:42 console: lifetimes: the cutover marker exists but cannot be read: control/lifetimes-cutover.json: invalid character 'n' looking for beginning of object key string
2026/10/22 21:42:42 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:42 console: could not notify alice@keymail.dev of a CLI token issue: keymail: grant revoked or invalid
2026/10/22 21:42:42 console: lifetimes: the cutover marker is written (by paul@keymail.dev); admission is closed to legacy work
2026/10/22 21:42:42 console: lifetimes: draining -> on
2026/10/22 21:42:42 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:42 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:42 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:42 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:42 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:43 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:43 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:44 console: moves: warning: kass.carlosapp.dev: the log of move mv_gwr3yhozz27ebhiteafk7e2fpq at elsewhere is held: the writer refuses it (hostops: identity mismatch); its entry is kept until its incarnation is purged
2026/10/22 21:42:44 console: moves: warning: acme.go.tito.io: the log of move mv_gwr3yhozz27ebhiteafk7e2fpq at stale is held: the writer refuses it (hostops: identity mismatch); its entry is kept until its incarnation is purged
2026/10/22 21:42:44 console: moves: warning: acme.go.tito.io: the log of move mv_forged at forged is held: the writer refuses it (hostops: identity mismatch); its entry is kept until its incarnation is purged
2026/10/22 21:42:44 console: moves: warning: acme.go.tito.io: the log of move mv_gwr3yhozz27ebhiteafk7e2fpq at retired is held: the writer refuses it (hostops: identity mismatch); its entry is kept until its incarnation is purged
2026/10/22 21:42:44 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:45 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:47 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:48 console: api instance move bab/titogo/acme.go.tito.io: declared loss refused: hostresolve: evidence or operation does not authorize resolution
2026/10/22 21:42:48 console: moves: warning: acme.go.tito.io: the log of move mv_u2hci44y7mhqhenbo54nburafu at rolling_back-target-lost has been unwritten for over an hour: unconfirmed: no loss of the move's target has committed, and the move can still be declared lost
2026/10/22 21:42:48 console: moves: acme.go.tito.io: the log of move mv_u2hci44y7mhqhenbo54nburafu at rolling_back-target-lost was never confirmed and the claim no longer holds the instance it was queued for; dropped
2026/10/22 21:42:48 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:49 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:50 console: api instance move bab/titogo/acme.go.tito.io: typed move write: moves: the declared loss cannot be queued in the move log: SQL logic error: no such table: move_log_outbox (1)
2026/10/22 21:42:50 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:52 console: claim request refused: moves: the declared loss cannot be queued in the move log: SQL logic error: no such table: move_log_outbox (1)
2026/10/22 21:42:52 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:52 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:52 console: refused: no eligible box in ie
2026/10/22 21:42:52 console: claim request refused: no eligible box in ie: hostops: region has no box that can take this
2026/10/22 21:42:52 console: refused: no eligible box in ie
2026/10/22 21:42:52 console: claim request refused: no eligible box in ie: hostops: region has no box that can take this
2026/10/22 21:42:52 console: refused: no eligible box in ie
2026/10/22 21:42:52 console: claim request refused: no eligible box in ie: hostops: region has no box that can take this
2026/10/22 21:42:53 console: refused: no eligible box in ie
2026/10/22 21:42:53 console: claim request refused: no eligible box in ie: hostops: region has no box that can take this
2026/10/22 21:42:53 console: refused: no eligible box in ie
2026/10/22 21:42:53 console: claim request refused: no eligible box in ie: hostops: region has no box that can take this
2026/10/22 21:42:53 console: refused: no eligible box in ie
2026/10/22 21:42:53 console: claim request refused: no eligible box in ie: hostops: region has no box that can take this
2026/10/22 21:42:54 console: refused: no eligible box in ie
2026/10/22 21:42:54 console: claim request refused: no eligible box in ie: hostops: region has no box that can take this
2026/10/22 21:42:54 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:54 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:54 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 21:42:54 console: api promote widget abc1234 -> production: promote widget abc1234 -> production: production is entered from beta only, and this build is on edge — use --hotfix to bypass the order
2026/10/22 21:42:54 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
--- FAIL: TestEveryClosedDoorRefusesAServiceCredential (0.05s)
    svcroutes_test.go:1011: walked 64 closed doors, want all 64 (and 63 today: instance-token, three door-key doors, the routes door, instances-manifest, the app update policy, sidecars-manifest, the route-channel move, three instance update settings doors, two db replica doors, six fleets, four services, two email credentials, email pause, the build probe, the swap policy, the live tenancy read, the layout read, the activation-cancel door, nine system doors, three deployment-wide antivirus, three platform geoip doors, two pointer digest doors, the channel resign, two release authorize doors, four store-entitlement doors, two account plan doors, and the five run doors)
FAIL
FAIL	github.com/carlosframework/platform/internal/console	45.339s
FAIL
=== internal_console@4 (49 s)
ok  	github.com/carlosframework/platform/internal/console	46.802s
=== internal_console@5 (46 s)
ok  	github.com/carlosframework/platform/internal/console	43.224s
=== internal_console@6 (53 s)
ok  	github.com/carlosframework/platform/internal/console	49.872s
=== internal_console@7 (47 s)
ok  	github.com/carlosframework/platform/internal/console	44.267s
=== root@0 (41 s)
ok  	github.com/carlosframework/platform	38.299s
=== root@1 (50 s)
ok  	github.com/carlosframework/platform	47.281s
=== root@2 (54 s)
ok  	github.com/carlosframework/platform	51.229s

FAILED: rest internal_console@3
make: *** [Makefile:19: test] Error 1

amadan: step gate failed: exit status 2

amadan: job failed at step gate — its output is above, not at the tail of this log
diff --git a/docs/superpowers/notes/census-proposal-self-serve-moves-1.md b/docs/superpowers/notes/census-proposal-self-serve-moves-1.md
index abbc25665..8519cf5e0 100644
--- a/docs/superpowers/notes/census-proposal-self-serve-moves-1.md
+++ b/docs/superpowers/notes/census-proposal-self-serve-moves-1.md
@@ -13,3 +13,5 @@ The write census reported four changed sites and three added sites. `GetRecordRa
Task 0 adds the lifetimes cutover: the operator door `POST /api/cli/system/lifetimes/cutover`, the admission gate and its watcher in `internal/console/lifetimes_cutover.go`, and `carlos system lifetimes cutover`. The record-write census reported one unlisted and five changed sites. `Server.handleAPILifetimesCutover` is added as nonrecord: one create-only Put of `control/lifetimes-cutover.json` in the deployment bucket, with no record key and no record literal. `Server.runImportUpload` and `Server.runFrom` remain record-writers through `SetRecordSeed`; each now carries its request's admitted unit and ends it after its last write, with no write site added or moved. `Server.handleAPIInstanceList` remains a read-only key-site and lists through `ListRecordsCompleteJudged` with the request's judge, which is nil before the cutover. `Server.registerCLIRoutes` registers the door. `NewServer` adds the judge, the gate and its first marker read, and moves the claims-off app materialisation to the watch's first admitted iteration; it writes nothing. The root-read census reported four changed accepted-legacy console units (`serve`, `NewServer`, `Server.handleAPIInstanceList`, `Server.runFrom`), two re-pinned declarations (`runSystem`, `systemVerb`, the lifetimes verb at their existing authority) and three envelopes (`.`, `cmd/console`, `internal/console`). The four legacy units are re-pinned with reviewed bases, which adds four fingerprints and moves the seal; no root read, class or task is added and the registry fields stand. Everything here remains `PROPOSED-self-serve-moves-1`, awaiting Paul's census ruling.
Task 3 adds the claims-off create protocol and its recovery (`internal/console/lifetimes.go`, `lifetimes_create.go`, `lifetimes_recovery.go`) and routes the create, seed, import and first-route attach doors through it when the request was admitted with lifetimes on. The record-write census reported two changed sites, two stale entries and five unlisted sites. `Server.handleAPIInstanceCreate` and `Server.attachDomainAs` remain record-writers through `CreateRecord` on the legacy path; admitted on, they leave for `createRecordWithLifetime` and `attachFirstRouteWithLifetime`. `Server.beginFrom` and `Server.beginImport` no longer write directly: both call `Server.createSeedRecord`, a record-writer that is either the lifetime create or today's create-only `CreateRecord`. `Server.allocRecordLocked` is a record-writer: one create-only `WriteRecord` of the allocation's persisted body from `{}` with the record sequence on, so the record lands with `record_seq: 1`. `Server.fenceRecord` is a record-writer: it rewrites the exact bytes it observed against their own ETag with the sequence on, and writes no other body. `Server.allocCleanLocked` and `Server.deleteUnderRetiredSlot` are key-sites: each removes a stale body only with `DeleteIfMatch` on an ETag it holds, never a plain delete, and neither Puts. The slot is written only through `provision.WriteHostIncarnation`, which is already nonrecord. The root-read census reported two changed accepted-legacy units, one unclassified unit and two envelopes. `serve` is re-pinned in Task 0's rows, since it now also starts the lifetime recovery pass. `Server.hostHolder` keeps its root-route disposition; its instance-record holder read is now judged under a request admitted on (a nil judge is `GetRecord`). `newLifetimeOpID` is classified like `mintLifetime`: a crypto/rand read for an operation id that grants no root authority. The `cmd/console` and `internal/console` envelopes are re-pinned. Three new fingerprints move the seal. No class or task is added, and the registry fields stand. Everything here remains `PROPOSED-self-serve-moves-1`, awaiting Paul's census ruling.
+
+Task 3 fix round 1 changes only door answers. `Server.handleAPIDomainAttach` stays a read-only key-site, but now answers attach refusals through `writeDoorRefusalJSON`. The `internal/console` envelope is re-pinned. No write site, root read, class or seal changes. This remains `PROPOSED-self-serve-moves-1`.
diff --git a/internal/console/apidomains.go b/internal/console/apidomains.go
index d59a7edc1..c5a961fa7 100644
--- a/internal/console/apidomains.go
+++ b/internal/console/apidomains.go
@@ -453,7 +453,9 @@ func (s *Server) handleAPIDomainAttach(w http.ResponseWriter, r *http.Request) {
res, ref := s.attachDomainAs(ctx, acct, app, host, in.Kind, in.Channel, principal, in.Platform, message)
if ref != nil {
setNoCapacityRetryAfter(w, ref)
- jsonError(w, ref.Status, ref.Msg)
+ // The app gone under the lifetime create's lock is the
+ // family's byte-identical 404.
+ writeDoorRefusalJSON(w, r, ref)
return
}
route := res.Claim.Route
diff --git a/internal/console/apiinstanceimport.go b/internal/console/apiinstanceimport.go
index 0ac4b36b1..38be3f9fb 100644
--- a/internal/console/apiinstanceimport.go
+++ b/internal/console/apiinstanceimport.go
@@ -175,7 +175,7 @@ func (s *Server) beginImport(w http.ResponseWriter, r *http.Request, c seedCreat
// A lifetime create refused, or left pending, wrote nothing this
// door may undo: a pending one's record, once recovery writes it,
// is an import awaiting its upload, which the seeds sweep owns.
- if ref, ok := lifetimeCreateRefusal(host, err, importFailed); ok {
+ if ref, ok := lifetimeCreateRefusal(host, err, msgLifetimeUploadPending); ok {
log.Printf("console: import %s: write the record: %v", host, err)
writeDoorRefusalJSON(w, r, ref)
return
diff --git a/internal/console/apiinstanceseed.go b/internal/console/apiinstanceseed.go
index c4f2a2d55..b379c455a 100644
--- a/internal/console/apiinstanceseed.go
+++ b/internal/console/apiinstanceseed.go
@@ -358,10 +358,11 @@ func (s *Server) beginFrom(w http.ResponseWriter, r *http.Request, c seedCreate,
writeCtx, writeCancel := context.WithTimeout(context.WithoutCancel(ctx), instanceStoreTimeout)
defer writeCancel()
if err := s.createSeedRecord(writeCtx, c, rec); err != nil {
- // A pending lifetime create writes nothing further: the record
- // recovery completes carries this reserving seed, which the seeds
- // sweep then abandons.
- if ref, ok := lifetimeCreateRefusal(host, err, failed); ok {
+ // A pending lifetime create writes nothing further and starts no
+ // copy: the record recovery completes carries this reserving seed,
+ // which holds the host until the seeds sweep abandons it (up to
+ // seedReserveTTL).
+ if ref, ok := lifetimeCreateRefusal(host, err, msgLifetimeCopyPending); ok {
log.Printf("console: from %s: reserve %s: %v", source, host, err)
writeDoorRefusalJSON(w, r, ref)
return nil
diff --git a/internal/console/domainattach.go b/internal/console/domainattach.go
index 57ce1c787..8adac6a1c 100644
--- a/internal/console/domainattach.go
+++ b/internal/console/domainattach.go
@@ -655,10 +655,11 @@ func (s *Server) attachFirstRouteLocked(ctx context.Context, acct *Account, app,
}
log.Printf("console: attach %s: record write: %v", host, err)
s.rollbackAttachLocked(ctx, acct, app, host, created)
- if ref, ok := lifetimeCreateRefusal(host, err, ambiguous.Msg); ok {
- if errors.Is(err, errLifetimePending) {
- return attachResult{}, ambiguous
- }
+ if errors.As(err, new(*hostHeldError)) {
+ // Neutral, as claimRefusal is: never the holder's app or account.
+ return attachResult{}, claimRefusal(host, domains.ErrHostUnavailable)
+ }
+ if ref, ok := lifetimeCreateRefusal(host, err, msgLifetimeAttachPending); ok {
return attachResult{}, ref
}
return attachResult{}, ambiguous
diff --git a/internal/console/lifetimes.go b/internal/console/lifetimes.go
index 61852f8f0..211335e04 100644
--- a/internal/console/lifetimes.go
+++ b/internal/console/lifetimes.go
@@ -45,7 +45,11 @@ import (
const (
msgLifetimeSettling = "another change to this instance is still settling. try again in a minute"
- msgLifetimeCreatePending = "could not create the instance. try again"
+ msgLifetimeCreatePending = "could not confirm the instance was created. check again in a minute"
+ msgLifetimeAttachPending = "could not confirm the hostname was attached. check again in a minute"
+ msgLifetimeCopyPending = "could not confirm the copy was started. check again in a minute"
+ msgLifetimeUploadPending = "could not confirm the upload was stored. check again in a minute"
+ msgLifetimeExhausted = "this hostname cannot be created again on this deployment"
msgLifetimeAppUnreadable = "could not read the app. try again"
msgLifetimeAppTrashed = "the app is in the trash"
msgLifetimeAppChanged = "the app changed. try again"
@@ -89,7 +93,9 @@ func (e *lifetimeAppError) Error() string {
func (e *lifetimeAppError) Unwrap() error { return e.Err }
// lifetimeCreateRefusal maps a lifetime create's error onto a door's answer.
-// pendingMsg is the door's sentence for errLifetimePending. ok is false for
+// pendingMsg is the door's own sentence for errLifetimePending: the intent
+// is durable and recovery finishes it, so it never says nothing happened.
+// An exhausted counter is final (retrying never helps). ok is false for
// release.ErrCASConflict and ordinary errors, which each door answers as it
// always has. A 404 is the app gone: the doors answer it as their family's
// own 404.
@@ -105,6 +111,8 @@ func lifetimeCreateRefusal(host string, err error, pendingMsg string) (*doorRefu
return &doorRefusal{http.StatusBadGateway, pendingMsg}, true
case errors.As(err, &app):
return &doorRefusal{app.Status, app.Msg}, true
+ case errors.Is(err, provision.ErrLifetimeExhausted):
+ return &doorRefusal{http.StatusInternalServerError, msgLifetimeExhausted}, true
}
return nil, false
}
diff --git a/internal/console/lifetimes_create.go b/internal/console/lifetimes_create.go
index ae2bbaf00..9b7a4d367 100644
--- a/internal/console/lifetimes_create.go
+++ b/internal/console/lifetimes_create.go
@@ -130,6 +130,9 @@ func (s *Server) lifetimeAppCheck(ctx context.Context, sqid, app, lifetime strin
return nil, nil, &lifetimeAppError{http.StatusBadGateway, msgLifetimeAppUnreadable, err}
}
if life == nil {
+ // The app is gone. Every door answers this as its family's
+ // byte-identical http.NotFound (writeDoorRefusalJSON,
+ // renderDoorRefusal); the text is never shown.
return nil, nil, &lifetimeAppError{http.StatusNotFound, "404 page not found", os.ErrNotExist}
}
marker, err := release.ReadAppTombstone(ctx, s.cfg.Releases, sqid, app)
diff --git a/internal/console/lifetimes_create_test.go b/internal/console/lifetimes_create_test.go
index a0b04616c..21ed0aca1 100644
--- a/internal/console/lifetimes_create_test.go
+++ b/internal/console/lifetimes_create_test.go
@@ -758,8 +758,8 @@ func TestExhaustionIsRefusedBeforeAnyWrite(t *testing.T) {
if slot, _ := slotOf(t, l.fx.rel, ltOne); slot != nil {
t.Fatal("the refused create wrote a slot")
}
- if code, _ := l.create(t, ltOne); code != http.StatusBadGateway {
- t.Fatalf("the door = %d, want 502", code)
+ if code, body := l.create(t, ltOne); code != http.StatusInternalServerError || ltErr(body) != msgLifetimeExhausted {
+ t.Fatalf("the door = %d %s, want 500 %q", code, body, msgLifetimeExhausted)
}
})
t.Run("a slot above the counter", func(t *testing.T) {
@@ -793,8 +793,8 @@ func TestExhaustionIsRefusedBeforeAnyWrite(t *testing.T) {
if _, err := l.fx.rel.Put(ctx, recKey(ltApp, ltOne), []byte(body), ""); err != nil {
t.Fatal(err)
}
- if code, out := l.create(t, ltOne); code != http.StatusBadGateway {
- t.Fatalf("%s: create = %d %s, want 502 (unreadable)", field, code, out)
+ if code, out := l.create(t, ltOne); code != http.StatusInternalServerError || ltErr(out) != msgLifetimeExhausted {
+ t.Fatalf("%s: create = %d %s, want 500 %q", field, code, out, msgLifetimeExhausted)
}
code, _, _ := rawReq(t, http.MethodGet, instancesURL(l.fx, "bab", ltApp)+"/"+ltOne, l.member, "")
if code != http.StatusBadGateway {
@@ -1152,8 +1152,8 @@ func TestSeedCreatePendingIsOwnedByTheSweep(t *testing.T) {
bucket.setHook(failNth("put", provision.RecordKey("bab", fromApp, importHost), 1, false))
code, out := beginImport(t, f, importHost, importSHA, 4096)
bucket.setHook(nil)
- if code != http.StatusBadGateway || out["error"] != importFailed {
- t.Fatalf("an import whose record write failed = %d %v, want 502 %q", code, out, importFailed)
+ if code != http.StatusBadGateway || out["error"] != msgLifetimeUploadPending {
+ t.Fatalf("an import whose record write failed = %d %v, want 502 %q", code, out, msgLifetimeUploadPending)
}
recoverOn(t, f.fx.srv)
rec, err := f.record(t, importHost)
@@ -1180,8 +1180,8 @@ func testFromCreatePendingIsOwnedByTheSweep(t *testing.T) {
code, out := f.create(t, `{"host":"`+host+`","from":{"host":"`+fromSource+`"}}`)
bucket.setHook(nil)
f.fx.srv.seedCopies.Wait()
- if code != http.StatusBadGateway {
- t.Fatalf("a --from create whose record write failed = %d %v, want 502", code, out)
+ if code != http.StatusBadGateway || out["error"] != msgLifetimeCopyPending {
+ t.Fatalf("a --from create whose record write failed = %d %v, want 502 %q", code, out, msgLifetimeCopyPending)
}
if _, err := f.record(t, host); !errors.Is(err, os.ErrNotExist) {
t.Fatalf("record after the failed write: %v, want none yet", err)
@@ -1351,6 +1351,26 @@ func TestCreateChecksTheAppUnderTheLock(t *testing.T) {
}
})
}
+ t.Run("attach: the app gone is the family's 404", func(t *testing.T) {
+ l := newLtOn(t)
+ // The door read the lifetime; the app is purged after the claim
+ // lands, before the lifetime create's step 0.
+ var once sync.Once
+ l.bucket.setAfter(func(op, key string, err error) {
+ if op == "put" && key == domains.ClaimKey(ltDomain) && err == nil {
+ once.Do(func() { purgeShop(t, l) })
+ }
+ })
+ status, h, body := rawReq(t, http.MethodPost, domainsURL(l.fx, "bab", ltApp), l.member,
+ `{"host":"`+ltDomain+`","kind":"static","channel":"stable"}`)
+ assertNotFound(t, "attach with the app gone under the lock", canonicalNotFound(t), status, h, body)
+ if got := claimHolder(t, l.fx.rel, ltDomain); got != "" {
+ t.Fatalf("claim = %q, want the minted claim released", got)
+ }
+ if rows := allocRows(t, l.fx.st, ltDomain); len(rows) != 0 {
+ t.Fatalf("allocations = %+v, want none", rows)
+ }
+ })
t.Run("an unreadable marker", func(t *testing.T) {
l := newLtOn(t)
if _, err := l.fx.rel.Put(context.Background(), release.AppTombstoneKey("bab", ltApp), []byte("{"), ""); err != nil {
@@ -1524,8 +1544,8 @@ func TestAttachKeepsItsClaimOverAPendingAllocation(t *testing.T) {
if drop != nil {
drop()
}
- if ref == nil || ref.Status != http.StatusInternalServerError {
- t.Fatalf("attach = %+v, want the ambiguous refusal", ref)
+ if ref == nil || ref.Status != http.StatusBadGateway || ref.Msg != msgLifetimeAttachPending {
+ t.Fatalf("attach = %+v, want 502 %q", ref, msgLifetimeAttachPending)
}
oneAlloc(t, l.fx.st, ltDomain, lifetimePending)
if got := claimHolder(t, l.fx.rel, ltDomain); got != "bab/shop" {
@@ -1548,22 +1568,23 @@ func TestAttachNeverRetiresOverALifetimeFailure(t *testing.T) {
arrange func(t *testing.T, l ltOn) func()
status int
keepClaim bool
+ msg string
}{
{"the slot write", func(t *testing.T, l ltOn) func() {
l.bucket.setHook(failNth("put", slotKey, 1, false))
return func() { l.bucket.setHook(nil) }
- }, http.StatusInternalServerError, true},
+ }, http.StatusBadGateway, true, msgLifetimeAttachPending},
{"the record write", func(t *testing.T, l ltOn) func() {
l.bucket.setHook(failNth("put", key, 1, false))
return func() { l.bucket.setHook(nil) }
- }, http.StatusInternalServerError, true},
- {"the commit", func(t *testing.T, l ltOn) func() { return sqlFailCommit(t, l.fx.st) }, http.StatusInternalServerError, true},
+ }, http.StatusBadGateway, true, msgLifetimeAttachPending},
+ {"the commit", func(t *testing.T, l ltOn) func() { return sqlFailCommit(t, l.fx.st) }, http.StatusBadGateway, true, msgLifetimeAttachPending},
{"another operation settling", func(t *testing.T, l ltOn) func() {
if err := l.fx.st.BeginRetirement(Retirement{OpID: "other", Kind: retireOrphan, Account: "bab", App: "web", Host: ltDomain, Incarnation: 1}); err != nil {
t.Fatal(err)
}
return func() {}
- }, http.StatusConflict, true},
+ }, http.StatusConflict, true, msgLifetimeSettling},
{"a live slot of another app", func(t *testing.T, l ltOn) func() {
writeSlot(t, l.fx.rel, ltDomain, provision.HostIncarnation{Incarnation: 1, State: provision.SlotLive, Account: "bab", App: "web", Intent: "create x"})
body, _ := json.Marshal(provision.Record{Schema: 1, Host: ltDomain, App: "web", Account: "bab", Channel: "stable", Incarnation: 1, CreatedAt: time.Now().UTC()})
@@ -1571,17 +1592,17 @@ func TestAttachNeverRetiresOverALifetimeFailure(t *testing.T) {
t.Fatal(err)
}
return func() {}
- }, http.StatusConflict, false},
+ }, http.StatusConflict, false, hostUnavailableMsg}, // neutral: never web's name
{"an unreadable slot", func(t *testing.T, l ltOn) func() {
l.bucket.setHook(failNth("get", slotKey, 1, false))
return func() { l.bucket.setHook(nil) }
- }, http.StatusInternalServerError, false},
+ }, http.StatusInternalServerError, false, "could not declare the route for this domain — nothing was attached, try again"},
{"the app trashed under the lock", func(t *testing.T, l ltOn) func() {
if err := release.TrashApp(context.Background(), l.fx.rel, "bab", ltApp, "paul@keymail.dev", time.Now()); err != nil {
t.Fatal(err)
}
return func() {}
- }, http.StatusConflict, false},
+ }, http.StatusConflict, false, msgLifetimeAppTrashed},
}
for _, c := range cases {
t.Run(c.name, func(t *testing.T) {
@@ -1589,8 +1610,8 @@ func TestAttachNeverRetiresOverALifetimeFailure(t *testing.T) {
done := c.arrange(t, l)
_, ref := l.attach(t, onCtx(t, l.fx.srv), ltApp)
done()
- if ref == nil || ref.Status != c.status {
- t.Fatalf("attach = %+v, want %d", ref, c.status)
+ if ref == nil || ref.Status != c.status || ref.Msg != c.msg {
+ t.Fatalf("attach = %+v, want %d %q", ref, c.status, c.msg)
}
for _, op := range l.bucket.opsOf(key) {
if op == "delete" || op == "delete-if-match" {
@@ -2280,6 +2301,30 @@ func (c *lockChecker) check(t *testing.T) {
}
func TestLockOrderIsRespected(t *testing.T) {
+ t.Run("console doors and recovery", testLockOrderOfTheDoors)
+ t.Run("seed and import doors", func(t *testing.T) {
+ clock := useLifetimesClock(t)
+ f := newFromFixture(t, 3)
+ turnLifetimesOn(t, f.fx.srv, clock)
+ c := installLockChecker(t)
+ const host = "copy.shop.example.com"
+ if code, out := f.create(t, `{"host":"`+host+`","from":{"host":"`+fromSource+`"}}`); code != http.StatusAccepted {
+ t.Fatalf("--from create = %d %v", code, out)
+ }
+ f.fx.srv.seedCopies.Wait()
+ if got := c.taken(""); len(got) < 2 || got[0] != "app bab/"+fromApp || got[1] != "host "+host {
+ t.Fatalf("the --from create took %v, want the app lock then the hostname", got)
+ }
+ code, out := beginImport(t, f, importHost, importSHA, 4096)
+ f.requireBegun(t, code, out, importHost)
+ if got := c.taken("host " + importHost); len(got) != 1 {
+ t.Fatalf("the import took the hostname %v, want once", got)
+ }
+ c.check(t)
+ })
+}
+
+func testLockOrderOfTheDoors(t *testing.T) {
l := newLtOn(t)
c := installLockChecker(t)
// The create door: the app lock, then the hostname.
diff --git a/internal/provision/self_serve_moves1_census_test.go b/internal/provision/self_serve_moves1_census_test.go
index 40f29ff70..3c00fb2d6 100644
--- a/internal/provision/self_serve_moves1_census_test.go
+++ b/internal/provision/self_serve_moves1_census_test.go
@@ -74,6 +74,10 @@ package provision
// - lifetimes_create.go:Server.deleteUnderRetiredSlot: key-site; reads a
// body under a retired slot and DeleteIfMatch-es it on that ETag, never
// a plain delete; no Put.
+// - apidomains.go:Server.handleAPIDomainAttach (fix round 1): key-site as
+// before; a refusal from the attach core is answered through
+// writeDoorRefusalJSON, so the app gone under the lifetime create's lock
+// is the family's http.NotFound. No write site.
func plan14SelfServeMoves1WriteCensusInventory() []censusEntry {
removed := []struct{ file, unit string }{
{"internal/provision/provision.go", "GetRecordETag"},
@@ -89,6 +93,7 @@ func plan14SelfServeMoves1WriteCensusInventory() []censusEntry {
{"internal/console/domainattach.go", "Server.attachDomainAs"},
{"internal/console/apiinstanceimport.go", "Server.beginImport"},
{"internal/console/apiinstanceseed.go", "Server.beginFrom"},
+ {"internal/console/apidomains.go", "Server.handleAPIDomainAttach"},
}
added := []censusEntry{
{"internal/provision/provision.go", "updateRecordSeeding", "record-writer", "key:RecordKey,key:WriteRecord", "20e3b0498fb8d410c3d10bc7c788b0eec137cf58aa4dfa2afb42da837ebd71ea"},
@@ -112,6 +117,7 @@ func plan14SelfServeMoves1WriteCensusInventory() []censusEntry {
{"internal/console/lifetimes_create.go", "Server.fenceRecord", "record-writer", "key:RecordKey,key:WriteRecord", "33d320aac193a0878b668054ea3b0d6872665c86851efa01d9e0d2532a902162"},
{"internal/console/lifetimes_create.go", "Server.allocCleanLocked", "key-site", "key:RecordKey", "035cf56d8f69517b66dc8ea6f9121d463e482d7dd05daf2b0c494aef1255f522"},
{"internal/console/lifetimes_create.go", "Server.deleteUnderRetiredSlot", "key-site", "key:RecordKey", "d0c8412a40e6f00d5db66e301fd108a7d5cddbfbe6dd80a93f02ac31f7cd24a0"},
+ {"internal/console/apidomains.go", "Server.handleAPIDomainAttach", "key-site", "lit:instances", "44016e4665cafc4d6d36ca8b4b9d01213978b8ca5041a2e83d9b93a397866b3d"},
}
entries := plan14ClaimRosterBindingWriteCensusInventory()
for _, r := range removed {
diff --git a/internal/provision/testdata/plan14-root-reads-self-serve-moves-1.tsv b/internal/provision/testdata/plan14-root-reads-self-serve-moves-1.tsv
index cc7abecd4..2e9f39dc0 100644
--- a/internal/provision/testdata/plan14-root-reads-self-serve-moves-1.tsv
+++ b/internal/provision/testdata/plan14-root-reads-self-serve-moves-1.tsv
@@ -45,7 +45,7 @@ internal/console/store_gate.go claimSQLCensus legacy accepted-legacy accepted-le
@remove internal/console/tempstore.go Store.CreateTemporaryAppInRegion
@removed internal/console/tempstore.go Store.CreateTemporaryAppInRegion H3 census-ruling-PROPOSED-self-serve-moves-1;rev3=PROPOSED-self-serve-moves-1;basis=constructor remains declared but has no direct read; app insertion and lifetime minting moved to insertAppRow, classified above; proposed removal only
# Task 2 envelopes, rev3=PROPOSED-self-serve-moves-1: internal/console covers the lifetime store, app constructors, lifetime projection and table-scoped gate labels; internal/provision (above) adds only ErrLifetimeExhausted beyond Task 1. Registry fields are unchanged.
-@coverage internal/console 6f7b6ec4fede81a3a6b4bdc64d6d6028400bccca3d6f4b3850053dfd25497738
+@coverage internal/console 2bdf734eea83e7eac6706466754f6d84145ae04545315c6c785448a833a0906d
# Task 6a: rev3=PROPOSED-self-serve-moves-1; reviewed provision envelope now includes bounded record-then-slot observations, judged read/list/update gates and signed-counter exhaustion at slot read. No removal-loop, host or console change; registry fields and the legacy seal stand.
internal/provision/rootrecord.go IndexRecords authority B3,C rev3=PROPOSED-self-serve-moves-1;basis=retain every discovered candidate owner key per host for fresh lifetime judgement at Find; partial discovery still retries and no verdict or body is cached e44ac431865bf38baa4105f66c9cb23014cc3c7ffcd41d5385244cc76fc4c0b9
internal/provision/rootrecord.go RecordIndex.Find authority B3,C rev3=PROPOSED-self-serve-moves-1;basis=observe each candidate through the context judge, refuse corruption and read failures, require one valid owner and validate its schema and shape; nil-judge duplicates retain permission refusal 760eed59cbd6a8ddab1098ce3a5f7a4272ecda81c17cc079dc135aba3a85a8f8
@@ -62,7 +62,7 @@ system.go runSystem authority B,C,D,F,G,J4 rev3=PROPOSED-self-serve-moves-1;iden
system.go systemVerb authority B,C,D,F,G,J4 rev3=PROPOSED-self-serve-moves-1;identity=explicit operator CLI uid 0;basis=adds the lifetimes family to the system dispatch (carlos system lifetimes cutover, a console door call as the operator); every existing command branch unchanged 5952f7a80803ed5279dea42b3b2166e2d2d93ddd9fbe2e13ac8b1c00044bdb70
@coverage . fc604d5a74c58e761759747a2a4b8f166c51576eb4c457c55370fa2d678f4bd1
@coverage cmd/console dc88a1b2acc2da4c812cb9cc748409ae89798931bc59f5391edcb693b5ed9a52
-# Task 3 (the create protocol and its recovery), rev3=PROPOSED-self-serve-moves-1: serve re-pinned in Task 0's rows above (it now also starts the lifetime recovery pass); Server.hostHolder re-pinned at its root-route disposition (the holder read is judged under a unit admitted on); newLifetimeOpID classified like mintLifetime (crypto/rand for an operation id). The cmd/console and internal/console envelopes (above) are re-pinned over the create protocol, its recovery, the door routing and the attach/detach exclusion. Three new legacy fingerprints move the seal. Registry fields stand.
+# Task 3 (the create protocol and its recovery), rev3=PROPOSED-self-serve-moves-1: serve re-pinned in Task 0's rows above (it now also starts the lifetime recovery pass); Server.hostHolder re-pinned at its root-route disposition (the holder read is judged under a unit admitted on); newLifetimeOpID classified like mintLifetime (crypto/rand for an operation id). The cmd/console and internal/console envelopes (above) are re-pinned over the create protocol, its recovery, the door routing and the attach/detach exclusion. Three new legacy fingerprints move the seal. Fix round 1 re-pins the internal/console envelope over the per-door pending sentences, the exhausted-counter sentence, the neutral attach refusal and the attach door's 404. Registry fields stand.
@legacy 2230ae1fd590a6e3d76cf38fe3e8c308ed9b9ec8bf5c0875ca13db23d1ac6776 internal/console/apex.go Server.hostHolder legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-1;basis=root-route: the registry route read is unchanged; the instance-record holder read under each other app is judged when the request was admitted with lifetimes on (a nil judge is GetRecord), so a body its slot no longer vouches for holds nothing registry:Account@363,registry:Account@383,registry:Account@454,registry:Account@474,registry:Account@524,registry:App@344,registry:App@440,whole:Route@330 5fb4c31472674d0f1d4232877d6dd860980381c9842ec0fea9084517034037f7
internal/console/apex.go Server.hostHolder legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-1;basis=root-route: the registry route read is unchanged; the instance-record holder read under each other app is judged when the request was admitted with lifetimes on (a nil judge is GetRecord), so a body its slot no longer vouches for holds nothing registry:Account@363,registry:Account@383,registry:Account@454,registry:Account@474,registry:Account@524,registry:App@344,registry:App@440,whole:Route@330 5fb4c31472674d0f1d4232877d6dd860980381c9842ec0fea9084517034037f7
@legacy 44be6376317c5819fc902e851b039330aff78a8f2ddc5338e95054d863151c02 internal/console/lifetimes.go newLifetimeOpID legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-1;basis=console.service user carlos-console, J4 root-input: reads crypto/rand for an independent 32-hex lifetime operation id (allocations and retirements); randomness grants no root authority file:Read@71 34364098aef13cf16819336874c65fe5aa38350ec6557cb0ab67fbc3596a0df3