## fabro-sh/fabro — v0.362.0-nightly.0…v0.369.0-nightly.0

_201+ commits._

### Features
- **Add fabro-pebble-sandbox: a driver handle as pebble's Environment** (c4ed995)
- **Add the fork, rewind, retry and timeline commands to the CLI** (8d4a1bf)
- **Name the new question option fields in the interview tests** (ac81543)
- **Add the artifact, run diff and branch workspace platform records** (dc48197)

### Fixes
- **Merge pull request #903 from fabro-sh/codex/fix-nightly-docker-timeouts** (1b4fb15)
- **fix(ci): prepare Docker images for nightly release tests** (c56f117)
- **fix: address review of the in-process sandbox providers** (a1a98c6)
- **fix: run built-in sandbox providers in process** (6ac6d54)
- **Fix the gate findings in the prune change** (6082f82)
- **Fix the gate findings in the sandbox tests** (956feda)
- **Fix what the gates found after the removal sweep** (eca2812)
- **Fix the rustdoc link warnings and gate rustdoc in CI** (0fe066d)

### Backend
- **Bump version to 0.369.0-nightly.0** (3473386)
- **Merge pull request #900 from fabro-sh/codex/in-process-sandboxes** (03f5f8a)
- **Merge pull request #897 from fabro-sh/codex/correct-storage-upgrade-docs** (e4e36fb)
- **Merge pull request #895 from fabro-sh/deps/branch-pins** (c874d81)
- **Merge main and preserve SlateDB recovery guidance** (2b042a6)
- **Merge pull request #896 from fabro-sh/codex/docs-slatedb-upgrade** (9041c59)
- **Lock the Lithos libraries at their mains after the branch switch** (7f1c871)
- **Merge pull request #894 from fabro-sh/pin-pebble-and-petri-mains** (a2b39a2)
- **Pin Pebble and Petri at their mains after pebble#27 and petri#36** (7f583c5)
- **Merge pull request #893 from fabro-sh/host-attach-with-managed-record** (d2469ca)
- **Merge origin/main and pin sandbox-driver 583a164, Pebble eb08b70, Petri 23f78a2** (d3d6697)
- **Merge pull request #891 from fabro-sh/pebble-sandbox-adapter-upstream** (d547360)
- **Attach to a run's host sandbox with the worker's managed record** (baf32b7)
- **Use pebble's sandbox-driver adapter and delete fabro-pebble-sandbox** (45d94ce)
- **Pin sandbox-driver and Petri at their host attach-by-path PR heads** (d4a3a7d)
- **Merge pull request #890 from fabro-sh/settle-in-process-run-at-finish** (7518045)
- **Settle an in-process run at Petri's finish, not at its terminal record** (968c46d)
- **Merge pull request #889 from fabro-sh/pin-petri-main** (643f10d)
- **Bump the Petri pin to dfdecdc, the merge of lithoscomputer/petri#35** (ed283d8)
- **Bump the Petri pin to cc3adbd** (d0156a7)
- **Merge pull request #888 from fabro-sh/settle-worker-run-on-terminal-record** (81b7427)
- **Merge pull request #887 from fabro-sh/bind-run-goal-into-petri** (3c6d529)
- **Settle a worker's run at Petri's finish, not at the worker's exit** (2b30689)
- **Bind the run's resolved goal into Petri's check** (1fda963)
- **Pin Petri to the run-goal-precedence branch head** (fc6fb20)
- **Merge pull request #886 from fabro-sh/petri-maintainability** (40419cb)
- **Qualify the terminal check: the scenario already imports the engine's RunStatus** (b5c6347)
- **Name the terminal check directly in the managed settle wait** (c4086f1)
- **Wait for the managed run to settle before the prune scenario deletes it** (9a93bbc)
- **Say the artifact's path in prose in HookError::Blob's doc** (9edbacf)
- **Read the resume action off the unified restore log line** (e010563)
- **Settle clippy on the fabro-petri refactors** (f471676)
- **Plan recovery through a Planner and share the run's Git settings with the hooks** (12483e0)
- **Split the projector into the pass, its ordering rule, its stream and its wake-up** (4216364)
- **Key the fold's stages by a typed FiringKey instead of a formatted string** (1c30332)
- **Decode the Attractor progress payloads into typed structs** (fd0ae7f)
- **Name the fold's repeated shapes once: completion, model usage, pause, conclusion** (2f8ee2f)
- **Split the projection fold into a module per source of facts** (84e3507)
- **Carry the hooks' failures as a typed HookError until the Petri boundary** (50e64c7)
- **Group the hooks' bookkeeping into three ledgers with one loaded-once shape** (a039274)
- **Take the workspace site as a parameter instead of paired host/sandbox methods** (52b504d)
- **Share one poison-tolerant lock helper from fabro-util** (1f6e53c)
- **Merge pull request #880 from fabro-sh/petri-integration** (6d78cc4)
- **Merge main into petri-integration and resolve workspace versions** (6ad50ae)
- **Settle the managed run as soon as its terminal record is stored** (c264a35)
- **Pull the catalog image the fabro-server Docker scenarios run** (1483426)
- **Filter the working-directory depth out of the partial include snapshot** (634891d)
- **Wait for the terminal lifecycle record before reading the cancelled run** (fdf5141)
- **Run the workflow scenarios on the Docker provider instead of the stdio plugins** (beac547)
- **Install the sandbox-driver plugins in the Rust test jobs** (49a647e)
- **Keep the Daytona key rendering out of the test's assertion messages** (399aef8)
- **Bump the Petri pin to 9d51715, the merge of lithoscomputer/petri#30** (53b9f91)
- **Bump the Petri pin to 12e8a17** (4b79e19)
- **Merge remote-tracking branch 'origin/main' into petri-integration** (ec5faab)
- **Test an Ask Fabro turn against the container Petri created** (dfd2458)
- **Delete a run's sandboxes through Petri's lease ledger** (c7aa50c)
- **Forward every configured sandbox plugin to the Petri worker** (809b389)
- **Test the server's attach to the container Petri created** (2a4f2aa)
- **Delete fabro-sandbox** (f054082)
- **Serve the sandbox tab, Run Files, and deletion on the driver handle** (23b8a6c)
- **Reach run sandboxes from the server through the sandbox driver** (0cc645b)
- **Read workflow graphs through Petri's DOT parser** (4670879)
- **Build the run's display graph from Petri's admission** (bd59f52)
- **Read the run's display graph off Petri's admitted graph** (52aed8c)
- **Drop the dependency edges with no production use** (51138cd)
- **Delete the checkpoint endpoint, fabro parse, and the fabro-workflow shims** (05a14a6)
- **Delete the stage artifact upload endpoint** (0752d4c)
- **Update the second copy of the sandbox clone note in AGENTS.md** (b9b4e28)
- **Delete fabro-sandbox's clone and push chain** (06f9cb8)
- **Delete the executor-era error and Git helpers in fabro-workflow** (efb43b4)
- **Delete the interviewers the Petri cutover left unused** (c0fb71a)
- **Move the Petri pin to 13e1044** (0e18253)
- **Hand Petri only the environment keys it reads** (01713c6)
- **Pin Petri at d43683e for the environment and MCP catalogs** (22cc96d)
- **Merge branch 'petri-integration' into petri-followup-envcat** (978a5b1)
- **Hand Petri the server's environment and MCP catalogs** (b1d95fa)
- **Regenerate the provider client model after the codecs merge** (c2fea04)
- **Move the Petri pins to 1fef017 for the lithos-llm 43a42ac and Pebble 67c9f48 unification** (3f64d6f)
- **Merge remote-tracking branch 'origin/main' into petri-integration** (776c503)
- **Answer steer and interrupt with the worker's acknowledgement** (cb26c56)
- **Merge branch 'petri-followup-fork' into petri-integration** (86ac137)
- **Cover fork, retry, rewind and the timeline with real-binary scenarios** (22ebbf7)
- **Serve fork, rewind, retry and the timeline on the runs API** (e7d55d6)
- **Restore the timeline, fork, rewind and retry operations over checkpoints** (f18f022)
- **Seed a forked run from a source's records, checkpoints and snapshots** (0cd0df4)
- **Merge branch 'petri-followup-interrupt' into petri-integration** (a664b0c)
- **Merge branch 'petri-followup-interrupt' into petri-integration** (696acc1)
- **Name the stage and Petri's reason in a refused interrupt's notice** (ea85359)
- **Interrupt a live agent stage's model turn over Petri** (1978257)
- **Record the two dry-run snapshots the earlier gate timed out on** (bfe9403)
- **Read the tools, question details, script and condition off Petri's records** (572f89a)
- **Record the snapshots the Petri pin and the record positions changed** (08b7a4f)
- **Move the Petri pin to 639ce3e** (f0cb4ef)
- **Merge branch 'petri-followup-projection' into petri-integration** (a4ffba0)
- **Place the run branch and git identity records with their checkpoint** (3481905)
- **Declare the batch sizes ahead of the projection tests' statements** (58df747)
- **Spell the projector cache's idle period in minutes** (563914b)
- **Keep the steer resolution within the workspace lint baseline** (29441e4)
- **Steer a Petri run by stage** (a70750f)
- **Keep a live run's replay and view between projector passes** (1ed30db)
- **Move the Petri pins to c216cf2 for the kept replay and read_from** (eceae84)
- **Route SIGUSR1 and SIGUSR2 in the Petri worker to the run's controls** (c730aca)
- **Show the sandbox's ready duration and retention outcome on the run** (a4af6fa)
- **Settle clippy and formatting after the sandbox merge** (6aec33c)
- **Render the branch, identity, diff and artifact records and re-record the run snapshots** (b354a2f)
- **Keep every workspace under Petri's retention and say why** (baa2fc8)
- **Merge branch 'petri-integration' into petri-integration-gaps** (56f7180)
- **Remove the [server.slatedb] settings and the SlateDB prefix probe** (76461da)
- **Resolve blob references in inspect, diff, output and dump** (ae70aa6)
- **Serve collected artifacts from the projection and the blob table** (a5d4e96)
- **Fold artifacts, diffs, blob references and dry-run responses into the projection** (2407ce3)
- **Record the run branch, identity, artifacts and diffs from the hooks** (67ba595)
- **Project a Petri run's sandbox instance from its scope records** (f0b23fe)
- **Describe the run stream where the docs described the legacy event log** (2f4888c)
- **Regenerate the checkpoint client model and name the CLI stream helpers** (3e904c7)
- **Drop the run_events table and narrow the runs row** (4942788)
- **Port the CLI tests to Petri runs and the run stream** (0d74fdf)
- **Delete the legacy run event log, its reducer and its types** (60b5033)
- **Serve the run stream as the only run event API** (bc31b8d)
- **Give Ask Fabro sessions their own event log** (34996d6)
- **Run the server's lifecycle over platform records instead of run_events** (3e8b2eb)
- **Describe the Petri layering in AGENTS.md and the architecture doc** (753c926)
- **Delete fabro-validate and fabro-acp; validate on Petri's check** (af38d68)
- **Move fabro-mcp's pebble mapping and test client into fabro-cli** (5df733a)
- **Remove the retry, rewind, fork and timeline endpoints and commands** (e8e681a)
- **Format the Petri test fixtures after the engine key removal** (3e157d3)
- **Delete fabro-hooks and the engine freeze check** (1f0dbd8)
- **Delete fabro-core and the engine half of fabro-workflow** (d90a5d9)
- **Remove the engine flag: every run is a Petri run** (a36bea1)
- **Merge branch 'petri-integration-sandbox' into petri-integration** (b5fdc01)
- **Checkpoint and recover Petri workspaces inside Docker and Daytona sandboxes** (d60744b)
- **Forward the Docker daemon selection and Daytona credentials to Petri workers** (97f74c3)

### Docs
- **docs: correct storage upgrade behavior** (297b9e0)
- **docs: clarify retained SlateDB history on upgrade** (a2376db)
- **docs: shorten the Lithos git dependency convention comments** (f75dc88)

### Chore
- **ci: drop the per-push release-mode Host check** (d8983fc)
- **refactor: tidy the in-process sandbox provider wiring** (8a09e8f)
- **build: track Lithos git dependencies on branch main** (00984ce)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/fabro-sh/fabro?utm_source=github-action)._