| +{"host":"acme.shop.example.com","state":"offline-staging","id":"mv_X","from":"ie","to":"uk","stager":"ie-box","requested_by":"alice@keymail.dev","requested_at":N,"updated_at":N,"next":"start","can_abort":true,"never_offline":true,"staged_at":N,"stage":{"box":"ie-box","phase":"staged","at":N,"replica_objects":305,"replica_bytes":N,"staged_objects":300,"staged_bytes":N,"round_objects":12,"round_bytes":9000000},"reports":[{"v":1,"op":"mv_X","host":"acme.shop.example.com","box":"ie-box","role":"stager","phase":"staged","at":"T","held":false,"fenced":false,"quiesced":false,"local_db":false,"files":false,"env":false,"sidecar":false,"row_present":false,"replica_objects":305,"replica_bytes":N,"staged_objects":300,"staged_bytes":N,"round_objects":12,"round_bytes":9000000,"fresh":false}],"items":[{"id":"db","item":"SQLite DB at its final position","disposition":"carried: instances/\u003chost\u003e/ is mirrored to the target's moves/\u003chost\u003e/ and promoted by the target's first wake after open","owner":"landing","source":"seal","status":"waiting"},{"id":"db-tail","item":"writes the source's stop failed to checkpoint","disposition":"carried: the sealer checkpoints first when a source report is ahead of the replica","owner":"seal","source":"seal","status":"waiting"},{"id":"build-state","item":"instances/\u003chost\u003e/build-state.json","disposition":"carried: inside the replica prefix, after CarryRequest","owner":"seal","source":"seal","status":"waiting"},{"id":"lease","item":"instances/\u003chost\u003e/lock.json","disposition":"not carried: the source's lock becomes the tombstone until finish; a stale tombstone of another move in the target bucket is lifted at landing","owner":"landing","source":"seal","status":"waiting"},{"id":"files","item":"flat \u003cDataDir\u003e/\u003chost\u003e/ and the nested instance directory minus platform artifacts","disposition":"carried: sealed archive at moves/@offline/\u003chost\u003e/\u003cid\u003e/files.sealed in the target bucket","owner":"landing","source":"seal","status":"waiting"},{"id":"env","item":"\u003chost\u003e.env: instance key, admin token and overrides","disposition":"carried: byte for byte inside the archive","owner":"landing","source":"seal","status":"waiting"},{"id":"key-adoption","item":"\u003chost\u003e.instance-key-adoption.json","disposition":"not carried: written only for claim launches; a copy on the target is parked","owner":"landing","status":"waiting"},{"id":"config","item":"\u003chost\u003e.config.env: the app's settings, store binding and secrets","disposition":"rebuilt: rendered on the target from the bucket bundle","owner":"landing","status":"waiting"},{"id":"env-pin","item":"the composed launch environment","disposition":"rebuilt: app settings must be equal on both rows; box settings are not compared","owner":"landing","source":"seal","status":"waiting"},{"id":"release","item":"the build the source runs","disposition":"rebuilt: not copied, ordinary adoption stages the channel's build for the ready row after open","owner":"landing","source":"seal","status":"waiting"},{"id":"store","item":"object store bucket and its credentials","disposition":"not carried: the bucket stays where it is and its binding travels in config, so env-pin covers it","owner":"none","status":"unchecked"},{"id":"timers","item":"timer rows, once-timers the app armed included","disposition":"carried: a timers snapshot beside the archive, replaced on the held row","owner":"landing","source":"seal","status":"waiting"},{"id":"next-due","item":"the row's NextDue","disposition":"carried: in the journal's source baselines","owner":"landing","source":"seal","status":"waiting"},{"id":"replication","item":"the row's replication rung","disposition":"carried: in the journal's source baselines","owner":"landing","source":"seal","status":"waiting"},{"id":"row","item":"the registry row","disposition":"rebuilt: reconcile mints it from the record, held at flat paths","owner":"landing","status":"waiting"},{"id":"routing","item":"edges file, backhaul, certificates, derived aliases","disposition":"not carried: produced by the existing passes once the row is ready, and the runbook confirms a certificate path before the move","owner":"none","status":"unchecked"},{"id":"source-retire","item":"everything the source box keeps for the host after open","disposition":"parked: renamed, never deleted, and listed path by path in the source's parked report","owner":"none","status":"unchecked"},{"id":"sidecar","item":"\u003chost\u003e-sidecar.env","disposition":"refused: a source report that sees one fails the seal","owner":"seal","source":"seal","status":"waiting"},{"id":"restore-verify","item":"control/restore-verify.json entry","disposition":"not carried: the next drill writes a fresh verdict, and until then the old one describes the source copy","owner":"none","status":"unchecked"},{"id":"warm-cache","item":"local DB, meta dirs, files and env a box holds for the host","disposition":"parked: renamed under .offline-moves on the source after open and on a target that already has them","owner":"landing","status":"waiting"},{"id":"receipts","item":"move-receipts/\u003chost\u003e.json in the source bucket","disposition":"not carried: cleared at finish, and self-checking","owner":"none","status":"unchecked"},{"id":"class","item":"kind, addr, fleet, pool, hibernate, replica, replicas, steering, unit, seed and open run","disposition":"refused: the start door and the start transition refuse every class the move cannot carry","owner":"door","status":"ok"}]} |