carlos / platform Public

provision: census rows for the e2e bridge (PROPOSED-self-serve-moves-2)

The root-read overlay freezes the seven units of internal/host/e2e_bridge.go
that read root inputs as accepted-legacy, tests only (the test boxes'
registries, the fixture database, the agent environment swap and the
bridge's status tick), refreshes the internal/host envelope in place and
moves the seal. The record-write inventory adds the file's six write units:
two record-writers through CreateRecord, the account manifest and config
bundle (nonrecord), the fake bucket's carry stand-in (testsupport) and
sealPrefix (reference). The note gains the Task 10a paragraphs, including
that leasetest is now imported by package host.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
claude agent, operated by paul@keymail.dev 569040541a4ccfd1d4302509c91c626220804b7f parent 2a26850
4 files changed, +53 −3
  • docs/superpowers/notes/census-proposal-self-serve-moves-2.md +4 −0
  • internal/provision/plan14_root_reads_test.go +5 −2
  • internal/provision/self_serve_moves2_census_test.go +28 −0
  • internal/provision/testdata/plan14-root-reads-self-serve-moves-2.tsv +16 −1
diff --git a/docs/superpowers/notes/census-proposal-self-serve-moves-2.md b/docs/superpowers/notes/census-proposal-self-serve-moves-2.md
index 3ca36f0b9..3b765501f 100644
--- a/docs/superpowers/notes/census-proposal-self-serve-moves-2.md
+++ b/docs/superpowers/notes/census-proposal-self-serve-moves-2.md
@@ -17,3 +17,7 @@ Task 6 (the boxes' reports: participant identity, the lane, the source precheck,
In the record-write inventory Task 6 adds no record write and makes none raw. The box's new report writers (the lane, precheck, ready, staged and reverting reports) are new write shapes of an existing unit: every one goes through `putOfflineReport`, which stamps the box's identity and calls `writeOfflineReport`, unchanged (a nonrecord `PutReplace` under `control/offline-moves/<host>/<id>/<role>/<box>.json`, never a record key), so the census finds no new write unit for them. Three units are re-pinned: `movesWorker.offlineLand` and `movesWorker.offlineKeepStop` stay record-writers (`SetRecordMove` with `OfflineLandedBy` and `OfflineSealedBy`, receipts `Receipt{}`, unchanged) and only write their reports through `putOfflineReport`; `movesWorker.offlineTakeSeal` stays nonrecord (the archive, timers and env-report objects in the target bucket) and adds `FinalCopiedBytes` to the seal. `lease.MirrorPrefixKeep` is no longer a write site (it is `MirrorPrefixKeepObserved` with no observer), and `MirrorPrefixKeepObserved` takes its place as versioned-transport (`sel:CopyVersioned`), its copies, deletes and receipts exactly MirrorPrefixKeep's.
Task 6 fix round 1 re-pins five of Task 6's root-read rows in place, with the basis extended: `sourceReport` and `offlineTakeSeal` name the lazily resolved instance id, `measureFiles` returns its budget error, `hostFacts` gives the walks their own budget and reports a host it never measured as not known, and `selfServeStatusProbes` collects the per-host facts only when `CARLOS_SELF_SERVE_MOVES=offline` is in the box's environment or the box takes part in a queued or staging move. `armMovesPass` keeps its B,C authority with a new digest (it sets the lazy resolver). No read site, class or task is added. The seal moves; the internal/host envelope is re-pinned in place. In the record-write inventory `offlineTakeSeal` is re-pinned (nonrecord, unchanged writes).
+
+Task 10a (the exported end-to-end bridge) moves the offline move tests' two-box world out of their `_test.go` files into `internal/host/e2e_bridge.go`, an untagged file of package host, and adds the exported bridge (`E2E`, `NewE2E`, `BoxHandle`) after it, so that the e2e-tagged witnesses in `internal/e2e/selfserve` can import it. No production code path calls the file; it is linked into the agent as dead code, as the plan states and accepts. No production unit changes, and no root read class or task is added beyond accepted-legacy. In the root-read overlay seven units of the file are new, each frozen accepted-legacy under `rev3=PROPOSED-self-serve-moves-2` with a "tests only" basis like leasetest's: `offWorld.box` (`registry.Open` in the test's temporary directory), `offBox.row` and `sealWorld.dbPath` (one row of the test box's own registry), `sealWorld.instance` (the test source's row, timers, files and live link, all under the test's directories), `sealWorld.writeRows` (the test instance's SQLite database, replicated to the loopback fake data bucket), `withAgentEnv` (the agent variables swapped around the launch composer, which takes the route) and `E2E.status` (`Registry.List` of the test box's registry, handed to `selfServeStatusProbes` and `statusTick` as `statusLoop` does). The seal moves to `a9788c37…`; the internal/host envelope is refreshed in place in its Task 6 row. One consequence for an earlier ruling: leasetest's `NewS3Server` row says "imported by no production package". The bridge now imports `internal/lease/leasetest` into package host, so that sentence no longer holds literally. The S3 fixture is reachable only through the bridge, which no production path calls, and its row is not changed here.
+
+In the record-write inventory Task 10a adds six units of `e2e_bridge.go`, none raw. `offWorld.create` and `offWorld.createAt` are record-writers (`key:CreateRecord`, create-only, the fixture's one instance record; `createLifetime` writes the host's incarnation slot through `WriteHostIncarnation` first and then calls `createAt`). `newTwoBoxWorld` is nonrecord (`sel:Put`): its only direct write is the account manifest, create-only when absent. `landWorld.bundle` is nonrecord (`sel:PutReplace`): the app's config bundle under `appconfig.Key`. `sealWorld.arm` is testsupport (`sel:Put`): its carry stand-in writes `build-state.json` into the loopback fake data bucket's model, not the deployment store. `const#1` (the seal world's constants) is a reference (`lit:instances`): `sealPrefix`, the data buckets' hibernate prefix, never a record key. The bridge reads no instance record, so `TestNoUnjudgedRecordReads` has nothing new to judge.
diff --git a/internal/provision/plan14_root_reads_test.go b/internal/provision/plan14_root_reads_test.go
index 89dc38659..509fd2a69 100644
--- a/internal/provision/plan14_root_reads_test.go
+++ b/internal/provision/plan14_root_reads_test.go
@@ -1317,8 +1317,11 @@ func TestPlan14RootReadCensus(t *testing.T) {
// identity, armOffline, statusLoop and CollectBox), which moves it once
// more. Its fix round 1 (the lazy instance id, the walks' budget and the
// tick's in-play rule) re-pins five of its rows in place, which moves it
- // again.
- seal = "e02822ca7770fab72cdc984930c7631600f06f252f1235edc402808474dab0c0"
+ // again. Task 10a (the exported end-to-end bridge) adds seven
+ // accepted-legacy units of internal/host/e2e_bridge.go, the offline move
+ // tests' world moved out of their _test.go files, tests only, which moves
+ // it once more.
+ seal = "a9788c3764aa1dbd4a7def848697444f6e5db57862b222f1bc80c71903c2d015"
errs := append(compareRootReads(got, inv), checkRootReadLegacy(inv, seal)...)
errs = append(errs, checkRootReadDeclarations(got, inv)...)
if len(errs) > 0 {
diff --git a/internal/provision/self_serve_moves2_census_test.go b/internal/provision/self_serve_moves2_census_test.go
index e1ba3808a..22aa07859 100644
--- a/internal/provision/self_serve_moves2_census_test.go
+++ b/internal/provision/self_serve_moves2_census_test.go
@@ -92,6 +92,27 @@ package provision
// - lease/mirror.go:MirrorPrefixKeep is no longer a write site (it is
// MirrorPrefixKeepObserved with no observer); MirrorPrefixKeepObserved
// takes its place as versioned-transport, its writes MirrorPrefixKeep's.
+//
+// Task 10a (the exported end-to-end bridge): the offline move tests'
+// two-box world moves out of their _test.go files into
+// internal/host/e2e_bridge.go, an untagged file of package host that no
+// production code path calls, so its write sites enter the census. Six
+// units are added, none raw; every record write is the typed provision API.
+// - e2e_bridge.go:offWorld.create and offWorld.createAt are added,
+// record-writers (key:CreateRecord): the fixture instance's record,
+// create-only, at the home placement (createAt at a given incarnation;
+// createLifetime writes the slot through WriteHostIncarnation first).
+// - e2e_bridge.go:newTwoBoxWorld is added, nonrecord (sel:Put): its only
+// direct write is the account manifest accounts/<sqid>/account.json,
+// create-only when absent.
+// - e2e_bridge.go:landWorld.bundle is added, nonrecord (sel:PutReplace):
+// the app's config bundle (appconfig.Key), never a record key.
+// - e2e_bridge.go:sealWorld.arm is added, testsupport (sel:Put): its
+// carry stand-in writes build-state.json into the loopback fake data
+// bucket's model (leasetest.VersionedBucket.Put), not the deployment
+// store.
+// - e2e_bridge.go:const#1 is added, reference (lit:instances): sealPrefix,
+// the data buckets' hibernate prefix, never a record key or prefix.
func plan14SelfServeMoves2WriteCensusInventory() []censusEntry {
removed := []struct{ file, unit string }{
{"internal/console/apiinstancemove.go", "Server.handleAPIInstanceMoveRequest"},
@@ -124,6 +145,13 @@ func plan14SelfServeMoves2WriteCensusInventory() []censusEntry {
{"internal/host/movesoffline_seal.go", "movesWorker.offlineKeepStop", "record-writer", "key:SetRecordMove", "2d2532c60ceb4bed176f4afa16d1bba2e312da4c1df87d609dfbdbd2f4332082"},
{"internal/host/movesoffline_seal.go", "movesWorker.offlineTakeSeal", "nonrecord", "sel:Put", "b6c3ab647f9ad8def7bc745e0781d12e4c079f24053fb53ad9a3f5053d20cc63"},
{"internal/lease/mirror.go", "MirrorPrefixKeepObserved", "versioned-transport", "sel:CopyVersioned", "487ecbda5a65e1306f4fd65eaeb670a4890cbe7efb27457b7401efd9ff974ddc"},
+ // Task 10a.
+ {"internal/host/e2e_bridge.go", "offWorld.create", "record-writer", "key:CreateRecord", "e7bfae5639a85d12debb1b1b62deade5fa539caebfbed43662ce68e949bc01f6"},
+ {"internal/host/e2e_bridge.go", "offWorld.createAt", "record-writer", "key:CreateRecord", "dc6568b86e8ca79dd3476d3ce1cf732c9aa5cc21230d0d4fed1f34eba47557f9"},
+ {"internal/host/e2e_bridge.go", "newTwoBoxWorld", "nonrecord", "sel:Put", "a852fed6e8b05bc264660fc613e1a4b3b7011dc8dfe6945596f008f05a699274"},
+ {"internal/host/e2e_bridge.go", "landWorld.bundle", "nonrecord", "sel:PutReplace", "12709f3adcf8026a89c1371d6d9002732667ffa16954790a1765d80b45387022"},
+ {"internal/host/e2e_bridge.go", "sealWorld.arm", "testsupport", "sel:Put", "501199f1f33a0539bb0e97782f87f7e8fd8b2fe345530881670e6cfb0423709f"},
+ {"internal/host/e2e_bridge.go", "const#1", "reference", "lit:instances", "801b1d752e6aa7434f539af6ee6e7e2d921009c87c9a1fe964ab95bbdde9ec79"},
}
entries := plan14SelfServeMoves1WriteCensusInventory()
for _, r := range removed {
diff --git a/internal/provision/testdata/plan14-root-reads-self-serve-moves-2.tsv b/internal/provision/testdata/plan14-root-reads-self-serve-moves-2.tsv
index 58bd3ce8a..1af136b05 100644
--- a/internal/provision/testdata/plan14-root-reads-self-serve-moves-2.tsv
+++ b/internal/provision/testdata/plan14-root-reads-self-serve-moves-2.tsv
@@ -126,9 +126,24 @@ internal/host/movespass.go armOffline legacy accepted-legacy accepted-legacy;rev
internal/host/probes.go stagePathActive legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-input (J4, as configPathActive): systemctl is-active carlos-stage.path for the precheck's and the ready report's stage-path fact; self-serve moves 2 Task 6 file:Command@42 f7cbe0e2ba971d201f8fc7111eb4cebac9c9bae14cc826366c06b9e8bd3eecb8
@legacy 6febdffd5ed3a46ca7c8296e2bf12d8249561e26ab6479eb672f40a96b13f0f4 internal/status/snapshot.go CollectBox legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-route; self-serve moves 2 Task 6: carries Probes.BoxID, Lanes and Hosts into the private BoxMetrics only (never the public feed); read sites unchanged, offsets moved registry:Alias@4465,registry:CertExpiresAt@3160,registry:CertExpiresAt@3396,registry:CertExpiresAt@4580,registry:DBPath@2495,registry:DBPath@2553,registry:DNSCheckedAt@3365,registry:DNSCheckedAt@4549,registry:DNSStatus@3139,registry:DNSStatus@3334,registry:DNSStatus@4519,registry:Hibernate@3853,registry:Host@2295,registry:Host@2437,registry:Host@2666,registry:Host@3280,registry:Host@3315,registry:Host@4500,registry:Kind@2473,registry:Kind@3807,registry:Platform@2152,registry:ServingVersion@2324,registry:ServingVersion@2447,registry:Socket@3988,registry:Version@2186,registry:Version@2305,whole:Route@1581,whole:RouteAlias@4362 e874e3166d22d437b4d4daf2b1dc8b2d56bc853076cc132b9b2c1d30f9a2b1be
internal/status/snapshot.go CollectBox legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-route; self-serve moves 2 Task 6: carries Probes.BoxID, Lanes and Hosts into the private BoxMetrics only (never the public feed); read sites unchanged, offsets moved registry:Alias@4465,registry:CertExpiresAt@3160,registry:CertExpiresAt@3396,registry:CertExpiresAt@4580,registry:DBPath@2495,registry:DBPath@2553,registry:DNSCheckedAt@3365,registry:DNSCheckedAt@4549,registry:DNSStatus@3139,registry:DNSStatus@3334,registry:DNSStatus@4519,registry:Hibernate@3853,registry:Host@2295,registry:Host@2437,registry:Host@2666,registry:Host@3280,registry:Host@3315,registry:Host@4500,registry:Kind@2473,registry:Kind@3807,registry:Platform@2152,registry:ServingVersion@2324,registry:ServingVersion@2447,registry:Socket@3988,registry:Version@2186,registry:Version@2305,whole:Route@1581,whole:RouteAlias@4362 e874e3166d22d437b4d4daf2b1dc8b2d56bc853076cc132b9b2c1d30f9a2b1be
-@coverage internal/host 8f1c08e95ae6cb5f287d7acea0bb3e7311a94f69cdbf0afd0ff4bebb21075af4
+@coverage internal/host 8d7475111d24213ca7ad4f897506f58a77d1ee25aa35a4ab6b8f4b6c9663c14f
@coverage internal/lease 7e2a4a3652f964aaf1ee32356d2538a292c66ee0aaf9e622cf087b644aeaaa61
@coverage internal/status 6bf65bf3b04fdc150e2ec35d2d0d67046cf37b7c60a9dcde1c2204b75bcf8d2b
# Task 6 fix round 1 (the import cycle internal/park's tests saw), rev3=PROPOSED-self-serve-moves-2: PlacementMatches moves into internal/regionname (park.PlacementMatches delegates to it, unchanged in behaviour) so internal/moves no longer imports internal/park; no root read is added or moved. Envelopes: internal/moves in place, internal/park and internal/regionname added.
@coverage internal/park 778a86513bc64068b93e257c09972fbc307ebe401a125a61003f3ad26a28f611
@coverage internal/regionname edcc0632066dc324b7df2d59a03bebcc0bf9e243bd0892fcddcfa633747977f4
+# Task 10a (the exported end-to-end bridge), rev3=PROPOSED-self-serve-moves-2: the offline move tests' two-box world moves out of the _test.go files into internal/host/e2e_bridge.go, an untagged file of package host, with the exported bridge (E2E) after it. Seven units of that file read root inputs, every one in the test's own temporary directories, registries and loopback buckets; each is frozen accepted-legacy beside leasetest's, tests only. No production unit changes. The internal/host envelope is refreshed in place in its Task 6 row.
+@legacy ff95fd9e8ecfa4d112499e3d823a29b61c6fc93ec547fe75afdce55f08a205b7 internal/host/e2e_bridge.go E2E.status legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=tests only (internal/host/e2e_bridge.go: the offline move tests' two-box world and the exported end-to-end bridge, called by internal/host's tests and by internal/e2e/selfserve under the e2e build tag and by no production code path; linked into the agent as dead code, stated and accepted by the plan): lists the bridge box's own registry in the test's temporary directory (Registry.List) and hands the rows to selfServeStatusProbes and statusTick, as statusLoop does; self-serve moves 2 Task 10a whole:Route@308 e581513d08cf0b6634741aa86584ed120ef78968ad667ddf2edc49c3fef3c021
+internal/host/e2e_bridge.go E2E.status legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=tests only (internal/host/e2e_bridge.go: the offline move tests' two-box world and the exported end-to-end bridge, called by internal/host's tests and by internal/e2e/selfserve under the e2e build tag and by no production code path; linked into the agent as dead code, stated and accepted by the plan): lists the bridge box's own registry in the test's temporary directory (Registry.List) and hands the rows to selfServeStatusProbes and statusTick, as statusLoop does; self-serve moves 2 Task 10a whole:Route@308 e581513d08cf0b6634741aa86584ed120ef78968ad667ddf2edc49c3fef3c021
+@legacy bc7fc8c932d216174f2db676b1f566d94d181624cd13e4c776908ac6af1c300a internal/host/e2e_bridge.go offBox.row legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=tests only (internal/host/e2e_bridge.go: the offline move tests' two-box world and the exported end-to-end bridge, called by internal/host's tests and by internal/e2e/selfserve under the e2e build tag and by no production code path; linked into the agent as dead code, stated and accepted by the plan): reads one row of the test box's own registry (Registry.Get); moved unchanged from movesoffline_test.go but for testing.TB; self-serve moves 2 Task 10a whole:Route@145 95c7619a77fc2d84c66952e74a7f04a5de8b0275d11cafd05aaf924941230a80
+internal/host/e2e_bridge.go offBox.row legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=tests only (internal/host/e2e_bridge.go: the offline move tests' two-box world and the exported end-to-end bridge, called by internal/host's tests and by internal/e2e/selfserve under the e2e build tag and by no production code path; linked into the agent as dead code, stated and accepted by the plan): reads one row of the test box's own registry (Registry.Get); moved unchanged from movesoffline_test.go but for testing.TB; self-serve moves 2 Task 10a whole:Route@145 95c7619a77fc2d84c66952e74a7f04a5de8b0275d11cafd05aaf924941230a80
+@legacy cdaee7d732a5ba5c04a82a1c9e89c9fb1245b3f105d3a41b7172e2248210b215 internal/host/e2e_bridge.go offWorld.box legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=tests only (internal/host/e2e_bridge.go: the offline move tests' two-box world and the exported end-to-end bridge, called by internal/host's tests and by internal/e2e/selfserve under the e2e build tag and by no production code path; linked into the agent as dead code, stated and accepted by the plan): opens a fresh registry in the test's temporary directory (registry.Open) for one test box; moved unchanged from movesoffline_test.go but for testing.TB; self-serve moves 2 Task 10a file:Open@227 c07455d80534d8d75d233aea2f72ceffedb4b2ebdfb70138de981fbd203bac30
+internal/host/e2e_bridge.go offWorld.box legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=tests only (internal/host/e2e_bridge.go: the offline move tests' two-box world and the exported end-to-end bridge, called by internal/host's tests and by internal/e2e/selfserve under the e2e build tag and by no production code path; linked into the agent as dead code, stated and accepted by the plan): opens a fresh registry in the test's temporary directory (registry.Open) for one test box; moved unchanged from movesoffline_test.go but for testing.TB; self-serve moves 2 Task 10a file:Open@227 c07455d80534d8d75d233aea2f72ceffedb4b2ebdfb70138de981fbd203bac30
+@legacy 235f1683fefe83b34ddefde51edb81ebdc1265560ea85152e491269ecfd719cc internal/host/e2e_bridge.go sealWorld.dbPath legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=tests only (internal/host/e2e_bridge.go: the offline move tests' two-box world and the exported end-to-end bridge, called by internal/host's tests and by internal/e2e/selfserve under the e2e build tag and by no production code path; linked into the agent as dead code, stated and accepted by the plan): the database path on the test source's own registry row; moved unchanged from movesoffline_seal_test.go but for testing.TB; self-serve moves 2 Task 10a registry:DBPath@135,whole:Route@89 5fba968d543afb9c9b7671bfd37f17071a5254d747d17897af3e2e99f124b031
+internal/host/e2e_bridge.go sealWorld.dbPath legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=tests only (internal/host/e2e_bridge.go: the offline move tests' two-box world and the exported end-to-end bridge, called by internal/host's tests and by internal/e2e/selfserve under the e2e build tag and by no production code path; linked into the agent as dead code, stated and accepted by the plan): the database path on the test source's own registry row; moved unchanged from movesoffline_seal_test.go but for testing.TB; self-serve moves 2 Task 10a registry:DBPath@135,whole:Route@89 5fba968d543afb9c9b7671bfd37f17071a5254d747d17897af3e2e99f124b031
+@legacy a27bd5b1b34952659653d86c2fba3e4c4c0cb6399953c6758034e2259fd46344 internal/host/e2e_bridge.go sealWorld.instance legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=tests only (internal/host/e2e_bridge.go: the offline move tests' two-box world and the exported end-to-end bridge, called by internal/host's tests and by internal/e2e/selfserve under the e2e build tag and by no production code path; linked into the agent as dead code, stated and accepted by the plan): gives the test source a served instance: its own registry row, replication rung, next due and timers, files and env files under the test's data directory and a live link under its opt directory; moved unchanged from movesoffline_seal_test.go but for testing.TB; self-serve moves 2 Task 10a registry:DBPath@1162,registry:HoldOp@115,whole:Route@102,whole:Route@164,whole:Timer@752 65cf525b9457a9d65efec26a6ba13a06b7f9c7006e0ce85511c31fb919522e25
+internal/host/e2e_bridge.go sealWorld.instance legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=tests only (internal/host/e2e_bridge.go: the offline move tests' two-box world and the exported end-to-end bridge, called by internal/host's tests and by internal/e2e/selfserve under the e2e build tag and by no production code path; linked into the agent as dead code, stated and accepted by the plan): gives the test source a served instance: its own registry row, replication rung, next due and timers, files and env files under the test's data directory and a live link under its opt directory; moved unchanged from movesoffline_seal_test.go but for testing.TB; self-serve moves 2 Task 10a registry:DBPath@1162,registry:HoldOp@115,whole:Route@102,whole:Route@164,whole:Timer@752 65cf525b9457a9d65efec26a6ba13a06b7f9c7006e0ce85511c31fb919522e25
+@legacy f88ac88e429c086a6dafc20cca13f9d7935829d49b4a49f2fa006d6dc100b9ed internal/host/e2e_bridge.go sealWorld.writeRows legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=tests only (internal/host/e2e_bridge.go: the offline move tests' two-box world and the exported end-to-end bridge, called by internal/host's tests and by internal/e2e/selfserve under the e2e build tag and by no production code path; linked into the agent as dead code, stated and accepted by the plan): opens the test instance's SQLite database in the test's temporary directory, inserts rows and replicates them to the loopback fake data bucket (lease.ReplicateWithLease); moved unchanged from movesoffline_seal_test.go but for testing.TB; self-serve moves 2 Task 10a file:Exec@326,file:Exec@419,file:Open@124 6d3fc5f98e93d64254385a585d0999252d2ec35e36c965dd5d903b0e490a8a35
+internal/host/e2e_bridge.go sealWorld.writeRows legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=tests only (internal/host/e2e_bridge.go: the offline move tests' two-box world and the exported end-to-end bridge, called by internal/host's tests and by internal/e2e/selfserve under the e2e build tag and by no production code path; linked into the agent as dead code, stated and accepted by the plan): opens the test instance's SQLite database in the test's temporary directory, inserts rows and replicates them to the loopback fake data bucket (lease.ReplicateWithLease); moved unchanged from movesoffline_seal_test.go but for testing.TB; self-serve moves 2 Task 10a file:Exec@326,file:Exec@419,file:Open@124 6d3fc5f98e93d64254385a585d0999252d2ec35e36c965dd5d903b0e490a8a35
+@legacy fdefb1cda1e8d4e882e51ed7db32b601924ca8f7d01c775dabdb2e483208b0ba internal/host/e2e_bridge.go withAgentEnv legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=tests only (internal/host/e2e_bridge.go: the offline move tests' two-box world and the exported end-to-end bridge, called by internal/host's tests and by internal/e2e/selfserve under the e2e build tag and by no production code path; linked into the agent as dead code, stated and accepted by the plan): swaps one test box's agent variables into the process environment around the launch composer, which takes the route; moved unchanged from movesoffline_e2e_test.go; self-serve moves 2 Task 10a whole:Route@663 4ed1f418dbfe500319a3ea2f2c34b56f295c60c3f3599f2274902112decb1170
+internal/host/e2e_bridge.go withAgentEnv legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=tests only (internal/host/e2e_bridge.go: the offline move tests' two-box world and the exported end-to-end bridge, called by internal/host's tests and by internal/e2e/selfserve under the e2e build tag and by no production code path; linked into the agent as dead code, stated and accepted by the plan): swaps one test box's agent variables into the process environment around the launch composer, which takes the route; moved unchanged from movesoffline_e2e_test.go; self-serve moves 2 Task 10a whole:Route@663 4ed1f418dbfe500319a3ea2f2c34b56f295c60c3f3599f2274902112decb1170