Files
ITWorx_MCP_Hub-Public/contracts/schemas/release-record.schema.json
T

71 lines
3.3 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "ITWorx MCP Hub Release Record",
"description": "Unambiguous, machine-readable release provenance: distinguishes repository HEAD, application source commit, image build revision, deployed revision, release-evidence commit, and annotated release tag. See docs/09-release/RELEASE_PROVENANCE.md.",
"type": "object",
"additionalProperties": false,
"$id": "https://hub.example.com/schemas/release-record.schema.json",
"required": [
"schemaVersion",
"generatedAt",
"repositoryHead",
"releaseSourceCommit",
"imageBuildRevision",
"deployedRevision",
"releaseEvidenceCommit",
"releaseTag",
"images"
],
"properties": {
"schemaVersion": { "const": "1.0" },
"generatedAt": { "type": "string", "format": "date-time" },
"repositoryHead": {
"description": "The exact commit this record was rendered against. Always populated: `git rev-parse HEAD` at render time.",
"type": "string",
"pattern": "^[0-9a-f]{40}$"
},
"releaseSourceCommit": {
"description": "The one exact commit every owned runtime image for this release is built from. Preferred-model invariant: this equals imageBuildRevision for every image in `images` once a release is cut.",
"type": ["string", "null"],
"pattern": "^[0-9a-f]{40}$"
},
"imageBuildRevision": {
"description": "The commit baked into every owned image's org.opencontainers.image.revision label at build time (see infrastructure/images/*/Dockerfile GIT_REVISION build arg). Must equal releaseSourceCommit for a valid release; a mismatch here is a release-blocking defect, not a warning.",
"type": ["string", "null"],
"pattern": "^[0-9a-f]{40}$"
},
"deployedRevision": {
"description": "The commit each named deployment target actually runs, keyed by target name (e.g. \"tower\"). Populated only from live-verified evidence (e.g. evidence/WP-190, WP-210); never inferred or assumed.",
"type": "object",
"additionalProperties": {
"type": ["string", "null"],
"pattern": "^[0-9a-f]{40}$"
}
},
"releaseEvidenceCommit": {
"description": "The commit that recorded this release's post-acceptance evidence (e.g. a docs/evidence-only commit made after live acceptance testing). Deliberately distinct from releaseSourceCommit: evidence is committed after the fact and must never be presented as though it were the source revision that was built and tested.",
"type": ["string", "null"],
"pattern": "^[0-9a-f]{40}$"
},
"releaseTag": {
"description": "The annotated Git tag (e.g. v1.0.0) pointing at releaseSourceCommit, once created. Null before tagging.",
"type": ["string", "null"]
},
"images": {
"description": "Per-service image provenance: tag, immutable digest, and the commit baked into its OCI revision label.",
"type": "object",
"additionalProperties": {
"type": "object",
"additionalProperties": false,
"required": ["revision"],
"properties": {
"tag": { "type": "string" },
"digest": { "type": ["string", "null"], "pattern": "^sha256:[0-9a-f]{64}$" },
"revision": { "type": ["string", "null"], "pattern": "^[0-9a-f]{40}$" }
}
}
},
"notes": { "type": "string" }
}
}