fabro/lib/components
Bryan Helmkamp 34139b1936
Prove the checkpoint hooks and the recovery protocol
In-process tests over the memory store: every finish is committed on the
run branch with its identity trailers and recorded with its commit, the
run-end hooks reach Petri's local service through Fabro's wrapper, a
stage that fails on its own terms is committed and its failure route runs
on the committed files, a failed checkpoint records `checkpoint_failed`
with no route taken and a restart reports the run failed, and a
`[[run.hooks]]` hook blocks an agent's tool call through the forwarded
service, with the model told why.

Real-binary scenarios crash the server and its worker with SIGKILL: after
a durable finish the stage's commit is not repeated and the interrupted
stage reruns on its snapshot; a crash held before the commit reruns the
stage once; a crash held after the commit but before its record
reconciles the record from the snapshot repository; a deleted workspace
is restored; a failure route sees the same committed files after a
crash; a failed checkpoint fails the run and a restart leaves it failed.

Recovery selects the executions `inspect_run` reports incomplete, and a
run whose coordinator log is still empty is left to the worker's resume.
The worker's platform record endpoints get an API test and the generated
TypeScript client.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 00:25:10 -04:00
..
fabro-acp Merge origin/main into pebble-agent-loop 2026-09-12 09:40:00 -06:00
fabro-automation Open sandbox provider identity to plugin kinds 2026-09-09 15:17:32 -06:00
fabro-checkpoint Merge remote-tracking branch 'origin/main' into remove/run-metadata-branches 2026-09-12 16:28:01 -06:00
fabro-dump Carry usage as lithos-llm's Usage and rename billing to usage 2026-09-14 12:31:34 -06:00
fabro-environment Open sandbox provider identity to plugin kinds 2026-09-09 15:17:32 -06:00
fabro-github Resolve one Git identity per run and inject it everywhere 2026-09-12 11:35:46 -06:00
fabro-graphviz Merge pull request #686 from fabro-sh/fix/space-separated-node-classes 2026-07-29 22:31:48 -04:00
fabro-hooks Merge origin/main into pebble-agent-loop 2026-09-12 09:40:00 -06:00
fabro-install Open sandbox provider identity to plugin kinds 2026-09-09 15:17:32 -06:00
fabro-interview refactor: remove duplicated review target rendering and validation 2026-07-28 15:14:23 -04:00
fabro-llm Run agent stages, Ask Fabro, and fabro exec on pebble's CodingAgent 2026-09-11 14:19:15 -06:00
fabro-manifest Contain the selected workflow file instead of pre-walking the checkout 2026-09-12 11:48:21 -06:00
fabro-mcp Take MCP servers from pebble 2026-09-11 19:26:41 -06:00
fabro-mcp-store refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-petri Prove the checkpoint hooks and the recovery protocol 2026-09-18 00:25:10 -04:00
fabro-sandbox Surface dropped Daytona output to the agent as a stderr line 2026-09-14 12:24:02 -06:00
fabro-slack fix: stop a pipe in a link label from splitting Slack link markup 2026-07-28 15:31:20 -04:00
fabro-store Checkpoint a Petri run's stages and recover its workspaces on restart 2026-09-18 00:12:14 -04:00
fabro-tool Carry usage as lithos-llm's Usage and rename billing to usage 2026-09-14 12:31:34 -06:00
fabro-tracker refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-validate Answer catalog questions with the lithos catalog queries 2026-09-10 09:26:40 -06:00
fabro-variable refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-workflow Run a workflow through Petri in the server, behind the engine flag 2026-09-17 20:27:44 -04:00
fabro-workflow-version Share workflow packaging results and validation across callers 2026-09-12 10:15:42 -06:00