Files
chimera-Public/schemas/task-queue.schema.json
T

163 lines
3.2 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://chimera.local/schemas/task-queue.schema.json",
"title": "Chimera autonomous task queue",
"type": "object",
"additionalProperties": false,
"required": [
"schema_version",
"project",
"status_values",
"selection_rule",
"tasks"
],
"properties": {
"schema_version": {
"const": 1
},
"project": {
"type": "string",
"minLength": 1
},
"prepared_at": {
"type": "string"
},
"status_values": {
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true
},
"selection_rule": {
"type": "string",
"minLength": 1
},
"tasks": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/task"
}
}
},
"$defs": {
"task": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"epic",
"title",
"priority",
"status",
"dependencies",
"summary",
"scope",
"done_when",
"required_tests",
"risk",
"requires_live_hardware",
"completion_policy",
"documentation",
"notes"
],
"properties": {
"id": {
"type": "string",
"pattern": "^CH-[0-9]{4}$"
},
"epic": {
"type": "string",
"minLength": 1
},
"title": {
"type": "string",
"minLength": 1
},
"priority": {
"enum": [
"P0",
"P1",
"P2",
"P3"
]
},
"status": {
"enum": [
"pending",
"in_progress",
"done",
"blocked_external",
"skipped"
]
},
"dependencies": {
"type": "array",
"items": {
"type": "string",
"pattern": "^CH-[0-9]{4}$"
},
"uniqueItems": true
},
"dependency_policy": {
"enum": [
"done_only",
"done_or_evidenced_blocked_external"
]
},
"summary": {
"type": "string",
"minLength": 1
},
"scope": {
"type": "array",
"items": {
"type": "string"
}
},
"done_when": {
"type": "array",
"minItems": 1,
"items": {
"type": "string",
"minLength": 1
}
},
"required_tests": {
"type": "array",
"minItems": 1,
"items": {
"type": "string",
"minLength": 1
}
},
"risk": {
"enum": [
"low",
"medium",
"high",
"critical"
]
},
"requires_live_hardware": {
"type": "boolean"
},
"completion_policy": {
"type": "string",
"minLength": 1
},
"documentation": {
"type": "array",
"items": {
"type": "string"
}
},
"notes": {
"type": "string"
}
}
}
}
}