| 1 | package provision |
| 2 | |
| 3 | // movesOfflinePrecopyWriteCensusOverlay is moves-offline-precopy's |
| 4 | // record-write sites (parallel copies in lease.MirrorPrefix and the carlos |
| 5 | // move offline stage door), census-ruling-moves-offline-precopy: RULED by the |
| 6 | // coordinator, as census owner for this branch (2026-10-21), accepted as |
| 7 | // classified (docs/superpowers/notes/census-proposal-moves-offline-precopy.md). |
| 8 | // |
| 9 | // Three sites change and keep their class; no site is added. |
| 10 | // registerCLIRoutes gains the stage door's route line beside the six |
| 11 | // offline doors (key-site, main's), pinned on the merged tree with |
| 12 | // design-plans-and-caps' two account plan doors. offlineTakeSeal |
| 13 | // (nonrecord, census-ruling-moves-offline's) gains one refusal before its |
| 14 | // mirror after Astra's round 2: a staged move seals only into the staging |
| 15 | // bucket and region fixed on the record; its Puts and their keys under the |
| 16 | // move's moves/@offline/ prefix are unchanged. MirrorPrefixKeep plans its skips first |
| 17 | // and then runs the copies and, after every copy has landed, the deletes on |
| 18 | // up to DefaultMirrorWorkers goroutines; it still writes only the |
| 19 | // destination prefix (Copy or CopyVersioned, Delete) and the receipts |
| 20 | // through the book (set, drop and save, every update under one mutex, |
| 21 | // receiptLedger.save the one Put, unchanged), so versioned-transport stands. |
| 22 | // After Astra's round 1 (692d41cf) the book is read once before the workers |
| 23 | // start whenever the round copies anything, so set and drop touch memory |
| 24 | // only and no request is made under the mutex; the write set is unchanged. |
| 25 | var movesOfflinePrecopyWriteCensusOverlay = []censusEntry{ |
| 26 | {"internal/console/authcli.go", "Server.registerCLIRoutes", "key-site", "lit:instances,lit:sidecars", "a0aff01b7e2f4bb6fd23e8b54d41d90f1cd4171822f9defb9bd16cb2a08e2e87"}, |
| 27 | {"internal/lease/mirror.go", "MirrorPrefixKeep", "versioned-transport", "sel:CopyVersioned", "dff4d03fa4e56219c5a3e08862f24ad2a6bce7a7e0df806571fa52e8fb29fb19"}, |
| 28 | {"internal/host/movesoffline_seal.go", "movesWorker.offlineTakeSeal", "nonrecord", "sel:Put", "f606873fb09e8644d449a36ae64cecbb84b2f83791d4ebec4cb491d3d3f7cdaa"}, |
| 29 | } |
| 30 | |
| 31 | // movesOfflinePrecopyWriteCensusInventory is design-plans-and-caps' inventory |
| 32 | // (on scan-demand-revival's) with the moves-offline-precopy overlay, loaded |
| 33 | // last: a changed site replaces its entry, a new one is added. |
| 34 | func movesOfflinePrecopyWriteCensusInventory() []censusEntry { |
| 35 | entries := append([]censusEntry(nil), plansCapsWriteCensusInventory()...) |
| 36 | for _, replacement := range movesOfflinePrecopyWriteCensusOverlay { |
| 37 | found := false |
| 38 | for i, entry := range entries { |
| 39 | if entry.File == replacement.File && entry.Unit == replacement.Unit { |
| 40 | entries[i], found = replacement, true |
| 41 | break |
| 42 | } |
| 43 | } |
| 44 | if !found { |
| 45 | entries = append(entries, replacement) |
| 46 | } |
| 47 | } |
| 48 | return entries |
| 49 | } |
| 50 | |