edge: delete the hop door header from every request, read one value only (#358)
Review round 1 for Task 6. acceptHop deleted X-Carlos-Hop-Door behind a Get, which missed an empty value or an empty first value with a client's second behind it. It now deletes it unguarded on every request and accepts the mark only when the header carried exactly one value. The end-to-end test runs annie's limiter on a stopped clock so its refusals do not depend on wall time, and the acceptHop test silences the mesh-key log line.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2 files changed,
+47
−34
internal/edge/homemap.go+13 −12internal/edge/hopdoor_test.go+34 −22
CI failed — run details
CI log
=== gate ===
.amadan/test-gate.sh
=== launchctx (0 s)
ok amadan.net/carlos/platform.git/launchctx 0.017s
? amadan.net/carlos/platform.git/launchctx/controlname [no test files]
? amadan.net/carlos/platform.git/launchctx/wireid [no test files]
=== vet (12 s)
=== gofmt (0 s)
gofmt -l .: clean
=== rest (163 s)
? github.com/carlosframework/platform/cmd/changelog [no test files]
ok github.com/carlosframework/platform/cmd/console 3.850s
ok github.com/carlosframework/platform/cmd/moveprobe 11.809s
ok github.com/carlosframework/platform/cmd/zddprobe 0.760s
ok github.com/carlosframework/platform/internal/activator 59.910s
ok github.com/carlosframework/platform/internal/agentsock 0.026s
ok github.com/carlosframework/platform/internal/alerting 0.007s
ok github.com/carlosframework/platform/internal/analytics 0.022s
ok github.com/carlosframework/platform/internal/appconfig 2.914s
ok github.com/carlosframework/platform/internal/apperr 0.122s
ok github.com/carlosframework/platform/internal/applog 0.257s
ok github.com/carlosframework/platform/internal/awsinv 0.007s
ok github.com/carlosframework/platform/internal/boxchoice 0.009s
ok github.com/carlosframework/platform/internal/boxid 0.711s
? github.com/carlosframework/platform/internal/boxid/boxidtest [no test files]
? github.com/carlosframework/platform/internal/boxid/internal/signtest [no test files]
ok github.com/carlosframework/platform/internal/boxvolumes 0.010s
ok github.com/carlosframework/platform/internal/caps 0.025s
ok github.com/carlosframework/platform/internal/certwarm 0.009s
ok github.com/carlosframework/platform/internal/cgroup 0.786s
ok github.com/carlosframework/platform/internal/changelog 0.506s
ok github.com/carlosframework/platform/internal/claimactivation 1.262s
ok github.com/carlosframework/platform/internal/clamd 0.070s
? github.com/carlosframework/platform/internal/cliflag [no test files]
? github.com/carlosframework/platform/internal/controlname [no test files]
? github.com/carlosframework/platform/internal/controlsock [no test files]
ok github.com/carlosframework/platform/internal/dbdoor 7.600s
ok github.com/carlosframework/platform/internal/dbdoor/dbdoortest 0.013s
ok github.com/carlosframework/platform/internal/dbquery 0.007s
2026/10/24 21:40:00 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:00 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:00 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
--- FAIL: TestADrainingBoxDoesNotPick (0.14s)
agent.go:135: dbreads: dbr_my3lwgd7esx5o5nrptyxvfc44i: planned 1 files (720 bytes) and restored to 1 in 4ms
agent.go:135: dbreads: dbr_my3lwgd7esx5o5nrptyxvfc44i: output 4 bytes in 1 confirmed chunks in 1ms
loop_test.go:170: no result for dbr_zonsl3yvo76mwvr7thf7etufdu: dirstore: db-reads/dbr_zonsl3yvo76mwvr7thf7etufdu/result.json: file does not exist
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000003
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000003 maxTXID=0000000000000003 size=454
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000003 txid.db=0000000000000003
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000003
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000003 maxTXID=0000000000000003 size=454
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000003 txid.db=0000000000000003
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000003
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000003 maxTXID=0000000000000003 size=454
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000003 txid.db=0000000000000003
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000003
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000003 maxTXID=0000000000000003 size=454
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000003 txid.db=0000000000000003
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000003 txid.db=0000000000000004
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000004 maxTXID=0000000000000004 size=537
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000004 txid.db=0000000000000004
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 21:40:01 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 21:40:01 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
FAIL
FAIL github.com/carlosframework/platform/internal/dbreads 2.212s
? github.com/carlosframework/platform/internal/dbreads/dbreadstest [no test files]
ok github.com/carlosframework/platform/internal/dbverify 0.006s
ok github.com/carlosframework/platform/internal/dnsrec 0.006s
ok github.com/carlosframework/platform/internal/docsite 0.008s
ok github.com/carlosframework/platform/internal/domains 2.896s
ok github.com/carlosframework/platform/internal/doorkey 0.007s
ok github.com/carlosframework/platform/internal/economics 0.005s
ok github.com/carlosframework/platform/internal/edge 45.681s
? github.com/carlosframework/platform/internal/edgeproof [no test files]
ok github.com/carlosframework/platform/internal/edgesfile 0.008s
ok github.com/carlosframework/platform/internal/fleetapi 0.135s
ok github.com/carlosframework/platform/internal/gate 1.656s
ok github.com/carlosframework/platform/internal/genselect 0.017s
ok github.com/carlosframework/platform/internal/geo 0.018s
ok github.com/carlosframework/platform/internal/geoip 0.030s
ok github.com/carlosframework/platform/internal/historyreadback 0.154s
ok github.com/carlosframework/platform/internal/host 140.344s
ok github.com/carlosframework/platform/internal/hostactors 6.175s
ok github.com/carlosframework/platform/internal/hostactors/awsmembership 0.014s
ok github.com/carlosframework/platform/internal/hostbox 3.028s
ok github.com/carlosframework/platform/internal/hostclaim 0.753s
ok github.com/carlosframework/platform/internal/hostenv 0.014s
ok github.com/carlosframework/platform/internal/hostevidence 0.013s
ok github.com/carlosframework/platform/internal/hostexec 5.199s
ok github.com/carlosframework/platform/internal/hostfence 0.049s
ok github.com/carlosframework/platform/internal/hostfiles 10.388s
ok github.com/carlosframework/platform/internal/hostfloor 0.020s
ok github.com/carlosframework/platform/internal/hostguard 1.066s
ok github.com/carlosframework/platform/internal/hostops 1.961s
? github.com/carlosframework/platform/internal/hostops/fencerelease [no test files]
ok github.com/carlosframework/platform/internal/hostops/internal/fencerelease 0.013s
ok github.com/carlosframework/platform/internal/hostquarantine 0.014s
ok github.com/carlosframework/platform/internal/hostrelocate 0.583s
ok github.com/carlosframework/platform/internal/hostresolve 0.197s
ok github.com/carlosframework/platform/internal/hostwrite 0.019s
ok github.com/carlosframework/platform/internal/infraview 0.018s
ok github.com/carlosframework/platform/internal/instancectl 5.243s
ok github.com/carlosframework/platform/internal/instanceexec 2.878s
ok github.com/carlosframework/platform/internal/instancefs 0.018s
ok github.com/carlosframework/platform/internal/instancekey 0.003s
ok github.com/carlosframework/platform/internal/instanceupdates 0.008s
ok github.com/carlosframework/platform/internal/layout 1.747s
ok github.com/carlosframework/platform/internal/lbhealth 0.005s
ok github.com/carlosframework/platform/internal/lease 10.079s
ok github.com/carlosframework/platform/internal/lease/leasetest 0.491s
ok github.com/carlosframework/platform/internal/ledger 0.016s
ok github.com/carlosframework/platform/internal/mail 0.241s
ok github.com/carlosframework/platform/internal/maintenance 0.098s
ok github.com/carlosframework/platform/internal/maintenanceexec 5.566s
ok github.com/carlosframework/platform/internal/maintenanceguard 0.164s
ok github.com/carlosframework/platform/internal/metrics 0.007s
ok github.com/carlosframework/platform/internal/moves 21.670s
ok github.com/carlosframework/platform/internal/moves/archive 0.947s
ok github.com/carlosframework/platform/internal/objstore 0.263s
ok github.com/carlosframework/platform/internal/ops 0.201s
ok github.com/carlosframework/platform/internal/park 0.255s
ok github.com/carlosframework/platform/internal/plans 0.007s
ok github.com/carlosframework/platform/internal/privatefile 0.007s
2026/10/24 21:40:15 provision: listing apps/bab/blog/instances/: list refused — its records are unseen this pass
2026/10/24 21:40:15 provision: listing apps/bab/: listdirs refused — its records are unseen this pass
2026/10/24 21:40:16 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:16 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:16 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:16 provision: listing apps/bac/tito/instances/: list refused — its records are unseen this pass
2026/10/24 21:40:16 provision: listing apps/bac/tito/instances/: list refused — its records are unseen this pass
2026/10/24 21:40:16 provision: skipping record apps/bac/tito/instances/one.example.com.json: unreadable: read refused
2026/10/24 21:40:16 provision: listing apps/bac/tito/instances/: list refused — its records are unseen this pass
2026/10/24 21:40:16 provision: an app's records could not be listed: they are skipped
2026/10/24 21:40:16 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 21:40:16 provision: remove retired instance route shop.example: provision: claim admission unavailable
2026/10/24 21:40:16 provision: remove retired instance route shop.example: provision: claim admission unavailable
2026/10/24 21:40:16 provision: remove retired sidecar route worker.sidecar.internal: provision: claim admission unavailable
2026/10/24 21:40:16 provision: remove retired sidecar route worker.sidecar.internal: provision: claim admission unavailable
2026/10/24 21:40:16 provision: claim install acme.go.tito.io: provision: claim admission unavailable
2026/10/24 21:40:16 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:16 provision: claim install acme.go.tito.io: registry: claim row ownership changed or unknown
2026/10/24 21:40:16 provision: claim install bot.eleven.bac.sidecar.internal: provision: claim admission unavailable
2026/10/24 21:40:16 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/24 21:40:16 provision: claim install bot.eleven.bac.sidecar.internal: registry: claim row ownership changed or unknown
2026/10/24 21:40:16 provision: refusing to mint route acme.go.tito.io (app "tito" acct "bac"): this box declares CARLOS_INBOUND=none (no-inbound) and cannot serve routed instance traffic
2026/10/24 21:40:16 provision: acme.go.tito.io: not minting this pass: the box's layout intent could not be read: no sealed config
2026/10/24 21:40:16 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:16 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:16 provision: REFUSING to mint sidecar bot.eleven.bac.sidecar.internal: bot.eleven.bac.sidecar.internal-sidecar.env is staged on this box — the legacy file co-spawn and a native sidecar row are two mechanisms for one host; remove the file to migrate this host onto sidecar records
2026/10/24 21:40:16 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/24 21:40:16 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/24 21:40:16 provision: refusing to mint route acme.go.tito.io (app "tito" acct "bac"): this box declares CARLOS_INBOUND=none (no-inbound) and cannot serve routed instance traffic
2026/10/24 21:40:16 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:16 provision: REFUSING to mint sidecar bot.eleven.bac.sidecar.internal: bot.eleven.bac.sidecar.internal-sidecar.env is staged on this box — the legacy file co-spawn and a native sidecar row are two mechanisms for one host; remove the file to migrate this host onto sidecar records
2026/10/24 21:40:16 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/24 21:40:16 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/24 21:40:16 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:16 provision: claim install acme.go.tito.io: registry: claim row ownership changed or unknown
2026/10/24 21:40:16 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:16 provision: claim install acme.go.tito.io: registry: claim row ownership changed or unknown
2026/10/24 21:40:16 provision: bot.eleven.bac.sidecar.internal exists but is not a sidecar row this pass owns (kind "sidecar" provisioned false app "eleven" acct "bac") — leaving it alone
2026/10/24 21:40:16 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/24 21:40:16 provision: claim install bot.eleven.bac.sidecar.internal: registry: claim row ownership changed or unknown
2026/10/24 21:40:16 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/24 21:40:16 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:16 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/24 21:40:16 provision: bot.eleven.bac.sidecar.internal exists but is not a sidecar row this pass owns (kind "sidecar" provisioned false app "eleven" acct "bac") — leaving it alone
2026/10/24 21:40:16 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:16 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:16 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:16 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 21:40:16 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:16 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:16 provision: skipping record apps/bac/tito/instances/new.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:16 provision: not removing acme.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/24 21:40:16 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:16 provision: skipping record apps/bac/tito/instances/new.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:16 provision: minted instance route ri.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:16 provision: minted instance route rj.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:16 provision: minted instance route rk.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:16 provision: minted instance route rl.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:16 provision: minted instance route rb.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:16 provision: minted instance route rc.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:16 provision: minted instance route re.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:16 provision: minted instance route rg.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:16 provision: minted instance route rh.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:16 provision: minted instance route ra.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:16 provision: minted instance route rd.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:16 provision: minted instance route rf.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:16 provision: minted instance route rb.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:16 provision: minted instance route rc.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:16 provision: minted instance route rd.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:16 provision: minted instance route ra.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:16 provision: skipping record apps/bac/tito/instances/rb.go.tito.io.json: read failed: read refused
2026/10/24 21:40:16 provision: skipping record apps/bac/tito/instances/rb.go.tito.io.json: read failed: read refused
2026/10/24 21:40:16 provision: minted instance route re.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route x.appa.example (app "appa" acct "bac")
2026/10/24 21:40:17 provision: minted instance route x.appb.example (app "appb" acct "bac")
2026/10/24 21:40:17 provision: minted instance route x.appc.example (app "appc" acct "bac")
2026/10/24 21:40:17 provision: minted instance route x.appe.example (app "appe" acct "bac")
2026/10/24 21:40:17 provision: minted instance route x.appf.example (app "appf" acct "bac")
2026/10/24 21:40:17 provision: minted instance route x.appg.example (app "appg" acct "bac")
2026/10/24 21:40:17 provision: minted instance route x.appj.example (app "appj" acct "bac")
2026/10/24 21:40:17 provision: minted instance route x.appd.example (app "appd" acct "bac")
2026/10/24 21:40:17 provision: minted instance route x.apph.example (app "apph" acct "bac")
2026/10/24 21:40:17 provision: minted instance route x.appi.example (app "appi" acct "bac")
2026/10/24 21:40:17 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 21:40:17 provision: minted instance route r0025.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0086.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0001.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0023.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0038.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0057.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0066.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0100.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0046.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0056.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0108.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0044.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0048.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0124.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0127.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0128.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0024.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0063.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0110.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0010.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0064.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0085.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0103.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0012.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0032.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0036.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0078.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0051.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0062.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0075.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0005.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0011.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0018.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0040.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0113.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0043.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0050.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0120.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0029.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0030.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0004.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0042.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0072.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0101.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0013.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0015.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0059.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0082.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0121.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0000.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0002.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0019.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0027.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0068.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0073.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0084.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0088.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0020.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0076.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0107.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0122.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0033.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0052.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0049.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0079.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0126.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0017.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0031.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0039.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0094.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0116.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0125.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0129.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0009.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0047.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0080.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0081.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0053.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0060.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0096.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0102.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0037.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0104.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0118.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0055.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0123.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0041.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0061.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0069.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0089.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0054.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0058.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0097.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0098.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0105.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0109.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0007.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0021.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0045.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0093.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0114.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0115.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0035.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0099.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0119.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0087.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0112.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0006.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0016.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0077.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0083.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0117.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0003.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0014.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0022.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0067.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0070.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0071.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0092.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0095.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0008.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0026.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0034.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0074.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0090.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0091.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0106.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0111.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0028.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:17 provision: minted instance route r0065.go.tito.io (app "tito" acct "bac")
--- FAIL: TestPlan9B8RecordWriteCensus (0.73s)
plan9_b8_census_test.go:372: record-write census rejected 1 site(s); update the explicit inventory only after reviewing the source:
changed site internal/provision/reconcile.go:Reconcile: source differs from the reviewed digest
2026/10/24 21:40:18 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: refusing to mint route acme.go.tito.io (app "tito" acct "bac"): this box declares CARLOS_INBOUND=none (no-inbound) and cannot serve routed instance traffic
2026/10/24 21:40:18 provision: minted instance route shop.example.com (app "shop" acct "bac")
2026/10/24 21:40:18 provision: minted instance route shop.example.com (app "shop" acct "bac")
2026/10/24 21:40:18 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: minted service route svc.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: minted instance route whole.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: minted instance route console.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: minted service route ha.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: minted instance route shared.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: converged acme.go.tito.io channel stable -> edge
2026/10/24 21:40:18 provision: converged acme.go.tito.io channel edge -> canary/rehearsal
2026/10/24 21:40:18 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: empty channel
2026/10/24 21:40:18 provision: not removing acme.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/24 21:40:18 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: converged acme.go.tito.io environment "" -> "staging"
2026/10/24 21:40:18 provision: converged acme.go.tito.io environment "staging" -> ""
2026/10/24 21:40:18 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: converged acme.go.tito.io steering "" -> "latency"
2026/10/24 21:40:18 provision: converged acme.go.tito.io steering "latency" -> ""
2026/10/24 21:40:18 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: converged acme.go.tito.io hibernate false -> true
2026/10/24 21:40:18 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: converged acme.go.tito.io hibernate true -> false (replication "daily" cleared: only a hibernating route's rung is read)
2026/10/24 21:40:18 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: converged acme.go.tito.io status-named false -> true
2026/10/24 21:40:18 provision: converged acme.go.tito.io status-named true -> false
2026/10/24 21:40:18 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: minted service route ha.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: converged ha.go.tito.io upstreams addr "" -> "", addrs "127.0.0.1:7001,127.0.0.1:7002" -> "127.0.0.1:7001,127.0.0.1:7003" (probe "{\"path\":\"/\",\"status\":200,\"interval_ms\":2000,\"fail_after\":3,\"rise_after\":2}" -> "{\"path\":\"/\",\"status\":200,\"interval_ms\":2000,\"fail_after\":3,\"rise_after\":2}")
2026/10/24 21:40:18 provision: converged ha.go.tito.io upstreams addr "" -> "", addrs "127.0.0.1:7001,127.0.0.1:7003" -> "127.0.0.1:7003,127.0.0.1:7001" (probe "{\"path\":\"/\",\"status\":200,\"interval_ms\":2000,\"fail_after\":3,\"rise_after\":2}" -> "{\"path\":\"/\",\"status\":200,\"interval_ms\":2000,\"fail_after\":3,\"rise_after\":2}")
2026/10/24 21:40:18 provision: converged ha.go.tito.io upstreams addr "" -> "", addrs "127.0.0.1:7003,127.0.0.1:7001" -> "127.0.0.1:7003,127.0.0.1:7001" (probe "{\"path\":\"/\",\"status\":200,\"interval_ms\":2000,\"fail_after\":3,\"rise_after\":2}" -> "{\"path\":\"/healthz\",\"status\":200,\"interval_ms\":2000,\"fail_after\":3,\"rise_after\":2}")
2026/10/24 21:40:18 provision: minted service route whole.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: converged whole.go.tito.io upstreams addr "127.0.0.1:9443" -> "", addrs "" -> "127.0.0.1:9443,127.0.0.1:9444" (probe "" -> "{\"path\":\"/\",\"status\":200,\"interval_ms\":2000,\"fail_after\":3,\"rise_after\":2}")
2026/10/24 21:40:18 provision: converged whole.go.tito.io upstreams addr "" -> "", addrs "127.0.0.1:9443,127.0.0.1:9444" -> "" (probe "{\"path\":\"/\",\"status\":200,\"interval_ms\":2000,\"fail_after\":3,\"rise_after\":2}" -> "")
2026/10/24 21:40:18 provision: whole.go.tito.io: record describes a different route SHAPE than the row (kind "instance"/"service" unit ""/"" socket "/run/carlos/whole.go.tito.io.sock"/"" db "/data/whole.go.tito.io.db"/"") — not converged in place; `carlos remove whole.go.tito.io` purges this route's capability grants (registry.Delete's contract, not a bug) before the next pass re-mints it, so treat that as a last resort, not a routine fix
2026/10/24 21:40:18 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: minted service route whole.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/24 21:40:18 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/24 21:40:18 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: skipping accounts/bac/account.json: malformed account manifest: invalid character 'o' in literal null (expecting 'u')
2026/10/24 21:40:18 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/24 21:40:18 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: manifest bac/tito: read failed: provision: manifest bac/tito: invalid character 'o' in literal null (expecting 'u')
2026/10/24 21:40:18 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: disagrees with its own path (host="wrong-host.go.tito.io" account="bac" app="tito")
2026/10/24 21:40:18 provision: skipping record apps/bac/tito/instances/acme$evil.go.tito.io.json: host "acme$evil.go.tito.io" is not a hostname
2026/10/24 21:40:18 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: skipping record apps/bac/tito/instances/acme$evil.go.tito.io.json: host "acme$evil.go.tito.io" is not a hostname
2026/10/24 21:40:18 provision: not removing acme$evil.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/24 21:40:18 provision: skipping record apps/bac/tito/instances/bad-service.go.tito.io.json: invalid shape: kind service with no addr: the platform only proxies to a service, so the record must name the upstream it proxies to
2026/10/24 21:40:18 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: skipping record apps/bac/tito/instances/bad-service.go.tito.io.json: invalid shape: kind service with no addr: the platform only proxies to a service, so the record must name the upstream it proxies to
2026/10/24 21:40:18 provision: not removing bad-service.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/24 21:40:18 provision: skipping record apps/bac/tito/instances/no-channel.go.tito.io.json: empty channel
2026/10/24 21:40:18 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: skipping record apps/bac/tito/instances/no-channel.go.tito.io.json: empty channel
2026/10/24 21:40:18 provision: not removing no-channel.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/24 21:40:18 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:18 provision: not removing acme.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/24 21:40:18 provision: removed retired instance route ghost.go.tito.io (record gone)
2026/10/24 21:40:18 provision: duplicate host dup.go.tito.io: keeping apps/bac/tito/instances/dup.go.tito.io.json, skipping apps/bad/tito/instances/dup.go.tito.io.json
2026/10/24 21:40:18 provision: minted instance route dup.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 21:40:18 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 21:40:18 provision: removed retired instance route acme.go.tito.io (app in the trash)
2026/10/24 21:40:18 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:18 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 21:40:18 provision: removed retired static route site.go.tito.io (app in the trash)
2026/10/24 21:40:18 provision: trash marker for bac/tito unreadable: release: malformed trash marker for bac/tito: invalid character 'n' looking for beginning of object key string — not minting for this app
2026/10/24 21:40:19 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 21:40:19 provision: removed retired instance route acme.go.tito.io (app in the trash)
2026/10/24 21:40:19 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 21:40:19 provision: trash marker for bac/tito unreadable: release: malformed trash marker for bac/tito: invalid character 'n' looking for beginning of object key string — not minting for this app
2026/10/24 21:40:19 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/24 21:40:19 provision: converged acme.go.tito.io channel stable -> edge
2026/10/24 21:40:19 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/24 21:40:19 provision: converged acme.go.tito.io channel canary/rehearsal -> edge
2026/10/24 21:40:19 provision: converged acme.go.tito.io environment "staging" -> ""
2026/10/24 21:40:19 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/24 21:40:19 provision: acme.go.tito.io exists but is not the route this record describes (backing "unit" (box-scoped, not expressible in a record)) — leaving it alone
2026/10/24 21:40:19 provision: acme.go.tito.io exists but is not the route this record describes (tunnel "pi-fleet" (box-scoped, not expressible in a record)) — leaving it alone
2026/10/24 21:40:19 provision: acme.go.tito.io exists but is not the route this record describes (caps "port:25" (box-scoped, not expressible in a record)) — leaving it alone
2026/10/24 21:40:19 provision: acme.go.tito.io exists but is not the route this record describes (platform (owned by the domains reconcile pass)) — leaving it alone
2026/10/24 21:40:19 provision: acme.go.tito.io exists but is not the route this record describes (canary (owned by the domains reconcile pass)) — leaving it alone
2026/10/24 21:40:19 provision: acme.go.tito.io exists but is not the route this record describes (db "/data/other.db"/"/data/acme.go.tito.io.db") — leaving it alone
2026/10/24 21:40:19 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/24 21:40:19 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/24 21:40:19 provision: dry-run: would mint instance route acme.go.tito.io (app "tito" acct "bac" channel "stable")
2026/10/24 21:40:19 provision: dry-run: would adopt existing route adopt.go.tito.io (app "tito" acct "bac") — this record would own its channel and environment
2026/10/24 21:40:19 provision: dry-run: would converge adopt.go.tito.io channel stable -> edge
2026/10/24 21:40:19 provision: dry-run: would converge adopt.go.tito.io environment "" -> "staging"
2026/10/24 21:40:19 provision: dry-run: would converge owned.go.tito.io channel stable -> edge
2026/10/24 21:40:19 provision: dry-run: would converge owned.go.tito.io environment "" -> "staging"
2026/10/24 21:40:19 provision: dry-run: would converge owned.go.tito.io hibernate false -> true
2026/10/24 21:40:19 provision: dry-run: would converge owned.go.tito.io seed
2026/10/24 21:40:19 provision: dry-run: would remove retired instance route gone.go.tito.io (record gone)
2026/10/24 21:40:19 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:19 provision: adopted existing route adopt.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/24 21:40:19 provision: converged adopt.go.tito.io channel stable -> edge
2026/10/24 21:40:19 provision: converged adopt.go.tito.io environment "" -> "staging"
2026/10/24 21:40:19 provision: converged owned.go.tito.io channel stable -> edge
2026/10/24 21:40:19 provision: converged owned.go.tito.io environment "" -> "staging"
2026/10/24 21:40:19 provision: converged owned.go.tito.io hibernate false -> true
2026/10/24 21:40:19 provision: removed retired instance route gone.go.tito.io (record gone)
2026/10/24 21:40:19 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:19 provision: adopted existing route story.carlosframework.com (app "story" acct "bad") — this record now owns its channel and environment
2026/10/24 21:40:19 provision: story.carlosframework.com exists but is not the route this record describes (kind "instance"/"static") — leaving it alone
2026/10/24 21:40:19 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:19 provision: minted service route pub.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:19 provision: minted service route pubs.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:19 provision: minted service route named.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:19 provision: minted service route priv.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:19 provision: minted instance route unit.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:19 provision: minted instance route exec.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:19 provision: minted service route loop.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:19 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:19 provision: minted static route pisite.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:19 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:19 provision: removed retired static route site.go.tito.io (record gone)
2026/10/24 21:40:19 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:19 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:19 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:19 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:19 provision: minted instance route acme-uk.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:19 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:19 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:19 provision: converged acme.go.tito.io replicas "ie,uk" -> "uk"
2026/10/24 21:40:19 provision: converged acme.go.tito.io replicas "uk" -> ""
2026/10/24 21:40:19 provision: minted instance route acme-uk.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:19 provision: converged acme-uk.go.tito.io replica mark true -> false
2026/10/24 21:40:19 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:19 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:19 provision: acme.go.tito.io: row is on the nested layout (db "/data/instances/acme.go.tito.io/acme.go.tito.io.db" socket "/run/carlos/instances/acme.go.tito.io/app.sock"); the record's shared paths are not drift
2026/10/24 21:40:19 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:19 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:19 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:19 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:19 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:19 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:19 provision: router.go.tito.io: not minting this pass: the box's layout intent could not be read: store down
2026/10/24 21:40:19 provision: acme.go.tito.io: not minting this pass: the box's layout intent could not be read: store down
2026/10/24 21:40:19 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/24 21:40:19 provision: converged acme.go.tito.io channel stable -> edge
2026/10/24 21:40:19 provision: minted instance route acme.go.tito.io held landing by mv_acme (app "tito" acct "bac")
2026/10/24 21:40:19 provision: not removing acme.go.tito.io (record gone): participant of a running operation
2026/10/24 21:40:19 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/24 21:40:19 provision: minted instance route acme.go.tito.io held landing by mv_acme (app "tito" acct "bac")
2026/10/24 21:40:19 provision: refusing to mint held route acme.go.tito.io (app "tito" acct "bac"): this box declares CARLOS_INBOUND=none (no-inbound) and cannot serve routed instance traffic
2026/10/24 21:40:19 provision: held acme.go.tito.io landing by mv_acme (was ready)
2026/10/24 21:40:19 provision: acme.go.tito.io: held restoring by rb_other, not by mv_acme; leaving it
2026/10/24 21:40:19 provision: acme.go.tito.io: the row is not this pass's (app "other" acct ""); not holding it for mv_acme
2026/10/24 21:40:19 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/24 21:40:19 provision: dry-run: would mint instance route acme.go.tito.io held landing by mv_acme (app "tito" acct "bac" channel "stable")
2026/10/24 21:40:19 provision: acme.go.tito.io: not held landing by mv_acme: the row's hold changed under this pass; the next pass judges it afresh
2026/10/24 21:40:19 provision: held acme.go.tito.io landing by mv_acme (was ready)
2026/10/24 21:40:19 provision: minted instance route acme.example.com (app "shop" acct "bac")
2026/10/24 21:40:19 provision: minted instance route plain.example.com (app "shop" acct "bac")
2026/10/24 21:40:19 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:19 provision: skipping record apps/bac/shop/instances/liar.shop.example.com.json: disagrees with its own path (host="other.shop.example.com" account="bac" app="shop")
2026/10/24 21:40:19 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:19 provision: skipping record apps/bac/shop/instances/liar.shop.example.com.json: disagrees with its own path (host="other.shop.example.com" account="bac" app="shop")
2026/10/24 21:40:19 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:19 provision: skipping record apps/bac/shop/instances/liar.shop.example.com.json: disagrees with its own path (host="other.shop.example.com" account="bac" app="shop")
2026/10/24 21:40:19 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:19 provision: listing apps/bac/shop/instances/: list refused — its records are unseen this pass
2026/10/24 21:40:20 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:20 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:20 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/24 21:40:20 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:20 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 21:40:20 provision: minted sidecar route bot.shop.bac.sidecar.internal (app "shop" acct "bac" args ["run"])
2026/10/24 21:40:20 provision: removed retired sidecar route bot.shop.bac.sidecar.internal (record gone)
2026/10/24 21:40:20 provision: minted sidecar route bot.shop.bum.sidecar.internal (app "shop" acct "bum" args ["run"])
2026/10/24 21:40:20 provision: sidecar bot.shop.bum.sidecar.internal is not placeable here: it asks for "no-inbound" placement and this box accepts inbound work (CARLOS_INBOUND="")
2026/10/24 21:40:20 provision: sidecar bot.shop.bum.sidecar.internal is not placeable here: it asks for "no-inbound" placement and this box accepts inbound work (CARLOS_INBOUND="")
2026/10/24 21:40:20 provision: minted sidecar route bot.shop.bum.sidecar.internal (app "shop" acct "bum" args ["run"])
2026/10/24 21:40:20 provision: removed retired sidecar route bot.shop.bum.sidecar.internal (record gone)
2026/10/24 21:40:20 provision: sidecar bot.shop.bum.sidecar.internal is not placeable here: it asks for "no-inbound" placement and this box accepts inbound work (CARLOS_INBOUND="")
2026/10/24 21:40:20 provision: sidecar bot.shop.bum.sidecar.internal is not placeable here: it asks for "no-inbound" placement and this box accepts inbound work (CARLOS_INBOUND="")
2026/10/24 21:40:20 provision: removed retired sidecar route bot.shop.bum.sidecar.internal (record gone)
2026/10/24 21:40:21 provision: a.shop.example.com: swapped for import sd_pk4l6szfpxdcg3japmxsyabf5e (the original route is journaled)
2026/10/24 21:40:21 provision: a.shop.example.com: import sd_pk4l6szfpxdcg3japmxsyabf5e committed: its gate is cleared and its journal row dropped
2026/10/24 21:40:21 provision: a.shop.example.com: row is on the nested layout (db "/data/instances/a.shop.example.com/a.shop.example.com.db" socket "/run/carlos/instances/a.shop.example.com/app.sock"); the record's shared paths are not drift
2026/10/24 21:40:21 provision: a.shop.example.com: import sd_iu3krqsbhzw3znelidtqvofo2m rolled back to its original route
2026/10/24 21:40:21 provision: a.shop.example.com: import sd_iu3krqsbhzw3znelidtqvofo2m: the host's replica is left alone: the record apps/bac/shop/instances/a.shop.example.com.json holds the host
2026/10/24 21:40:21 provision: a.shop.example.com: import sd_iu3krqsbhzw3znelidtqvofo2m is cleaned up and its journal row retired
2026/10/24 21:40:21 provision: a.shop.example.com: import sd_wqbutxtndkd2wofo3qygsd642e rolled back to its original route
2026/10/24 21:40:21 provision: a.shop.example.com: import sd_wqbutxtndkd2wofo3qygsd642e: the host's replica is left alone: the record apps/bac/shop/instances/a.shop.example.com.json holds the host
2026/10/24 21:40:21 provision: a.shop.example.com: import sd_wqbutxtndkd2wofo3qygsd642e is cleaned up and its journal row retired
2026/10/24 21:40:21 provision: dry-run: would redo a.shop.example.com's swap record CAS for import sd_mrwhqxdrm5ukqtf632e56ldjwu
2026/10/24 21:40:21 provision: dry-run: would clear a.shop.example.com's import gate
2026/10/24 21:40:21 provision: dry-run: would converge a.shop.example.com seed source
2026/10/24 21:40:21 provision: a.shop.example.com: row is on the nested layout (db "/data/instances/a.shop.example.com/a.shop.example.com.db" socket "/run/carlos/instances/a.shop.example.com/app.sock"); the record's shared paths are not drift
2026/10/24 21:40:21 provision: a.shop.example.com: the import's record apps/bac/shop/instances/a.shop.example.com.json is not one this pass can use (connection reset)
2026/10/24 21:40:21 provision: a.shop.example.com: the import's record apps/bac/shop/instances/a.shop.example.com.json is not one this pass can use (provision: invalid maintenance projection or protected fields)
2026/10/24 21:40:21 provision: a.shop.example.com: the import's record apps/bac/shop/instances/a.shop.example.com.json is not one this pass can use (the record under apps/bac/shop/instances/a.shop.example.com.json is apps/bac/shop/instances/b.shop.example.com.json's)
2026/10/24 21:40:21 provision: a.shop.example.com: import sd_6nnaryae3zezc6n2c4zdjnflf4 cannot roll back on this box: the activator is not wired; it stays journaled and gated
2026/10/24 21:40:21 provision: a.shop.example.com: import sd_6zsthtltcvqkqisjh44pspysuq cannot roll back on this box: the activator is not wired; it stays journaled and gated
2026/10/24 21:40:21 provision: a.shop.example.com: import sd_nyi2uk4fd7bsjluo666usb5tfe is journaled, but this box cannot act on imports; its row is left alone
2026/10/24 21:40:21 provision: a.shop.example.com: import sd_7eqjy2hyyfyhd5t2drnowutlfi is journaled, but this box cannot act on imports; its row is left alone
2026/10/24 21:40:21 provision: a.shop.example.com: import sd_ycr2tpg4efm7nqp65x3f6smhsu is journaled, but this box cannot act on imports; its row is left alone
2026/10/24 21:40:21 provision: the import journal could not be read: registry: import journal a.shop.example.com: original row: unexpected end of JSON input (no import is acted on and no route is removed this pass)
2026/10/24 21:40:21 provision: b.shop.example.com: import sd_maz57k74wnnz46oqe7uxq4auqq left alone this pass: the import journal could not be read
2026/10/24 21:40:21 provision: c.shop.example.com: import sd_ykavbwvibppia5utyv6g7fvram left alone this pass: the import journal could not be read
2026/10/24 21:40:21 provision: a.shop.example.com: import sd_5n2meaxbk5s7xookhwxufcrm2q committed: its gate is cleared and its journal row dropped
2026/10/24 21:40:21 provision: a.shop.example.com: not converging import sd_iyyp4tfnzgl37c4eucupcbw6bu: it is swapped but not committed, and the row on this box has no import gate
2026/10/24 21:40:21 provision: a.shop.example.com: not converging import sd_ujlhe6hqkhtlagfemmvr54dyqe: it is swapped but not committed, and the row on this box has no import gate
2026/10/24 21:40:21 provision: a.shop.example.com: not converging import sd_yuoirmt67qvwj5ofaeyeufongy: it is placed but not committed, and the row on this box has no import gate
2026/10/24 21:40:21 provision: a.shop.example.com: not converging import sd_scmwajm3vvfvacn3bzsmhfk2yq: it is placed but not committed, and the row on this box has no import gate
2026/10/24 21:40:21 provision: a.shop.example.com: row is on the nested layout (db "/data/instances/a.shop.example.com/a.shop.example.com.db" socket "/run/carlos/instances/a.shop.example.com/app.sock"); the record's shared paths are not drift
2026/10/24 21:40:21 provision: converge seed source on a.shop.example.com: constraint failed: seed_source is read-only here (1811)
2026/10/24 21:40:21 provision: a.shop.example.com: row is on the nested layout (db "/data/instances/a.shop.example.com/a.shop.example.com.db" socket "/run/carlos/instances/a.shop.example.com/app.sock"); the record's shared paths are not drift
2026/10/24 21:40:21 provision: a.shop.example.com: import sd_dwgqraumd6awfxelnzskur6wyq committed: its gate is cleared and its journal row dropped
2026/10/24 21:40:21 provision: a.shop.example.com: row is on the nested layout (db "/data/instances/a.shop.example.com/a.shop.example.com.db" socket "/run/carlos/instances/a.shop.example.com/app.sock"); the record's shared paths are not drift
2026/10/24 21:40:21 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:21 provision: acme.go.tito.io: row is on the nested layout (db "/data/instances/acme.go.tito.io/acme.go.tito.io.db" socket "/run/carlos/instances/acme.go.tito.io/app.sock"); the record's shared paths are not drift
2026/10/24 21:40:21 provision: acme.go.tito.io: not minting a seeded instance: this box does not mint nested (<nil>)
2026/10/24 21:40:22 provision: acme.go.tito.io: not minting a seeded instance: claim control is on for this box
2026/10/24 21:40:22 provision: acme.go.tito.io: aborted seed sd_aol4oqn3uxn4rwyczzeoisnoue: this box cannot read seed markers, and places no seed; nothing local is removed
2026/10/24 21:40:22 provision: acme.go.tito.io: aborted seed sd_aol4oqn3uxn4rwyczzeoisnoue rolled back (no box had swapped it)
2026/10/24 21:40:22 provision: acme.go.tito.io: not minting a seeded instance: its record does not describe a hibernating instance
2026/10/24 21:40:22 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:22 provision: removed instance route acme.go.tito.io (its seed sd_pwnrpbzojbqz343rzcigpj74zu was aborted); the next pass rolls it back
2026/10/24 21:40:22 provision: acme.go.tito.io: aborted seed sd_pwnrpbzojbqz343rzcigpj74zu: this box cannot read seed markers, and places no seed; nothing local is removed
2026/10/24 21:40:22 provision: acme.go.tito.io: aborted seed sd_pwnrpbzojbqz343rzcigpj74zu rolled back (no box had swapped it)
2026/10/24 21:40:22 provision: acme.go.tito.io: aborted seed sd_obmgdrzqecvhqrhmfx6xhmbme4 has a row this pass may not remove; leaving the seed aborted
2026/10/24 21:40:22 provision: acme.go.tito.io: aborted seed sd_kr3bmc4bd7ja35y6hlwjtl6qom rolled back (no box had swapped it)
2026/10/24 21:40:22 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:22 provision: removed instance route acme.go.tito.io (its seed sd_rvinb55qaeq4awspoqql5qtmfe was aborted); the next pass rolls it back
2026/10/24 21:40:22 provision: acme.go.tito.io: aborted seed sd_rvinb55qaeq4awspoqql5qtmfe has no route on this box: its local data is removed
2026/10/24 21:40:22 provision: acme.go.tito.io: aborted seed sd_rvinb55qaeq4awspoqql5qtmfe rolled back (no box had swapped it)
2026/10/24 21:40:22 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_wirfpgxvtm7ind4d7zjbmb6x3i (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_wirfpgxvtm7ind4d7zjbmb6x3i rolled back to its original route
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_wirfpgxvtm7ind4d7zjbmb6x3i is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_2aj2ldalqoi34cdtv32fj33tfa (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_2aj2ldalqoi34cdtv32fj33tfa rolled back to its original route
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_2aj2ldalqoi34cdtv32fj33tfa is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_bfsvca6cqltxzvmtl4n2urp7j4 (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_bfsvca6cqltxzvmtl4n2urp7j4 rolled back to its original route
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_bfsvca6cqltxzvmtl4n2urp7j4: the host's replica is left alone: its record no longer names this seed
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_bfsvca6cqltxzvmtl4n2urp7j4 is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_evfyj4dzzle5ttt3zvfexfyzbq (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_evfyj4dzzle5ttt3zvfexfyzbq rollback deferred: the host is not fenced and stopped yet (<nil>)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_evfyj4dzzle5ttt3zvfexfyzbq rolled back to its original route
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_evfyj4dzzle5ttt3zvfexfyzbq is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_a5um2wlvuj3ysnjd7lzdyxks5i (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_a5um2wlvuj3ysnjd7lzdyxks5i rollback deferred: the host is not fenced and stopped yet (stop unproven)
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_uvr5dptpst6jqbacca2b4nmrjy (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_uvr5dptpst6jqbacca2b4nmrjy is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_v6gofqmxcipao6vlgh2pmfauja (the original route is journaled)
2026/10/24 21:40:22 provision: skipping record apps/bac/shop/instances/a.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_v6gofqmxcipao6vlgh2pmfauja left alone this pass: its record could not be read
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_kx4sfuinwcgbnu3qjiwmye6zmm (the original route is journaled)
2026/10/24 21:40:22 provision: skipping record apps/bac/shop/instances/a.shop.example.com.json: read failed: connection reset
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_kx4sfuinwcgbnu3qjiwmye6zmm left alone this pass: its record could not be read
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_hlxztrjb7hqiimaiflg4jxi46y (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_hlxztrjb7hqiimaiflg4jxi46y: close the import gate: constraint failed: injected (1811)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_hlxztrjb7hqiimaiflg4jxi46y rolled back to its original route
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_hlxztrjb7hqiimaiflg4jxi46y is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_pkhehlipwews7osfgno2th4lea (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_pkhehlipwews7osfgno2th4lea: close the import gate: constraint failed: injected (1811)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_pkhehlipwews7osfgno2th4lea rolled back to its original route
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_pkhehlipwews7osfgno2th4lea is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_sar523pqb7j7rokxz5crv5iwpy (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_sar523pqb7j7rokxz5crv5iwpy rollback deferred: the host is not fenced and stopped yet (injected failure at fence)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_sar523pqb7j7rokxz5crv5iwpy rolled back to its original route
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_sar523pqb7j7rokxz5crv5iwpy is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_zgfuueu4g6gh4fx2gtwur2tiim (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_zgfuueu4g6gh4fx2gtwur2tiim rolled back to its original route
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_zgfuueu4g6gh4fx2gtwur2tiim is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_3r2qkwsby3jx6knoddqo2pzroy (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_3r2qkwsby3jx6knoddqo2pzroy: retire its instance key: injected failure at retire-key
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_3r2qkwsby3jx6knoddqo2pzroy rolled back to its original route
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_3r2qkwsby3jx6knoddqo2pzroy is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_dwogttgti4iyyejpkive247vi4 (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_dwogttgti4iyyejpkive247vi4 rolled back to its original route
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_dwogttgti4iyyejpkive247vi4 is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_sin4ab3ptssgzrys3kuejtbxtq (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_sin4ab3ptssgzrys3kuejtbxtq: remove its local data: injected failure at remove-local
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_sin4ab3ptssgzrys3kuejtbxtq rolled back to its original route
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_sin4ab3ptssgzrys3kuejtbxtq is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_7vsdg3zpp44l5zyqyezxp2thmi (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_7vsdg3zpp44l5zyqyezxp2thmi rolled back to its original route
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_7vsdg3zpp44l5zyqyezxp2thmi is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_yarnfkrilkgllcfzyabmino27q (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_yarnfkrilkgllcfzyabmino27q: remove its local data: injected failure at remove-local-done
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_yarnfkrilkgllcfzyabmino27q rolled back to its original route
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_yarnfkrilkgllcfzyabmino27q is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_aiolsojyn5imbfhs3gieejxr2i (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_aiolsojyn5imbfhs3gieejxr2i rolled back to its original route
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_aiolsojyn5imbfhs3gieejxr2i is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_irqrmmm5zmc5qh5lsbet6qwsn4 (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_irqrmmm5zmc5qh5lsbet6qwsn4: restore the original route: constraint failed: injected (1811)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_irqrmmm5zmc5qh5lsbet6qwsn4 rolled back to its original route
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_irqrmmm5zmc5qh5lsbet6qwsn4 is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_3v4z3k2pyrzm5w3wfucsaiiqhy (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_3v4z3k2pyrzm5w3wfucsaiiqhy: restore the original route: constraint failed: injected (1811)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_3v4z3k2pyrzm5w3wfucsaiiqhy rolled back to its original route
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_3v4z3k2pyrzm5w3wfucsaiiqhy is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_hf3zd2a2xqqyy5ew2h6tymgms4 (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_hf3zd2a2xqqyy5ew2h6tymgms4 is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_ojggkp3cmzmvj7j4r4pxbqtnnu (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_ojggkp3cmzmvj7j4r4pxbqtnnu rolled back to its original route
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_ojggkp3cmzmvj7j4r4pxbqtnnu: delete its snapshot: injected failure at delete-snapshot
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_ojggkp3cmzmvj7j4r4pxbqtnnu is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_5yeysqzs7jjaki2ifsfvzfwabi (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_5yeysqzs7jjaki2ifsfvzfwabi rolled back to its original route
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_5yeysqzs7jjaki2ifsfvzfwabi is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_jxy7zbvdcalr25262rhnt2qlue (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_jxy7zbvdcalr25262rhnt2qlue rolled back to its original route
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_jxy7zbvdcalr25262rhnt2qlue: delete the host's replica: injected failure at delete-replica
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_jxy7zbvdcalr25262rhnt2qlue is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_bdyrnhaebnzf4oxtqnq62zswvq (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_bdyrnhaebnzf4oxtqnq62zswvq rolled back to its original route
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_bdyrnhaebnzf4oxtqnq62zswvq is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_ehzyjiewlhvmpdoyy7sm5mluya (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_ehzyjiewlhvmpdoyy7sm5mluya rolled back to its original route
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_ehzyjiewlhvmpdoyy7sm5mluya: retire its journal row: constraint failed: injected (1811)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_ehzyjiewlhvmpdoyy7sm5mluya is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_trmxdjzc6tuz6gvhv2qgf6tgm4 (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_trmxdjzc6tuz6gvhv2qgf6tgm4 rolled back to its original route
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_trmxdjzc6tuz6gvhv2qgf6tgm4: retire its journal row: constraint failed: injected (1811)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_trmxdjzc6tuz6gvhv2qgf6tgm4 is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_uv75mcczkg3abibrhdixkejjlm (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_uv75mcczkg3abibrhdixkejjlm rolled back to its original route
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_uv75mcczkg3abibrhdixkejjlm is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: a.shop.example.com: mark import sd_uv75mcczkg3abibrhdixkejjlm rolled back: injected failure at cas
2026/10/24 21:40:22 provision: a.shop.example.com: aborted seed sd_uv75mcczkg3abibrhdixkejjlm rolled back (no box had swapped it)
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_5vhdsxtftnltaakntkl4sa4ary (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_5vhdsxtftnltaakntkl4sa4ary rolled back to its original route
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_5vhdsxtftnltaakntkl4sa4ary is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: a.shop.example.com: aborted seed sd_5vhdsxtftnltaakntkl4sa4ary rolled back (no box had swapped it)
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_nsy74lnjhaylluwist475godx4 (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_nsy74lnjhaylluwist475godx4 rollback deferred: the host is not fenced and stopped yet (<nil>)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_nsy74lnjhaylluwist475godx4 rollback deferred: the host is not fenced and stopped yet (<nil>)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_nsy74lnjhaylluwist475godx4 rolled back to its original route
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_nsy74lnjhaylluwist475godx4 is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_bcjffmxoeornjktfmemhxoqr3m (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_bcjffmxoeornjktfmemhxoqr3m rolled back to its original route
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_bcjffmxoeornjktfmemhxoqr3m is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_oimhsu7au6oornhgi77a5a66xu (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_oimhsu7au6oornhgi77a5a66xu rolled back to its original route
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_oimhsu7au6oornhgi77a5a66xu is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_y3laeghst2y5r64wiivq7q7uly (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_y3laeghst2y5r64wiivq7q7uly rolled back to its original route
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_y3laeghst2y5r64wiivq7q7uly is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_j77evkdlt735y645ta7cck5wzq (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_j77evkdlt735y645ta7cck5wzq rolled back to its original route
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_j77evkdlt735y645ta7cck5wzq is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_a7nr3ayrrc5dglftbys7tgih6q (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_a7nr3ayrrc5dglftbys7tgih6q rolled back to its original route
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_a7nr3ayrrc5dglftbys7tgih6q is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: minted instance route a.shop.example.com (app "other" acct "bac")
2026/10/24 21:40:22 provision: a.shop.example.com: swapped for import sd_z7olqq3tmcbknrocrewk2zhfjq (the original route is journaled)
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_z7olqq3tmcbknrocrewk2zhfjq rolled back to its original route
2026/10/24 21:40:22 provision: a.shop.example.com: import sd_z7olqq3tmcbknrocrewk2zhfjq is cleaned up and its journal row retired
2026/10/24 21:40:22 provision: minted instance route a.shop.example.com (app "other" acct "bac")
2026/10/24 21:40:23 provision: a.shop.example.com: swapped for import sd_5bect4nd4bwosnnlpah3adlcee (the original route is journaled)
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_5bect4nd4bwosnnlpah3adlcee rolled back to its original route
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_5bect4nd4bwosnnlpah3adlcee is cleaned up and its journal row retired
2026/10/24 21:40:23 provision: minted instance route a.shop.example.com (app "other" acct "bac")
2026/10/24 21:40:23 provision: a.shop.example.com: swapped for import sd_o4n3rbk2ss46pkkk7ghw3hzg2y (the original route is journaled)
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_o4n3rbk2ss46pkkk7ghw3hzg2y has no route on this box: its local data is removed and no route is put back
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_o4n3rbk2ss46pkkk7ghw3hzg2y is cleaned up and its journal row retired
2026/10/24 21:40:23 provision: a.shop.example.com: swapped for import sd_2woc776ian3yhpmauswprbscqa (the original route is journaled)
2026/10/24 21:40:23 provision: a.shop.example.com: swapped for import sd_f3llgcjimqnqz5t23xudslkcga (the original route is journaled)
2026/10/24 21:40:23 provision: a.shop.example.com: swapped for import sd_5bo3sxblp66qkr547w7gi7ts4e (the original route is journaled)
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_5bo3sxblp66qkr547w7gi7ts4e cannot roll back on this box: the activator is not wired; it stays journaled and gated
2026/10/24 21:40:23 provision: a.shop.example.com: swapped for import sd_gljv4z4b4hpd4i4layx6ru25va (the original route is journaled)
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_gljv4z4b4hpd4i4layx6ru25va is not rolled back: the route changed under the fence, so nothing there is touched
2026/10/24 21:40:23 provision: a.shop.example.com: import "../not-a-seed" names no snapshot and no replica; only its journal row is cleaned up
2026/10/24 21:40:23 provision: a.shop.example.com: import ../not-a-seed is cleaned up and its journal row retired
2026/10/24 21:40:23 provision: a.shop.example.com: swapped for import sd_eqfo5ddlx7zq5fc247aa4ds3ea (the original route is journaled)
2026/10/24 21:40:23 provision: a.shop.example.com: swapped for import sd_ytsunci5xbi3xos762nwljcy7u (the original route is journaled)
2026/10/24 21:40:23 provision: a.shop.example.com: swapped for import sd_sxsn6uxtsz3zoz6znkeoxe2xce (the original route is journaled)
2026/10/24 21:40:23 provision: a.shop.example.com: swapped for import sd_ur7mg26uvhgx5n5djhog7g6l3e (the original route is journaled)
2026/10/24 21:40:23 provision: a.shop.example.com: swapped for import sd_lhl64r3f76kdbmrrnbaarviv5m (the original route is journaled)
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_lhl64r3f76kdbmrrnbaarviv5m rollback deferred: the host is not fenced and stopped yet (stop evidence unreadable)
2026/10/24 21:40:23 provision: a.shop.example.com: swapped for import sd_kajuzmj4hkavx7gkmkr46skl4u (the original route is journaled)
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_kajuzmj4hkavx7gkmkr46skl4u has no route on this box: its local data is removed and no route is put back
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_kajuzmj4hkavx7gkmkr46skl4u is cleaned up and its journal row retired
2026/10/24 21:40:23 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 21:40:23 provision: a.shop.example.com: swapped for import sd_dilzgl4wd6vd2xbflewpjmnhry (the original route is journaled)
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_dilzgl4wd6vd2xbflewpjmnhry: remove its local data: injected failure at remove-local
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_dilzgl4wd6vd2xbflewpjmnhry is not rolled back: the route at the host is not the import's, so nothing there is touched
2026/10/24 21:40:23 provision: a.shop.example.com: swapped for import sd_mwhzv6lke5cukoxz7fz7rxr2ly (the original route is journaled)
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_mwhzv6lke5cukoxz7fz7rxr2ly: a route appeared at the host, so its local database is left and the rollback waits
2026/10/24 21:40:23 provision: a.shop.example.com: swapped for import sd_abyrva3fpoi75uvwdodbt7ocue (the original route is journaled)
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_abyrva3fpoi75uvwdodbt7ocue rollback deferred: no fence generation: registry busy
2026/10/24 21:40:23 provision: a.shop.example.com: swapped for import sd_p7r4vyn3fhwo6j5kf2pdk65nvm (the original route is journaled)
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_p7r4vyn3fhwo6j5kf2pdk65nvm rollback deferred: no fence generation: the generation source answered 0
2026/10/24 21:40:23 provision: a.shop.example.com: swapped for import sd_pq5qykcjaaw6vyncqzp2hcohjy (the original route is journaled)
2026/10/24 21:40:23 provision: a.shop.example.com: swapped for import sd_cw7zsyd7hr5kuna6pnkmyrghjy (the original route is journaled)
2026/10/24 21:40:23 provision: a.shop.example.com: swapped for import sd_5sy5gxvq3bfungo7deemagbbqq (the original route is journaled)
2026/10/24 21:40:23 provision: a.shop.example.com: import deferred: this box cannot read the instance's env file
2026/10/24 21:40:23 provision: a.shop.example.com: import deferred: the instance's env file could not be read: a symlink
2026/10/24 21:40:23 provision: a.shop.example.com: swapped for import sd_ummklskoa5xtjytkeih5h4rxvy (the original route is journaled)
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_ummklskoa5xtjytkeih5h4rxvy rolled back to its original route
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_ummklskoa5xtjytkeih5h4rxvy is cleaned up and its journal row retired
2026/10/24 21:40:23 provision: a.shop.example.com: swapped for import sd_lpwki2esexcfujfur3qedgqtha (the original route is journaled)
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_lpwki2esexcfujfur3qedgqtha rolled back to its original route
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_lpwki2esexcfujfur3qedgqtha is cleaned up and its journal row retired
2026/10/24 21:40:23 provision: a.shop.example.com: swapped for import sd_huxs3wtwrbdmwl2p4voou2rcre (the original route is journaled)
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_huxs3wtwrbdmwl2p4voou2rcre rolled back to its original route
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_huxs3wtwrbdmwl2p4voou2rcre is cleaned up and its journal row retired
2026/10/24 21:40:23 provision: a.shop.example.com: swapped for import sd_za2z6dr2abqwgssami3ua5664m (the original route is journaled)
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_za2z6dr2abqwgssami3ua5664m: retire its instance key: the env file is a symlink
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_za2z6dr2abqwgssami3ua5664m rolled back to its original route
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_za2z6dr2abqwgssami3ua5664m is cleaned up and its journal row retired
2026/10/24 21:40:23 provision: a.shop.example.com: swapped for import sd_vgyz2srv74y6gfofiyodjowuym (the original route is journaled)
2026/10/24 21:40:23 provision: a.shop.example.com: row is on the nested layout (db "/data/instances/a.shop.example.com/a.shop.example.com.db" socket "/run/carlos/instances/a.shop.example.com/app.sock"); the record's shared paths are not drift
2026/10/24 21:40:23 provision: a.shop.example.com: swapped for import sd_4iauwqbsvbgixn2v5gofzf7fte (the original route is journaled)
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_mmnnwgwkqqch6ivieq4fwveb5a refused: there is no route at a.shop.example.com to replace
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_ra6qyhjqmnajtvzr45m54likfa refused: the route's address is 127.0.0.1:9, not 127.0.0.1:8401
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_tv43y3644koa4qlanfq4e6t62u refused: the route's address is 127.0.0.1:8401,127.0.0.1:8402, not 127.0.0.1:8401
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_s52djyyhk5amqp73q6hovxkdfy refused: the route's address is 127.0.0.1:9, not 127.0.0.1:8401
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_hdssm57yxs4rmeeh76m6h4agty refused: the route belongs to app other
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_yhxup2efcbbdcexq6ii62yl5bq refused: the route is filed under another account
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_ys2ma4js3e45b6g6kat6darpau refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_tx74ogpeesc7pjku75isxc5sge refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_q5ugusdie3ykxke76qrv6hkqua refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_4kb7orhvhhe7zfvtyiiualzvlq refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_cfoziaqn6g36arudz5jmhswfjy refused: the route is not an address route this import can take over (socket)
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_xtulv27tlptwv57jasjnbe5nju refused: the route is not an address route this import can take over (no address)
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_4d374yk4bhjyyvbrctzxwu4etm refused: the route is not an address route this import can take over (provisioned)
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_ixncqpkesh4jhkmc5vxif2mlhe refused: the route is not an address route this import can take over (kind static)
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_wsaz5wkaubr5b2afrp33xoscie refused: the route is not an address route this import can take over (backing)
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_26qx5u5q4n4lzeehav5npfga4q refused: the route is not an address route this import can take over (tunnel)
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_gw3ejy2qjcm63a735ljvexwqqe refused: the route is not an address route this import can take over (caps)
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_rbqdhxtpqpq5ewvdp3e6nfjio4 refused: the route is not an address route this import can take over (platform)
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_5q753rpy6m4tfhuijdn4ow22nq refused: the route is not an address route this import can take over (canary)
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_7fcmphcw6p6qdc7wt5qabeeyg4 refused: the route is not an address route this import can take over (kind sidecar)
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_z25giudmns52tcno2dtj5wfhgi refused: the route is not an address route this import can take over (region)
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_7vo6w3r2vdbr6babv33phpofzy refused: the route is not an address route this import can take over (fleet_box)
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_gzheo73xzeuxm7fmq33r37nwou refused: the route is not an address route this import can take over (hibernate)
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_t66p2ijcnpgxvby7vzpvbqtqky refused: the route is not an address route this import can take over (claim_owner)
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_m5cwof77ape2peq3erijkfuwz4 refused: this box does not run instances nested
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_onnl4s7ewsie6zzgn2ajaytvfu refused: this box does not run instances nested
2026/10/24 21:40:23 provision: a.shop.example.com: import sd_dednjobazra4p54vme36mat3ke refused: claim control is on for this box
2026/10/24 21:40:23 provision: a.shop.example.com: swapped for import sd_al5rwl4zp3ldu7o7dvrvvig4pe (the original route is journaled)
2026/10/24 21:40:23 provision: a.shop.example.com: swapped for import sd_sr6irxag3c6d4r5nn5cyzeaw2i (the original route is journaled)
2026/10/24 21:40:23 provision: a.shop.example.com: import deferred: the legacy route assignments could not be read: store down
2026/10/24 21:40:23 provision: a.shop.example.com: import deferred: this box cannot read the legacy route assignments
2026/10/24 21:40:23 provision: a.shop.example.com: not swapping for import sd_cjcqfm3dr7hd3w5mp4oqe5avjm: its verify hash is not a sha256
2026/10/24 21:40:23 provision: a.shop.example.com: not swapping for import sd_llxd5hfzvmnqjrxeki5xi7xs7i: its verify hash is not a sha256
2026/10/24 21:40:24 provision: a.shop.example.com: not swapping for import sd_jv6wiovvhettdv2kzwffqzatsm: its verify hash is not a sha256
2026/10/24 21:40:24 provision: a.shop.example.com: not swapping for import sd_../../x: its host or seed id is malformed (seeds: not a seed id)
2026/10/24 21:40:24 provision: A.shop.example.com/..: not swapping for import sd_ue6ohrfjhbg3uzk2gpgrm3zs4e: its host or seed id is malformed (seeds: not a host)
2026/10/24 21:40:24 provision: a.shop.example.com: not swapping for import sd_lkhwh7c3qre6r2baetiqhukxhi: its record does not describe a nested, hibernating instance
2026/10/24 21:40:24 provision: a.shop.example.com: not swapping for import sd_eko7r7dywpyo4lunpc7bszduim: its record does not describe a nested, hibernating instance
2026/10/24 21:40:24 provision: a.shop.example.com: not swapping for import sd_vcejzudktsz6hjnn72pwuzbtym: its record does not describe a nested, hibernating instance
2026/10/24 21:40:24 provision: a.shop.example.com: not swapping for import sd_7gtgt3g33jnvhro5vpdygmc3cu: its record does not describe a nested, hibernating instance
2026/10/24 21:40:24 provision: a.shop.example.com: import deferred: the box's layout intent could not be read: store down
2026/10/24 21:40:24 provision: a.shop.example.com: swapped for import sd_omczvyslisfhjplcmeiilkaxca (the original route is journaled)
2026/10/24 21:40:24 provision: a.shop.example.com: import deferred: the box's nested probe did not answer: ready probe timed out
2026/10/24 21:40:24 provision: a.shop.example.com: swapped for import sd_z2q3eyv4ixqpa5zos3dgsgq334 (the original route is journaled)
2026/10/24 21:40:24 provision: a.shop.example.com: swapped for import sd_4n4zyapw22v5jknmx7vrfxckjq (the original route is journaled)
2026/10/24 21:40:24 provision: a.shop.example.com: import deferred: the route is held by operation op_1
2026/10/24 21:40:24 provision: dry-run: would consider swapping a.shop.example.com for import sd_nlc3vuj7huvbsqcyf3nranlygu
2026/10/24 21:40:24 provision: a.shop.example.com: import sd_nrws73pond7suzhmrjexrlpkt4 rolled back to its original route
2026/10/24 21:40:24 provision: a.shop.example.com: import sd_nrws73pond7suzhmrjexrlpkt4: the host's replica is left alone: the record apps/bac/shop/instances/a.shop.example.com.json holds the host
2026/10/24 21:40:24 provision: a.shop.example.com: import sd_nrws73pond7suzhmrjexrlpkt4 is cleaned up and its journal row retired
2026/10/24 21:40:24 provision: a.shop.example.com: import sd_lc6tsspnohemwau5by3rer3rfy left alone: the import journal holds seed sd_d5eg2xlijmdewltvx6lb3snc64 at swapped
2026/10/24 21:40:24 provision: a.shop.example.com: not minting import sd_3z2qurq6olxy4pohkxl22sidbi: it is swapped but not committed, and only its swap makes its row
2026/10/24 21:40:24 provision: a.shop.example.com: not minting import sd_66lphiu4hxctuurjier6afbuum: it is placed but not committed, and only its swap makes its row
2026/10/24 21:40:24 provision: a.shop.example.com: swapped for import sd_pzl44z2i6csrh6ozzxqtsz3lgu (the original route is journaled)
2026/10/24 21:40:24 provision: a.shop.example.com: not minting import sd_pzl44z2i6csrh6ozzxqtsz3lgu: it is swapped but not committed, and only its swap makes its row
2026/10/24 21:40:24 provision: a.shop.example.com: not minting import sd_pzl44z2i6csrh6ozzxqtsz3lgu: it is placed but not committed, and only its swap makes its row
2026/10/24 21:40:24 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 21:40:24 provision: removed retired sidecar route gone.eleven.bac.sidecar.internal (record gone)
2026/10/24 21:40:24 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 21:40:24 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 21:40:24 provision: converged sidecar bot.eleven.bac.sidecar.internal args ["sidecar","run"] -> ["worker","run"]
2026/10/24 21:40:24 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 21:40:24 provision: converged sidecar bot.eleven.bac.sidecar.internal ceilings 300/3600 -> 60/120
2026/10/24 21:40:24 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 21:40:24 provision: converged sidecar bot.eleven.bac.sidecar.internal channel stable -> canary/eleven
2026/10/24 21:40:24 provision: converged sidecar bot.eleven.bac.sidecar.internal environment "other" -> "relay"
2026/10/24 21:40:24 provision: converged sidecar bot.eleven.bac.sidecar.internal hibernate true -> false
2026/10/24 21:40:24 provision: skipping sidecar record apps/bac/eleven/sidecars/bot.json: read failed: failStore: reads disabled under apps/bac/eleven/sidecars/
2026/10/24 21:40:24 provision: skipping sidecar record apps/bac/eleven/sidecars/bot.json: malformed: invalid character 'n' looking for beginning of object key string
2026/10/24 21:40:24 provision: not removing sidecar bot.eleven.bac.sidecar.internal: its record exists but could not be read cleanly this pass
2026/10/24 21:40:24 provision: skipping sidecar record apps/bac/eleven/sidecars/bot.json: empty channel
2026/10/24 21:40:24 provision: skipping sidecar record apps/bac/eleven/sidecars/held.json: empty channel
2026/10/24 21:40:24 provision: not removing sidecar held.eleven.bac.sidecar.internal: its record exists but could not be read cleanly this pass
2026/10/24 21:40:24 provision: removed retired sidecar route old.eleven.bac.sidecar.internal (record gone)
2026/10/24 21:40:24 provision: bac/eleven has sidecar records but no sidecars manifest — not minting
2026/10/24 21:40:24 provision: bac/eleven is in the trash — not minting sidecar routes for it
2026/10/24 21:40:24 provision: sidecar bot.eleven.bac.sidecar.internal is not placeable here: it asks for "no-inbound" placement and this box accepts inbound work (CARLOS_INBOUND="")
2026/10/24 21:40:24 provision: sidecar hub.relay.bac.sidecar.internal is not placeable here: it asks for "no-inbound" placement and this box accepts inbound work (CARLOS_INBOUND="")
2026/10/24 21:40:24 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 21:40:24 provision: minted sidecar route hub.relay.bac.sidecar.internal (app "relay" acct "bac" args ["relay"])
2026/10/24 21:40:24 provision: sidecar bot.eleven.bac.sidecar.internal is not placeable here: it asks for "no-inbound" placement and this box accepts inbound work (CARLOS_INBOUND="")
2026/10/24 21:40:24 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 21:40:24 provision: sidecar bot.eleven.bac.sidecar.internal is not placeable here: it asks for "no-inbound" placement and this box accepts inbound work (CARLOS_INBOUND="")
2026/10/24 21:40:24 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 21:40:24 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 21:40:24 provision: sidecar bot.eleven.bac.sidecar.internal is not placeable here: it asks for "no-inbound" placement and this box accepts inbound work (CARLOS_INBOUND="")
2026/10/24 21:40:24 provision: removed retired sidecar route bot.eleven.bac.sidecar.internal (record gone)
2026/10/24 21:40:24 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 21:40:24 provision: sidecar bot.eleven.bac.sidecar.internal is not placeable here: it asks for "no-inbound" placement and this box accepts inbound work (CARLOS_INBOUND="")
2026/10/24 21:40:24 provision: skipping sidecar record apps/bac/relay/sidecars/hub.json: read failed: failStore: reads disabled under apps/bac/relay/sidecars/
2026/10/24 21:40:24 provision: REFUSING to mint sidecar bot.eleven.bac.sidecar.internal: bot.eleven.bac.sidecar.internal-sidecar.env is staged on this box — the legacy file co-spawn and a native sidecar row are two mechanisms for one host; remove the file to migrate this host onto sidecar records
2026/10/24 21:40:24 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 21:40:24 provision: dry-run: would mint sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" channel "stable" args ["sidecar","run"])
2026/10/24 21:40:24 provision: dry-run: would remove retired sidecar route gone.eleven.bac.sidecar.internal (record gone)
2026/10/24 21:40:24 provision: bot.eleven.bac.sidecar.internal exists but is not a sidecar row this pass owns (kind "sidecar" provisioned false app "eleven" acct "bac") — leaving it alone
2026/10/24 21:40:24 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:24 provision: converged acme.go.tito.io update settings "{\"updates\":\"manual\",\"channel\":\"stable\"}" -> ""
2026/10/24 21:40:24 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:24 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:24 provision: manifest bac/tito: read failed: provision: manifest bac/tito: unexpected end of JSON input
2026/10/24 21:40:24 provision: manifest bac/tito: read failed: provision: manifest bac/tito: unexpected end of JSON input
2026/10/24 21:40:24 provision: acme.go.tito.io: not minted this pass: the app's update policy could not be read
2026/10/24 21:40:24 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 21:40:24 provision: manifest bac/tito: read failed: provision: manifest bac/tito: unexpected end of JSON input
2026/10/24 21:40:24 provision: acme.go.tito.io: not minted this pass: the app's update policy could not be read
2026/10/24 21:40:24 provision: minted instance route acme.go.tito.io held landing by mv_acme (app "tito" acct "bac")
2026/10/24 21:40:24 provision: record view: change index unusable (release: change index unreadable: store has no conditional read: unsupported operation): the walk records no generations
2026/10/24 21:40:24 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:24 provision: listing apps/bqd/: listdirs refused — its records are unseen this pass
2026/10/24 21:40:24 provision: listing apps/bqd/: listdirs refused — its records are unseen this pass
2026/10/24 21:40:24 provision: listing apps/bqd/: listdirs refused — its records are unseen this pass
2026/10/24 21:40:24 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:24 provision: record view: change index unusable (release: change index malformed: invalid character 'n' looking for beginning of object key string): walking
2026/10/24 21:40:24 provision: listing apps/bqd/: listdirs refused — its records are unseen this pass
2026/10/24 21:40:24 provision: record view: re-reading apps/bqc/shop failed: retrying on the next refresh
2026/10/24 21:40:24 provision: listing apps/bqc/shop/instances/: context canceled — its records are unseen this pass
2026/10/24 21:40:24 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:24 provision: listing apps/bqd/: listdirs refused — its records are unseen this pass
2026/10/24 21:40:24 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:24 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:24 provision: record view: re-reading apps/bqc/shop failed: retrying on the next refresh
2026/10/24 21:40:24 provision: listing apps/bqc/shop/instances/: list refused — its records are unseen this pass
2026/10/24 21:40:24 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:24 provision: listing apps/bqc/shop/instances/: list refused — its records are unseen this pass
2026/10/24 21:40:24 provision: an app's records could not be listed: they are skipped
2026/10/24 21:40:24 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:24 provision: record view: change index unusable (get refused): walking
2026/10/24 21:40:24 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:24 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:24 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:24 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:24 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:24 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:24 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:24 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:24 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:24 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:24 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:24 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:24 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:24 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:24 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:24 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:24 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:24 provision: skipping accounts/bqd/account.json: malformed account manifest: invalid character 'n' looking for beginning of object key string
2026/10/24 21:40:24 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:24 provision: skipping accounts/bqd/account.json: malformed account manifest: invalid character 'n' looking for beginning of object key string
2026/10/24 21:40:24 provision: skipping accounts/bqd/account.json: malformed account manifest: invalid character 'n' looking for beginning of object key string
2026/10/24 21:40:24 provision: record view: re-reading accounts/bqd failed: retrying on the next refresh
2026/10/24 21:40:24 provision: skipping accounts/bqd/account.json: read failed: list refused
2026/10/24 21:40:24 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:24 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:24 provision: minted instance route one.example.com (app "shop" acct "bum")
2026/10/24 21:40:24 provision: skipping record apps/bum/shop/instances/one.example.com.json: empty channel
2026/10/24 21:40:24 provision: not removing one.example.com: its record exists but could not be read cleanly this pass
2026/10/24 21:40:24 provision: skipping record apps/bum/shop/instances/one.example.com.json: empty channel
2026/10/24 21:40:24 provision: not removing one.example.com: its record exists but could not be read cleanly this pass
2026/10/24 21:40:24 provision: minted instance route one.example.com (app "shop" acct "bum")
2026/10/24 21:40:24 provision: minted instance route one.example.com (app "shop" acct "bum")
2026/10/24 21:40:24 provision: removed retired instance route one.example.com (record gone)
2026/10/24 21:40:24 provision: removed retired instance route one.example.com (record gone)
2026/10/24 21:40:24 provision: record view: change index unusable (context deadline exceeded): walking
2026/10/24 21:40:24 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 21:40:24 provision: record view: change index unusable (context deadline exceeded): the walk records no generations
2026/10/24 21:40:24 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
--- FAIL: TestPlan14RootReadCensus (12.40s)
plan14_root_reads_test.go:600: root read census: 33 discrepancies
changed registry schema
changed root read internal/edge/edge.go:Edge.Reload; review class, task, sites and digest
changed root read internal/edge/edge.go:Edge.ServeHTTP; review class, task, sites and digest
changed root read internal/host/agent.go:runAgent; review class, task, sites and digest
changed root read internal/provision/reconcile.go:Reconcile; review class, task, sites and digest
changed root read internal/provision/reconcile.go:RouteFor; review class, task, sites and digest
changed root read internal/registry/registry.go:Registry.Fingerprint; review class, task, sites and digest
changed root read internal/registry/registry.go:Registry.Upsert; review class, task, sites and digest
changed root read internal/registry/registry.go:Registry.migrate; review class, task, sites and digest
changed root read internal/registry/registry.go:routeArgs; review class, task, sites and digest
changed root read internal/registry/registry.go:scanRoute; review class, task, sites and digest
changed root read internal/registry/remote_dispatch.go:Registry.dispatchRemote; review class, task, sites and digest
changed root source envelope internal/edge
changed root source envelope internal/host
changed root source envelope internal/plans
changed root source envelope internal/provision
changed root source envelope internal/ratelimit
changed root source envelope internal/registry
changed root source envelope internal/usage
unclassified root read internal/edge/ratelimit.go:Edge.noteRateLimited registry:Host@505,registry:Host@597,whole:Route@166
unclassified root read internal/edge/ratelimit.go:Edge.parseRateSettings registry:Host@271,registry:Host@367,registry:RateLimit@158,registry:RateLimit@77
unclassified root read internal/edge/ratelimit.go:Edge.rateAdmit registry:Host@834,registry:Kind@150,whole:Route@153,whole:Route@561,whole:Route@837,whole:Route@943
unclassified root read internal/edge/usagemeter.go:UsageMeter.RecordRateLimited registry:App@206,registry:Host@146,registry:Host@294,whole:Route@191
unclassified root read internal/host/plans_pass.go:planRateCeilingFor whole:Route@108
unclassified root read internal/registry/registry.go:Registry.SetRateLimit file:Exec@225,registry:remote@68,registry:remote@98,registry:sql@225,whole:remoteClient@100,whole:remoteClient@70
changed legacy declaration internal/edge/edge.go:Edge.Reload
changed legacy declaration internal/edge/edge.go:Edge.ServeHTTP
changed legacy declaration internal/provision/reconcile.go:Reconcile
changed legacy declaration internal/registry/registry.go:Registry.Fingerprint
changed legacy declaration internal/registry/registry.go:Registry.migrate
changed legacy declaration internal/registry/registry.go:scanRoute
changed reclassified declaration internal/registry/registry.go:Registry.Upsert
changed reclassified declaration internal/registry/remote_dispatch.go:Registry.dispatchRemote
make census-card shows what changed; make census-propose NAME=<branch> CLAIMS=<file> writes the overlay and its approval card (AGENTS.md, The census)
FAIL
FAIL github.com/carlosframework/platform/internal/provision 21.137s
ok github.com/carlosframework/platform/internal/publicrelease 0.007s
ok github.com/carlosframework/platform/internal/ratelimit 0.119s
? github.com/carlosframework/platform/internal/regionname [no test files]
ok github.com/carlosframework/platform/internal/registry 5.771s
ok github.com/carlosframework/platform/internal/relay 7.239s
ok github.com/carlosframework/platform/internal/release 25.324s
ok github.com/carlosframework/platform/internal/rollout 3.730s
ok github.com/carlosframework/platform/internal/rolloutwords 0.008s
ok github.com/carlosframework/platform/internal/rootaws 0.011s
ok github.com/carlosframework/platform/internal/rootparticipation 0.059s
ok github.com/carlosframework/platform/internal/rootstate 0.029s
ok github.com/carlosframework/platform/internal/runs 0.554s
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 2.673s
ok github.com/carlosframework/platform/internal/seeds 0.014s
ok github.com/carlosframework/platform/internal/sim/engines 2.559s
ok github.com/carlosframework/platform/internal/sim/hostlife 9.845s
ok github.com/carlosframework/platform/internal/sim/litestreamfacts 4.282s
ok github.com/carlosframework/platform/internal/status 0.066s
ok github.com/carlosframework/platform/internal/steering 0.008s
ok github.com/carlosframework/platform/internal/stopevidence 0.301s
ok github.com/carlosframework/platform/internal/svcrole 0.003s
ok github.com/carlosframework/platform/internal/telemetry 0.004s
ok github.com/carlosframework/platform/internal/termfence 0.005s
ok github.com/carlosframework/platform/internal/tunnelclient 0.004s
ok github.com/carlosframework/platform/internal/unixdial 0.003s
ok github.com/carlosframework/platform/internal/updatewords 0.006s
ok github.com/carlosframework/platform/internal/usage 0.005s
ok github.com/carlosframework/platform/internal/version 0.002s
ok github.com/carlosframework/platform/internal/vet 1.659s
FAIL
=== internal_console@0 (87 s)
ok github.com/carlosframework/platform/internal/console 85.785s
=== internal_console@1 (43 s)
ok github.com/carlosframework/platform/internal/console 41.651s
=== internal_console@2 (40 s)
ok github.com/carlosframework/platform/internal/console 38.837s
=== internal_console@3 (40 s)
ok github.com/carlosframework/platform/internal/console 39.057s
=== internal_console@4 (43 s)
ok github.com/carlosframework/platform/internal/console 41.226s
=== internal_console@5 (40 s)
ok github.com/carlosframework/platform/internal/console 38.635s
=== internal_console@6 (37 s)
ok github.com/carlosframework/platform/internal/console 35.887s
=== internal_console@7 (46 s)
ok github.com/carlosframework/platform/internal/console 44.176s
=== root@0 (109 s)
ok github.com/carlosframework/platform 107.400s
=== root@1 (84 s)
ok github.com/carlosframework/platform 82.719s
=== root@2 (91 s)
ok github.com/carlosframework/platform 89.367s
FAILED: rest
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/internal/edge/homemap.go b/internal/edge/homemap.go| index 3b3e047fe..532517459 100644 |
| --- a/internal/edge/homemap.go |
| +++ b/internal/edge/homemap.go |
| @@ -1062,9 +1062,9 @@ func hopDoorFrom(ctx context.Context) bool { |
| // before the route lookup so that BOTH of its outcomes are decided ahead of |
| // anything that serves: |
| // |
| -// no hop header → nothing happens at all (the overwhelming case: a |
| -// Header.Get per hop header on a request that is not |
| -// a hop). |
| +// no hop header → nothing happens beyond deleting the door mark (the |
| +// overwhelming case: a few header lookups on a request |
| +// that is not a hop). |
| // verified hop → the mark goes on the context, the inbound |
| // X-Forwarded-For is believed, and the caller serves |
| // the route locally or refuses (staleHopRefusal). A |
| @@ -1082,6 +1082,12 @@ func hopDoorFrom(ctx context.Context) bool { |
| // into the exact bytes the MAC covers is hopMAC's job, in one place, so a |
| // signer and a verifier can never disagree (mesh.go). |
| func (e *Edge) acceptHop(r *http.Request, host string) (*http.Request, bool) { |
| + // The door mark goes from every inbound request, unguarded: a Del behind |
| + // a Get would miss an empty value, or an empty first value with a |
| + // client's second behind it. Only a verified hop reads what was here, |
| + // and only when it is a single value. |
| + door := r.Header.Values(hopDoorHeader) |
| + r.Header.Del(hopDoorHeader) |
| if r.Header.Get(hopHeader) == "" { |
| // A signature with no marker beside it is not a hop — but it is still |
| // this edge's vocabulary, and the invariant above is "deleted in ALL |
| @@ -1090,22 +1096,17 @@ func (e *Edge) acceptHop(r *http.Request, host string) (*http.Request, bool) { |
| // for exactly this reason (purge_header.go): an app that reflects what |
| // it was sent turns a client-supplied edge header into an |
| // app-DECLARED one, and no tenant's reflection bug should be able to |
| - // put hop vocabulary back on the wire. The Gets stay the fast path's |
| - // only lookups — a Del only happens on a request that actually |
| - // carries a stray header, which is never, in the ordinary case. |
| + // put hop vocabulary back on the wire. The Get stays the fast path's |
| + // single lookup — the Del only happens on a request that actually |
| + // carries the stray header, which is never, in the ordinary case. |
| if r.Header.Get(hopAuthHeader) != "" { |
| r.Header.Del(hopAuthHeader) |
| } |
| - if r.Header.Get(hopDoorHeader) != "" { |
| - r.Header.Del(hopDoorHeader) |
| - } |
| return r, false |
| } |
| auth := r.Header.Get(hopAuthHeader) |
| - door := r.Header.Get(hopDoorHeader) |
| r.Header.Del(hopHeader) |
| r.Header.Del(hopAuthHeader) |
| - r.Header.Del(hopDoorHeader) |
| // verifyHopEitherKey, never verifyHop: the single-key form cannot accept a |
| // signer that has already moved to .next, and a rotation is precisely when |
| @@ -1120,7 +1121,7 @@ func (e *Edge) acceptHop(r *http.Request, host string) (*http.Request, bool) { |
| ctx := context.WithValue(r.Context(), hopVerifiedKey{}, true) |
| // The door mark is read only here, after the hop verified: on any other |
| // request it is a header a client made up. |
| - if door != "" && verifyHopDoorEitherKey(current, next, host, door, now) { |
| + if len(door) == 1 && verifyHopDoorEitherKey(current, next, host, door[0], now) { |
| ctx = context.WithValue(ctx, hopDoorKey{}, true) |
| } |
| return r.WithContext(ctx), true |
diff --git a/internal/edge/hopdoor_test.go b/internal/edge/hopdoor_test.go| index 6772455db..a56749a7f 100644 |
| --- a/internal/edge/hopdoor_test.go |
| +++ b/internal/edge/hopdoor_test.go |
| @@ -15,6 +15,7 @@ import ( |
| "time" |
| "github.com/carlosframework/platform/internal/doorkey" |
| + "github.com/carlosframework/platform/internal/ratelimit" |
| "github.com/carlosframework/platform/internal/registry" |
| "github.com/carlosframework/platform/internal/release" |
| ) |
| @@ -55,45 +56,51 @@ func TestHopDoorDomainSeparated(t *testing.T) { |
| } |
| // The door mark goes on the context only beside a verified hop, and the |
| -// header is deleted whatever happens to the request. |
| +// header is deleted from every request, whatever it carried: no value, an |
| +// empty one, or several. |
| func TestAcceptHopSetsDoorMark(t *testing.T) { |
| + e2eQuietLogs(t) |
| const host = "app.test" |
| e, _, key := hopEdge(t, "annie", host) |
| now := time.Now() |
| door := signHopDoor(key, host, now) |
| + hop := map[string]string{hopHeader: "1", hopAuthHeader: signHop(key, host, now)} |
| + badHop := map[string]string{hopHeader: "1", hopAuthHeader: "0:deadbeef"} |
| cases := []struct { |
| name string |
| hdr map[string]string |
| + door []string // the door header's values; nil sends none |
| wantVerified bool |
| wantDoor bool |
| }{ |
| - {"verified hop with a door mark", |
| - map[string]string{hopHeader: "1", hopAuthHeader: signHop(key, host, now), hopDoorHeader: door}, true, true}, |
| - {"verified hop without a door mark", |
| - map[string]string{hopHeader: "1", hopAuthHeader: signHop(key, host, now)}, true, false}, |
| - {"verified hop with a door mark for another host", |
| - map[string]string{hopHeader: "1", hopAuthHeader: signHop(key, host, now), hopDoorHeader: signHopDoor(key, "other.test", now)}, true, false}, |
| - {"verified hop with the hop signature as its door mark", |
| - map[string]string{hopHeader: "1", hopAuthHeader: signHop(key, host, now), hopDoorHeader: signHop(key, host, now)}, true, false}, |
| - {"verified hop with a garbage door mark", |
| - map[string]string{hopHeader: "1", hopAuthHeader: signHop(key, host, now), hopDoorHeader: "0:deadbeef"}, true, false}, |
| - {"unverified hop with a valid door mark", |
| - map[string]string{hopHeader: "1", hopAuthHeader: "0:deadbeef", hopDoorHeader: door}, false, false}, |
| - {"hop marker without auth, with a valid door mark", |
| - map[string]string{hopHeader: "1", hopDoorHeader: door}, false, false}, |
| - {"door mark as the hop auth", |
| - map[string]string{hopHeader: "1", hopAuthHeader: door, hopDoorHeader: door}, false, false}, |
| - {"no hop marker, valid door mark", |
| - map[string]string{hopDoorHeader: door}, false, false}, |
| - {"stray auth and door mark, no hop marker", |
| - map[string]string{hopAuthHeader: signHop(key, host, now), hopDoorHeader: door}, false, false}, |
| + {"verified hop with a door mark", hop, []string{door}, true, true}, |
| + {"verified hop without a door mark", hop, nil, true, false}, |
| + {"verified hop with a door mark for another host", hop, []string{signHopDoor(key, "other.test", now)}, true, false}, |
| + {"verified hop with the hop signature as its door mark", hop, []string{signHop(key, host, now)}, true, false}, |
| + {"verified hop with a garbage door mark", hop, []string{"0:deadbeef"}, true, false}, |
| + {"verified hop with an empty door mark", hop, []string{""}, true, false}, |
| + {"verified hop with an empty door mark before a valid one", hop, []string{"", door}, true, false}, |
| + {"verified hop with a valid door mark before a client's", hop, []string{door, "client-controlled"}, true, false}, |
| + {"verified hop with the valid door mark twice", hop, []string{door, door}, true, false}, |
| + {"unverified hop with a valid door mark", badHop, []string{door}, false, false}, |
| + {"unverified hop with an empty door mark before a client's", badHop, []string{"", "client-controlled"}, false, false}, |
| + {"hop marker without auth, with a valid door mark", map[string]string{hopHeader: "1"}, []string{door}, false, false}, |
| + {"door mark as the hop auth", map[string]string{hopHeader: "1", hopAuthHeader: door}, []string{door}, false, false}, |
| + {"no hop marker, valid door mark", nil, []string{door}, false, false}, |
| + {"no hop marker, empty door mark", nil, []string{""}, false, false}, |
| + {"no hop marker, empty door mark before a client's", nil, []string{"", "client-controlled"}, false, false}, |
| + {"no hop marker, empty door mark before a valid one", nil, []string{"", door}, false, false}, |
| + {"stray auth and door mark, no hop marker", map[string]string{hopAuthHeader: signHop(key, host, now)}, []string{door}, false, false}, |
| } |
| for _, c := range cases { |
| r := httptest.NewRequest(http.MethodGet, "http://"+host+"/", nil) |
| for k, v := range c.hdr { |
| r.Header.Set(k, v) |
| } |
| + if c.door != nil { |
| + r.Header[hopDoorHeader] = append([]string(nil), c.door...) |
| + } |
| r, verified := e.acceptHop(r, host) |
| if verified != c.wantVerified { |
| t.Errorf("%s: verified = %v, want %v", c.name, verified, c.wantVerified) |
| @@ -102,7 +109,7 @@ func TestAcceptHopSetsDoorMark(t *testing.T) { |
| t.Errorf("%s: hopDoorFrom = %v, want %v", c.name, got, c.wantDoor) |
| } |
| for _, h := range []string{hopHeader, hopAuthHeader, hopDoorHeader} { |
| - if v := r.Header.Values(h); len(v) != 0 { |
| + if v, ok := r.Header[h]; ok { |
| t.Errorf("%s: %s survived acceptHop as %q", c.name, h, v) |
| } |
| } |
| @@ -137,6 +144,11 @@ func TestBackhauledDoorCallExempt(t *testing.T) { |
| if err := a.edge.Reload(); err != nil { |
| t.Fatal(err) |
| } |
| + // Annie's limiter on a stopped clock, so the bucket never refills and |
| + // every refusal below holds however slowly the test runs. Swapped before |
| + // annie has served anything. |
| + frozen := time.Now() |
| + a.edge.rateLimiter = ratelimit.NewLimiter(func() time.Time { return frozen }, 100_000) |
| b := newBackhaulEdge(t, bucket, "betty", ca, nil, map[string]string{e2eSenderHost: senderSrv.Listener.Addr().String()}) |
| aEIP, port, err := net.SplitHostPort(a.tlsAddr) |