TenantAtlas/specs/210-ci-matrix-budget-enforcement/contracts/ci-lane-matrix.schema.json
Ahmed Darrazi abdec60d7a
Some checks failed
PR Fast Feedback / fast-feedback (pull_request) Failing after 50s
Spec 210: implement CI test matrix budget enforcement
2026-04-17 19:59:25 +02:00

383 lines
8.4 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://tenantpilot.local/specs/210/contracts/ci-lane-matrix.schema.json",
"title": "CI Lane Matrix Contract",
"type": "object",
"additionalProperties": false,
"required": [
"version",
"mainlineBranch",
"workflowProfiles",
"laneBindings",
"budgetEnforcementProfiles",
"failureClasses"
],
"properties": {
"version": {
"type": "integer",
"minimum": 1
},
"mainlineBranch": {
"type": "string",
"minLength": 1
},
"workflowProfiles": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/definitions/workflowProfile"
}
},
"laneBindings": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/definitions/laneBinding"
}
},
"budgetEnforcementProfiles": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/definitions/budgetEnforcementProfile"
}
},
"artifactPublicationContracts": {
"type": "array",
"items": {
"$ref": "#/definitions/artifactPublicationContract"
}
},
"failureClasses": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/definitions/failureClassification"
}
}
},
"definitions": {
"workflowProfile": {
"type": "object",
"additionalProperties": false,
"required": [
"workflowId",
"filePath",
"triggerClass",
"gitEvents",
"runnerLabel",
"blockingDefault",
"laneBindings"
],
"properties": {
"workflowId": {
"type": "string",
"minLength": 1
},
"filePath": {
"type": "string",
"pattern": "^\\.gitea/workflows/.+\\.ya?ml$"
},
"triggerClass": {
"enum": [
"pull-request",
"mainline-push",
"scheduled",
"manual"
]
},
"gitEvents": {
"type": "array",
"minItems": 1,
"items": {
"type": "string",
"minLength": 1
}
},
"branchFilters": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"runnerLabel": {
"type": "string",
"minLength": 1
},
"blockingDefault": {
"type": "boolean"
},
"scheduleCron": {
"type": [
"string",
"null"
]
},
"laneBindings": {
"type": "array",
"minItems": 1,
"items": {
"type": "string",
"minLength": 1
}
}
}
},
"laneBinding": {
"type": "object",
"additionalProperties": false,
"required": [
"laneId",
"executionWrapper",
"reportWrapper",
"commandRef",
"governanceClass",
"requiredArtifacts"
],
"properties": {
"laneId": {
"enum": [
"fast-feedback",
"confidence",
"heavy-governance",
"browser",
"profiling",
"junit"
]
},
"executionWrapper": {
"const": "scripts/platform-test-lane"
},
"reportWrapper": {
"const": "scripts/platform-test-report"
},
"commandRef": {
"type": "string",
"minLength": 1
},
"governanceClass": {
"enum": [
"fast",
"confidence",
"heavy",
"support"
]
},
"parallelMode": {
"enum": [
"required",
"optional",
"forbidden"
]
},
"requiredArtifacts": {
"type": "array",
"minItems": 1,
"items": {
"enum": [
"summary.md",
"budget.json",
"report.json",
"junit.xml",
"profile.txt"
]
}
},
"optionalArtifacts": {
"type": "array",
"items": {
"enum": [
"summary.md",
"budget.json",
"report.json",
"junit.xml",
"profile.txt"
]
}
},
"artifactExportProfile": {
"type": "string",
"minLength": 1
}
}
},
"budgetEnforcementProfile": {
"type": "object",
"additionalProperties": false,
"required": [
"policyId",
"laneId",
"triggerClass",
"thresholdSource",
"baseThresholdSeconds",
"varianceAllowanceSeconds",
"effectiveThresholdSeconds",
"enforcementMode",
"lifecycleState"
],
"properties": {
"policyId": {
"type": "string",
"minLength": 1
},
"laneId": {
"type": "string",
"minLength": 1
},
"triggerClass": {
"enum": [
"pull-request",
"mainline-push",
"scheduled",
"manual"
]
},
"thresholdSource": {
"enum": [
"lane-budget",
"governance-contract"
]
},
"baseThresholdSeconds": {
"type": "number",
"minimum": 0
},
"varianceAllowanceSeconds": {
"type": "number",
"minimum": 0
},
"effectiveThresholdSeconds": {
"type": "number",
"minimum": 0
},
"enforcementMode": {
"enum": [
"hard-fail",
"soft-warn",
"trend-only"
]
},
"lifecycleState": {
"type": "string",
"minLength": 1
},
"reviewCadence": {
"type": "string"
}
}
},
"artifactPublicationContract": {
"type": "object",
"additionalProperties": false,
"required": [
"contractId",
"laneId",
"sourceDirectory",
"requiredFiles",
"stagingDirectory",
"stagedNamePattern",
"uploadGroupName"
],
"properties": {
"contractId": {
"type": "string",
"minLength": 1
},
"laneId": {
"type": "string",
"minLength": 1
},
"sourceDirectory": {
"const": "storage/logs/test-lanes"
},
"sourcePatterns": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"requiredFiles": {
"type": "array",
"minItems": 1,
"items": {
"type": "string",
"minLength": 1
}
},
"optionalFiles": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"stagingDirectory": {
"type": "string",
"minLength": 1
},
"stagedNamePattern": {
"type": "string",
"minLength": 1
},
"uploadGroupName": {
"type": "string",
"minLength": 1
},
"retentionClass": {
"enum": [
"pr-short",
"mainline-medium",
"scheduled-medium"
]
}
}
},
"failureClassification": {
"type": "object",
"additionalProperties": false,
"required": [
"failureClassId",
"sourceStep",
"blockingOn",
"summaryLabel",
"remediationHint"
],
"properties": {
"failureClassId": {
"enum": [
"test-failure",
"wrapper-failure",
"budget-breach",
"artifact-publication-failure",
"infrastructure-failure"
]
},
"sourceStep": {
"type": "string",
"minLength": 1
},
"blockingOn": {
"type": "array",
"items": {
"enum": [
"pull-request",
"mainline-push",
"scheduled",
"manual"
]
}
},
"summaryLabel": {
"type": "string",
"minLength": 1
},
"remediationHint": {
"type": "string",
"minLength": 1
}
}
}
}
}