← All drafts

Moving the project to another machine

Written 21 Oct 2026, when Mabel moved to a new computer. The repository is only part of the project: 5 GB of media lives in the bucket, and two directories of real work live in neither. This is the inventory and the order to restore it in.

What travels where

Where it livesWhat is in itHow it gets to the new machine
git (`gitlab.com/inkylabs/the-offer-luther-short`)script, sheets, notes, `tools/`, `refs/provenance.json`, `refs/index.json``git clone`
`gs://the-offer-assets/refs/`5.0 GB — every take, still, cut and sound cue, plus `threads.jsonl` and the other review ledgers`python3 tools/assets.py pull refs` — read the warning below first
`gs://the-offer-assets/probes/`183 MB of probe work, including the retired cuts `evening-scene-24` and `-26` that `notes/morning-sheet-history.md` cites by path`python3 tools/assets.py pull probes`
`gs://the-offer-assets/machine-move-20261021/`the two directories that have no permanent home — staged for this move only`gcloud storage rsync`, see below
`gs://inkylabs-corpus-backup/`the reference shelf (~1.5 GB of books; only two files were ever pulled locally)`python3 resources/sync-books.py`

The two homeless directories

Neither is in git and neither was in the bucket before 21 Oct 2026. Both are referenced by committed notes at absolute paths, so they have to land back in the same places or those notes dangle.

Restore both with:

``` gcloud storage rsync --recursive \ gs://the-offer-assets/machine-move-20261021/blender-checkpoints ~/blender-checkpoints gcloud storage rsync --recursive \ gs://the-offer-assets/machine-move-20261021/the-offer-review ~/.local/share/the-offer-review ```

The `machine-move-20261021/` prefix is a staging area, not a decision about where set files belong. Delete it once the new machine is up, or decide on a real home for the Blender work and write that down here.

Pulling refs undoes every cull

`assets.py pull refs` is not symmetric with push. The bucket keeps every take ever pushed, culled ones included — 964 objects against a working set of 708 — and `pull` rewrites `refs/index.json` from whatever ends up on disk. So a straight pull restores 248 culled files and relists them as current, which is exactly the resurrection `AGENTS.md` warns about. After pulling:

``` git checkout refs/index.json # restore the committed cull decisions python3 - <<'PY' # list what the index does not claim import json, pathlib keep = set(json.load(open('refs/index.json'))['files']) for p in sorted(pathlib.Path('refs').rglob('*')): if p.is_file() and p.suffix not in {'.json', '.jsonl'} and str(p) not in keep: print(p) PY ```

Delete those, then run `python3 tools/assets.py push refs` — otherwise the next push writes the culls back into the index and they return for good.

Tooling to reinstall

The repo's own scripts are stdlib-only, so there is nothing to `pip install` for `tools/`. Everything else:

Checked and clear