mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-10-01 02:04:24 +00:00
A Petri run on Docker or Daytona keeps its workspace inside the scope's sandbox. Fabro's hooks now take the environment Petri hands them at `scope_acquired`, run `git` inside the scope through it (the path Petri's own sandbox-placed hooks take), and commit each stage on the run branch with the same message and trailers as the host path. The commit leaves the sandbox as a Git bundle, created against the newest ancestor the snapshot repository already holds, split into 8 MiB parts (the plugin transport reads one file up to 16 MiB), read out through the environment's file transfer, fetched into the bare snapshot repository on the host and named there under the checkpoint's ref. The repository holds every checkpoint whatever the provider, and the platform records name the same commits. The host path is unchanged; both sites share one runner and the same commands. Recovery is split: `recovery::plan` decides, over the records and the snapshot repository alone, what every live workspace must sit on and reconciles a lost record; `recover` applies it to host workspaces on the server, as before, and reports a sandbox workspace's target as deferred. The worker's hooks read the same plan at the scope's first acquisition after a resume and bring the sandbox workspace to it before any attempt runs there: verified or reset in a retained sandbox that still holds the commit, else restored from a bundle of the checkpoint written into the sandbox. Petri replaces a lease's lost sandbox on Fabro's request (`LostSandbox::Replace`), so a removed container comes back fresh and restored. The checkpoint records are written for every provider now. A Docker variant of the in-process hooks test moves a 20 MiB file through the split transfer; the same test runs on Daytona when live credentials are present. Three CLI scenarios run on a Docker environment: every stage's checkpoint published from the container, a retained container whose workspace drifted reset on restart, and a removed container replaced and restored from the snapshot. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| apps | ||
| components | ||
| foundation | ||
| packages/fabro-api-client | ||