Component packages
Immutable packages let a company adopt optional capability without making its semantics part of the mechanical runtime.
What a component package is
A component package carries an exact, immutable implementation of a company capability. It may contribute services, schemas, tools, interfaces, adapters, or operational behavior. The package and its component own their domain semantics; the kernel does not reinterpret them as teams, tasks, workflows, or any other universal model.
Packages can support agent-facing tools, external integrations, memory systems, operator views, execution providers, or entirely different company-local components. Agent use is one case, not the definition of the boundary.
Distribution is not adoption
- Publish — The registry distributes immutable artifact bytes and exact identity metadata. It does not install, activate, grant, or own the package lifecycle.
- Acquire — A consumer fetches and verifies exact bytes. Acquisition alone does not make the package selected company state.
- Select — The operating graph records an exact component desire: package, configuration, target, and desired presence.
- Apply — The selected company-local component target validates and applies the desire, then reports package-owned status.
State and authority stay explicit
If a component owns important state or makes external promises, its boundary should expose the status, export, recovery, replacement, and credential behavior appropriate to that domain. These are component-owned contracts, not fields in a generic installation workflow.
Replacement changes the graph-selected desire and lets the owning target reconcile the transition. Removing a package from a registry catalog does not silently change a running company.
Failure modes
- Core absorption — Every useful extension becomes kernel behavior, making the runtime too thick and semantically opinionated.
- Acquisition-as-selection — Downloaded bytes are treated as live company intent without an exact graph desire.
- Hidden ownership — A component owns state or external actuality without exposing how to observe, recover, or replace it.
- Mutable-source drift — Runtime behavior depends on a source tree or moving remote ref instead of an immutable artifact.
- Registry lifecycle creep — Distribution code starts deciding activation, permissions, scope, or component-owned state.