fabro/lib/foundation/fabro-api/tests
Bryan Helmkamp 523f831a7a
Serve a Petri run's events as one stream with a stream_seq cursor
`GET /runs/{id}/events` and `GET /runs/{id}/attach` serve a Petri run's
public events and Fabro's platform records as one ordered stream in a
Fabro envelope (`RunStreamItem`: `run_id`, `stream_seq`, `kind`, `id`,
`recorded_at`, `item`), read from the projector's `petri_stream` table.
The cursor is `stream_seq` (`?after=`); the item's own identity (the
Petri `EventId` as `<log>/<seq>/<index>`, or the platform record's seq)
travels beside it for deduplication. A legacy run keeps its envelope on
the same endpoints; the OpenAPI response is the union of the two lists,
and the stream list reports Petri's `EVENT_CONTRACT_VERSION`.

The attached stream follows the projector's commit signal (a wake-up,
with a poll as the fallback) and ends after the platform record of the
run's terminal lifecycle transition, the analog of the legacy stream's
`run.completed`, or a bounded grace after the projection went terminal.

`RunSpec.engine` (`RunEngine`, `PetriAdmission`, `PetriGraphRef`) is
named in the spec and reuses the Rust types. `fabro-client` matches the
union and adds `list_run_stream`, `list_run_stream_page` and
`attach_run_stream`.

