Skip to content

SourceBundle Extension Boundary

Effectus does not have a runtime extension manager. The supported declaration unit is one immutable bundle.SourceBundle.

Bundle contents

A SourceBundle contains rule sources, an immutable declaration environment, and verb executor descriptors. effectusc check, compile, and inspect accept only this bundle. effectusd accepts one bundle from a file or a digest-pinned, signature-verified OCI reference.

The daemon compiles the bundle once at startup. It does not load extension directories, JSON manifests, plugins, dynamic schemas, or rule updates.

Executor descriptors

Production daemon bundles use resolved HTTP invocation descriptors. The daemon resolves every descriptor before it becomes ready. A missing or unsupported descriptor fails startup.

The HTTP destination receives stable invocation, idempotency, contract, attempt, and fencing metadata. The destination must enforce idempotency or fencing where its business mutation needs that guarantee.

The generated gRPC service is an inbound execution API. Kafka is an inbound fact source. Neither is an outbound executor descriptor.

Embedded applications

A trusted Go application can use embedded.Open with a static resolver registry. This is process-local application code, not a plugin mechanism and not a daemon extension path. The shared embedded example consumes the exact examples/order_review rule and data artifacts through Go embedding.

OCI distribution

OCI distributes the immutable SourceBundle layer. effectusd --oci-ref requires a digest-pinned reference and --oci-signature-verifier; the verifier defines the operator trust policy. OCI tags, unverifiable content, and mutable reload configuration are not accepted.