2026-09-29 08:44:20 -05:00
{
"$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 ,
2026-09-29 23:01:36 -05:00
"maximum" : 3600 ,
2026-09-29 14:56:18 -05:00
"default" : 1800
2026-09-29 08:44:20 -05:00
} ,
"max_cost_usd" : {
"type" : "number" ,
"exclusiveMinimum" : 0 ,
2026-09-29 14:56:18 -05:00
"maximum" : 30 ,
"default" : 30 ,
2026-09-29 13:53:46 -05:00
"description" : "CLI estimated-cost guard, not subscription billing. Shared across all passes."
2026-09-29 08:44:20 -05:00
}
}
}
} ,
"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."
}