Summary
We have a recurring developer-experience confusion across the ecosystem around where the purity boundary actually lives.
The clearest canonical wording is:
Jido keeps agent decision logic pure. Actions may be pure or effectful. Directives are for effects you want the runtime to own.
jido should be the source of truth for that statement, and the sibling packages should echo it in package-appropriate ways.
Problem
Today the docs can be read in a few different ways:
cmd/2 is pure
- directives describe runtime-owned effects
- actions may perform side effects
- signals/dispatch deliver emitted events
All of those are individually true, but the relationship between them is not stated plainly enough in one canonical place.
That leads to real developer confusion around questions like:
- are actions supposed to be pure?
- when is HTTP/I/O in
run/2 acceptable?
- when should something be a directive instead of an effectful action?
- what exactly does
Directive.Emit / dispatch own?
Proposed direction
Make jido the canonical home for the mental model:
Jido keeps agent decision logic pure. Actions may be pure or effectful. Directives are for effects you want the runtime to own.
Then reinforce it with a short decision rule:
- if the step needs a result back now to continue reasoning or update state, an effectful action is acceptable
- if the workflow has already decided on an outbound effect and wants the runtime/integration layer to own delivery, return a directive
Suggested jido touchpoints
README.md
guides/core-loop.md
guides/actions.md
guides/directives.md
lib/jido.ex moduledoc
lib/jido/agent.ex moduledoc
Ecosystem follow-ups
Acceptance criteria
jido docs have one canonical explanation of the purity/effects boundary.
- The README and core guides no longer imply that all side effects must be directives.
- The docs explicitly distinguish:
- pure agent/strategy decision logic
- actions as reusable execution units that may be effectful
- directives as runtime-owned effect descriptions
- signals/dispatch as delivery infrastructure
- The sibling package docs are linked/aligned from this canonical explanation.
Summary
We have a recurring developer-experience confusion across the ecosystem around where the purity boundary actually lives.
The clearest canonical wording is:
jidoshould be the source of truth for that statement, and the sibling packages should echo it in package-appropriate ways.Problem
Today the docs can be read in a few different ways:
cmd/2is pureAll of those are individually true, but the relationship between them is not stated plainly enough in one canonical place.
That leads to real developer confusion around questions like:
run/2acceptable?Directive.Emit/ dispatch own?Proposed direction
Make
jidothe canonical home for the mental model:Then reinforce it with a short decision rule:
Suggested
jidotouchpointsREADME.mdguides/core-loop.mdguides/actions.mdguides/directives.mdlib/jido.exmoduledoclib/jido/agent.exmoduledocEcosystem follow-ups
agentjido/jido_action: clarify action purity and I/O expectations in docs (agentjido/jido_action#138)agentjido/jido_ai: clarify tool-action I/O vs runtime-owned effects in docs (agentjido/jido_ai#243)agentjido/jido_signal: clarify dispatch's role in the docs relative to the wider effect boundary (agentjido/jido_signal#137)Acceptance criteria
jidodocs have one canonical explanation of the purity/effects boundary.