mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-05-02 13:30:13 +00:00
206 lines
4.5 KiB
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
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|