Skip to content

Batchยป

Step 6 of the migration walkthrough: choose which units migrate in this batch. Migrations are iterative โ€” you don't move the whole estate at once, you stage a batch, migrate it, then come back for the next.

liftoff batch list โ€” see what's thereยป

1
liftoff batch list

Lists every migratable unit โ€” spaces, stacks, modules, contexts โ€” with its current staging status. Variables and mounted files aren't listed: they're far too many, and they ride along with their owner automatically. Filter with --status unstaged|staged|migrated and --kind space|stack|module|context.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
Units (26)
  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
  โ”‚ Kind    โ”‚ Id                                 โ”‚ Name                               โ”‚ Status   โ”‚ Space                โ”‚
  โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
  โ”‚ space   โ”‚ Apollorion                         โ”‚ Apollorion                         โ”‚ unstaged โ”‚                      โ”‚
  โ”‚ space   โ”‚ prj-SVGtTCkFUripuBzK               โ”‚ Apollorion-Project                 โ”‚ unstaged โ”‚ Apollorion           โ”‚
  โ”‚ โ€ฆ       โ”‚ โ€ฆ                                  โ”‚ โ€ฆ                                  โ”‚ โ€ฆ        โ”‚ โ€ฆ                    โ”‚
  โ”‚ stack   โ”‚ ws-7YopKPAktoDmhFXW                โ”‚ with-var-set                       โ”‚ unstaged โ”‚ prj-SVGtTCkFUripuBzK โ”‚
  โ”‚ stack   โ”‚ ws-kosDPPzpEYkyxi8K                โ”‚ my-amazing-workspace-three         โ”‚ unstaged โ”‚ prj-VzQwHzLERRqQWNym โ”‚
  โ”‚ โ€ฆ       โ”‚ โ€ฆ                                  โ”‚ โ€ฆ                                  โ”‚ โ€ฆ        โ”‚ โ€ฆ                    โ”‚
  โ”‚ context โ”‚ varset-8NK3XU2nTY7qVmwR            โ”‚ Apollorion-test-variable-set       โ”‚ unstaged โ”‚ root                 โ”‚
  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Everything lands unstaged after discover โ€” "not yet triaged." You stage the units you want in this batch, and re-run list (or list --status staged) to see the batch take shape.

liftoff batch stage โ€” pick the batchยป

1
liftoff batch stage stack:ws-7YopKPAktoDmhFXW

Selectors are <kind>:<id> (the Kind and Id columns from list); pass as many as you like, or --all for a full lift-and-shift. Staging cascades: a staged stack pulls in the spaces it sits under and the contexts attached to it, so the batch always renders without dangling. The result shows what changed and why each dependency came along:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
Status  staged

Changed (4)
  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
  โ”‚ Kind    โ”‚ Id                      โ”‚ Name                         โ”‚ Via                        โ”‚
  โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
  โ”‚ context โ”‚ varset-8NK3XU2nTY7qVmwR โ”‚ Apollorion-test-variable-set โ”‚ stack ws-7YopKPAktoDmhFXW  โ”‚
  โ”‚ space   โ”‚ Apollorion              โ”‚ Apollorion                   โ”‚ space prj-SVGtTCkFUripuBzK โ”‚
  โ”‚ space   โ”‚ prj-SVGtTCkFUripuBzK    โ”‚ Apollorion-Project           โ”‚ stack ws-7YopKPAktoDmhFXW  โ”‚
  โ”‚ stack   โ”‚ ws-7YopKPAktoDmhFXW     โ”‚ with-var-set                 โ”‚ requested                  โ”‚
  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Next
  $ liftoff audit

Via reads requested for a unit you named, and <kind> <id> for one pulled in by the cascade โ€” here staging the stack brought its project space, that space's parent, and its attached context.

Staging only ever pulls upward. It stages what a unit needs, never what a unit contains. Spaces are where that catches people out, because staging one does not stage the stacks inside it:

1
2
3
4
$ liftoff batch stage space:prj-SVGtTCkFUripuBzK
changed[2]{id,kind,name,via}:
  Apollorion,space,Apollorion,space prj-SVGtTCkFUripuBzK
  prj-SVGtTCkFUripuBzK,space,Apollorion-Project,requested

Two spaces changed, the requested one and its parent, and no stacks. The stacks in that space are still unstaged, and liftoff batch list will show them that way. To migrate them, name them.

Note that unstage is not the mirror image of this: it cascades downward, so unstaging a space does take the stacks in it (below).

Re-staging a migrated unit needs a person's explicit agreement. Staging normally moves an unstaged unit into the batch and is ungated. But if the cascade would pull back a unit you've already migrated, staging drops it out of migrated โ€” and the next generate then rewrites its file, losing any hand-edits you made to it. So that case refuses first, and the refusal names every migrated unit the cascade touches (not just the one you typed) with why it came along, so what you agree to is the real blast radius. A person agrees by re-running with --restage-migrated; an agent cannot use the flag, and instead asks the user to run liftoff approve stage:migrated in a terminal of their own. Staging fresh units is unaffected.

liftoff batch unstage โ€” change your mindยป

1
liftoff batch unstage stack:ws-7YopKPAktoDmhFXW

Reverses a staging choice. It cascades down (unstaging a space takes the stacks in it) and is refcount-aware: a shared parent space stays staged as long as any staged child still needs it, and is released only when nothing does.

There's no skip command โ€” to leave something out of the batch, just don't stage it (or unstage it if you had). Once the batch looks right, move on to audit.