Skip to main content

15. Risks and mitigations

RiskMitigation
Rust agent ecosystem churn (rig 0.43–0.46 changed heavily)rig is confined to crates/llm. Structured output and embeddings use plain OpenAI-compatible HTTP. Exact pins
graph-flow has one maintainerIt is confined to app/src/engine and the Task impls in app/src/kinds. YAML definitions are engine-neutral. Be ready to fork
graph-flow runs without its own Postgres storageOur SessionStorage is about 60 lines and is covered by the restart-and-resume test
Stale ag-ui-core; AG-UI 1.0 versus CopilotKit client mismatchOwn agui crate, protocol-version negotiation, legacy event path, golden event tests against the pinned CopilotKit
CopilotKit useInterrupt quirksNon-tool-bound confirmation interrupts, server-side validation, an end-to-end browser test
Loco 1.x API driftExact pin. Loco types stay inside app/; library crates do not depend on Loco
YAML turns into a programming languageConditions are limited to structured comparisons. Anything more complex becomes a task kind with tests
Config errors found only in productiondeny_unknown_fields, boot-time cross-validation, config_validate in CI, generated JSON Schemas in editors
Secrets leaking into YAMLOnly get_env references are allowed; CI scans config/
Long steps inside an SSE requestSteps over a time budget are handed to a Loco worker, and the stream reports progress from the session
Open-core drift (Activepieces, Langfuse, SeaweedFS)Native connectors and Jaeger by default. Optional services sit behind compose profiles. Quarterly LICENSE diff
Extraction qualitySchema-constrained decoding, deterministic rules, mandatory approval, eval gate, model swap in YAML
Model license changesRevision-pinned weights mirrored internally, allow-list check at boot
Prompt injection through documentsData fencing, no autonomous payment tools, forced approval for bank-detail changes