Summary
Once a simulation is running there is no way to stop it from the UI. The only stop path we found is an undocumented POST /api/simulation/stop, discovered by reading the backend. Combined with the unbounded horizon issue (a single prompt can commit the system to 2160 rounds), the absence of a visible stop control is an operational and cost risk: the user's realistic options are killing the process or letting it run to collapse.
Reproduction
- Start any simulation.
- Look for a stop/cancel/abort affordance in the UI while it runs — there is none.
POST /api/simulation/stop (undocumented) does stop the run.
Observed
- No stop/cancel button or menu item during a running simulation.
POST /api/simulation/stop works, but is not documented or exposed; we only found it via source inspection, and used it for controlled stops of degrading long runs.
- Side effect worth noting: stopping mid-run also tears down the interview environment (which only comes up when both platforms complete), so a controlled stop currently costs the user the interview stage entirely.
Expected
A running simulation should be stoppable from the UI, with the run's partial artifacts (graph, per-round logs, partial report inputs) preserved and, ideally, the post-run stages (report, interviews) still usable on the partial data.
Suggested fix
- Expose a Stop button in the running-simulation view wired to the existing
/api/simulation/stop endpoint (the backend capability already exists — this is primarily a UI wiring task).
- Document the endpoint in the API docs regardless.
- Consider a "graceful stop" mode that finishes the current round and then proceeds to the normal post-run pipeline, so stopped runs keep interview/report functionality.
Context / disclosure: We are an independent research team auditing multi-agent simulation pipelines. We found this while running a systematic 18-run study on MiroFish-Offline across four LLM families. We plan to publish a reproducible study referencing this issue in roughly 4 weeks, and we're happy to share drafts with maintainers beforehand. Thank you for open-sourcing this project — it made this kind of research possible in the first place.
Summary
Once a simulation is running there is no way to stop it from the UI. The only stop path we found is an undocumented
POST /api/simulation/stop, discovered by reading the backend. Combined with the unbounded horizon issue (a single prompt can commit the system to 2160 rounds), the absence of a visible stop control is an operational and cost risk: the user's realistic options are killing the process or letting it run to collapse.Reproduction
POST /api/simulation/stop(undocumented) does stop the run.Observed
POST /api/simulation/stopworks, but is not documented or exposed; we only found it via source inspection, and used it for controlled stops of degrading long runs.Expected
A running simulation should be stoppable from the UI, with the run's partial artifacts (graph, per-round logs, partial report inputs) preserved and, ideally, the post-run stages (report, interviews) still usable on the partial data.
Suggested fix
/api/simulation/stopendpoint (the backend capability already exists — this is primarily a UI wiring task).Context / disclosure: We are an independent research team auditing multi-agent simulation pipelines. We found this while running a systematic 18-run study on MiroFish-Offline across four LLM families. We plan to publish a reproducible study referencing this issue in roughly 4 weeks, and we're happy to share drafts with maintainers beforehand. Thank you for open-sourcing this project — it made this kind of research possible in the first place.