Node Manifest Profile and Contracts v0.2.0
This document is the normative description of the Node Manifest profile and contracts blocks for schemaVersion 0.2.0. These blocks are optional naming and hashing constructs. They declare which mission fabric profile and runtime ABI the manifest assumes, and which policy bundles it was compiled against. They do not change envelope selection or eligibility semantics.
The JSON Schema at schema/node-manifest.v0.schema.json describes the shape of these blocks. This document defines the meaning and expected behaviour of the fields exposed there. If there is any ambiguity in how to interpret a field, this text is definitive.
Profile block
When present, the top-level profile field is an object with two required fields: profileId and runtimeAbi.
The profileId field identifies the mission fabric profile line that gives semantics to this manifest. It is an opaque string from the schema's point of view. It may refer to a profile document, an internal profile registry entry, or a deployment-specific naming scheme.
The runtimeAbi field identifies the mission domain runtime ABI that this manifest assumes. It is also an opaque string. It allows runtimes and tooling to confirm that a manifest was compiled against a compatible execution interface.
Neither profileId nor runtimeAbi affects selection or validity. They are identifiers used to route manifests to appropriate validators and policy catalogs. Consumers that do not recognize these identifiers must ignore them rather than rejecting the document.
Contracts block
When present, the top-level contracts field is an object that names one or more policy bundles used at compile time. The object must contain at least one of the fields listed below and must not include any additional properties.
Each field value is an opaque, non-empty string. It is intended to be a digest or content identifier, but the schema does not enforce a specific hash algorithm or URI scheme.
The fields are:
contractsDigest: digest for the overall kinematics and mission-constraint contract bundle.lensCatalogDigest: digest for the catalog of mission value functions and lenses.conditionCatalogDigest: digest for the catalog of world-condition encodings.analyticsContractDigest: digest for the analytics and scoring rules bundle.capacityContractDigest: digest for the resource budgeting contract.
In schemaVersion 0.2.0 these fields are referential only. They assert which bundles were used when compiling the manifest but do not introduce runtime enforcement by themselves. Consumers that do not know or care about these bundles must ignore the entire contracts block rather than rejecting the manifest.
Relationship to envelope and selection
The profile and contracts blocks do not change how manifests are selected or considered eligible at a given time. The reference helper selectActiveManifestForNode ignores them and uses only envelope fields. Two manifests that are identical in their envelope and differ only in profile or contracts fields are considered equally eligible; the usual issuedAt and manifestId tie-breakers apply.