A registered effect: name is its only identity (unique per definition,
read downstream as $effects.<name>) — the host app registers a handler
against it 1:1, and the stored definition never references code.
bindings are GROQ reads over the rendered scope, resolved to concrete
JSON at queue time; input is static config passed through verbatim.
outputs (typed FieldShapes) is a STRICT allowlist: at completion
an undeclared output key, or a value that doesn't fit its shape, fails the
completion and nothing is stored. Omitting outputs is an EMPTY allowlist,
so ANY returned output is rejected and fails the completion — the bound is
universal, not opt-in.
A registered effect:
nameis its only identity (unique per definition, read downstream as$effects.<name>) — the host app registers a handler against it 1:1, and the stored definition never references code.bindingsare GROQ reads over the rendered scope, resolved to concrete JSON at queue time;inputis static config passed through verbatim.outputs(typed FieldShapes) is a STRICT allowlist: at completion an undeclared output key, or a value that doesn't fit its shape, fails the completion and nothing is stored. Omittingoutputsis an EMPTY allowlist, so ANY returned output is rejected and fails the completion — the bound is universal, not opt-in.