fabro/lib/apps/fabro-cli/tests/it/cmd
Bryan Helmkamp af38d68942
Delete fabro-validate and fabro-acp; validate on Petri's check
Petri judges a workflow at admission, so Fabro's lint rules go:
`fabro-validate` (its 35 rules and the `LintRule` trait) is deleted, and
with it `fabro-acp` (only a rule and two legacy executor tests used it),
the model-resolution transform, the legacy `create`, `compile_create_run`
and `materialize_create_run` stages, and `fabro-graphviz`'s `condition`
and `fidelity` modules. `Diagnostic`, `RelatedDiagnostic` and `Severity`
move to `fabro_types::diagnostic`, the one shape every diagnostic takes.

Validation is now the same question the create handler asks. A new
server module, `petri_check`, builds Petri's check request from a
workflow bundle and the run's settings (every workflow of the bundle at
its bundle-relative path, the inputs, the run variables, the launch),
runs the check, and maps the diagnostics; Fabro adds one rule of its
own, `fabro.model.no_ready_provider`, refusing a model node when no
provider is ready. Admission, the validate and preflight endpoints and
the offline `fabro validate` all go through it:

- `validate_prepared_manifest` runs Fabro's structural pass (parse and
  transform, whose diagnostics stay) and then Petri's check, on the
  blocking pool from the handlers;
- the offline `validate_manifest` checks with no model client and with
  an unbound input as a warning (`CheckRequest.unbound_is_warning`), so
  a workflow validates before its inputs exist; a collected workflow
  before upload checks with unbound inputs as errors, as before;
- preflight resolves each LLM node's selector against the ready
  providers and the catalog for its probe, as the deleted transform did,
  and no longer probes a model Petri refused;
- the graph render endpoint needs only the structural pass;
- a run manifest now carries its `[run.goal] file`, which Petri reads
  from the bundle as it does for a version.

The transforms keep the authored model selector (`sonnet` stays
`sonnet`): Petri pins the catalog model in the admitted graph, not in
the graph Fabro displays or in the settings snapshot. Tests assert that,
and the CLI's validate, preflight and graph snapshots carry Petri's
diagnostics (`attractor.no_start`, `attractor.undeclared_node`,
`attractor.bad_on_failure`, ...) in place of the lint rules' text.

Known gaps, Petri's side: a `workflow.toml` whose `[run.environment]`
names an environment the server catalog defines but the file does not
is refused (`unsupported.workflow_toml.run.environment`), as admission
already refused it; an unbound input inside an included template
partial is a render error rather than the unbound-input warning.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 11:32:04 -04:00
..
approve.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
archive.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
artifact_cp.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
artifact_list.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
attach.rs Remove tests and fixtures tied to retired manifest fields 2026-09-13 08:55:55 -06:00
auth.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
cli_reference.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
config.rs Create CLI runs from immutable workflow intents 2026-09-01 16:14:34 -04:00
create.rs Accept the CLI snapshots the engine flag and the listed diagnostics changed 2026-09-17 20:34:22 -04:00
deny.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
diff.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
discord.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
docs.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
doctor.rs Point twin_doctor's isolated server at the twin 2026-09-14 09:41:05 -06:00
dump.rs Resolve one Git identity per run and inject it everywhere 2026-09-12 11:35:46 -06:00
events.rs Update run creation event fixtures and docs 2026-08-03 15:09:32 -04:00
exec.rs Print tool calls and the transcript under fabro exec --verbose 2026-09-14 10:56:53 -06:00
fabro.rs Remove the retry, rewind, fork and timeline endpoints and commands 2026-09-18 10:54:45 -04:00
graph.rs Delete fabro-validate and fabro-acp; validate on Petri's check 2026-09-18 11:32:04 -04:00
inspect.rs Remove Git run metadata branches 2026-09-05 12:31:03 -04:00
install.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
json_global.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
logs.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
mcp.rs Move fabro-mcp's pebble mapping and test client into fabro-cli 2026-09-18 10:57:07 -04:00
mod.rs Remove the retry, rewind, fork and timeline endpoints and commands 2026-09-18 10:54:45 -04:00
model.rs Expose lithos request and response shapes through the API, server, CLI, and web 2026-09-09 17:26:57 -06:00
model_list.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
model_test.rs Expose lithos request and response shapes through the API, server, CLI, and web 2026-09-09 17:26:57 -06:00
parent.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
parse.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
pr.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
pr_close.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
pr_create.rs Make pull request creation durable and asynchronous 2026-08-01 19:28:52 -04:00
pr_link.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
pr_merge.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
pr_unlink.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
pr_view.rs fix(workflow): make publish failures terminal 2026-07-27 11:25:18 -04:00
preflight.rs Delete fabro-validate and fabro-acp; validate on Petri's check 2026-09-18 11:32:04 -04:00
provider.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
provider_login.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
ps.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
render_graph.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
repo.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
repo_deinit.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
repo_init.rs Create CLI runs from immutable workflow intents 2026-09-01 16:14:34 -04:00
resume.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
rm.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
run.rs Carry usage as lithos-llm's Usage and rename billing to usage 2026-09-14 12:31:34 -06:00
runner.rs Remove client-selected run IDs from the CLI 2026-08-01 11:47:11 -04:00
sandbox_cp.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
sandbox_preview.rs Route Daytona sandboxes through the sandbox driver 2026-09-09 19:14:13 -06:00
sandbox_ssh.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
secret.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
secret_list.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
secret_rm.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
secret_set.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
send_analytics.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
send_panic.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
server_start.rs Remove the engine flag: every run is a Petri run 2026-09-18 09:58:21 -04:00
server_status.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
server_stop.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
start.rs Create CLI runs from immutable workflow intents 2026-09-01 16:14:34 -04:00
support.rs Remove the retry, rewind, fork and timeline endpoints and commands 2026-09-18 10:54:45 -04:00
system.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
system_df.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
system_events.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
system_info.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
system_prune.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
system_repair.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
test_panic.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
top_level.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
unarchive.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
uninstall.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
upgrade.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
validate.rs Delete fabro-validate and fabro-acp; validate on Petri's check 2026-09-18 11:32:04 -04:00
variable.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
variable_get.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
variable_list.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
variable_rm.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
variable_set.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
version.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
wait.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
worker_auth.rs Remove client-selected run IDs from the CLI 2026-08-01 11:47:11 -04:00
workflow.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
workflow_create.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
workflow_list.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00