ADR-0021: Managed Extension Lifecycle and Manifest
- Status: Accepted
- Date: 2026-07-24
- Authors: Intentloom Maintainers
Context
Projects integrated with Intentloom frequently leverage external extensions, including portable Agent Skills, local stdio/HTTP MCP servers, knowledge graph indexers (e.g., Graphify), and custom workflow policy packs.
Without a vendor-neutral governance model:
- Third-party skills or MCP servers could execute unverified shell commands or make hidden network calls.
- Dependencies could drift silently due to unpinned
latestresolution. - Third-party licenses, copyrights, and attribution terms could be violated.
- Core Intentloom architecture could become tightly coupled to specific third-party tools.
Decision
Intentloom adopts a Managed Extension Lifecycle based on EXTENSION_LIFECYCLE.md:
- Extension Manifest (
urn:aif:schema:extension-manifest:1): Every external extension must declare a manifest defining its category, publisher, license, version bounds, required capabilities (filesystem access, process execution, network endpoints), and entry points. - Extension Lockfile (
urn:aif:schema:extension-lock:1): Resolved extensions are pinned in.aif/extension-lock.jsonwith exact resolved versions, source URLs, artifact digests, and granted capability approvals. - Pre-Adoption Inspection & Human Approval: Extension adoption and update operations must perform dry-run pre-adoption inspection (license check, capability diff, compatibility verification) before requesting explicit human approval.
- Fail-Closed Transactional Installs: Extension installation or updates must be executed within transactional rollback boundaries. Any integrity failure, capability expansion without approval, or license mismatch triggers immediate rollback.
Consequences
Positive
- Prevents silent supply-chain attacks, unapproved capability expansions, and hidden telemetry in external extensions.
- Provides reproducible, pinned extension environments via
.aif/extension-lock.json. - Keeps third-party integrations (such as Graphify, Chrome DevTools MCP, or custom skills) decoupled from canonical core code.
Negative
- Requires maintaining versioned JSON schemas for extension manifests and lockfiles.
- Unapproved third-party extensions without manifests must be inspected before adoption.