{ "$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": 1800, "default": 1800 }, "max_cost_usd": { "type": "number", "exclusiveMinimum": 0, "maximum": 30, "default": 30, "description": "CLI estimated-cost guard, not subscription billing. Shared across all passes." } } } }, "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." }