| index 9c800855c..550e23e15 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 |
| @@ -87,8 +87,8 @@ internal/host/movesoffline.go movesWorker.offlineSourcePark legacy accepted-lega |
| internal/host/movesoffline.go movesWorker.offlineSourceRevert legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-route (J1, census-ruling-moves-offline-precopy's disposition); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos), on abort: that body (offlineUnstage before the reverted report, unchanged), with the release now releaseObserved under reconcileMu and the host's hold lock: the record is observed afresh through the box's lifetime judge (a nil judge on a claims-on box reads the record only), and the row is released through moveCfg.ReleaseHoldSeq (registry ReleaseHoldSeq) only while that record still carries this move at offline-reverting, with that record's incarnation and move.seq; otherwise the pass skips the release and reports nothing, logged; the row reads (the hold op of the route offlineRow returns) unchanged, offsets moved; self-serve moves 1 Task 7; fix round 1: the release is offlineRelease, which with no judge (claims on) is today's moveCfg.ReleaseHold under the move's op, the row's pair untouched, and with a judge releaseObserved as above; self-serve moves 2 Task 6: writes its report through putOfflineReport, which stamps the box's identity; read sites unchanged, offsets moved registry:HoldOp@747,whole:Route@1028,whole:Route@734 b6451a1b6f08a4ac4fa5fe0fe6cd51ae97bce891082e84d82250416accabfe2c |
| @legacy 29b8dcd4884b8c29af3c3778bc983cb150b96368462192f7384845635806f5ed internal/host/movesoffline.go movesWorker.offlineSourceStop legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-route (J1, as main's moves units); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, installs this move's fence, reads the row and rewrites the source report every pass; self-serve moves 2 Task 6: on a self-serve move in offline-stopping it hands the row it read to startStrays (the start's removal of empty stray directories once the stop holds), which adds one site naming the same row; the report goes through putOfflineReport whole:Route@274,whole:Route@450 7fa40437ec7a0d5d843e408f76efd7686ee097d6aa8a8ec3ed94d2d5a539dad5 |
| internal/host/movesoffline.go movesWorker.offlineSourceStop legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-route (J1, as main's moves units); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, installs this move's fence, reads the row and rewrites the source report every pass; self-serve moves 2 Task 6: on a self-serve move in offline-stopping it hands the row it read to startStrays (the start's removal of empty stray directories once the stop holds), which adds one site naming the same row; the report goes through putOfflineReport whole:Route@274,whole:Route@450 7fa40437ec7a0d5d843e408f76efd7686ee097d6aa8a8ec3ed94d2d5a539dad5 |
| -@legacy dc23ce88e338cbc9638b7a19f22c0a3283c08d8e8f7194d518ff26534105c279 internal/host/movesoffline.go movesWorker.sourceReport legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-route (J1, as main's moves units); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, reads the row for the source report's evidence; self-serve moves 2 Task 6: also names the row's layout (offlineLayout) and the box's identity on every source report; one site added, the same row whole:Route@198,whole:Route@461,whole:Route@520,whole:Route@752 1d99bb982d835433ca11600d92c3931e3e971d8f10fd709a689617309d02792d |
| -internal/host/movesoffline.go movesWorker.sourceReport legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-route (J1, as main's moves units); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, reads the row for the source report's evidence; self-serve moves 2 Task 6: also names the row's layout (offlineLayout) and the box's identity on every source report; one site added, the same row whole:Route@198,whole:Route@461,whole:Route@520,whole:Route@752 1d99bb982d835433ca11600d92c3931e3e971d8f10fd709a689617309d02792d |
| +@legacy 6e8dc4ce8f8e75473f4a58457ec8e26d241ee136cc2b737360ca5e43a54dcf92 internal/host/movesoffline.go movesWorker.sourceReport legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-route (J1, as main's moves units); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, reads the row for the source report's evidence; self-serve moves 2 Task 6: also names the row's layout (offlineLayout) and the box's identity on every source report; one site added, the same row; fix round 1: the identity is the lazily resolved instance id (moveCfg.instance); read sites unchanged whole:Route@198,whole:Route@461,whole:Route@520,whole:Route@752 f24034064f5a3a8b6421cf10f3f083c5f0231aaed0cb3a9414781382afe70c01 |
| +internal/host/movesoffline.go movesWorker.sourceReport legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-route (J1, as main's moves units); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, reads the row for the source report's evidence; self-serve moves 2 Task 6: also names the row's layout (offlineLayout) and the box's identity on every source report; one site added, the same row; fix round 1: the identity is the lazily resolved instance id (moveCfg.instance); read sites unchanged whole:Route@198,whole:Route@461,whole:Route@520,whole:Route@752 f24034064f5a3a8b6421cf10f3f083c5f0231aaed0cb3a9414781382afe70c01 |
| @legacy ebee7c64759243836aaad32a2ce2332942fcd0383993f161f9d60589f2a38eca internal/host/movesoffline.go movesWorker.startStrays legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=route-and-input (J1,J4, as main's sourceFinal.run); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, reads this box's last source report from the bucket and, only once the stop holds on a self-serve move in offline-stopping, removeEmptyStrays over the row it is handed; reads only the row; self-serve moves 2 Task 6 whole:Route@683 7448fc0d4b9d94f8e1f16f28a5a8b2eef66c86f03aba740a63a2a7a51809d20c |
| internal/host/movesoffline.go movesWorker.startStrays legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=route-and-input (J1,J4, as main's sourceFinal.run); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, reads this box's last source report from the bucket and, only once the stop holds on a self-serve move in offline-stopping, removeEmptyStrays over the row it is handed; reads only the row; self-serve moves 2 Task 6 whole:Route@683 7448fc0d4b9d94f8e1f16f28a5a8b2eef66c86f03aba740a63a2a7a51809d20c |
| @legacy 239d2d5cc0395d6d53530b38c5c6249330885e825c23a9273058e6488b18ad5d internal/host/movesoffline_land.go absentFact legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-input (J4, as the moves units' isDir and lexists); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, an Lstat that never follows a link, of each instance path the target's ready report says must be absent; self-serve moves 2 Task 6 file:Lstat@51 45a46c84fc13bee75095b84f7aa78251b026829653ec5f5c1e2d6cee71ab9b8f |
| @@ -103,29 +103,29 @@ internal/host/movesoffline_land.go movesWorker.offlineTargetReady legacy accepte |
| internal/host/movesoffline_land.go movesWorker.offlineTargetRevert legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-route (J1, as main's moves units); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, parks what the move extracted and deletes only a row this move holds; self-serve moves 2 Task 6: writes its report through putOfflineReport, which stamps the box's identity; read sites unchanged, offsets moved registry:HoldOp@1572,registry:HoldOp@289,registry:HoldOp@627,registry:Status@326,registry:Status@616,whole:Route@1493,whole:Route@1559,whole:Route@1965,whole:Route@276,whole:Route@341 344f836f52dc43dd254c163c400aea7ffbbfc2fa7fbde8861608fea45acb356e |
| @legacy 688953d7febdf5616edb4350a1f00227b41333d78138da8d7b9a5328b46c47ee internal/host/movesoffline_land.go parkDirFact legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-input (J4, as the moves units' isDir and lexists); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, lists /data/.offline-moves/<host> for the ready report: absent, or only other moves' directories; self-serve moves 2 Task 6 file:ReadDir@60 d7ec020ce59795999aedca6ec715b0aa6b2190225b21b7145c330f7447a1389d |
| internal/host/movesoffline_land.go parkDirFact legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-input (J4, as the moves units' isDir and lexists); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, lists /data/.offline-moves/<host> for the ready report: absent, or only other moves' directories; self-serve moves 2 Task 6 file:ReadDir@60 d7ec020ce59795999aedca6ec715b0aa6b2190225b21b7145c330f7447a1389d |
| -@legacy d0e36948201bc700e1adfe2005cfb097702c1b1cb76887e902b6ff315d903fa7 internal/host/movesoffline_reports.go measureFiles legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-input (J4, as archive.Build's walk); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, Lstat of the env file and the files directory and a WalkDir that never follows a link, counting regular files as the offline archive would, bounded by a time budget and twice the cap; reads only; self-serve moves 2 Task 6 file:Lstat@449,file:Lstat@716,file:WalkDir@1018 08b3f3cdd00eb65e2aba6f9c0f947e1a146746fdb9f5c0fe353aaf5b62f2a96f |
| -internal/host/movesoffline_reports.go measureFiles legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-input (J4, as archive.Build's walk); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, Lstat of the env file and the files directory and a WalkDir that never follows a link, counting regular files as the offline archive would, bounded by a time budget and twice the cap; reads only; self-serve moves 2 Task 6 file:Lstat@449,file:Lstat@716,file:WalkDir@1018 08b3f3cdd00eb65e2aba6f9c0f947e1a146746fdb9f5c0fe353aaf5b62f2a96f |
| -@legacy ce0c7b1de542406ca21165cdb0a3d26c20670d957cd22675b7dc941663710d32 internal/host/movesoffline_reports.go movesWorker.hostFacts legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=route-and-input (J1,J4, as main's sourceFinal.run); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, the status tick's per-host block: the instance rows the tick listed (their kind, platform mark, host and incarnation), one listing of the box's replica prefix, offlineFilesOf and measureFiles per row; reads only; self-serve moves 2 Task 6 registry:Host@1530,registry:Host@310,registry:Host@746,registry:Host@986,registry:Incarnation@665,registry:Kind@243,registry:Platform@228,whole:Route@214,whole:Route@339,whole:Route@353,whole:Route@359,whole:Route@374,whole:Route@569,whole:Route@596,whole:Route@996 08f912e24fe36accf84bb3d14757c8f6651616e60b42c4f9f3abf56746a03dda |
| -internal/host/movesoffline_reports.go movesWorker.hostFacts legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=route-and-input (J1,J4, as main's sourceFinal.run); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, the status tick's per-host block: the instance rows the tick listed (their kind, platform mark, host and incarnation), one listing of the box's replica prefix, offlineFilesOf and measureFiles per row; reads only; self-serve moves 2 Task 6 registry:Host@1530,registry:Host@310,registry:Host@746,registry:Host@986,registry:Incarnation@665,registry:Kind@243,registry:Platform@228,whole:Route@214,whole:Route@339,whole:Route@353,whole:Route@359,whole:Route@374,whole:Route@569,whole:Route@596,whole:Route@996 08f912e24fe36accf84bb3d14757c8f6651616e60b42c4f9f3abf56746a03dda |
| +@legacy 66f461462bce033d2a2c0dee9c7e89151e1b422e05ad4b96289020ae7e7ba65b internal/host/movesoffline_reports.go measureFiles legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-input (J4, as archive.Build's walk); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, Lstat of the env file and the files directory and a WalkDir that never follows a link, counting regular files as the offline archive would, bounded by a time budget and twice the cap; reads only; self-serve moves 2 Task 6; fix round 1: a walk the budget cut returns errMeasureBudget; read sites unchanged file:Lstat@449,file:Lstat@716,file:WalkDir@1018 86250ed7934c7d5ea4689c5f82296cb782a8afcee54bb5957a57f7736bd26d32 |
| +internal/host/movesoffline_reports.go measureFiles legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-input (J4, as archive.Build's walk); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, Lstat of the env file and the files directory and a WalkDir that never follows a link, counting regular files as the offline archive would, bounded by a time budget and twice the cap; reads only; self-serve moves 2 Task 6; fix round 1: a walk the budget cut returns errMeasureBudget; read sites unchanged file:Lstat@449,file:Lstat@716,file:WalkDir@1018 86250ed7934c7d5ea4689c5f82296cb782a8afcee54bb5957a57f7736bd26d32 |
| +@legacy 5502c6cc9f0c1e678af55e953a0552f21bf7fb6bcbac5cbdf4c2b7de18f50a4b internal/host/movesoffline_reports.go movesWorker.hostFacts legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=route-and-input (J1,J4, as main's sourceFinal.run); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, the status tick's per-host block: the instance rows the tick listed (their kind, platform mark, host and incarnation), one listing of the box's replica prefix, offlineFilesOf and measureFiles per row; reads only; self-serve moves 2 Task 6; fix round 1: the walks share a budget from after the listing, and a host the budget never reaches or cuts is not known; read sites unchanged, offsets moved registry:Host@1182,registry:Host@1906,registry:Host@310,registry:Host@942,registry:Incarnation@861,registry:Kind@243,registry:Platform@228,whole:Route@1192,whole:Route@214,whole:Route@339,whole:Route@353,whole:Route@359,whole:Route@374,whole:Route@765,whole:Route@792 062e4a9f8d4afb9629668a057b7f806b472225385981e8d5164c8a3b60738860 |
| +internal/host/movesoffline_reports.go movesWorker.hostFacts legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=route-and-input (J1,J4, as main's sourceFinal.run); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, the status tick's per-host block: the instance rows the tick listed (their kind, platform mark, host and incarnation), one listing of the box's replica prefix, offlineFilesOf and measureFiles per row; reads only; self-serve moves 2 Task 6; fix round 1: the walks share a budget from after the listing, and a host the budget never reaches or cuts is not known; read sites unchanged, offsets moved registry:Host@1182,registry:Host@1906,registry:Host@310,registry:Host@942,registry:Incarnation@861,registry:Kind@243,registry:Platform@228,whole:Route@1192,whole:Route@214,whole:Route@339,whole:Route@353,whole:Route@359,whole:Route@374,whole:Route@765,whole:Route@792 062e4a9f8d4afb9629668a057b7f806b472225385981e8d5164c8a3b60738860 |
| @legacy 37448c3d940f9755313625d922295bccab3c4c30d112b0c7adaaa00a92251d1f internal/host/movesoffline_reports.go movesWorker.offlineLayout legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-route (J1, as main's moves units); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, the row's layout (provision.NestedPaths) as a report names it; self-serve moves 2 Task 6 whole:Route@120,whole:Route@69 d3996dd93a2f0c6c77b9e045519f95fd86c6f60398cc8b0ce935914998d62626 |
| internal/host/movesoffline_reports.go movesWorker.offlineLayout legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-route (J1, as main's moves units); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, the row's layout (provision.NestedPaths) as a report names it; self-serve moves 2 Task 6 whole:Route@120,whole:Route@69 d3996dd93a2f0c6c77b9e045519f95fd86c6f60398cc8b0ce935914998d62626 |
| @legacy 11bd6b2828eeebd0e06ba39fea91b92bfcb3a7e66218d0fb09db3eb5d746aa39 internal/host/movesoffline_reports.go movesWorker.offlineSourcePrecheck legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=route-and-input (J1,J4, as main's sourceFinal.run); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, the source's precheck: the row, offlineFilesOf, a dry run of archive.Build into io.Discard over the seal's own selection, strayEntries and the live build; reads only; self-serve moves 2 Task 6 whole:Route@290,whole:Route@399 65cf1ceb9885ccbe69c5ffdc85739f58486fbb9fd89b7ee6a1e02c193c61148a |
| internal/host/movesoffline_reports.go movesWorker.offlineSourcePrecheck legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=route-and-input (J1,J4, as main's sourceFinal.run); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, the source's precheck: the row, offlineFilesOf, a dry run of archive.Build into io.Discard over the seal's own selection, strayEntries and the live build; reads only; self-serve moves 2 Task 6 whole:Route@290,whole:Route@399 65cf1ceb9885ccbe69c5ffdc85739f58486fbb9fd89b7ee6a1e02c193c61148a |
| @legacy 71381ac41057aaad02978f756c3746def72cbb6d69f21c301c0f0e9f3aff2afe internal/host/movesoffline_reports.go movesWorker.removeEmptyStrays legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=route-and-input (J1,J4, as main's sourceFinal.run); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, offlineFilesOf over the row, an Lstat and a ReadDir of each stray entry, and os.Remove of a stray that is an empty directory, only at a self-serve move's start once the stop holds; nothing else is removed; self-serve moves 2 Task 6 file:Lstat@285,file:ReadDir@413,whole:Route@177 7d310348a3df10a4820b9019ebb4d3bf77b7f946f8f4f389ad5c916c87d59366 |
| internal/host/movesoffline_reports.go movesWorker.removeEmptyStrays legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=route-and-input (J1,J4, as main's sourceFinal.run); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, offlineFilesOf over the row, an Lstat and a ReadDir of each stray entry, and os.Remove of a stray that is an empty directory, only at a self-serve move's start once the stop holds; nothing else is removed; self-serve moves 2 Task 6 file:Lstat@285,file:ReadDir@413,whole:Route@177 7d310348a3df10a4820b9019ebb4d3bf77b7f946f8f4f389ad5c916c87d59366 |
| -@legacy 97980304c1f251b54567a42965b567dbe00db45e3fae9f1bc5375ec5fe78ab60 internal/host/movesoffline_reports.go selfServeStatusProbes legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-route (J1, as statusLoop); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, hands the rows the status tick listed to hostFacts; self-serve moves 2 Task 6 whole:Route@256 8133195827f7c500c423e24ba4d5827c21b7a0e9287ca2ddadd29eb056c725ed |
| -internal/host/movesoffline_reports.go selfServeStatusProbes legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-route (J1, as statusLoop); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, hands the rows the status tick listed to hostFacts; self-serve moves 2 Task 6 whole:Route@256 8133195827f7c500c423e24ba4d5827c21b7a0e9287ca2ddadd29eb056c725ed |
| +@legacy c94e0181d9aee416414add6b2c7abad2092d4863eb3c2e8d7d614b5ea45208c9 internal/host/movesoffline_reports.go selfServeStatusProbes legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-route (J1, as statusLoop); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, hands the rows the status tick listed to hostFacts; self-serve moves 2 Task 6; fix round 1: the per-host facts only when CARLOS_SELF_SERVE_MOVES=offline is in the box environment or the box takes part in a queued or staging move (selfServeInPlay); the instance id published always whole:Route@363 5702277c0ae2491be6b2e28bdab5ac9d436f6c3ce9ebccebbc538d2bec8917e3 |
| +internal/host/movesoffline_reports.go selfServeStatusProbes legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-route (J1, as statusLoop); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, hands the rows the status tick listed to hostFacts; self-serve moves 2 Task 6; fix round 1: the per-host facts only when CARLOS_SELF_SERVE_MOVES=offline is in the box environment or the box takes part in a queued or staging move (selfServeInPlay); the instance id published always whole:Route@363 5702277c0ae2491be6b2e28bdab5ac9d436f6c3ce9ebccebbc538d2bec8917e3 |
| @legacy a0c0ae52b14243b2462e7a22cdd812944a91c36e02f4d1369f9c6a4d4ac75471 internal/host/movesoffline_reports.go strayEntry legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-input (J4, as the moves units' isDir and lexists); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, an Lstat and, for a directory, a WalkDir that never follows a link, sizing one stray entry beside the files directory; self-serve moves 2 Task 6 file:Lstat@89,file:WalkDir@433 75354250e2c6ff0087289be4b0592f0f6f1bfc558824afd7849f6ed6306b7cdc |
| internal/host/movesoffline_reports.go strayEntry legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-input (J4, as the moves units' isDir and lexists); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): new, an Lstat and, for a directory, a WalkDir that never follows a link, sizing one stray entry beside the files directory; self-serve moves 2 Task 6 file:Lstat@89,file:WalkDir@433 75354250e2c6ff0087289be4b0592f0f6f1bfc558824afd7849f6ed6306b7cdc |
| -@legacy f3436e6ba616f637cc3f6d10dcede79f587b091bacef2cfc0f8d719d3124b1f0 internal/host/movesoffline_seal.go movesWorker.offlineTakeSeal legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-route (J1, census-ruling-moves-offline's disposition); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): census-ruling-moves-offline's body (seal steps 1 to 9 from the row: database path, next due, replication rung and timer rows, read for the seal) with one refusal before the mirror: a staged move (staged_at set) is sealed only into the staging bucket and region the stage fixed on the record (move.stage_bucket, move.stage_region), a comparison of record and edges-file fields that reads and writes nothing new. Read sites unchanged; every offset after the check moved by 487 bytes; self-serve moves 2 Task 6: the seal also records FinalCopiedBytes (the final round's copied bytes) and the box's identity; read sites unchanged, offsets moved registry:DBPath@2621,registry:NextDue@12050,registry:NextDue@12962,registry:Replication@11955,registry:Replication@12937,whole:Route@10690,whole:Route@1713,whole:Route@2682,whole:Route@3463,whole:Route@5452,whole:Route@8226,whole:Timer@9377,whole:Timer@9442,whole:Timer@9448,whole:Timer@9707,whole:Timer@9806 cb3fed4feb67588e0b66aaa6ce13b5dc0e01f579b3d3767a312052e9998bc754 |
| -internal/host/movesoffline_seal.go movesWorker.offlineTakeSeal legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-route (J1, census-ruling-moves-offline's disposition); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): census-ruling-moves-offline's body (seal steps 1 to 9 from the row: database path, next due, replication rung and timer rows, read for the seal) with one refusal before the mirror: a staged move (staged_at set) is sealed only into the staging bucket and region the stage fixed on the record (move.stage_bucket, move.stage_region), a comparison of record and edges-file fields that reads and writes nothing new. Read sites unchanged; every offset after the check moved by 487 bytes; self-serve moves 2 Task 6: the seal also records FinalCopiedBytes (the final round's copied bytes) and the box's identity; read sites unchanged, offsets moved registry:DBPath@2621,registry:NextDue@12050,registry:NextDue@12962,registry:Replication@11955,registry:Replication@12937,whole:Route@10690,whole:Route@1713,whole:Route@2682,whole:Route@3463,whole:Route@5452,whole:Route@8226,whole:Timer@9377,whole:Timer@9442,whole:Timer@9448,whole:Timer@9707,whole:Timer@9806 cb3fed4feb67588e0b66aaa6ce13b5dc0e01f579b3d3767a312052e9998bc754 |
| -internal/host/movespass.go armMovesPass authority B,C rev3=PROPOSED-self-serve-moves-2;basis=the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): arms the moves worker with the box's judge (moveCfg.Judge, copied into its offline view); read sites unchanged, offsets moved; B,C authority retained; self-serve moves 2 Task 6: also sets moveCfg.BoxID (the label) and InstanceID (cachedInstanceID, the status tick's IMDS answer) before armOffline; read sites unchanged, offsets moved; B,C authority retained file:Read@3230,registry:Provisioned@1807,whole:Route@1794 124411d4d6cd6e09f03def44f7b99241b852b350fb5cb601801508c53a2355e1 |
| +@legacy a443a0757e282f057bc226d3118343432b73d54407eedf13d0b03ee2294ab30f internal/host/movesoffline_seal.go movesWorker.offlineTakeSeal legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-route (J1, census-ruling-moves-offline's disposition); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): census-ruling-moves-offline's body (seal steps 1 to 9 from the row: database path, next due, replication rung and timer rows, read for the seal) with one refusal before the mirror: a staged move (staged_at set) is sealed only into the staging bucket and region the stage fixed on the record (move.stage_bucket, move.stage_region), a comparison of record and edges-file fields that reads and writes nothing new. Read sites unchanged; every offset after the check moved by 487 bytes; self-serve moves 2 Task 6: the seal also records FinalCopiedBytes (the final round's copied bytes) and the box's identity; read sites unchanged, offsets moved; fix round 1: the seal names the lazily resolved instance id; read sites unchanged registry:DBPath@2621,registry:NextDue@12050,registry:NextDue@12962,registry:Replication@11955,registry:Replication@12937,whole:Route@10690,whole:Route@1713,whole:Route@2682,whole:Route@3463,whole:Route@5452,whole:Route@8226,whole:Timer@9377,whole:Timer@9442,whole:Timer@9448,whole:Timer@9707,whole:Timer@9806 b6c3ab647f9ad8def7bc745e0781d12e4c079f24053fb53ad9a3f5053d20cc63 |
| +internal/host/movesoffline_seal.go movesWorker.offlineTakeSeal legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-route (J1, census-ruling-moves-offline's disposition); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): census-ruling-moves-offline's body (seal steps 1 to 9 from the row: database path, next due, replication rung and timer rows, read for the seal) with one refusal before the mirror: a staged move (staged_at set) is sealed only into the staging bucket and region the stage fixed on the record (move.stage_bucket, move.stage_region), a comparison of record and edges-file fields that reads and writes nothing new. Read sites unchanged; every offset after the check moved by 487 bytes; self-serve moves 2 Task 6: the seal also records FinalCopiedBytes (the final round's copied bytes) and the box's identity; read sites unchanged, offsets moved; fix round 1: the seal names the lazily resolved instance id; read sites unchanged registry:DBPath@2621,registry:NextDue@12050,registry:NextDue@12962,registry:Replication@11955,registry:Replication@12937,whole:Route@10690,whole:Route@1713,whole:Route@2682,whole:Route@3463,whole:Route@5452,whole:Route@8226,whole:Timer@9377,whole:Timer@9442,whole:Timer@9448,whole:Timer@9707,whole:Timer@9806 b6c3ab647f9ad8def7bc745e0781d12e4c079f24053fb53ad9a3f5053d20cc63 |
| +internal/host/movespass.go armMovesPass authority B,C rev3=PROPOSED-self-serve-moves-2;basis=the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): arms the moves worker with the box's judge (moveCfg.Judge, copied into its offline view); read sites unchanged, offsets moved; B,C authority retained; self-serve moves 2 Task 6: also sets moveCfg.BoxID (the label) and InstanceID (cachedInstanceID, the status tick's IMDS answer) before armOffline; read sites unchanged, offsets moved; B,C authority retained; fix round 1: also sets InstanceIDOf (cachedInstanceID through throttledInstanceID); read sites unchanged, offsets moved file:Read@3311,registry:Provisioned@1807,whole:Route@1794 527e57425a562148c7973df28359eb890083e05358c94239ee47a7a2e3d38fe3 |
| @legacy b13da35550effbd205bd82e0ddbae93c98ef2a79dc3d24031430d0e53c1618f9 internal/host/movespass.go armOffline legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-route (J1, as main's moves units); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): census-ruling-moves-offline's body, which also arms moveCfg.ReleaseHoldSeq (releaseHeldSeq over the registry, touching the stage-requested marker after a release that landed); closes over the registry and reads nothing itself; self-serve moves 1 Task 7; self-serve moves 2 Task 6: also arms BoxID (the label), the lane probe over lease.NewVersionedS3, DiskFree (diskBytes) and StagePathArmed (stagePathActive) whenever they are unset, so the self-serve move's lane, precheck and ready reports work with Phase 1 off; read sites unchanged, offsets moved whole:Route@2780 8f23dbe5a5479bdcdcef2d85f8bb5d7c74dd6215367bb005dd74f0da761784d9 |
| internal/host/movespass.go armOffline legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-route (J1, as main's moves units); the agent (/opt/carlos/carlos agent, carlos-edge.service, user carlos): census-ruling-moves-offline's body, which also arms moveCfg.ReleaseHoldSeq (releaseHeldSeq over the registry, touching the stage-requested marker after a release that landed); closes over the registry and reads nothing itself; self-serve moves 1 Task 7; self-serve moves 2 Task 6: also arms BoxID (the label), the lane probe over lease.NewVersionedS3, DiskFree (diskBytes) and StagePathArmed (stagePathActive) whenever they are unset, so the self-serve move's lane, precheck and ready reports work with Phase 1 off; read sites unchanged, offsets moved whole:Route@2780 8f23dbe5a5479bdcdcef2d85f8bb5d7c74dd6215367bb005dd74f0da761784d9 |
| @legacy 9048337314c86aa4b52bc63937e6eeca71771c192a579f7efb6f3c290f879940 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 |
| 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 f4067a03eba1f16e1b01f8a708de3197c8f3f58b85b15b0aeb33402e98048182 |
| +@coverage internal/host 8f1c08e95ae6cb5f287d7acea0bb3e7311a94f69cdbf0afd0ff4bebb21075af4 |
| @coverage internal/lease 7e2a4a3652f964aaf1ee32356d2538a292c66ee0aaf9e622cf087b644aeaaa61 |
| @coverage internal/status 6bf65bf3b04fdc150e2ec35d2d0d67046cf37b7c60a9dcde1c2204b75bcf8d2b |