carlos / platform Public

edge: one notServedHere constant for both refusals, a comment on probes served from the catch-all, and the 103 asserted clean (Task 6 review round 1)

- Minor 3: the probe refusal and the stale-hop refusal share
  notServedHere (servedby.go), so MV-O263 has one site; its row keeps
  naming servedby.go.
- Minor 1: ServeHTTP says why an accepted hop or a door call carrying
  the probe header may be served from the local wildcard and stamped
  (not a forwarding path).
- Minor 2: TestProbeModeThroughTheRealStack asserts the 103 itself
  carries its Link and no X-Carlos-Served-By.
- Census: Edge.ServeHTTP re-pinned in place, internal/edge envelope
  re-pinned, seal e070316b.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
claude agent, operated by paul@keymail.dev 27b630b6b989622f387dd5e41c47daf7aab14abc parent 9ae9fda
8 files changed, +29 −9
  • docs/superpowers/notes/census-proposal-self-serve-moves-3.md +4 −0
  • docs/superpowers/plans/2026-10-06-moves-phase1-copy.md +1 −1
  • internal/edge/edge.go +3 −0
  • internal/edge/homemap.go +1 −1
  • internal/edge/probe_test.go +6 −1
  • internal/edge/servedby.go +6 −1
  • internal/provision/plan14_root_reads_test.go +4 −2
  • internal/provision/testdata/plan14-root-reads-self-serve-moves-3.tsv +4 −3

CI failed — run details

CI log
=== gate ===
sigwho: pid 2 ppid 1 pgid 0 sid 0; child pid 3
.amadan/test-gate.sh
gate: 2026-10-24T05:54:41Z on aarch64, 32 cpus, 62126 MB available, go1.26.8 linux/arm64
gate: +0s start launchctx
gate: +0s start vet
gate: +0s start gofmt
gate: +2s start rest
gate: +13s start internal_console@0
gate: +13s start internal_console@1
gate: +13s start internal_console@2
gate: +13s start internal_console@3
gate: +13s start internal_console@4
gate: +13s start internal_console@5
gate: +13s start internal_console@6
gate: +13s start internal_console@7
gate: +13s waiting for internal_console's shards before the next split package
gate: +173s start root@0
gate: +173s start root@1
gate: +173s start root@2
gate: +173s waiting for root's shards before the next split package

amadan: step gate failed: signal: terminated

