fabro/lib/components/fabro-workflow/src
Bryan Helmkamp 350abac014
Build the local sandbox through the one provider path
SandboxSpec had a Local variant beside the provider spec, and a local
sandbox was created by hand over a bare Host provider: no workspace, no
provider connection, its own reconnect, and its own push rule for the
designated directory. The local kind is now one more SandboxSpec:
SandboxSpec::local names the directory on a HostDirectory spec with a
skip clone, and provider_sandbox builds it like a plugin kind, creating
the directory when missing since the Host provider requires it to exist.
Every RunSandbox carries a workspace; a handle wrapped as is gets the
workspace of its own working directory.

The push rule is one rule for every checkout: a checkout fabro cloned
pushes with the credentials it was cloned with, and any other checkout
pushes when it has an origin, with whatever credentials it carries. A
local run therefore pushes the same way before and after a resume;
before, a reconnected local sandbox carried an attached workspace that
never pushed while a fresh one did.

Reconnect uses the recorded id for every kind. The recompute of a local
id from its directory, kept for records written before directories had
ids, is gone, and test fixtures that wrote made-up local ids derive them
through test_support::local_sandbox_id instead. A local run's record now
carries its workspace layout like every provider-chosen directory, and
the sandbox.initializing event precedes the driver's create events for
local as for every other kind.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-11 16:28:17 -06:00
..
event Keep the sandbox driver's events whole as run events 2026-09-11 13:32:54 -06:00
graph Harden succeed failure policy routing 2026-08-26 09:13:04 -04:00
handler Collapse the run sandbox's lifecycle surface 2026-09-11 15:05:06 -06:00
lifecycle Let the driver retry git operations and decide from the credential's age 2026-09-11 12:44:58 -06:00
operations Build the local sandbox through the one provider path 2026-09-11 16:28:17 -06:00
pipeline Build the local sandbox through the one provider path 2026-09-11 16:28:17 -06:00
records refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
transforms Import lithos-llm types directly instead of through fabro-types 2026-09-10 10:03:08 -06:00
artifact.rs Read a mock sandbox's recordings from the driver double 2026-09-10 16:55:05 -06:00
artifact_snapshot.rs Retire the fabro Sandbox trait for one concrete RunSandbox 2026-09-10 00:14:42 -06:00
artifact_upload.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
billing_rollup.rs Import lithos-llm types directly instead of through fabro-types 2026-09-10 10:03:08 -06:00
command_log.rs Unify blob hash vocabulary 2026-08-17 13:56:19 -04:00
condition.rs Reuse existing helpers in the for_each fan-out 2026-07-28 18:42:23 -04:00
context.rs Harden succeed failure policy routing 2026-08-26 09:13:04 -04:00
error.rs Name built-in providers through lithos catalog::builtin 2026-09-10 09:48:37 -06:00
event.rs Keep the sandbox driver's events whole as run events 2026-09-11 13:32:54 -06:00
file_resolver.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
git.rs Harden local RunIntent target observation 2026-08-31 14:08:35 -04:00
git_bridge.rs refactor(github): deduplicate additional-repository access plumbing 2026-08-21 16:31:48 -04:00
graph.rs Harden succeed failure policy routing 2026-08-26 09:13:04 -04:00
hook_context.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
interview_runtime.rs refactor(workflow): tidy stall watchdog wiring and interview naming 2026-08-01 10:08:03 -04:00
lib.rs feat(workflow): bridge git and gh to the shared token 2026-08-21 14:47:31 -04:00
model_fallback.rs Import lithos-llm types directly instead of through fabro-types 2026-09-10 10:03:08 -06:00
node_handler.rs Retire the fabro Sandbox trait for one concrete RunSandbox 2026-09-10 00:14:42 -06:00
outcome.rs Import lithos-llm types directly instead of through fabro-types 2026-09-10 10:03:08 -06:00
pull_request.rs refactor: simplify publish pipeline and collapse duplicated stage errors 2026-07-28 15:09:10 -04:00
retry.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
run_control.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
run_dir.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
run_lookup.rs Move run queries and pull request recovery to SQLite 2026-09-01 14:06:06 -04:00
run_materialization.rs Import lithos-llm types directly instead of through fabro-types 2026-09-10 10:03:08 -06:00
run_metadata.rs Let the driver retry git operations and decide from the credential's age 2026-09-11 12:44:58 -06:00
run_options.rs Remove stale env-interpolation promises from docs 2026-08-17 17:36:53 -04:00
run_status.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
runtime_store.rs Simplify blob activation and share the test store fixture 2026-08-24 14:02:35 -04:00
sandbox_git.rs Run fabro's git plumbing through the driver's verbs 2026-09-11 12:55:39 -06:00
sandbox_git_runtime.rs Move the Read tool's line numbering and the shell quoting wrapper out of fabro-sandbox 2026-09-11 15:00:17 -06:00
services.rs Merge origin/main into the sandbox-driver adoption 2026-09-10 13:37:11 -06:00
stage_execution.rs Add version-backed run intent creation 2026-08-24 11:55:43 -04:00
stage_scope.rs Merge origin/main into feat/stage-execution-identity-on-resume 2026-07-24 10:07:35 -04:00
steering_hub.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
test_support.rs Merge origin/main into the sandbox-driver adoption 2026-09-10 13:37:11 -06:00
workflow_bundle.rs Simplify local RunIntent producer support 2026-08-31 14:08:35 -04:00