Targets and artifacts
The target table — which layout each target emits, and why the portable standard omits rules, commands, and hooks — is in Configuration model. The directory layouts are in Project structure. This page is the artifact contract those layouts have to satisfy.
Every target directory is distributable
A built target directory is the unit of distribution: no packaging step follows the build. Each
one carries the components the host reads, a generated INSTALL.md written with the bundle's
real plugin and marketplace names, and the install surface that target requires.
Artifact validation errors when a target is missing a required install-surface file, so a bundle
cannot ship without the installer its INSTALL.md promises. The npm pack inventory checks the
same paths (AB7010).
agent-bundle.manifest.json
One manifest is emitted per artifact and is the input to every later integrity check —
validate --artifact, prepack, doctor --from, and the packed and installed-host proof levels.
kind is one of bundle, copy, generated, or prebuilt — a bundled entry, a byte-for-byte
copy, a compiler-generated document, or a prebuilt payload file. sourceInputs records each
input path with its own SHA-256 and, where relevant, whether it was executable.
Because every file carries a digest, validation compares real bytes rather than checking that
a path exists, and a hand-edited generated file fails. That contract is what makes
validate --artifact, mcp, and hooks work against an artifact whose project sources have been
deleted.
Versions and revisions
Four version axes are tracked separately and are expected to agree:
- Source — the project's
package.jsonrelease version. - Built artifact —
project.packageVersionin the manifest. - Installed artifact — the manifest found under a host's installed root.
- Running process — the version a live MCP
initializereports.
The host-install proof level records all four and fails closed when any is missing or differs.
prepack gates the first two plus normalized plugin metadata and host manifests (AB7013).
Target rows also record an adapterRevision (monotonic, repository-owned) and an
observedVersion (the host version the capability evidence was recorded against). Neither is
hashed: Git already versions repository-owned content, and hashing it again inside the repository
causes churn on every table edit. Hash pins are reserved for vendored external content — host
document schemas under src/adapters/schemas/* with their PROVENANCE.json, the Agent Skills
schema pin, and emitted files and source inputs.
Next
- Artifact validation — the checks that read this manifest.
- Runtime environment — what the emitted executables assume at run time.