atlas-iac/docs/contracts/suite_planning_request.schema.json

223 lines
5.9 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:atlas:suite-planning:request:v6",
"title": "Suite planning request",
"type": "object",
"additionalProperties": false,
"required": [
"campaign",
"suite",
"cases"
],
"properties": {
"campaign": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"suite": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"cases": {
"type": "array",
"minItems": 1,
"maxItems": 400,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"alias",
"description"
],
"properties": {
"case_type": {
"type": [
"string",
"null"
],
"maxLength": 32768,
"description": "At most 32768 UTF-8 bytes; byte limit is enforced by the server."
},
"description": {
"type": [
"string",
"null"
],
"maxLength": 32768,
"description": "At most 32768 UTF-8 bytes; byte limit is enforced by the server."
},
"functional_area": {
"type": [
"string",
"null"
],
"maxLength": 32768,
"description": "At most 32768 UTF-8 bytes; byte limit is enforced by the server."
},
"functional_group": {
"type": [
"string",
"null"
],
"maxLength": 32768,
"description": "At most 32768 UTF-8 bytes; byte limit is enforced by the server."
},
"functional_group_name": {
"type": [
"string",
"null"
],
"maxLength": 32768,
"description": "At most 32768 UTF-8 bytes; byte limit is enforced by the server."
},
"operating_condition": {
"type": [
"string",
"null"
],
"maxLength": 32768,
"description": "At most 32768 UTF-8 bytes; byte limit is enforced by the server."
},
"preconditions": {
"type": [
"string",
"null"
],
"maxLength": 32768,
"description": "At most 32768 UTF-8 bytes; byte limit is enforced by the server."
},
"success_criteria": {
"type": [
"string",
"null"
],
"maxLength": 32768,
"description": "At most 32768 UTF-8 bytes; byte limit is enforced by the server."
},
"swci": {
"type": [
"string",
"null"
],
"maxLength": 32768,
"description": "At most 32768 UTF-8 bytes; byte limit is enforced by the server."
},
"target": {
"type": [
"string",
"null"
],
"maxLength": 32768,
"description": "At most 32768 UTF-8 bytes; byte limit is enforced by the server."
},
"verification_method": {
"type": [
"string",
"null"
],
"maxLength": 32768,
"description": "At most 32768 UTF-8 bytes; byte limit is enforced by the server."
},
"verifies": {
"type": [
"string",
"null"
],
"maxLength": 32768,
"description": "At most 32768 UTF-8 bytes; byte limit is enforced by the server."
},
"alias": {
"type": "string",
"pattern": "^CASE-[A-Za-z0-9_-]{1,48}$"
},
"campaign": {
"type": "string",
"description": "If supplied, must exactly match the top-level campaign."
},
"suite": {
"type": "string",
"description": "If supplied, must exactly match the top-level suite."
}
}
}
},
"routing": {
"type": "object",
"additionalProperties": false,
"properties": {
"allow_external": {
"type": "boolean",
"default": false
},
"allowed_external_providers": {
"type": "array",
"uniqueItems": true,
"items": {
"enum": [
"claude",
"codex"
]
},
"default": []
}
},
"allOf": [
{
"if": {
"required": [
"allow_external"
],
"properties": {
"allow_external": {
"const": true
}
}
},
"then": {
"required": [
"allowed_external_providers"
],
"properties": {
"allowed_external_providers": {
"minItems": 1
}
}
},
"else": {
"properties": {
"allowed_external_providers": {
"maxItems": 0
}
}
}
}
]
},
"execution": {
"type": "object",
"additionalProperties": false,
"properties": {
"strategy": {
"const": "whole_suite",
"default": "whole_suite"
},
"max_seconds": {
"type": "integer",
"minimum": 10,
"maximum": 900,
"default": 900
},
"max_cost_usd": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 5,
"default": 5
}
}
}
},
"description": "Additional server checks enforce unique aliases, fixed campaign/suite ownership, credential and data-scope permissions, 1 MiB request bytes, capacity, and idempotency. JSON Schema validation alone does not authorize or preflight a job."
}