amadan: job failed at step gate — its output is above, not at the tail of this log
diff --git a/docs/superpowers/notes/census-proposal-self-serve-moves-3.md b/docs/superpowers/notes/census-proposal-self-serve-moves-3.md
index 72f9f65cc..6ebee04a7 100644
--- a/docs/superpowers/notes/census-proposal-self-serve-moves-3.md
+++ b/docs/superpowers/notes/census-proposal-self-serve-moves-3.md
@@ -109,3 +109,7 @@ A request carrying `X-Carlos-Probe: local` is never forwarded. `backhaulTo` answ
The console's health probe asks in probe mode. It passes only when `X-Carlos-Served-By` is the pinned target's box id and `x-carlos-version` is the sealed build. `probeAt` is handed `row.Participants.Target`. `console/selfserve_health.go:Server.probeTarget`, accepted legacy since self-serve moves 2 Task 8, is re-pinned here with its read site unchanged.
Both re-pins move the seal to `f512b220…`. The `internal/edge` and `internal/console` envelopes are re-pinned. No root read, class or task is added, and the record-write census is unchanged.
+
+### Task 6 review round 1
+
+The two "not served here" bodies now share one constant, `notServedHere` in `edge/servedby.go`: the probe refusal and `homeMap.staleHopRefusal`, which reads no row. `Edge.ServeHTTP` gains a comment on why a probe may be served from the local catch-all, and is re-pinned in place. Its read sites are unchanged and the offsets moved. The `internal/edge` envelope is re-pinned, and the seal moves to `e070316b…`. No root read, class or task is added.
diff --git a/docs/superpowers/plans/2026-10-06-moves-phase1-copy.md b/docs/superpowers/plans/2026-10-06-moves-phase1-copy.md
index a3a3e3427..7e76ecbdf 100644
--- a/docs/superpowers/plans/2026-10-06-moves-phase1-copy.md
+++ b/docs/superpowers/plans/2026-10-06-moves-phase1-copy.md
@@ -808,7 +808,7 @@ Task 8 fix round 1 (pending Paul's review): MV-O257 is the abort of a cut write
Task 2 (pending Paul's review): the holding page every edge answers a moving host and its explicit aliases with (MV-O259 to MV-O262: the server renders N, the minutes left, rounded up and at least 1; the script switches to MV-O262 locally when the estimate passes), and MV-O263, the probe refusal Task 6 answers (today's stale-hop refusal already says it).
-Task 6 answers MV-O263 from `probeRefusal` in internal/edge/servedby.go, the file its row now names. The console probe's failure sentences (internal/console/selfserve_health.go, `probeAt`) are diagnostics in the health record's detail. The gate does not count them as copy, so they have no rows.
+Task 6 answers MV-O263 from internal/edge/servedby.go, the file its row now names: the constant `notServedHere` there is the body of both the probe refusal and the stale-hop refusal (homemap.go), so a rewrite changes one site. The console probe's failure sentences (internal/console/selfserve_health.go, `probeAt`) are diagnostics in the health record's detail. The gate does not count them as copy, so they have no rows.
| id | file | text | status |
|---|---|---|---|
diff --git a/internal/edge/edge.go b/internal/edge/edge.go
index c56fb7054..8f6057575 100644
--- a/internal/edge/edge.go
+++ b/internal/edge/edge.go
@@ -1623,6 +1623,9 @@ func (e *Edge) ServeHTTP(w http.ResponseWriter, r *http.Request) {
// backhaul of its own here; and an ordinary request falls through
// to it when the backhaul cannot dial for want of a mesh key.
// Saturation and proxy failures are answered remotely, as before.
+ // A probe here is served from the catch-all and stamped: this is not
+ // a forwarding path (a door is box-local, and no edge forwards a probe
+ // as a hop, so the probe reached this box itself).
if fb := dec.fallback; fb != nil && (hopped || isDoor) {
local = decision{kind: decLocal, up: fb.up, table: fb.table}
break
diff --git a/internal/edge/homemap.go b/internal/edge/homemap.go
index 1eb3bc750..c2e80724c 100644
--- a/internal/edge/homemap.go
+++ b/internal/edge/homemap.go
@@ -1385,7 +1385,7 @@ func stripForwardedHeaders(r *http.Request) {
// first, degrade the bookkeeping" shape Home and meshKeys already have.
func (m *homeMap) staleHopRefusal(w http.ResponseWriter, host string) {
w.Header().Set("Retry-After", "2")
- http.Error(w, "not served here", http.StatusServiceUnavailable)
+ http.Error(w, notServedHere, http.StatusServiceUnavailable)
if m == nil {
return
}
diff --git a/internal/edge/probe_test.go b/internal/edge/probe_test.go
index 53c0e525b..ceb5f7bae 100644
--- a/internal/edge/probe_test.go
+++ b/internal/edge/probe_test.go
@@ -238,15 +238,17 @@ type stackAnswer struct {
header http.Header
body string
early []int
+ hints []textproto.MIMEHeader
}
func (ps *probeStack) do(t *testing.T, method, path string, probe bool) stackAnswer {
t.Helper()
var ans stackAnswer
var mu sync.Mutex
- trace := &httptrace.ClientTrace{Got1xxResponse: func(code int, _ textproto.MIMEHeader) error {
+ trace := &httptrace.ClientTrace{Got1xxResponse: func(code int, h textproto.MIMEHeader) error {
mu.Lock()
ans.early = append(ans.early, code)
+ ans.hints = append(ans.hints, h)
mu.Unlock()
return nil
}}
@@ -328,6 +330,9 @@ func TestProbeModeThroughTheRealStack(t *testing.T) {
if c.early && !slices.Equal(got.early, []int{http.StatusEarlyHints}) {
t.Fatalf("%s: informational responses %v, want one 103", what, got.early)
}
+ if c.early && (got.hints[0].Get("Link") == "" || len(got.hints[0].Values(servedByHeader)) != 0) {
+ t.Fatalf("%s: the 103 carried %v, want its Link and no %s", what, got.hints[0], servedByHeader)
+ }
later := ps.do(t, c.method, c.path, false)
if later.header.Get("X-Count") != "1" || ps.hit(what) != 2 {
diff --git a/internal/edge/servedby.go b/internal/edge/servedby.go
index cd03a6916..eaa63893f 100644
--- a/internal/edge/servedby.go
+++ b/internal/edge/servedby.go
@@ -20,6 +20,11 @@ const (
servedByHeader = "X-Carlos-Served-By"
)
+// notServedHere is the body of both refusals that mean "not this box": the
+// probe refusal below and the stale-hop refusal (homemap.go). One constant,
+// so the copy row (MV-O263) has one site.
+const notServedHere = "not served here"
+
// isProbe reports whether r asks to be answered by this box or not at all.
func isProbe(r *http.Request) bool { return r.Header.Get(probeHeader) == probeLocal }
@@ -28,7 +33,7 @@ func isProbe(r *http.Request) bool { return r.Header.Get(probeHeader) == probeLo
// this box changes for a retry.
func probeRefusal(w http.ResponseWriter) {
w.Header().Set("Cache-Control", "no-store")
- http.Error(w, "not served here", http.StatusServiceUnavailable)
+ http.Error(w, notServedHere, http.StatusServiceUnavailable)
}
// servedByWriter stamps the box id on a probe's final response. ServeHTTP
diff --git a/internal/provision/plan14_root_reads_test.go b/internal/provision/plan14_root_reads_test.go
index 4c6ae4a1a..f5bd88e52 100644
--- a/internal/provision/plan14_root_reads_test.go
+++ b/internal/provision/plan14_root_reads_test.go
@@ -1398,8 +1398,10 @@ func TestPlan14RootReadCensus(t *testing.T) {
// mode) re-pins Edge.ServeHTTP in place (a probe is answered under
// servedByWriter and kept out of the response cache) and
// Server.probeTarget (the console's probe asks in probe mode and
- // requires the target's box id), which moves it once more.
- seal = "f512b220eb06d63bd3c066d37acc731a7473276fe64707a60a1e36659f11cee1"
+ // requires the target's box id), which moves it once more. Its review
+ // round 1 re-pins Edge.ServeHTTP in place (a comment, and the stale-hop
+ // body through notServedHere), which moves it again.
+ seal = "e070316bc7a483a790121f378c4d25e3868307fa58825af2126aa0611d29b2ac"
errs := append(compareRootReads(got, inv), checkRootReadLegacy(inv, seal)...)
errs = append(errs, checkRootReadDeclarations(got, inv)...)
if len(errs) > 0 {
diff --git a/internal/provision/testdata/plan14-root-reads-self-serve-moves-3.tsv b/internal/provision/testdata/plan14-root-reads-self-serve-moves-3.tsv
index 2b1a3a60d..8a9cd065a 100644
--- a/internal/provision/testdata/plan14-root-reads-self-serve-moves-3.tsv
+++ b/internal/provision/testdata/plan14-root-reads-self-serve-moves-3.tsv
@@ -6,6 +6,7 @@
# Task 3 (the ranking's witnesses), rev3=PROPOSED-self-serve-moves-3: rank's sort breaks a tie within one file by target, so one file's two holds of different targets for one alias are ranked the same in every collection order (rank.go reads no row and is no census unit). Only the internal/edge envelope is re-pinned; no unit moves, so the seal is unchanged. No root read, class or task is added.
# Task 5 (freshness), rev3=PROPOSED-self-serve-moves-3: the home map's wake compares the platform holds live at each poll's time (wakeOnMove, livePlatformHolds in homemap.go), so a remote platform hold's expiry and its revival by a fresh fetch wake the wildcard manager; Hosts derives from the same live set. homeMap.Refresh, refreshHosts and Hosts read no row and are no census units. Only the internal/edge envelope is re-pinned; no unit moves, so the seal is unchanged. No root read, class or task is added.
# Task 6 (probe mode), rev3=PROPOSED-self-serve-moves-3: a probe (X-Carlos-Probe: local) is refused in backhaulTo before the key and the cap (503 "not served here", no dial), and a probe served locally is answered under servedByWriter (servedby.go, new; reads no row) and kept out of the response cache. Edge.ServeHTTP is re-pinned in place (read sites unchanged, offsets moved). The console's health probe asks in probe mode and requires X-Carlos-Served-By to be the pinned target's box id: Server.probeTarget, accepted legacy since self-serve moves 2 Task 8, is re-pinned here (read site unchanged). Both re-pins move the seal; the internal/edge and internal/console envelopes are re-pinned. No root read, class or task is added.
+# Task 6 review round 1, rev3=PROPOSED-self-serve-moves-3: the two "not served here" bodies (the probe refusal and homeMap.staleHopRefusal) share one constant, notServedHere in servedby.go, and ServeHTTP gains a comment on why a probe may be served from the local catch-all. Edge.ServeHTTP is re-pinned in place (read sites unchanged, offsets moved), which moves the seal; the internal/edge envelope is re-pinned. No root read, class or task is added.
@legacy 652c416a0cd27a153fa259d76ab20538480e2c3afd98cbec6af083902b17f5ff internal/domains/aliases.go ReconcileAliases legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-3;basis=root-route; the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos), from its fast-converge and instances loops: self-serve moves 1's body (rev3=J1, the catch-all's labels counted through domains.InstanceLabelCountsJudged), which now writes each alias row's provenance: an exact claim on the row's own name upserts it explicit (every pass, so a legacy row is upgraded on the first), and the synthetic "*.<host>" catch-all row not explicit; registry read sites unchanged, offsets moved; a report the edges file lists holding aliases by, not a decision registry:Account@15605,registry:Account@15618,registry:Alias@15220,registry:Alias@15260,registry:Alias@15330,registry:App@12165,registry:App@12365,registry:App@12521,registry:App@12722,registry:App@15631,registry:App@15640,registry:App@2026,registry:App@2222,registry:App@6036,registry:App@6235,registry:Host@15590,registry:Host@15879,registry:Host@15932,registry:Host@16004,registry:Host@16516,registry:Host@16608,registry:Host@16667,registry:Host@16748,registry:Host@406,registry:Prefix@16524,registry:Prefix@16622,registry:Prefix@16675,registry:Prefix@16756,registry:Status@8899,whole:Route@12134,whole:Route@12209,whole:Route@12356,whole:Route@12418,whole:Route@12561,whole:Route@12717,whole:Route@13613,whole:Route@1369,whole:Route@14825,whole:Route@14833,whole:Route@2066,whole:Route@2217,whole:Route@2273,whole:Route@359,whole:Route@388,whole:Route@399,whole:Route@417,whole:Route@5382,whole:Route@6080,whole:Route@6226,whole:Route@8229,whole:Route@8681,whole:Route@8843,whole:RouteAlias@14841,whole:RouteAlias@15195,whole:RoutePath@10426,whole:RoutePath@16409,whole:RoutePath@16451,whole:RoutePath@16565,whole:RoutePath@16595,whole:WildcardDomain@12933,whole:WildcardDomain@15520,whole:WildcardDomain@15569,whole:WildcardDomain@15732,whole:WildcardDomain@15838,whole:WildcardDomain@15867 edef8a1bf06cab5666a52ec19840c54f02913ddc67a32da7f6197db1606556a4
internal/domains/aliases.go ReconcileAliases legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-3;basis=root-route; the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos), from its fast-converge and instances loops: self-serve moves 1's body (rev3=J1, the catch-all's labels counted through domains.InstanceLabelCountsJudged), which now writes each alias row's provenance: an exact claim on the row's own name upserts it explicit (every pass, so a legacy row is upgraded on the first), and the synthetic "*.<host>" catch-all row not explicit; registry read sites unchanged, offsets moved; a report the edges file lists holding aliases by, not a decision registry:Account@15605,registry:Account@15618,registry:Alias@15220,registry:Alias@15260,registry:Alias@15330,registry:App@12165,registry:App@12365,registry:App@12521,registry:App@12722,registry:App@15631,registry:App@15640,registry:App@2026,registry:App@2222,registry:App@6036,registry:App@6235,registry:Host@15590,registry:Host@15879,registry:Host@15932,registry:Host@16004,registry:Host@16516,registry:Host@16608,registry:Host@16667,registry:Host@16748,registry:Host@406,registry:Prefix@16524,registry:Prefix@16622,registry:Prefix@16675,registry:Prefix@16756,registry:Status@8899,whole:Route@12134,whole:Route@12209,whole:Route@12356,whole:Route@12418,whole:Route@12561,whole:Route@12717,whole:Route@13613,whole:Route@1369,whole:Route@14825,whole:Route@14833,whole:Route@2066,whole:Route@2217,whole:Route@2273,whole:Route@359,whole:Route@388,whole:Route@399,whole:Route@417,whole:Route@5382,whole:Route@6080,whole:Route@6226,whole:Route@8229,whole:Route@8681,whole:Route@8843,whole:RouteAlias@14841,whole:RouteAlias@15195,whole:RoutePath@10426,whole:RoutePath@16409,whole:RoutePath@16451,whole:RoutePath@16565,whole:RoutePath@16595,whole:WildcardDomain@12933,whole:WildcardDomain@15520,whole:WildcardDomain@15569,whole:WildcardDomain@15732,whole:WildcardDomain@15838,whole:WildcardDomain@15867 edef8a1bf06cab5666a52ec19840c54f02913ddc67a32da7f6197db1606556a4
@legacy 887eab39c9584891268b9afedcd81c995849a97545258b3eacc506b5c0165b23 internal/domains/aliases.go deriveInstanceAliases legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-3;basis=root-route; the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): self-serve moves 1's body, whose already-the-row-we-want skip now also compares the existing row's provenance (registry:Explicit, one new site): a derived name left explicit by a detached exact claim on the same target and owner is rewritten not explicit, and both keep-as-it-is paths (a listing failure, an unjudged label) hand the kept row to keepDerived; the other registry read sites unchanged, offsets moved; no new route registry:Account@2163,registry:Account@3516,registry:Account@4587,registry:Alias@2225,registry:Alias@2293,registry:Alias@2337,registry:Alias@557,registry:App@1686,registry:App@2189,registry:App@3542,registry:App@4613,registry:Explicit@4632,registry:Host@1843,registry:Host@4566,registry:Host@4576,registry:Host@4787,registry:Provisioned@1636,registry:Replica@1672,registry:Slug@1775,whole:Route@1620,whole:Route@1726,whole:Route@3058,whole:RouteAlias@2143,whole:RouteAlias@2377,whole:RouteAlias@3498,whole:RouteAlias@3867,whole:RouteAlias@4548,whole:RouteAlias@509,whole:RouteAlias@539,whole:RouteAlias@552,whole:RouteAlias@568 42d5a40cccb38c31f306b49c00fde7482e4ee0b3cbf6a6a2dfbaac06592ef883
@@ -25,12 +26,12 @@ internal/registry/registry.go Registry.UpsertAlias legacy accepted-legacy accept
@legacy 1409145169f03f11766765601208065ab115929f8f773b23512c9465d6f6f8e3 internal/registry/registry.go Registry.migrate legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-3;basis=the registry's SQLite side, as carlos: in the agent (/opt/carlos/carlos agent, carlos-edge.service) and in the registry child (carlos __registry-child, which a root pass forks as the service user), on every registry open; a box CLI verb that opens the registry directly runs it as whoever runs the verb: self-serve moves 1's body with route_aliases.explicit (INTEGER NOT NULL DEFAULT 0) in the create statement and one idempotent ALTER for a table created before it (the duplicate-column rule); self-serve moves 3 Task 1 file:Exec@3622,file:Exec@3946,file:Exec@4638,file:Exec@51,file:Exec@5111,file:Exec@5971,file:Exec@6250,file:Exec@7113,file:Exec@7289,registry:sql@3622,registry:sql@3946,registry:sql@4638,registry:sql@51,registry:sql@5111,registry:sql@5971,registry:sql@6250,registry:sql@7113,registry:sql@7289 76673b36d4f61499f9649f3c0cf195ae582b6d21bea50d26dce147d59fb9c990
internal/registry/registry.go Registry.migrate legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-3;basis=the registry's SQLite side, as carlos: in the agent (/opt/carlos/carlos agent, carlos-edge.service) and in the registry child (carlos __registry-child, which a root pass forks as the service user), on every registry open; a box CLI verb that opens the registry directly runs it as whoever runs the verb: self-serve moves 1's body with route_aliases.explicit (INTEGER NOT NULL DEFAULT 0) in the create statement and one idempotent ALTER for a table created before it (the duplicate-column rule); self-serve moves 3 Task 1 file:Exec@3622,file:Exec@3946,file:Exec@4638,file:Exec@51,file:Exec@5111,file:Exec@5971,file:Exec@6250,file:Exec@7113,file:Exec@7289,registry:sql@3622,registry:sql@3946,registry:sql@4638,registry:sql@51,registry:sql@5111,registry:sql@5971,registry:sql@6250,registry:sql@7113,registry:sql@7289 76673b36d4f61499f9649f3c0cf195ae582b6d21bea50d26dce147d59fb9c990
@legacy f41bc7d6d0f544ba64ab40732c62e4d11c9515dc75032e79888478236843b08a internal/edge/edge.go Edge.Reload legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-3;basis=root-route; the edge inside the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): main's body, which also hands the rows and alias rows it listed, with the table it built from them, to the local hold rebuild (holdInputs, rebuildHolds) before the reload hook runs; read sites unchanged, offsets moved; serving only registry:Account@18079,registry:Alias@16388,registry:Alias@16475,registry:Alias@16571,registry:FleetBox@5526,registry:Health@7689,registry:Health@7807,registry:Hibernate@12450,registry:Hibernate@14360,registry:Hibernate@6049,registry:Host@12498,registry:Host@14422,registry:Host@14730,registry:Host@14757,registry:Host@15525,registry:Host@15791,registry:Host@16514,registry:Host@6098,registry:Host@8290,registry:Host@8385,registry:Host@8665,registry:Host@8691,registry:Host@8743,registry:Kind@10975,registry:Kind@10997,registry:Kind@12426,registry:Kind@14336,registry:Kind@6025,registry:Kind@8831,registry:Kind@8891,registry:Name@18069,registry:Prefix@15766,registry:Region@2252,registry:Socket@14738,registry:Socket@5633,registry:Socket@6162,registry:Status@1835,registry:Target@15778,registry:Tunnel@4574,registry:Tunnel@4630,registry:Version@10956,registry:Version@11058,whole:Fleet@18019,whole:Fleet@18048,whole:Route@130,whole:Route@14790,whole:Route@14797,whole:Route@19692,whole:Route@19700,whole:Route@4692,whole:Route@5590,whole:Route@6218,whole:Route@648,whole:Route@8808,whole:Route@8881,whole:Route@8941,whole:RouteAlias@16359,whole:RouteAlias@19708,whole:RouteAlias@19717,whole:RoutePath@15503 e4e7b4dbdef60f59e2d9b3f4ad1d087d2044791764681bd827b60466ce8f7943
-@legacy 98f46a601cdff8733486f9966bbc6132b8ef6992577faa4457086ed2a2e3ed06 internal/edge/edge.go Edge.ServeHTTP legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-3;basis=root-route; the edge inside the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): main's body (import gate after the door's scope, a gated row left out of the response cache), with the request's one decision (resolve: this box's table, its local holds and the home map's candidates, ranked) in place of the table lookup and the exact-home probe; the prefix target, the login re-resolution and the door's check read the decision's own table (selectUpstream), and a holding decision answers the holding page; read sites unchanged, offsets moved; serving only; Task 2 fix round 1: the import gate is handed the decision's table (local.table) and judges the front row there; Task 6: a probe (X-Carlos-Probe: local) is answered under servedByWriter, stamped with this box id on its final response, and is kept out of the response cache in both directions; the forwarding paths refuse it in backhaulTo, which reads no row registry:Gate@14812,registry:Gate@14872,registry:Gate@14930,registry:Host@14915,registry:ImportGate@18243,registry:Kind@13051,registry:Kind@18214,whole:Route@11056,whole:Route@11268,whole:Route@13054,whole:Route@13612,whole:Route@13707,whole:Route@13783,whole:Route@14815,whole:Route@14875,whole:Route@14918,whole:Route@14933,whole:Route@15746,whole:Route@18217,whole:Route@18246,whole:Route@19392 6fabacbfd2dc23d2ac258d1338e47926b4cb9c0948db5bcc1d814e2edcbb0047
+@legacy c275e37e11bed6581b7da8e1a47f54ffeb25c92a3aef8cf56236a85d8c323294 internal/edge/edge.go Edge.ServeHTTP legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-3;basis=root-route; the edge inside the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): main's body (import gate after the door's scope, a gated row left out of the response cache), with the request's one decision (resolve: this box's table, its local holds and the home map's candidates, ranked) in place of the table lookup and the exact-home probe; the prefix target, the login re-resolution and the door's check read the decision's own table (selectUpstream), and a holding decision answers the holding page; read sites unchanged, offsets moved; serving only; Task 2 fix round 1: the import gate is handed the decision's table (local.table) and judges the front row there; Task 6: a probe (X-Carlos-Probe: local) is answered under servedByWriter, stamped with this box id on its final response, and is kept out of the response cache in both directions; the forwarding paths refuse it in backhaulTo, which reads no row; Task 6 review round 1: a comment on the kept exceptions (a probe served from the local catch-all) and the stale-hop body through the notServedHere constant registry:Gate@15012,registry:Gate@15072,registry:Gate@15130,registry:Host@15115,registry:ImportGate@18443,registry:Kind@13251,registry:Kind@18414,whole:Route@11256,whole:Route@11468,whole:Route@13254,whole:Route@13812,whole:Route@13907,whole:Route@13983,whole:Route@15015,whole:Route@15075,whole:Route@15118,whole:Route@15133,whole:Route@15946,whole:Route@18417,whole:Route@18446,whole:Route@19592 71d424324ae847f5fbf23b9e928a5e27f80b5fd904dcfefd60d04aa7b93f11e5
@legacy 59d746cbafad658130c4c6be6d6597f0a57cd2bcb2a493e3f2f9c8a456ceb524 internal/edge/edge.go Edge.currentHosts legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-3;basis=root-route; the edge inside the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): main's body, which also lists this box's real holds of platform rows (holdSnapshot.platformNames, which reads no row) so a held row's wildcard parent stays loaded; read sites unchanged; serving only (the wildcard parent set) registry:Platform@123,registry:Provisioned@144,whole:Route@126,whole:Route@147 88419f01a8c80da7e11def22cd5512365c097ec17ee5afa895c1863d6c858ff1
@legacy 9cd24dc39fec3c4b8f569729b7a2a8fdd30a008e1064295afdf9e62937fde31c internal/edge/edge.go localReady legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-3;basis=root-route; the edge inside the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, a table entry as a ranking candidate: reads the route the entry carries (its owner through release.RouteAccount, app, lifetime pair, class marks and, for an alias, its primary's host); serving only registry:App@258,registry:Host@498,registry:Incarnation@287,registry:Platform@357,registry:Provisioned@378,registry:ServingSeq@321,whole:Route@245,whole:Route@261,whole:Route@290,whole:Route@324,whole:Route@360,whole:Route@381,whole:Route@501 cabee4199c52c17849c70e7e6d7089d1e404c113008de3611083029bc4dd678d
@legacy c5d51734282888f6f4e90af026b8e369ce86f97e03e3867b1632ce70823bf1e9 internal/edge/holding.go localHolds legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-3;basis=root-route; the edge inside the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, the local holds: reads the rows and alias rows the latest Reload listed (a row's status, hold op, host, owner, pair and class marks; an alias row's name, primary, provenance and DNS status through edgesfile.AliasPublishable) against the offline view's moves; serving only (the holding page and its certificate), writes nothing registry:Alias@1108,registry:Alias@1235,registry:Alias@1256,registry:Alias@1284,registry:App@532,registry:Explicit@1051,registry:HoldOp@286,registry:HoldOp@392,registry:Host@1030,registry:Host@1409,registry:Host@359,registry:Host@446,registry:Host@716,registry:Host@741,registry:Host@768,registry:Host@902,registry:Incarnation@574,registry:Incarnation@926,registry:Platform@464,registry:Provisioned@478,registry:ServingSeq@601,registry:ServingSeq@953,registry:Status@273,whole:Route@242,whole:Route@523,whole:RouteAlias@1003,whole:RouteAlias@1150 416a3342657d3672fea1fd5b31292148ee6b3b3a9601f5f48b8f436187944424
internal/edge/edge.go Edge.Reload legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-3;basis=root-route; the edge inside the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): main's body, which also hands the rows and alias rows it listed, with the table it built from them, to the local hold rebuild (holdInputs, rebuildHolds) before the reload hook runs; read sites unchanged, offsets moved; serving only registry:Account@18079,registry:Alias@16388,registry:Alias@16475,registry:Alias@16571,registry:FleetBox@5526,registry:Health@7689,registry:Health@7807,registry:Hibernate@12450,registry:Hibernate@14360,registry:Hibernate@6049,registry:Host@12498,registry:Host@14422,registry:Host@14730,registry:Host@14757,registry:Host@15525,registry:Host@15791,registry:Host@16514,registry:Host@6098,registry:Host@8290,registry:Host@8385,registry:Host@8665,registry:Host@8691,registry:Host@8743,registry:Kind@10975,registry:Kind@10997,registry:Kind@12426,registry:Kind@14336,registry:Kind@6025,registry:Kind@8831,registry:Kind@8891,registry:Name@18069,registry:Prefix@15766,registry:Region@2252,registry:Socket@14738,registry:Socket@5633,registry:Socket@6162,registry:Status@1835,registry:Target@15778,registry:Tunnel@4574,registry:Tunnel@4630,registry:Version@10956,registry:Version@11058,whole:Fleet@18019,whole:Fleet@18048,whole:Route@130,whole:Route@14790,whole:Route@14797,whole:Route@19692,whole:Route@19700,whole:Route@4692,whole:Route@5590,whole:Route@6218,whole:Route@648,whole:Route@8808,whole:Route@8881,whole:Route@8941,whole:RouteAlias@16359,whole:RouteAlias@19708,whole:RouteAlias@19717,whole:RoutePath@15503 e4e7b4dbdef60f59e2d9b3f4ad1d087d2044791764681bd827b60466ce8f7943
-internal/edge/edge.go Edge.ServeHTTP legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-3;basis=root-route; the edge inside the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): main's body (import gate after the door's scope, a gated row left out of the response cache), with the request's one decision (resolve: this box's table, its local holds and the home map's candidates, ranked) in place of the table lookup and the exact-home probe; the prefix target, the login re-resolution and the door's check read the decision's own table (selectUpstream), and a holding decision answers the holding page; read sites unchanged, offsets moved; serving only; Task 2 fix round 1: the import gate is handed the decision's table (local.table) and judges the front row there; Task 6: a probe (X-Carlos-Probe: local) is answered under servedByWriter, stamped with this box id on its final response, and is kept out of the response cache in both directions; the forwarding paths refuse it in backhaulTo, which reads no row registry:Gate@14812,registry:Gate@14872,registry:Gate@14930,registry:Host@14915,registry:ImportGate@18243,registry:Kind@13051,registry:Kind@18214,whole:Route@11056,whole:Route@11268,whole:Route@13054,whole:Route@13612,whole:Route@13707,whole:Route@13783,whole:Route@14815,whole:Route@14875,whole:Route@14918,whole:Route@14933,whole:Route@15746,whole:Route@18217,whole:Route@18246,whole:Route@19392 6fabacbfd2dc23d2ac258d1338e47926b4cb9c0948db5bcc1d814e2edcbb0047
+internal/edge/edge.go Edge.ServeHTTP legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-3;basis=root-route; the edge inside the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): main's body (import gate after the door's scope, a gated row left out of the response cache), with the request's one decision (resolve: this box's table, its local holds and the home map's candidates, ranked) in place of the table lookup and the exact-home probe; the prefix target, the login re-resolution and the door's check read the decision's own table (selectUpstream), and a holding decision answers the holding page; read sites unchanged, offsets moved; serving only; Task 2 fix round 1: the import gate is handed the decision's table (local.table) and judges the front row there; Task 6: a probe (X-Carlos-Probe: local) is answered under servedByWriter, stamped with this box id on its final response, and is kept out of the response cache in both directions; the forwarding paths refuse it in backhaulTo, which reads no row; Task 6 review round 1: a comment on the kept exceptions (a probe served from the local catch-all) and the stale-hop body through the notServedHere constant registry:Gate@15012,registry:Gate@15072,registry:Gate@15130,registry:Host@15115,registry:ImportGate@18443,registry:Kind@13251,registry:Kind@18414,whole:Route@11256,whole:Route@11468,whole:Route@13254,whole:Route@13812,whole:Route@13907,whole:Route@13983,whole:Route@15015,whole:Route@15075,whole:Route@15118,whole:Route@15133,whole:Route@15946,whole:Route@18417,whole:Route@18446,whole:Route@19592 71d424324ae847f5fbf23b9e928a5e27f80b5fd904dcfefd60d04aa7b93f11e5
@legacy 41ea8d89ccf9116ee6f6208c8edfa17bd6e79c8c2a7bd97c89c447af5dcc11a6 internal/edge/importgate.go Edge.importGateAdmit legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-3;basis=root-route; the edge inside the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): the import gate (a gated row admits only a GET carrying the verify token; anything else is a 503), with host's own front row looked up in the table the request's decision was resolved in (self-serve moves plan 3 Task 2 fix round 1) rather than the live table; read sites unchanged, offsets moved; serving only registry:Host@364,registry:Host@378,registry:ImportGate@295,registry:ImportGate@318,registry:ImportGate@438,whole:Route@224,whole:Route@271,whole:Route@282 1207a7a3d9fa8c99debb563b456cfa4e472fd4c3ceba83157fb4189a12c53f70
internal/edge/importgate.go Edge.importGateAdmit legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-3;basis=root-route; the edge inside the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): the import gate (a gated row admits only a GET carrying the verify token; anything else is a 503), with host's own front row looked up in the table the request's decision was resolved in (self-serve moves plan 3 Task 2 fix round 1) rather than the live table; read sites unchanged, offsets moved; serving only registry:Host@364,registry:Host@378,registry:ImportGate@295,registry:ImportGate@318,registry:ImportGate@438,whole:Route@224,whole:Route@271,whole:Route@282 1207a7a3d9fa8c99debb563b456cfa4e472fd4c3ceba83157fb4189a12c53f70
internal/edge/edge.go Edge.currentHosts legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-3;basis=root-route; the edge inside the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): main's body, which also lists this box's real holds of platform rows (holdSnapshot.platformNames, which reads no row) so a held row's wildcard parent stays loaded; read sites unchanged; serving only (the wildcard parent set) registry:Platform@123,registry:Provisioned@144,whole:Route@126,whole:Route@147 88419f01a8c80da7e11def22cd5512365c097ec17ee5afa895c1863d6c858ff1
@@ -45,7 +46,7 @@ internal/console/selfserve_health.go Server.probeTarget legacy accepted-legacy a
@fields A,Account,Accounts,AddedAt,Addr,Addrs,Alias,Aliases,Alive,AllowAbsent,App,Archives,Args,At,Attempts,B,Backing,Bucket,BuildState,Callback,CallbackError,CallbackFailed,Canary,Caps,CertExpiresAt,Changed,Channel,CheckedAt,ClaimIncarnation,ClaimOwner,ClaimOwnership,ClaimRowID,ClaimStamp,Class,Contents,CreatedAt,DBPath,DNSCheckedAt,DNSStatus,Deadline,Demand,Digest,DoneBefore,Due,DueAt,Env,EnvBefore,Environment,Error,ErrorKind,ExcludeHosts,ExpectGood,ExpectOp,ExpectPair,Expected,Explicit,F,Failed,FenceGen,Fleet,FleetBox,FleetBoxes,Fleets,From,FromDB,FromOp,FromSock,Gate,GoodDemand,GoodDigest,GoodVersion,Hash,Health,Held,Hibernate,HoldOp,Host,Hosts,ID,Id,IdValue,Idle,IdleSeconds,ImportGate,Incarnation,Journal,Keep,Kind,Label,LastAt,LastError,LastMs,LastStatus,Limit,MaxRun,MaxRunSeconds,Method,Ms,Name,Next,NextAt,NextDue,NextGood,NextValue,Now,Number,Number64,Observed,ObservedValue,Old,On,Op,Original,Owner,Ownership,P,Pair,Path,Paths,Platform,Pool,Prefix,Prev,PrevVersion,Provisioned,RecordKey,Region,Registration,Replica,Replicas,Replication,Retirement,Route,Routes,Row,Rows,Seed,SeedID,SeedSource,ServingSeq,ServingVersion,Slug,Socket,Spec,Sqid,State,Status,StatusNamed,Steering,StringMap,T,TValue,Tags,Target,Targets,Text,Timer,Timers,Times,To,ToDB,ToOp,ToSock,TokenHash,Tunnel,Unit,UpdateSettings,Ver,Version,W,WakeIncarnation,Wildcards,closed,conn,connect,ctx,d,dec,done,enc,full,input,mu,output,path,remote,sql,wait
@coverage internal/console bc88b0e12e2a48b9a22951b01cf4e10f65e475079bce2a6cf076942ac1808ef6
@coverage internal/domains 0cf7748c97e4caa7d0daa73e251fdd2f2f03e425321599bf046292b0a86ebde8
-@coverage internal/edge a8b614f83ca44acbb2ab18c5bd922713b69055288eeb7fadec36ae626bbc4010
+@coverage internal/edge 5ef637212c8c1cc68016f3bef3f0ab214d9cfa5b23a1f58dac16f4990ed07255
@coverage internal/edgesfile ee82e43c7d6363297f63abcde9c3e828a53d377573649f0d26a9853056aad4be
@coverage internal/host 27d077c9f63838516ad29fb69ea48ebbf85a7c17ade258a3b8ce2d57eb3cc21d
@coverage internal/registry ae19eaec5c4dde2c400fcb2fc6afd23c6b129e77306d6916fe55b2091b0fb5ed