Manifest Authoring
This document describes the process for authoring Manifests — the JSON descriptors for Adapters and Modules that live in the central registry. The process follows the graduated trust model established in ADR-0018.
Authoring Stages
Manifest authoring evolves with system maturity. Three stages:
Stage 1: LLM-Drafted, Human-Directed
When: First ~30 Manifests per language slice.
Process:
- A platform team member identifies the target library or service
- The team member directs an LLM to draft the Manifest, providing:
- The specific library name and version
- Reference Manifests for similar Adapters (template-based authoring)
- Specific requirements (which Capabilities to declare, which Contract to implement)
- The LLM produces the draft
- The team member reviews every field, corrects errors, refines Capabilities
- Mechanical checks run (see below)
- The Manifest is admitted
Purpose: Establish quality bar. Discover edge cases. Build the reference corpus future stages depend on.
Stage 2: LLM-Drafted, Human-Reviewed
When: After the initial corpus exists; Manifest authoring needs to scale.
Process:
- An agent (or the LLM directly) drafts a full Manifest based on research: upstream documentation, similar Adapters in the registry, library introspection
- A Human Reviewer reviews key fields:
- Identity (slug correct, version current)
- License (matches upstream, SPDX correct)
- Security (no open CVEs, signature verified)
- Capabilities (correctly declared, no fabricated IDs)
- Provenance (audit trail entry added)
- Mechanical checks run
- The Manifest is admitted
Purpose: Increase throughput while preserving trust.
Stage 3: Agent-Ratified for Low-Risk Updates
When: Post-MVP, after Stage 2 has proven consistent.
Process:
- For low-risk updates (minor version bumps of well-established Adapters, well-defined categories), an agent fully ratifies the Manifest update
- A human samples a random subset of agent-ratified updates each week
- Patterns of error trigger reverting that category back to Stage 2
Low-risk means: patch or minor version bumps of Adapters in active lifecycle status, in categories with at least 20 prior Manifests, with no changes to declared Capabilities or Contracts, and clean automated checks.
High-risk updates (new categories, security-critical Adapters, breaking changes, Capability changes) remain at Stage 2 indefinitely.
Mechanical Checks (All Stages)
Run automatically on every Manifest submission. Block admission on failure:
| Check | Tool / Method |
|---|---|
| License declaration matches upstream | License scanner against SPDX |
| No open CVEs against the declared version | CVE scanner (Trivy, Grype, OSV) |
| Signature verification (when applicable) | GPG/Sigstore verification |
| JSON Schema validation against Manifest schema | JSON Schema validator |
| Capability IDs exist in the central registry | Lookup in Capability namespace |
| Contract IDs exist in the central registry | Lookup in Contract namespace |
| UUID is unique across the registry | Database constraint |
| Slug is unique within type and namespace | Database constraint |
| Source coordinates resolve | Fetch test against Maven/npm/PyPI/OCI |
| Compatibility declarations don’t contradict existing ones | Graph consistency check |
Manifest Templates by Type
To accelerate authoring, the platform maintains starter templates per category. Examples:
templates/adapter-manifest/persistence.json— boilerplate for persistence Adapterstemplates/adapter-manifest/llm-provider.json— boilerplate for LLM provider SDKstemplates/module-manifest/auth.json— boilerplate for auth Modules
Authors copy a template and fill in specifics rather than starting from a blank Manifest. Templates encode the typical fields, common pitfalls, and reference patterns.
Roles
| Role | Responsibilities |
|---|---|
| Human Reviewer | Reviews and ratifies Stage 1 and Stage 2 Manifests. Samples Stage 3 outputs. |
| Author (human or agent) | Drafts Manifests under the appropriate stage’s process. |
| Curator | Maintains the Capability namespace; reviews new Capability proposals. |
| Security Reviewer | Reviews high-risk Manifests (cryptography, auth, payments) regardless of stage. |
A single platform team member may hold multiple roles in the early days; roles are conceptually separate to support scaling.
Promotion Criteria
A language slice or category moves from Stage 1 to Stage 2 when:
- At least 25 Stage 1 Manifests have been admitted in the slice or category
- The Manifest defect rate (corrections required during review) has dropped below 10%
- Reference Manifests exist for the major patterns in that slice or category
A category moves from Stage 2 to Stage 3 eligibility when:
- At least 50 Stage 2 Manifests admitted in the category
- No security or correctness issues traced to authoring in the prior 60 days
- The category’s Adapters have stable Capability declarations (no namespace churn)
Promotion is approved by the platform engineering lead.
Manifest Update Workflow
When an upstream library releases a new version:
- An agent detects the new release (via release feeds, GitHub watches, registry polling)
- The agent drafts an updated Manifest (incrementing
identity.version) - Mechanical checks run on the new version
- Stage 2 or Stage 3 process applies depending on the category
- The updated Manifest is admitted; the previous version remains in the registry for historical reference
- Generated apps continue to resolve correctly because they reference specific versions (lockfile-style)
Authoring an Adapter Manifest: Walkthrough
A worked example: authoring adapter:java/spring-data-jpa@3.2.4:
- Identify target: Spring Data JPA, latest stable release 3.2.4
- Copy template: Start from
templates/adapter-manifest/persistence.json - Fill identity: ID, UUID (newly generated), version, source (Maven coordinates)
- Declare capabilities:
crud,transactions,pagination,query-dslwith appropriate sub-fields - Declare contracts:
contract:persistence/repository/v1with Java binding - Fill compatibility: Requires Spring Boot 3.x, Java 17+, compatible with Hibernate 6.x
- Fill provenance: Apache-2.0 license, verified at admission, CVE scan clean, audit trail entry
- Fill integration: Imports, build dependency snippet, typical usage pattern, common pitfalls
- Fill lifecycle: Status
active, added_at, maintenance signals - Run mechanical checks
- Submit for review (Stage 2)
- Reviewer approves → admitted
The whole process takes 30–60 minutes per Adapter in Stage 2 (down from several hours in Stage 1 as the team learned the format).
Related
- Concepts → Manifest
- Schemas → Adapter Manifest v1
- Schemas → Module Manifest v1
- Governance → Curation Pipeline
- ADR-0018: LLM-Drafted Human-Directed Manifest Authoring