Input schema (server-provided preview — do not copy)
{
"type": "object",
"required": [
"artifact_paths",
"build_brief",
"project_id",
"review_brief",
"title"
],
"properties": {
"repo": {
"type": "string",
"description": "Which codebase on the executor the build runs in — an alias from the executor's allowlist (tascan-agent/repos.json), e.g. \"tascan\" (default), \"merchskipper\", \"inkskipper\", \"rangerlizzy\", \"cardvault\", \"take1\", \"fitcheck\", \"safegrid\", \"eternity\", \"maniacs\". artifact_paths are relative to that repo. An unknown alias is refused by the executor (repo_unknown) and the cycle parks."
},
"title": {
"type": "string",
"description": "Short human title (1-200 chars). T1 becomes \"CODE: <title>\", T2 \"REVIEW: <title>\"."
},
"reviews": {
"type": "array",
"items": {
"type": "object",
"required": [
"brief",
"lens",
"provider"
],
"properties": {
"lens": {
"type": "string",
"description": "Slug, ^[a-z][a-z0-9-]{0,39}$, unique in the array."
},
"brief": {
"type": "string",
"description": "Cycle-specific context for this lens (1-8000 chars)."
},
"model": {
"type": "string",
"description": "Optional, 1-100 chars."
},
"blocking": {
"type": "boolean",
"description": "Default true. At least one entry in the array must be blocking."
},
"provider": {
"enum": [
"openai",
"anthropic",
"gemini"
],
"type": "string"
},
"max_tool_calls": {
"type": "integer",
"description": "Optional, provider openai only."
}
}
},
"description": "Optional multi-lens review panel (design item 14a) instead of today's single OpenAI review_brief lens — 1-8 entries, each: {lens: slug matching ^[a-z][a-z0-9-]{0,39}$ unique per array (e.g. \"code-correctness\", \"security\", \"ui-ux\"), brief: 1-8000 chars of cycle-specific context for that lens, provider: \"openai\"|\"anthropic\"|\"gemini\", model?: 1-100 chars, blocking?: boolean (default true — at least one entry must be blocking or the whole array is refused), max_tool_calls?: integer (openai only)}. One REVIEW: task mints per lens, all blocked on T1; the Decision task mints only once every blocking lens has approved the same build. Omit for today's single OpenAI code review."
},
"task_type": {
"enum": [
"CODE",
"SHELL"
],
"type": "string",
"description": "T1 prefix (default CODE)."
},
"project_id": {
"type": "string",
"description": "Working project (UUID). Its Decisions and Agent Questions lists are created on the first cycle (coord_ensure_lists). Requires the org human authority to be configured (coord_set_authority) — otherwise 403."
},
"build_brief": {
"type": "string",
"description": "The executor prompt (1-40000 chars). Executed verbatim by the local Claude Code runner as a CODE:/SHELL: task — write it as a complete instruction, name the files, forbid nothing the runner already forbids (deploy/commit/push are refused by its context)."
},
"preview_url": {
"type": "string",
"description": "Optional https preview link shown on the Decision task."
},
"review_brief": {
"type": "string",
"description": "The reviewer prompt (1-40000 chars). The reviewer reads the stored bundle (tascan_get_build / tascan_get_build_file), the task text and the filtered trail; it returns approve, revise, reject or needs_input as strict JSON bound to the build_ref. Still required even when `reviews[]` is given (kept as T2's legacy description text)."
},
"max_questions": {
"type": "integer",
"description": "Questions a runner may ask per task before the attempt fails (default 3)."
},
"max_revisions": {
"type": "integer",
"description": "Revision cap (default 3): at most max_revisions + 1 builds and reviews."
},
"artifact_paths": {
"type": "array",
"items": {
"type": "string"
},
"description": "Repo-relative paths the build binds (1-64). Exactly these files are stored as the bundle and hashed into build_ref; files the executor touches OUTSIDE them fail the scope check and park the cycle. No .., not absolute, no drive letter, no backslash."
},
"idempotency_key": {
"type": "string",
"description": "Optional caller key (≤ 200 chars). The same key within 24 h returns the existing cycle (created=false) instead of a duplicate dispatch."
},
"integrate_title": {
"type": "string",
"description": "Optional title template for the Integrate task (default \"Integrate: <title>\")."
},
"checkpoint_title": {
"type": "string",
"description": "Optional title template for the Decision task (default \"Decision: <title>\")."
},
"max_cost_micro_usd": {
"type": "integer",
"description": "Per-cycle spend cap summed over every attempt, in micro-USD (default 5000000 = USD 5). A claim that could overrun it is refused (budget_exhausted)."
},
"integrate_description": {
"type": "string",
"description": "Optional description template for the Integrate task."
},
"checkpoint_description": {
"type": "string",
"description": "Optional description template for the Decision task; the build_ref, preview and findings summary are appended."
}
}
}