A registry exists only through its charter. Every cartridge registry, fabric registry and app
release registry is named by an anchor, any URL, and serves at <anchor>/charter.json a
charter signed by MachineFabric, with its signature at <anchor>/charter.json.sig. The charter
states everything about the registry: its slug, which names its folders on disk; its kind; its
environment; where its manifests are; and, for a cartridge registry, the fabric its caps
resolve against. capdag reads every address and folder name from the verified charter, and
derives none from the shape of a URL. A registry is refused when:
it has no charter, or its charter does not verify against the MachineFabric roots the build
carries;
its charter names another anchor or another kind;
its charter is for another environment than the build’s;
its charter has expired;
another registry already holds its slug.
The cartridge registry is at version 4, schema revision 8.0. A registry is named by its anchor,
so a manifest’s registryUrl, every cartridge.json‘s registry_url and the registry a build
carries are the anchor, where version 3 used the manifest’s URL. An installed registry’s folder
holds its charter beside its cartridges. Discovery verifies that charter offline, and refuses a
folder whose name is not the charter’s slug, or a cartridge whose registry_url is not the
charter’s anchor. A host reads only the registry at its own version.
capdag checks the release registry’s charter before it updates itself.