Skip to content

Support a single active machine in v1

Forest repos here live in a Dropbox-synced tree. gitignore does not stop Dropbox, so .forest/HEAD, checkout local.yaml, and sync_state.json propagate to every machine with no merge — Dropbox writes (conflicted copy) files, already observed in this tree. v1 supports one active development machine and documents that assumption rather than building distributed safety.

The optimistic "file changed since load → rerun" check is removed: it targets the wrong layer (local mtime/content, not Dropbox sync) and is unnecessary on a single machine. Crash-atomic os.replace is kept for all metadata writes. Single machine is not single process: Snakemake parallelism and shell & are handled with a per-checkout flock around push/pull's read-modify-write of sync_state.json; reads stay lock-free.

Consequences

  • Amends ADR-0006: "user-local runtime state" is only true under the single-machine assumption.
  • sync_state.save_state() must become atomic (currently a plain write_text).
  • No mtime/content concurrent-edit detection; flock guards intra-machine write races instead.