Pulse/docs/release-control/v6/internal/subsystems/registry.schema.json

206 lines
4.5 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": 12
},
"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
}
},
"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
}
}
}
}
}
}