Files
pulse/docs/release-control/v6/internal/subsystems/registry.schema.json
T

216 lines
5.1 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://pulse.local/docs/release-control/v6/internal/subsystems/registry.schema.json",
"title": "Pulse v6 Subsystem Registry Schema",
"type": "object",
"additionalProperties": false,
"required": [
"version",
"shared_ownerships",
"subsystems"
],
"properties": {
"version": {
"type": "integer",
"const": 13
},
"shared_ownerships": {
"type": "array",
"items": {
"$ref": "#/$defs/shared_ownership"
}
},
"subsystems": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/subsystem"
}
}
},
"$defs": {
"subsystem": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"lane",
"contract",
"owned_prefixes",
"owned_files",
"verification"
],
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"lane": {
"type": "string",
"pattern": "^L[0-9]+$"
},
"contract": {
"type": "string",
"minLength": 1
},
"owned_prefixes": {
"type": "array",
"uniqueItems": true,
"items": {
"type": "string",
"minLength": 1
}
},
"owned_files": {
"type": "array",
"uniqueItems": true,
"items": {
"type": "string",
"minLength": 1
}
},
"release_cycle_artifact_globs": {
"description": "Glob patterns for files this subsystem owns but that are per-release-cycle artifacts (RC packet drafts, version-pointer docs, regenerated record files) rather than contract-shape surfaces. Changes matching any of these globs skip the contract-update requirement check for this subsystem; the file is still considered subsystem-tracked otherwise. Use sparingly: contract-shape files (Dockerfiles, workflow YAMLs, runbook procedures) belong in owned_files, not here.",
"type": "array",
"uniqueItems": true,
"items": {
"type": "string",
"minLength": 1
}
},
"verification": {
"$ref": "#/$defs/verification"
}
}
},
"verification": {
"type": "object",
"additionalProperties": false,
"required": [
"allow_same_subsystem_tests",
"test_prefixes",
"exact_files",
"require_explicit_path_policy_coverage",
"path_policies"
],
"properties": {
"allow_same_subsystem_tests": {
"type": "boolean"
},
"test_prefixes": {
"type": "array",
"uniqueItems": true,
"items": {
"type": "string",
"minLength": 1
}
},
"exact_files": {
"type": "array",
"uniqueItems": true,
"items": {
"type": "string",
"minLength": 1
}
},
"require_explicit_path_policy_coverage": {
"type": "boolean",
"const": true
},
"path_policies": {
"type": "array",
"items": {
"$ref": "#/$defs/path_policy"
}
}
}
},
"path_policy": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"label",
"match_prefixes",
"match_files",
"allow_same_subsystem_tests",
"test_prefixes",
"exact_files"
],
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"label": {
"type": "string",
"minLength": 1
},
"match_prefixes": {
"type": "array",
"uniqueItems": true,
"items": {
"type": "string",
"minLength": 1
}
},
"match_files": {
"type": "array",
"uniqueItems": true,
"items": {
"type": "string",
"minLength": 1
}
},
"allow_same_subsystem_tests": {
"type": "boolean"
},
"test_prefixes": {
"type": "array",
"uniqueItems": true,
"items": {
"type": "string",
"minLength": 1
}
},
"exact_files": {
"type": "array",
"uniqueItems": true,
"items": {
"type": "string",
"minLength": 1
}
}
}
},
"shared_ownership": {
"type": "object",
"additionalProperties": false,
"required": [
"path",
"rationale",
"subsystems"
],
"properties": {
"path": {
"type": "string",
"minLength": 1
},
"rationale": {
"type": "string",
"minLength": 1
},
"subsystems": {
"type": "array",
"minItems": 2,
"uniqueItems": true,
"items": {
"type": "string",
"minLength": 1
}
}
}
}
}
}