Problem
Even with "data-only" workflow configs, the engine has host-provided extension points (providers, registries, sinks). These require an explicit trust model. Today the trust boundary is not clearly documented and defaults may allow risky behavior.
Goal
- Clearly document which inputs must be trusted (host responsibility).
- Ensure defaults minimize risk ("secure by default").
Scope
- Documentation updates (README + architecture/docs + examples):
Providers.StepRegistry is trusted host input
Context.EventSink is trusted host input
- Explain "safe by default" policy & how to opt-in for dev/test
- Runtime enforcement:
- Defaults reject ScriptBlock handlers/sinks (see related issues)
- Errors/warnings are actionable and point to docs
Acceptance criteria
Related
- Refactor eventing into one sink contract
- Disallow ScriptBlock step handlers by default
Problem
Even with "data-only" workflow configs, the engine has host-provided extension points (providers, registries, sinks). These require an explicit trust model. Today the trust boundary is not clearly documented and defaults may allow risky behavior.
Goal
Scope
Providers.StepRegistryis trusted host inputContext.EventSinkis trusted host inputAcceptance criteria
Related