A server test attaches to a two-branch parallel run, disconnects once
both branches started, records a platform notice while both branch
scripts run, reconnects from the last `stream_seq`, and checks the
union is the whole stream: every item once, in order, no gap, no
duplicate, the notice between the branch events, and the same as the
paged listing. The Petri scenarios capture their settled projection and
stream as JSON fixtures for the web app under
`FABRO_CAPTURE_PETRI_FIXTURES`.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 00:47:26 -04:00
..
agent_session_activated_props_round_trip.rs Import lithos-llm types directly instead of through fabro-types 2026-09-10 10:03:08 -06:00
agent_session_projection_round_trip.rs Carry usage as lithos-llm's Usage and rename billing to usage 2026-09-14 12:31:34 -06:00
automation_round_trip.rs Tighten automation Git validation types 2026-08-31 18:02:08 -04:00
blob_hash_round_trip.rs Align SHA-256 hash casing contracts 2026-08-17 17:31:15 -04:00
command_termination_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
completion_message_round_trip.rs Import lithos-llm types directly instead of through fabro-types 2026-09-10 10:03:08 -06:00
cost_round_trip.rs Carry usage as lithos-llm's Usage and rename billing to usage 2026-09-14 12:31:34 -06:00
create_completion_request_round_trip.rs Import lithos-llm types directly instead of through fabro-types 2026-09-10 10:03:08 -06:00
diff_stats_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
diff_summary_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
environment_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
event_envelope_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
git_context_round_trip.rs Remove the recorded pre-run push outcome, keep the push 2026-08-03 19:27:33 -04:00
interview_option_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
interview_question_record_round_trip.rs Add structured review targets to human gates 2026-07-28 13:24:12 -04:00
manifest_args_round_trip.rs Remove obsolete manifest Docker image argument 2026-08-01 09:03:10 -04:00
mcp_server_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
mcp_transport_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
model_costs_round_trip.rs Expose lithos request and response shapes through the API, server, CLI, and web 2026-09-09 17:26:57 -06:00
model_limits_round_trip.rs Expose lithos request and response shapes through the API, server, CLI, and web 2026-09-09 17:26:57 -06:00
model_round_trip.rs Import lithos-llm types directly instead of through fabro-types 2026-09-10 10:03:08 -06:00
model_test_mode_round_trip.rs Expose lithos request and response shapes through the API, server, CLI, and web 2026-09-09 17:26:57 -06:00
pair_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
parallel_branch_id_round_trip.rs Fix live parallel branch refresh and simplify branch rendering 2026-07-28 17:26:05 -04:00
pending_interview_record_round_trip.rs Add structured review targets to human gates 2026-07-28 13:24:12 -04:00
principal_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
provider_id_round_trip.rs Import lithos-llm types directly instead of through fabro-types 2026-09-10 10:03:08 -06:00
provider_round_trip.rs Import lithos-llm types directly instead of through fabro-types 2026-09-10 10:03:08 -06:00
pull_request_round_trip.rs Make pull request creation durable and asynchronous 2026-08-01 19:28:52 -04:00
question_type_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
reasoning_output_round_trip.rs Run agent stages, Ask Fabro, and fabro exec on pebble's CodingAgent 2026-09-11 14:19:15 -06:00
run_engine_round_trip.rs Serve a Petri run's events as one stream with a stream_seq cursor 2026-09-18 00:47:26 -04:00
run_event_round_trip.rs Run agent stages, Ask Fabro, and fabro exec on pebble's CodingAgent 2026-09-11 14:19:15 -06:00
run_failure_round_trip.rs Carry usage as lithos-llm's Usage and rename billing to usage 2026-09-14 12:31:34 -06:00
run_integrations_round_trip.rs docs(api): document additional github repository access 2026-08-21 15:12:23 -04:00
run_intent_round_trip.rs Add RunIntent registration support 2026-08-28 20:40:38 -04:00
run_model_settings_round_trip.rs refactor: simplify model-keyed fallback internals 2026-07-30 12:51:36 -04:00
run_projection_round_trip.rs Carry usage as lithos-llm's Usage and rename billing to usage 2026-09-14 12:31:34 -06:00
run_sandbox_round_trip.rs Open sandbox provider identity to plugin kinds 2026-09-09 15:17:32 -06:00
run_stream_item_round_trip.rs Serve a Petri run's events as one stream with a stream_seq cursor 2026-09-18 00:47:26 -04:00
run_summary_round_trip.rs Carry usage as lithos-llm's Usage and rename billing to usage 2026-09-14 12:31:34 -06:00
run_usage_stage_round_trip.rs Carry usage as lithos-llm's Usage and rename billing to usage 2026-09-14 12:31:34 -06:00
sandbox_details_round_trip.rs Put the driver's sandbox status on the API instead of a projection 2026-09-11 13:07:00 -06:00
sandbox_inventory_round_trip.rs Put the driver's sandbox status on the API instead of a projection 2026-09-11 13:07:00 -06:00
sandbox_services_round_trip.rs Run the agent's MCP servers and the service listing through the driver's services facet 2026-09-11 13:18:02 -06:00
secret_metadata_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
secret_type_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
server_settings_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
session_contract_round_trip.rs Run agent stages, Ask Fabro, and fabro exec on pebble's CodingAgent 2026-09-11 14:19:15 -06:00
stage_completion_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
stage_handler_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
stage_id_round_trip.rs fix: harden stage execution identity on resume 2026-07-24 09:37:05 -04:00
stage_model_usage_round_trip.rs Import lithos-llm types directly instead of through fabro-types 2026-09-10 10:03:08 -06:00
stage_outcome_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
stage_projection_round_trip.rs Carry usage as lithos-llm's Usage and rename billing to usage 2026-09-14 12:31:34 -06:00
stage_state_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
status_round_trip.rs fix(workflow): make publish failures terminal 2026-07-27 11:25:18 -04:00
submit_answer_request_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
system_integrations_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
token_counts_round_trip.rs Carry usage as lithos-llm's Usage and rename billing to usage 2026-09-14 12:31:34 -06:00
usage_round_trip.rs Carry usage as lithos-llm's Usage and rename billing to usage 2026-09-14 12:31:34 -06:00
variable_round_trip.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
workflow_settings_round_trip.rs Remove nonfunctional run agent permissions setting 2026-07-29 10:23:00 -04:00
workflow_version_round_trip.rs Align SHA-256 hash casing contracts 2026-08-17 17:31:15 -04:00