[{"data":1,"prerenderedAt":3544},["ShallowReactive",2],{"navigation_docs":3,"-reference-http-api-drafts":520,"-reference-http-api-drafts-surround":3539},[4,28,51,191,222,485],{"title":5,"path":6,"stem":7,"children":8},"Get started","\u002Fget-started","1.get-started",[9,12,16,20,24],{"title":10,"path":6,"stem":11},"Overview","1.get-started\u002Findex",{"title":13,"path":14,"stem":15},"Why Kraft","\u002Fget-started\u002Fwhy-kraft","1.get-started\u002F0.why-kraft",{"title":17,"path":18,"stem":19},"Install","\u002Fget-started\u002Finstall","1.get-started\u002F1.install",{"title":21,"path":22,"stem":23},"Your first work item","\u002Fget-started\u002Ffirst-work-item","1.get-started\u002F2.first-work-item",{"title":25,"path":26,"stem":27},"FAQ","\u002Fget-started\u002Ffaq","1.get-started\u002F3.faq",{"title":29,"path":30,"stem":31,"children":32},"Concepts","\u002Fconcepts","2.concepts",[33,35,39,43,47],{"title":10,"path":30,"stem":34},"2.concepts\u002Findex",{"title":36,"path":37,"stem":38},"How a work item runs","\u002Fconcepts\u002Fhow-a-work-item-runs","2.concepts\u002F1.how-a-work-item-runs",{"title":40,"path":41,"stem":42},"Caps and budgets","\u002Fconcepts\u002Fcaps-and-budgets","2.concepts\u002F2.caps-and-budgets",{"title":44,"path":45,"stem":46},"Why a permission gate","\u002Fconcepts\u002Fpermission-gate","2.concepts\u002F3.permission-gate",{"title":48,"path":49,"stem":50},"Vocabulary","\u002Fconcepts\u002Fvocabulary","2.concepts\u002F4.vocabulary",{"title":52,"path":53,"stem":54,"children":55},"Guides","\u002Fguides","3.guides",[56,58,96,117,138,187],{"title":10,"path":53,"stem":57},"3.guides\u002Findex",{"title":59,"path":60,"stem":61,"children":62,"page":95},"Day to day","\u002Fguides\u002Fday-to-day","3.guides\u002F1.day-to-day",[63,67,71,75,79,83,87,91],{"title":64,"path":65,"stem":66},"The setup wizard on first start","\u002Fguides\u002Fday-to-day\u002Ffirst-run","3.guides\u002F1.day-to-day\u002F2.first-run",{"title":68,"path":69,"stem":70},"File a work item","\u002Fguides\u002Fday-to-day\u002Ffile-a-work-item","3.guides\u002F1.day-to-day\u002F3.file-a-work-item",{"title":72,"path":73,"stem":74},"Use Kraft from your agent","\u002Fguides\u002Fday-to-day\u002Fagent-integration","3.guides\u002F1.day-to-day\u002F4.agent-integration",{"title":76,"path":77,"stem":78},"Reviewing a change","\u002Fguides\u002Fday-to-day\u002Freview-a-change","3.guides\u002F1.day-to-day\u002F5.review-a-change",{"title":80,"path":81,"stem":82},"Raise a cap on a stopped item","\u002Fguides\u002Fday-to-day\u002Fraise-a-cap","3.guides\u002F1.day-to-day\u002F6.raise-a-cap",{"title":84,"path":85,"stem":86},"Kraft for VS Code","\u002Fguides\u002Fday-to-day\u002Fvscode","3.guides\u002F1.day-to-day\u002F7.vscode",{"title":88,"path":89,"stem":90},"Kraft on a phone","\u002Fguides\u002Fday-to-day\u002Fkraft-on-a-phone","3.guides\u002F1.day-to-day\u002F8.kraft-on-a-phone",{"title":92,"path":93,"stem":94},"Get notified when an item needs you","\u002Fguides\u002Fday-to-day\u002Fnotifications","3.guides\u002F1.day-to-day\u002F9.notifications",false,{"title":97,"path":98,"stem":99,"children":100,"page":95},"Customize and automate","\u002Fguides\u002Fcustomize","3.guides\u002F2.customize",[101,105,109,113],{"title":102,"path":103,"stem":104},"Write your own chain","\u002Fguides\u002Fcustomize\u002Fwrite-your-own-chain","3.guides\u002F2.customize\u002F1.write-your-own-chain",{"title":106,"path":107,"stem":108},"Add a security review or a gate reviewer","\u002Fguides\u002Fcustomize\u002Fadd-review-agents","3.guides\u002F2.customize\u002F2.add-review-agents",{"title":110,"path":111,"stem":112},"Schedule or webhook work","\u002Fguides\u002Fcustomize\u002Fschedule-and-webhook-work","3.guides\u002F2.customize\u002F3.schedule-and-webhook-work",{"title":114,"path":115,"stem":116},"Share chains with add-ons","\u002Fguides\u002Fcustomize\u002Fshare-chains-with-addons","3.guides\u002F2.customize\u002F4.share-chains-with-addons",{"title":118,"path":119,"stem":120,"children":121,"page":95},"Agents and harnesses","\u002Fguides\u002Fharnesses","3.guides\u002F3.harnesses",[122,126,130,134],{"title":123,"path":124,"stem":125},"Switch a task to another harness","\u002Fguides\u002Fharnesses\u002Fswitch-harness","3.guides\u002F3.harnesses\u002F1.switch-harness",{"title":127,"path":128,"stem":129},"Add or override a harness","\u002Fguides\u002Fharnesses\u002Fadding-a-harness","3.guides\u002F3.harnesses\u002F2.adding-a-harness",{"title":131,"path":132,"stem":133},"Build a worker Kit","\u002Fguides\u002Fharnesses\u002Fworker-kit","3.guides\u002F3.harnesses\u002F3.worker-kit",{"title":135,"path":136,"stem":137},"Give a worker its login","\u002Fguides\u002Fharnesses\u002Fgive-a-worker-its-login","3.guides\u002F3.harnesses\u002F4.give-a-worker-its-login",{"title":139,"path":140,"stem":141,"children":142,"page":95},"Run the server","\u002Fguides\u002Frun","3.guides\u002F4.run",[143,147,151,155,159,163,167,171,175,179,183],{"title":144,"path":145,"stem":146},"Remote access","\u002Fguides\u002Frun\u002Fremote-access","3.guides\u002F4.run\u002F01.remote-access",{"title":148,"path":149,"stem":150},"Put a proxy in front of Kraft","\u002Fguides\u002Frun\u002Fput-a-proxy-in-front-of-kraft","3.guides\u002F4.run\u002F02.put-a-proxy-in-front-of-kraft",{"title":152,"path":153,"stem":154},"Restart Kraft without ending running agents","\u002Fguides\u002Frun\u002Frestart-kraft","3.guides\u002F4.run\u002F03.restart-kraft",{"title":156,"path":157,"stem":158},"Back up and restore the database","\u002Fguides\u002Frun\u002Fback-up-and-restore","3.guides\u002F4.run\u002F04.back-up-and-restore",{"title":160,"path":161,"stem":162},"Logs and disk space","\u002Fguides\u002Frun\u002Flogs-and-disk-space","3.guides\u002F4.run\u002F05.logs-and-disk-space",{"title":164,"path":165,"stem":166},"Run Kraft as a service","\u002Fguides\u002Frun\u002Frun-as-a-service","3.guides\u002F4.run\u002F06.run-as-a-service",{"title":168,"path":169,"stem":170},"Upgrade Kraft","\u002Fguides\u002Frun\u002Fupgrade-kraft","3.guides\u002F4.run\u002F07.upgrade-kraft",{"title":172,"path":173,"stem":174},"Upgrade your configuration","\u002Fguides\u002Frun\u002Fupgrade-your-configuration","3.guides\u002F4.run\u002F08.upgrade-your-configuration",{"title":176,"path":177,"stem":178},"Upgrade from 1.4","\u002Fguides\u002Frun\u002Fupgrade-from-1-4","3.guides\u002F4.run\u002F09.upgrade-from-1-4",{"title":180,"path":181,"stem":182},"Upgrade from 0.x or a release candidate","\u002Fguides\u002Frun\u002Fupgrade-from-0-x-or-a-release-candidate","3.guides\u002F4.run\u002F10.upgrade-from-0-x-or-a-release-candidate",{"title":184,"path":185,"stem":186},"Roll back to 1.4","\u002Fguides\u002Frun\u002Froll-back","3.guides\u002F4.run\u002F11.roll-back",{"title":188,"path":189,"stem":190},"Kraft Lite","\u002Fguides\u002Fkraft-lite","3.guides\u002F5.kraft-lite",{"title":192,"path":193,"stem":194,"children":195},"Troubleshooting","\u002Ftroubleshooting","4.troubleshooting",[196,198,202,206,210,214,218],{"title":10,"path":193,"stem":197},"4.troubleshooting\u002Findex",{"title":199,"path":200,"stem":201},"Why did my item stop?","\u002Ftroubleshooting\u002Fwhy-did-my-item-stop","4.troubleshooting\u002F1.why-did-my-item-stop",{"title":203,"path":204,"stem":205},"Stop reasons in detail","\u002Ftroubleshooting\u002Fstop-reasons-in-detail","4.troubleshooting\u002F2.stop-reasons-in-detail",{"title":207,"path":208,"stem":209},"Starting and reaching Kraft","\u002Ftroubleshooting\u002Fstarting-and-reaching-kraft","4.troubleshooting\u002F3.starting-and-reaching-kraft",{"title":211,"path":212,"stem":213},"Doctor failures","\u002Ftroubleshooting\u002Fdoctor-failures","4.troubleshooting\u002F4.doctor-failures",{"title":215,"path":216,"stem":217},"Sandbox and Kit stops","\u002Ftroubleshooting\u002Fsandbox-and-kit-stops","4.troubleshooting\u002F5.sandbox-and-kit-stops",{"title":219,"path":220,"stem":221},"Add-on problems","\u002Ftroubleshooting\u002Faddon-problems","4.troubleshooting\u002F6.addon-problems",{"title":223,"path":224,"stem":225,"children":226},"Reference","\u002Freference","5.reference",[227,229,267,289,293,391,409,435,439,443,477,481],{"title":10,"path":224,"stem":228},"5.reference\u002Findex",{"title":230,"path":231,"stem":232,"children":233},"Web UI","\u002Freference\u002Fweb-ui","5.reference\u002F00.web-ui\u002Findex",[234,235,239,243,247,251,255,259,263],{"title":10,"path":231,"stem":232},{"title":236,"path":237,"stem":238},"Sidebar, search, and keyboard","\u002Freference\u002Fweb-ui\u002Fsidebar-search-and-keyboard","5.reference\u002F00.web-ui\u002F0.sidebar-search-and-keyboard",{"title":240,"path":241,"stem":242},"The board","\u002Freference\u002Fweb-ui\u002Fboard","5.reference\u002F00.web-ui\u002F1.board",{"title":244,"path":245,"stem":246},"An item's page","\u002Freference\u002Fweb-ui\u002Fitem-page","5.reference\u002F00.web-ui\u002F2.item-page",{"title":248,"path":249,"stem":250},"Fix loops and test scopes","\u002Freference\u002Fweb-ui\u002Ffix-loops-and-test-scopes","5.reference\u002F00.web-ui\u002F3.fix-loops-and-test-scopes",{"title":252,"path":253,"stem":254},"Config before an item starts","\u002Freference\u002Fweb-ui\u002Fconfig-before-start","5.reference\u002F00.web-ui\u002F4.config-before-start",{"title":256,"path":257,"stem":258},"The review page","\u002Freference\u002Fweb-ui\u002Freview-page","5.reference\u002F00.web-ui\u002F5.review-page",{"title":260,"path":261,"stem":262},"Templates and Settings","\u002Freference\u002Fweb-ui\u002Ftemplates-and-settings","5.reference\u002F00.web-ui\u002F6.templates-and-settings",{"title":264,"path":265,"stem":266},"Analytics","\u002Freference\u002Fweb-ui\u002Fanalytics","5.reference\u002F00.web-ui\u002F7.analytics",{"title":268,"path":269,"stem":270,"children":271},"CLI","\u002Freference\u002Fcli","5.reference\u002F01.cli\u002Findex",[272,273,277,281,285],{"title":10,"path":269,"stem":270},{"title":274,"path":275,"stem":276},"Item verbs","\u002Freference\u002Fcli\u002Fitem","5.reference\u002F01.cli\u002F2.item",{"title":278,"path":279,"stem":280},"View verbs","\u002Freference\u002Fcli\u002Fview","5.reference\u002F01.cli\u002F3.view",{"title":282,"path":283,"stem":284},"Repo verbs","\u002Freference\u002Fcli\u002Frepo","5.reference\u002F01.cli\u002F4.repo",{"title":286,"path":287,"stem":288},"Admin verbs","\u002Freference\u002Fcli\u002Fadmin","5.reference\u002F01.cli\u002F5.admin",{"title":290,"path":291,"stem":292},"Work item statuses","\u002Freference\u002Fstatuses","5.reference\u002F02.statuses",{"title":294,"path":295,"stem":296,"children":297},"Configuration","\u002Freference\u002Fconfiguration","5.reference\u002F03.configuration\u002Findex",[298,299,317,321,325,329,333,337,341,345,379,383,387],{"title":10,"path":295,"stem":296},{"title":300,"path":301,"stem":302,"children":303},"repos.yaml","\u002Freference\u002Fconfiguration\u002Frepos","5.reference\u002F03.configuration\u002F02.repos\u002Findex",[304,305,309,313],{"title":10,"path":301,"stem":302},{"title":306,"path":307,"stem":308},"How connect proposes commands","\u002Freference\u002Fconfiguration\u002Frepos\u002Fconnect-proposals","5.reference\u002F03.configuration\u002F02.repos\u002F1.connect-proposals",{"title":310,"path":311,"stem":312},"detectors.yaml","\u002Freference\u002Fconfiguration\u002Frepos\u002Fdetectors","5.reference\u002F03.configuration\u002F02.repos\u002F2.detectors",{"title":314,"path":315,"stem":316},"Workspaces","\u002Freference\u002Fconfiguration\u002Frepos\u002Fworkspaces","5.reference\u002F03.configuration\u002F02.repos\u002F3.workspaces",{"title":318,"path":319,"stem":320},"policy.yaml","\u002Freference\u002Fconfiguration\u002Fpolicy","5.reference\u002F03.configuration\u002F03.policy",{"title":322,"path":323,"stem":324},"Library and chains","\u002Freference\u002Fconfiguration\u002Flibrary-and-chains","5.reference\u002F03.configuration\u002F04.library-and-chains",{"title":326,"path":327,"stem":328},"harnesses.yaml","\u002Freference\u002Fconfiguration\u002Fharnesses-file","5.reference\u002F03.configuration\u002F05.harnesses-file",{"title":330,"path":331,"stem":332},"access.yaml","\u002Freference\u002Fconfiguration\u002Faccess","5.reference\u002F03.configuration\u002F06.access",{"title":334,"path":335,"stem":336},"intake.yaml","\u002Freference\u002Fconfiguration\u002Fintake","5.reference\u002F03.configuration\u002F07.intake",{"title":338,"path":339,"stem":340},"notify.yaml","\u002Freference\u002Fconfiguration\u002Fnotify","5.reference\u002F03.configuration\u002F08.notify",{"title":342,"path":343,"stem":344},"theme.yaml","\u002Freference\u002Fconfiguration\u002Ftheme","5.reference\u002F03.configuration\u002F09.theme",{"title":346,"path":347,"stem":348,"children":349},"Sandboxed workers","\u002Freference\u002Fconfiguration\u002Fsandbox","5.reference\u002F03.configuration\u002F10.sandbox\u002Findex",[350,351,355,359,363,367,371,375],{"title":10,"path":347,"stem":348},{"title":352,"path":353,"stem":354},"Resource limits","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fresource-limits","5.reference\u002F03.configuration\u002F10.sandbox\u002F1.resource-limits",{"title":356,"path":357,"stem":358},"Callbacks from a sandbox","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fcallbacks","5.reference\u002F03.configuration\u002F10.sandbox\u002F2.callbacks",{"title":360,"path":361,"stem":362},"Network policy","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fnetwork-policy","5.reference\u002F03.configuration\u002F10.sandbox\u002F3.network-policy",{"title":364,"path":365,"stem":366},"Credentials","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fcredentials","5.reference\u002F03.configuration\u002F10.sandbox\u002F4.credentials",{"title":368,"path":369,"stem":370},"Kits","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fkits","5.reference\u002F03.configuration\u002F10.sandbox\u002F5.kits",{"title":372,"path":373,"stem":374},"sandbox.yaml","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fsandbox-yaml","5.reference\u002F03.configuration\u002F10.sandbox\u002F6.sandbox-yaml",{"title":376,"path":377,"stem":378},"Git in a sandbox","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fgit-in-a-sandbox","5.reference\u002F03.configuration\u002F10.sandbox\u002F7.git-in-a-sandbox",{"title":380,"path":381,"stem":382},"Environment variables","\u002Freference\u002Fconfiguration\u002Fenvironment-variables","5.reference\u002F03.configuration\u002F11.environment-variables",{"title":384,"path":385,"stem":386},"Add-ons and collections","\u002Freference\u002Fconfiguration\u002Faddons","5.reference\u002F03.configuration\u002F12.addons",{"title":388,"path":389,"stem":390},"Repo libraries","\u002Freference\u002Fconfiguration\u002Frepo-libraries","5.reference\u002F03.configuration\u002F13.repo-libraries",{"title":392,"path":393,"stem":394,"children":395},"Chain file keys","\u002Freference\u002Fchain-nodes","5.reference\u002F04.chain-nodes\u002Findex",[396,397,401,405],{"title":10,"path":393,"stem":394},{"title":398,"path":399,"stem":400},"Subprocess tasks","\u002Freference\u002Fchain-nodes\u002Fsubprocess-tasks","5.reference\u002F04.chain-nodes\u002F2.subprocess-tasks",{"title":402,"path":403,"stem":404},"Fix loop and judge","\u002Freference\u002Fchain-nodes\u002Ffix-loop","5.reference\u002F04.chain-nodes\u002F3.fix-loop",{"title":406,"path":407,"stem":408},"Result file","\u002Freference\u002Fchain-nodes\u002Fresult-file","5.reference\u002F04.chain-nodes\u002F4.result-file",{"title":410,"path":411,"stem":412,"children":413},"Agent harnesses","\u002Freference\u002Fharnesses","5.reference\u002F05.harnesses\u002Findex",[414,415,419,423,427,431],{"title":10,"path":411,"stem":412},{"title":416,"path":417,"stem":418},"Unattended runs","\u002Freference\u002Fharnesses\u002Funattended-runs","5.reference\u002F05.harnesses\u002F2.unattended-runs",{"title":420,"path":421,"stem":422},"Agent profiles","\u002Freference\u002Fharnesses\u002Fagent-profiles","5.reference\u002F05.harnesses\u002F3.agent-profiles",{"title":424,"path":425,"stem":426},"Harness definition files","\u002Freference\u002Fharnesses\u002Fharness-files","5.reference\u002F05.harnesses\u002F4.harness-files",{"title":428,"path":429,"stem":430},"Fallback and escalation","\u002Freference\u002Fharnesses\u002Ffallback-and-escalation","5.reference\u002F05.harnesses\u002F5.fallback-and-escalation",{"title":432,"path":433,"stem":434},"Cost reporting","\u002Freference\u002Fharnesses\u002Fcost-reporting","5.reference\u002F05.harnesses\u002F6.cost-reporting",{"title":436,"path":437,"stem":438},"Permission gate","\u002Freference\u002Fpermissions","5.reference\u002F06.permissions",{"title":440,"path":441,"stem":442},"Inbound triggers","\u002Freference\u002Ftriggers","5.reference\u002F07.triggers",{"title":444,"path":445,"stem":446,"children":447},"HTTP API","\u002Freference\u002Fhttp-api","5.reference\u002F08.http-api\u002Findex",[448,449,453,457,461,465,469,473],{"title":10,"path":445,"stem":446},{"title":450,"path":451,"stem":452},"Filing, reading and changing work items","\u002Freference\u002Fhttp-api\u002Fwork-items","5.reference\u002F08.http-api\u002F2.work-items",{"title":454,"path":455,"stem":456},"Gates, run control, ending and retry","\u002Freference\u002Fhttp-api\u002Fgates-run-control-and-ending","5.reference\u002F08.http-api\u002F3.gates-run-control-and-ending",{"title":458,"path":459,"stem":460},"The work item object","\u002Freference\u002Fhttp-api\u002Fwork-item-object","5.reference\u002F08.http-api\u002F4.work-item-object",{"title":462,"path":463,"stem":464},"Budget, events, diff and documents","\u002Freference\u002Fhttp-api\u002Fbudget-and-events","5.reference\u002F08.http-api\u002F5.budget-and-events",{"title":466,"path":467,"stem":468},"Repos, chains, harnesses and the server","\u002Freference\u002Fhttp-api\u002Frepos-chains-harnesses-and-server","5.reference\u002F08.http-api\u002F6.repos-chains-harnesses-and-server",{"title":470,"path":471,"stem":472},"Drafts","\u002Freference\u002Fhttp-api\u002Fdrafts","5.reference\u002F08.http-api\u002F7.drafts",{"title":474,"path":475,"stem":476},"Ops for each draft area","\u002Freference\u002Fhttp-api\u002Fdraft-ops","5.reference\u002F08.http-api\u002F8.draft-ops",{"title":478,"path":479,"stem":480},"MCP tools","\u002Freference\u002Fmcp-tools","5.reference\u002F09.mcp-tools",{"title":482,"path":483,"stem":484},"Events","\u002Freference\u002Fevents","5.reference\u002F10.events",{"title":486,"path":487,"stem":488,"children":489},"Security and project","\u002Fproject","6.project",[490,492,496,500,504,508,512,516],{"title":10,"path":487,"stem":491},"6.project\u002Findex",{"title":493,"path":494,"stem":495},"Security","\u002Fproject\u002Fsecurity","6.project\u002F1.security",{"title":497,"path":498,"stem":499},"Data and privacy","\u002Fproject\u002Fdata-and-privacy","6.project\u002F2.data-and-privacy",{"title":501,"path":502,"stem":503},"What's new in 2.0","\u002Fproject\u002Fwhats-new","6.project\u002F3.whats-new",{"title":505,"path":506,"stem":507},"Status and support","\u002Fproject\u002Fstatus-and-support","6.project\u002F4.status-and-support",{"title":509,"path":510,"stem":511},"Architecture","\u002Fproject\u002Farchitecture","6.project\u002F5.architecture",{"title":513,"path":514,"stem":515},"Source map","\u002Fproject\u002Fsource-map","6.project\u002F6.source-map",{"title":517,"path":518,"stem":519},"Contributing","\u002Fproject\u002Fcontributing","6.project\u002F7.contributing",{"id":521,"title":470,"body":522,"description":3532,"extension":3533,"links":3534,"meta":3535,"navigation":3536,"path":471,"seo":3537,"stem":472,"__hash__":3538},"docs\u002F5.reference\u002F08.http-api\u002F7.drafts.md",{"type":523,"value":524,"toc":3480},"minimark",[525,542,754,759,762,913,931,941,965,990,994,1000,1003,1122,1134,1139,1144,1292,1441,1486,1497,1515,1520,1531,1565,1576,1590,1602,1607,1616,1757,1793,1868,1891,1895,1900,1910,1928,1934,1939,1955,1960,1978,1998,2059,2081,2104,2116,2121,2127,2139,2144,2152,2157,2169,2173,2178,2185,2221,2236,2247,2314,2370,2382,2387,2397,2402,2414,2419,2426,2430,2442,2446,2458,2463,2482,2487,2495,2648,2668,2671,2700,2705,2720,2792,2861,2868,2871,2876,3093,3098,3178,3183,3188,3216,3230,3235,3374,3379,3424,3429,3452,3456,3476],[526,527,528,529,533,534,537,538,541],"p",{},"These are the routes for the drafts behind the Templates and Settings editors, the policy and intake-check routes beside them, one entry per route, and the ",[530,531,532],"code",{},"result"," every draft route answers. The editors are their callers; a script rarely needs them. Like the other board routes they can change in any release, as ",[535,536,450],"a",{"href":451}," says. The ",[535,539,540],{"href":475},"ops"," a draft takes are on their own page.",[543,544,545,558],"table",{},[546,547,548],"thead",{},[549,550,551,555],"tr",{},[552,553,554],"th",{},"Route",[552,556,557],{},"What it does",[559,560,561,575,588,601,618,631,644,657,670,683,696,709,725,741],"tbody",{},[549,562,563,572],{},[564,565,566],"td",{},[535,567,569],{"href":568},"#get-apidrafts",[530,570,571],{},"GET \u002Fapi\u002Fdrafts",[564,573,574],{},"Lists every open draft.",[549,576,577,585],{},[564,578,579],{},[535,580,582],{"href":581},"#get-apidraftsareakey",[530,583,584],{},"GET \u002Fapi\u002Fdrafts\u002F{area}\u002F{key}",[564,586,587],{},"Reads a draft, or the published files when there is none.",[549,589,590,598],{},[564,591,592],{},[535,593,595],{"href":594},"#get-apidraftsareakeyfragmentpath",[530,596,597],{},"GET \u002Fapi\u002Fdrafts\u002F{area}\u002F{key}\u002Ffragment?path=",[564,599,600],{},"Reads one component of a draft as YAML.",[549,602,603,611],{},[564,604,605],{},[535,606,608],{"href":607},"#get-apidraftspolicykeypreviewchain",[530,609,610],{},"GET \u002Fapi\u002Fdrafts\u002Fpolicy\u002F{key}\u002Fpreview?chain=",[564,612,613,614,617],{},"Shows a published chain's caps under the ",[530,615,616],{},"policy"," draft.",[549,619,620,628],{},[564,621,622],{},[535,623,625],{"href":624},"#put-apidraftsareakeyfilesfile",[530,626,627],{},"PUT \u002Fapi\u002Fdrafts\u002F{area}\u002F{key}\u002Ffiles\u002F{file}",[564,629,630],{},"Stores one file's text as typed.",[549,632,633,641],{},[564,634,635],{},[535,636,638],{"href":637},"#post-apidraftsareakeyops",[530,639,640],{},"POST \u002Fapi\u002Fdrafts\u002F{area}\u002F{key}\u002Fops",[564,642,643],{},"Applies a list of ops, all or nothing.",[549,645,646,654],{},[564,647,648],{},[535,649,651],{"href":650},"#post-apidraftsareakeyopspreview1",[530,652,653],{},"POST \u002Fapi\u002Fdrafts\u002F{area}\u002F{key}\u002Fops?preview=1",[564,655,656],{},"Answers what a list of ops would do, and saves nothing.",[549,658,659,667],{},[564,660,661],{},[535,662,664],{"href":663},"#post-apidraftsareakeyundo",[530,665,666],{},"POST \u002Fapi\u002Fdrafts\u002F{area}\u002F{key}\u002Fundo",[564,668,669],{},"Undoes the last request.",[549,671,672,680],{},[564,673,674],{},[535,675,677],{"href":676},"#post-apidraftsareakeypublish",[530,678,679],{},"POST \u002Fapi\u002Fdrafts\u002F{area}\u002F{key}\u002Fpublish",[564,681,682],{},"Writes the draft's files and applies them.",[549,684,685,693],{},[564,686,687],{},[535,688,690],{"href":689},"#post-apidraftsareakeyrebase",[530,691,692],{},"POST \u002Fapi\u002Fdrafts\u002F{area}\u002F{key}\u002Frebase",[564,694,695],{},"Keeps the draft's text over files that changed on disk.",[549,697,698,706],{},[564,699,700],{},[535,701,703],{"href":702},"#delete-apidraftsareakey",[530,704,705],{},"DELETE \u002Fapi\u002Fdrafts\u002F{area}\u002F{key}",[564,707,708],{},"Discards a draft for good.",[549,710,711,719],{},[564,712,713],{},[535,714,716],{"href":715},"#get-apipolicy",[530,717,718],{},"GET \u002Fapi\u002Fpolicy",[564,720,721,722,724],{},"Reads ",[530,723,318],{}," from disk.",[549,726,727,735],{},[564,728,729],{},[535,730,732],{"href":731},"#put-apipolicy",[530,733,734],{},"PUT \u002Fapi\u002Fpolicy",[564,736,737,738,740],{},"Saves ",[530,739,318],{}," without a draft, and applies it.",[549,742,743,751],{},[564,744,745],{},[535,746,748],{"href":747},"#get-apiintakecheckslimit",[530,749,750],{},"GET \u002Fapi\u002Fintake\u002Fchecks?limit=",[564,752,753],{},"Lists what recent intake polls found.",[755,756,758],"h2",{"id":757},"areas-and-keys","Areas and keys",[526,760,761],{},"The Templates editor keeps unpublished edits on the server, as drafts. There is one draft per area and key. File names are relative to the config directory.",[543,763,764,780],{},[546,765,766],{},[549,767,768,771,774,777],{},[552,769,770],{},"Area",[552,772,773],{},"Key",[552,775,776],{},"Files",[552,778,779],{},"A publish applies it by",[559,781,782,807,825,849,870,892],{},[549,783,784,789,799,804],{},[564,785,786],{},[530,787,788],{},"chains",[564,790,791,792,795,796],{},"A chain id: a lowercase letter, then lowercase letters, digits, ",[530,793,794],{},"_"," or ",[530,797,798],{},"-",[564,800,801],{},[530,802,803],{},"chains\u002F\u003Ckey>.yaml",[564,805,806],{},"Reloading the library and chains.",[549,808,809,814,818,823],{},[564,810,811],{},[530,812,813],{},"library",[564,815,816],{},[530,817,813],{},[564,819,820],{},[530,821,822],{},"library.yaml",[564,824,806],{},[549,826,827,832,836,843],{},[564,828,829],{},[530,830,831],{},"harnesses",[564,833,834],{},[530,835,831],{},[564,837,838,840,841],{},[530,839,326],{},", ",[530,842,318],{},[564,844,845,846,848],{},"Reloading the policy, only when ",[530,847,318],{}," is in the draft.",[549,850,851,856,860,864],{},[564,852,853],{},[530,854,855],{},"repos",[564,857,858],{},[530,859,855],{},[564,861,862],{},[530,863,300],{},[564,865,866,867,869],{},"Nothing: ",[530,868,300],{}," is read when needed.",[549,871,872,876,880,884],{},[564,873,874],{},[530,875,616],{},[564,877,878],{},[530,879,616],{},[564,881,882],{},[530,883,318],{},[564,885,886,887,891],{},"Reloading the policy, as ",[535,888,889],{"href":731},[530,890,734],{}," does.",[549,893,894,899,903,907],{},[564,895,896],{},[530,897,898],{},"intake",[564,900,901],{},[530,902,898],{},[564,904,905],{},[530,906,334],{},[564,908,909,910,912],{},"Rereading ",[530,911,334],{}," and replacing the poller.",[526,914,915,916,919,920,922,923,926,927,930],{},"An op can join more files to a chain or library draft. The ",[530,917,918],{},"move_to_library"," op adds ",[530,921,822],{}," to a chain's draft, and renaming a library component adds each chain file it rewrites to the library's. Each joined file records its own base, and a publish writes them all. A ",[530,924,925],{},"PUT"," also takes any file an op joined, such as the new file of a chain the ",[530,928,929],{},"rename"," op moved, which keeps its old key.",[526,932,933,934,937,938,940],{},"A settings draft is one of the last four areas. Its ",[530,935,936],{},"problems"," are every problem its files have, found by the checks the matching ",[530,939,925],{}," route runs, so a draft with none is one that route accepts.",[526,942,943,944,946,947,949,950,952,953,956,957,960,961,964],{},"The ",[530,945,831],{}," and ",[530,948,616],{}," drafts may both hold ",[530,951,318],{},": the first publish wins, and the second answers ",[530,954,955],{},"409",", which ",[530,958,959],{},"rebase"," resolves. A publish whose apply step fails has already written its files: it answers ",[530,962,963],{},"500",", keeps the draft, and tries again on the next publish.",[526,966,967,968,946,971,974,975,978,979,982,983,985,986,989],{},"Every route below that takes ",[530,969,970],{},"{area}",[530,972,973],{},"{key}"," refuses an unknown area with ",[530,976,977],{},"404",", a key the area does not accept with ",[530,980,981],{},"400",", and (for ",[530,984,925],{},") a file that is not one of the key's files with ",[530,987,988],{},"422",".",[755,991,993],{"id":992},"reading-drafts","Reading drafts",[995,996,998],"h3",{"id":997},"get-apidrafts",[530,999,571],{},[526,1001,1002],{},"Lists every open draft, newest write first.",[1004,1005,1010],"pre",{"className":1006,"code":1007,"language":1008,"meta":1009,"style":1009},"language-json shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","[\n  {\n    \"area\": \"chains\",\n    \"key\": \"default\",\n    \"files\": [\"chains\u002Fdefault.yaml\"],\n    \"changes\": 2,\n    \"problems\": 0,\n    \"updated_at\": \"2026-10-07T09:12:44.123456+00:00\"\n  }\n]\n","json","",[530,1011,1012,1021,1027,1044,1057,1072,1086,1099,1110,1116],{"__ignoreMap":1009},[1013,1014,1017],"span",{"class":1015,"line":1016},"line",1,[1013,1018,1020],{"class":1019},"s7iLA","[\n",[1013,1022,1024],{"class":1015,"line":1023},2,[1013,1025,1026],{"class":1019},"  {\n",[1013,1028,1030,1034,1037,1041],{"class":1015,"line":1029},3,[1013,1031,1033],{"class":1032},"sb7M8","    \"area\"",[1013,1035,1036],{"class":1019},": ",[1013,1038,1040],{"class":1039},"semJd","\"chains\"",[1013,1042,1043],{"class":1019},",\n",[1013,1045,1047,1050,1052,1055],{"class":1015,"line":1046},4,[1013,1048,1049],{"class":1032},"    \"key\"",[1013,1051,1036],{"class":1019},[1013,1053,1054],{"class":1039},"\"default\"",[1013,1056,1043],{"class":1019},[1013,1058,1060,1063,1066,1069],{"class":1015,"line":1059},5,[1013,1061,1062],{"class":1032},"    \"files\"",[1013,1064,1065],{"class":1019},": [",[1013,1067,1068],{"class":1039},"\"chains\u002Fdefault.yaml\"",[1013,1070,1071],{"class":1019},"],\n",[1013,1073,1075,1078,1080,1084],{"class":1015,"line":1074},6,[1013,1076,1077],{"class":1032},"    \"changes\"",[1013,1079,1036],{"class":1019},[1013,1081,1083],{"class":1082},"ssYy9","2",[1013,1085,1043],{"class":1019},[1013,1087,1089,1092,1094,1097],{"class":1015,"line":1088},7,[1013,1090,1091],{"class":1032},"    \"problems\"",[1013,1093,1036],{"class":1019},[1013,1095,1096],{"class":1082},"0",[1013,1098,1043],{"class":1019},[1013,1100,1102,1105,1107],{"class":1015,"line":1101},8,[1013,1103,1104],{"class":1032},"    \"updated_at\"",[1013,1106,1036],{"class":1019},[1013,1108,1109],{"class":1039},"\"2026-10-07T09:12:44.123456+00:00\"\n",[1013,1111,1113],{"class":1015,"line":1112},9,[1013,1114,1115],{"class":1019},"  }\n",[1013,1117,1119],{"class":1015,"line":1118},10,[1013,1120,1121],{"class":1019},"]\n",[526,1123,1124,1127,1128,946,1131,1133],{},[530,1125,1126],{},"files"," are the file names. ",[530,1129,1130],{},"changes",[530,1132,936],{}," are counts as of the draft's last write.",[995,1135,1137],{"id":1136},"get-apidraftsareakey",[530,1138,584],{},[526,1140,1141,1142,989],{},"Reads the draft, or, when there is none, the published files and their ",[530,1143,532],{},[1004,1145,1147],{"className":1006,"code":1146,"language":1008,"meta":1009,"style":1009},"{\n  \"area\": \"chains\",\n  \"key\": \"default\",\n  \"draft\": true,\n  \"files\": {\"chains\u002Fdefault.yaml\": \"id: default\\n…\"},\n  \"base\": {\"chains\u002Fdefault.yaml\": \"3b1f…\"},\n  \"published\": {\"chains\u002Fdefault.yaml\": \"id: default\\n…\"},\n  \"updated_at\": \"2026-10-07T09:12:44.123456+00:00\",\n  \"result\": {\"problems\": [], \"changes\": [], \"…\": \"…\"}\n}\n",[530,1148,1149,1154,1165,1176,1188,1213,1229,1248,1260,1288],{"__ignoreMap":1009},[1013,1150,1151],{"class":1015,"line":1016},[1013,1152,1153],{"class":1019},"{\n",[1013,1155,1156,1159,1161,1163],{"class":1015,"line":1023},[1013,1157,1158],{"class":1032},"  \"area\"",[1013,1160,1036],{"class":1019},[1013,1162,1040],{"class":1039},[1013,1164,1043],{"class":1019},[1013,1166,1167,1170,1172,1174],{"class":1015,"line":1029},[1013,1168,1169],{"class":1032},"  \"key\"",[1013,1171,1036],{"class":1019},[1013,1173,1054],{"class":1039},[1013,1175,1043],{"class":1019},[1013,1177,1178,1181,1183,1186],{"class":1015,"line":1046},[1013,1179,1180],{"class":1032},"  \"draft\"",[1013,1182,1036],{"class":1019},[1013,1184,1185],{"class":1082},"true",[1013,1187,1043],{"class":1019},[1013,1189,1190,1193,1196,1198,1200,1203,1207,1210],{"class":1015,"line":1059},[1013,1191,1192],{"class":1032},"  \"files\"",[1013,1194,1195],{"class":1019},": {",[1013,1197,1068],{"class":1032},[1013,1199,1036],{"class":1019},[1013,1201,1202],{"class":1039},"\"id: default",[1013,1204,1206],{"class":1205},"sklAV","\\n",[1013,1208,1209],{"class":1039},"…\"",[1013,1211,1212],{"class":1019},"},\n",[1013,1214,1215,1218,1220,1222,1224,1227],{"class":1015,"line":1074},[1013,1216,1217],{"class":1032},"  \"base\"",[1013,1219,1195],{"class":1019},[1013,1221,1068],{"class":1032},[1013,1223,1036],{"class":1019},[1013,1225,1226],{"class":1039},"\"3b1f…\"",[1013,1228,1212],{"class":1019},[1013,1230,1231,1234,1236,1238,1240,1242,1244,1246],{"class":1015,"line":1088},[1013,1232,1233],{"class":1032},"  \"published\"",[1013,1235,1195],{"class":1019},[1013,1237,1068],{"class":1032},[1013,1239,1036],{"class":1019},[1013,1241,1202],{"class":1039},[1013,1243,1206],{"class":1205},[1013,1245,1209],{"class":1039},[1013,1247,1212],{"class":1019},[1013,1249,1250,1253,1255,1258],{"class":1015,"line":1101},[1013,1251,1252],{"class":1032},"  \"updated_at\"",[1013,1254,1036],{"class":1019},[1013,1256,1257],{"class":1039},"\"2026-10-07T09:12:44.123456+00:00\"",[1013,1259,1043],{"class":1019},[1013,1261,1262,1265,1267,1270,1273,1276,1278,1281,1283,1285],{"class":1015,"line":1112},[1013,1263,1264],{"class":1032},"  \"result\"",[1013,1266,1195],{"class":1019},[1013,1268,1269],{"class":1032},"\"problems\"",[1013,1271,1272],{"class":1019},": [], ",[1013,1274,1275],{"class":1032},"\"changes\"",[1013,1277,1272],{"class":1019},[1013,1279,1280],{"class":1032},"\"…\"",[1013,1282,1036],{"class":1019},[1013,1284,1280],{"class":1039},[1013,1286,1287],{"class":1019},"}\n",[1013,1289,1290],{"class":1015,"line":1118},[1013,1291,1287],{"class":1019},[543,1293,1294,1304],{},[546,1295,1296],{},[549,1297,1298,1301],{},[552,1299,1300],{},"Field",[552,1302,1303],{},"Meaning",[559,1305,1306,1325,1340,1356,1369,1382,1395,1419],{},[549,1307,1308,1313],{},[564,1309,1310],{},[530,1311,1312],{},"draft",[564,1314,1315,1317,1318,1321,1322,1324],{},[530,1316,1185],{}," when a draft is open. With none it is ",[530,1319,1320],{},"false",", and ",[530,1323,1126],{}," are the published ones.",[549,1326,1327,1331],{},[564,1328,1329],{},[530,1330,1126],{},[564,1332,1333,1336,1337,989],{},[530,1334,1335],{},"{file: text}",": the published files with the draft's text laid over them. A file the draft deletes is ",[530,1338,1339],{},"null",[549,1341,1342,1347],{},[564,1343,1344],{},[530,1345,1346],{},"base",[564,1348,1349,1352,1353,1355],{},[530,1350,1351],{},"{file: digest}",": the SHA-256 of each file's text when it joined the draft, ",[530,1354,1339],{}," for a file that did not exist. With no draft, the digests of the published files.",[549,1357,1358,1363],{},[564,1359,1360],{},[530,1361,1362],{},"published",[564,1364,1365,1366,1368],{},"The text of each file as it is on disk, ",[530,1367,1339],{}," for one that does not exist yet: the left side of a diff.",[549,1370,1371,1376],{},[564,1372,1373],{},[530,1374,1375],{},"updated_at",[564,1377,1378,1379,1381],{},"The draft's last write, or ",[530,1380,1339],{}," with no draft.",[549,1383,1384,1388],{},[564,1385,1386],{},[530,1387,532],{},[564,1389,1390,1391,989],{},"What the draft resolves to. See ",[535,1392,1394],{"href":1393},"#the-result-object","The result object",[549,1396,1397,1402],{},[564,1398,1399],{},[530,1400,1401],{},"addon",[564,1403,1404,1405,1407,1408,1411,1412,1416,1417,989],{},"On a ",[530,1406,788],{}," key: ",[530,1409,1410],{},"{id, version}"," of the ",[535,1413,1415],{"href":1414},"\u002Fconcepts\u002Fvocabulary#add-on","Kraft add-on"," the chain comes from, else ",[530,1418,1339],{},[549,1420,1421,1426],{},[564,1422,1423],{},[530,1424,1425],{},"addon_library",[564,1427,1428,1429,1431,1432,1435,1436,1438,1439,989],{},"On the ",[530,1430,813],{}," key: the loaded add-ons' components, as ",[530,1433,1434],{},"{section: {\"release:implementer\": definition}}",". ",[530,1437,1339],{}," on every other area. They are never in ",[530,1440,1126],{},[526,1442,1443,1444,1447,1448,1451,1452,1454,1455,946,1457,1459,1460,1463,1464,840,1466,840,1468,840,1471,840,1474,840,1476,1479,1480,1482,1483,989],{},"An add-on's chain is read under its qualified id: ",[530,1445,1446],{},"GET \u002Fapi\u002Fdrafts\u002Fchains\u002Frelease:ship",". It answers ",[530,1449,1450],{},"200"," as published, with ",[530,1453,1312],{}," ",[530,1456,1320],{},[530,1458,1401],{}," set: it never has a draft. Its file is shown with the add-on's own references written out as ",[530,1461,1462],{},"release:\u003Cname>",". Every other route on that key (",[530,1465,925],{},[530,1467,540],{},[530,1469,1470],{},"undo",[530,1472,1473],{},"publish",[530,1475,959],{},[530,1477,1478],{},"DELETE",") answers ",[530,1481,955],{},", with ",[530,1484,1485],{},"\u003Cid> comes from add-on \u003Caddon id>; extend it or copy it to your library",[526,1487,1488,1489,1491,1492,795,1494,1496],{},"Refused with ",[530,1490,977],{}," for a ",[530,1493,788],{},[530,1495,813],{}," key that has neither a file nor a draft. A settings area answers for a file that is not there yet, because an op creates it.",[526,1498,1499,1500,1502,1503,1505,1506,1508,1509,1511,1512,989],{},"An unknown ",[530,1501,970],{}," answers ",[530,1504,977],{}," and a ",[530,1507,973],{}," the area does not accept ",[530,1510,981],{},", as under ",[535,1513,758],{"href":1514},"#areas-and-keys",[995,1516,1518],{"id":1517},"get-apidraftsareakeyfragmentpath",[530,1519,597],{},[526,1521,1522,1523,1526,1527,1530],{},"Reads the YAML of the component at ",[530,1524,1525],{},"path"," (a task, a node, a policy block), from the draft when there is one, else from the published file. The text is what the ",[530,1528,1529],{},"set_fragment"," op takes back.",[1004,1532,1534],{"className":1006,"code":1533,"language":1008,"meta":1009,"style":1009},"{\"path\": \"implementation.main.implement\", \"text\": \"id: implement\\n…\"}\n",[530,1535,1536],{"__ignoreMap":1009},[1013,1537,1538,1541,1544,1546,1549,1551,1554,1556,1559,1561,1563],{"class":1015,"line":1016},[1013,1539,1540],{"class":1019},"{",[1013,1542,1543],{"class":1032},"\"path\"",[1013,1545,1036],{"class":1019},[1013,1547,1548],{"class":1039},"\"implementation.main.implement\"",[1013,1550,840],{"class":1019},[1013,1552,1553],{"class":1032},"\"text\"",[1013,1555,1036],{"class":1019},[1013,1557,1558],{"class":1039},"\"id: implement",[1013,1560,1206],{"class":1205},[1013,1562,1209],{"class":1039},[1013,1564,1287],{"class":1019},[526,1566,1404,1567,1569,1570,1572,1573,1575],{},[530,1568,855],{}," draft ",[530,1571,1525],{}," is a repo's path, and the answer is read-only, since there is no ",[530,1574,1529],{}," for it. The other settings areas have no fragments.",[526,1577,1488,1578,1580,1581,1583,1584,1586,1587,1589],{},[530,1579,981],{}," when ",[530,1582,1525],{}," is missing, and with ",[530,1585,977],{}," when nothing is at ",[530,1588,1525],{}," or the area has no fragments.",[526,1591,1499,1592,1502,1594,1505,1596,1508,1598,1511,1600,989],{},[530,1593,970],{},[530,1595,977],{},[530,1597,973],{},[530,1599,981],{},[535,1601,758],{"href":1514},[995,1603,1605],{"id":1604},"get-apidraftspolicykeypreviewchain",[530,1606,610],{},[526,1608,1609,1610,1612,1613,1615],{},"Shows what a published chain's caps are under the ",[530,1611,616],{}," draft. The key is ",[530,1614,616],{},". It is a read: the draft does not change.",[1004,1617,1619],{"className":1006,"code":1618,"language":1008,"meta":1009,"style":1009},"{\n  \"chain\": \"default\",\n  \"scopes\": [\n    {\n      \"path\": \"default\",\n      \"kind\": \"chain\",\n      \"level\": \"work_item\",\n      \"caps\": {\n        \"time_cap_minutes\": {\"value\": null, \"source\": \"default\", \"maximum\": null, \"exceeds\": false}\n      }\n    }\n  ]\n}\n",[530,1620,1621,1625,1636,1644,1649,1660,1672,1684,1692,1735,1740,1746,1752],{"__ignoreMap":1009},[1013,1622,1623],{"class":1015,"line":1016},[1013,1624,1153],{"class":1019},[1013,1626,1627,1630,1632,1634],{"class":1015,"line":1023},[1013,1628,1629],{"class":1032},"  \"chain\"",[1013,1631,1036],{"class":1019},[1013,1633,1054],{"class":1039},[1013,1635,1043],{"class":1019},[1013,1637,1638,1641],{"class":1015,"line":1029},[1013,1639,1640],{"class":1032},"  \"scopes\"",[1013,1642,1643],{"class":1019},": [\n",[1013,1645,1646],{"class":1015,"line":1046},[1013,1647,1648],{"class":1019},"    {\n",[1013,1650,1651,1654,1656,1658],{"class":1015,"line":1059},[1013,1652,1653],{"class":1032},"      \"path\"",[1013,1655,1036],{"class":1019},[1013,1657,1054],{"class":1039},[1013,1659,1043],{"class":1019},[1013,1661,1662,1665,1667,1670],{"class":1015,"line":1074},[1013,1663,1664],{"class":1032},"      \"kind\"",[1013,1666,1036],{"class":1019},[1013,1668,1669],{"class":1039},"\"chain\"",[1013,1671,1043],{"class":1019},[1013,1673,1674,1677,1679,1682],{"class":1015,"line":1088},[1013,1675,1676],{"class":1032},"      \"level\"",[1013,1678,1036],{"class":1019},[1013,1680,1681],{"class":1039},"\"work_item\"",[1013,1683,1043],{"class":1019},[1013,1685,1686,1689],{"class":1015,"line":1101},[1013,1687,1688],{"class":1032},"      \"caps\"",[1013,1690,1691],{"class":1019},": {\n",[1013,1693,1694,1697,1699,1702,1704,1706,1708,1711,1713,1715,1717,1720,1722,1724,1726,1729,1731,1733],{"class":1015,"line":1112},[1013,1695,1696],{"class":1032},"        \"time_cap_minutes\"",[1013,1698,1195],{"class":1019},[1013,1700,1701],{"class":1032},"\"value\"",[1013,1703,1036],{"class":1019},[1013,1705,1339],{"class":1082},[1013,1707,840],{"class":1019},[1013,1709,1710],{"class":1032},"\"source\"",[1013,1712,1036],{"class":1019},[1013,1714,1054],{"class":1039},[1013,1716,840],{"class":1019},[1013,1718,1719],{"class":1032},"\"maximum\"",[1013,1721,1036],{"class":1019},[1013,1723,1339],{"class":1082},[1013,1725,840],{"class":1019},[1013,1727,1728],{"class":1032},"\"exceeds\"",[1013,1730,1036],{"class":1019},[1013,1732,1320],{"class":1082},[1013,1734,1287],{"class":1019},[1013,1736,1737],{"class":1015,"line":1118},[1013,1738,1739],{"class":1019},"      }\n",[1013,1741,1743],{"class":1015,"line":1742},11,[1013,1744,1745],{"class":1019},"    }\n",[1013,1747,1749],{"class":1015,"line":1748},12,[1013,1750,1751],{"class":1019},"  ]\n",[1013,1753,1755],{"class":1015,"line":1754},13,[1013,1756,1287],{"class":1019},[526,1758,1759,1760,1763,1764,840,1767,840,1770,795,1773,1321,1776,1779,1780,840,1783,840,1786,840,1789,1792],{},"Each scope is the chain itself, then every node, step and task. A gate waits for a person and has none. ",[530,1761,1762],{},"kind"," is ",[530,1765,1766],{},"chain",[530,1768,1769],{},"node",[530,1771,1772],{},"step",[530,1774,1775],{},"task",[530,1777,1778],{},"level"," is the policy level it reads its caps at. Every scope lists all four caps (",[530,1781,1782],{},"time_cap_minutes",[530,1784,1785],{},"total_time_cap_minutes",[530,1787,1788],{},"token_budget",[530,1790,1791],{},"budget_usd","), each with these fields:",[543,1794,1795,1803],{},[546,1796,1797],{},[549,1798,1799,1801],{},[552,1800,1300],{},[552,1802,1303],{},[559,1804,1805,1818,1837,1853],{},[549,1806,1807,1812],{},[564,1808,1809],{},[530,1810,1811],{},"value",[564,1813,1814,1815,1817],{},"What the scope runs under, or ",[530,1816,1339],{}," when no layer sets one.",[549,1819,1820,1825],{},[564,1821,1822],{},[530,1823,1824],{},"source",[564,1826,1827,840,1829,840,1832,795,1834,989],{},[530,1828,1766],{},[530,1830,1831],{},"library:\u003Csection>.\u003Cname>",[530,1833,616],{},[530,1835,1836],{},"default",[549,1838,1839,1844],{},[564,1840,1841],{},[530,1842,1843],{},"maximum",[564,1845,943,1846,1849,1850,1852],{},[530,1847,1848],{},"{value, level}"," that bounds it at its level, or ",[530,1851,1339],{}," for no bound.",[549,1854,1855,1860],{},[564,1856,1857],{},[530,1858,1859],{},"exceeds",[564,1861,1862,1863,1865,1866,989],{},"Whether ",[530,1864,1811],{}," is past ",[530,1867,1843],{},[526,1869,1488,1870,1872,1873,840,1875,1877,1878,1880,1881,1883,1884,1886,1887,1890],{},[530,1871,981],{}," for a key that is not ",[530,1874,616],{},[530,1876,977],{}," for a chain that is not in the library, ",[530,1879,988],{}," for a missing ",[530,1882,1766],{},", a draft whose ",[530,1885,318],{}," does not load or a chain that does not resolve, and ",[530,1888,1889],{},"503"," when the template library failed to load.",[755,1892,1894],{"id":1893},"changing-a-draft","Changing a draft",[995,1896,1898],{"id":1897},"put-apidraftsareakeyfilesfile",[530,1899,627],{},[526,1901,1902,1903,1906,1907,989],{},"Stores one file's text as typed, comments kept. The first write makes the draft. A write whose files parse to the published ones drops the draft. ",[530,1904,1905],{},"{file}"," is the file's name with its folder, such as ",[530,1908,1909],{},"chains\u002Fdefault.yaml",[526,1911,1912,1913,1916,1917,1921,1922,1924,1925,989],{},"Body: ",[530,1914,1915],{},"{\"text\": \"…\"}",". Answers as ",[535,1918,1919],{"href":581},[530,1920,584],{}," does. A text that does not parse is stored, and the answer's ",[530,1923,532],{}," carries a ",[530,1926,1927],{},"yaml_error",[526,1929,1930,1931,1933],{},"Consecutive ",[530,1932,925],{},"s to one file less than 4 seconds apart are one undo step.",[526,1935,1488,1936,1938],{},[530,1937,988],{}," for a file that is not one of the key's files, unless an op joined it to the draft.",[526,1940,1499,1941,1502,1943,1945,1946,1508,1948,1950,1951,1511,1953,989],{},[530,1942,970],{},[530,1944,977],{},", a ",[530,1947,973],{},[530,1949,981],{},", and a file that is not one of the key's files, unless an op joined it, ",[530,1952,988],{},[535,1954,758],{"href":1514},[995,1956,1958],{"id":1957},"post-apidraftsareakeyops",[530,1959,640],{},[526,1961,1962,1963,1965,1966,795,1968,1970,1971,1974,1975,1977],{},"Applies the ",[535,1964,540],{"href":475}," in the body in order, all or nothing, as one undo step. A ",[530,1967,788],{},[530,1969,813],{}," draft is written back whole, so its comments are dropped, and ",[530,1972,1973],{},"warnings"," says so until a ",[530,1976,925],{}," of that file. The settings areas write over each file's own text, so their comments stay.",[526,1979,1912,1980,1916,1983,1987,1988,1990,1991,1994,1995,1997],{},[530,1981,1982],{},"{\"ops\": [{\"op\": \"add_step\", …}]}",[535,1984,1985],{"href":581},[530,1986,584],{}," does, plus ",[530,1989,540],{},", one ",[530,1992,1993],{},"{op, result?}"," per op in the order sent, ",[530,1996,532],{}," being that op's own answer.",[1004,1999,2001],{"className":1006,"code":2000,"language":1008,"meta":1009,"style":1009},"{\"…\": \"the fields of the GET answer\",\n \"ops\": [{\"op\": \"add_step\", \"result\": {\"path\": \"spec.step_2\"}}, {\"op\": \"set_field\"}]}\n",[530,2002,2003,2016],{"__ignoreMap":1009},[1013,2004,2005,2007,2009,2011,2014],{"class":1015,"line":1016},[1013,2006,1540],{"class":1019},[1013,2008,1280],{"class":1032},[1013,2010,1036],{"class":1019},[1013,2012,2013],{"class":1039},"\"the fields of the GET answer\"",[1013,2015,1043],{"class":1019},[1013,2017,2018,2021,2024,2027,2029,2032,2034,2037,2039,2041,2043,2046,2049,2051,2053,2056],{"class":1015,"line":1023},[1013,2019,2020],{"class":1032}," \"ops\"",[1013,2022,2023],{"class":1019},": [{",[1013,2025,2026],{"class":1032},"\"op\"",[1013,2028,1036],{"class":1019},[1013,2030,2031],{"class":1039},"\"add_step\"",[1013,2033,840],{"class":1019},[1013,2035,2036],{"class":1032},"\"result\"",[1013,2038,1195],{"class":1019},[1013,2040,1543],{"class":1032},[1013,2042,1036],{"class":1019},[1013,2044,2045],{"class":1039},"\"spec.step_2\"",[1013,2047,2048],{"class":1019},"}}, {",[1013,2050,2026],{"class":1032},[1013,2052,1036],{"class":1019},[1013,2054,2055],{"class":1039},"\"set_field\"",[1013,2057,2058],{"class":1019},"}]}\n",[526,2060,1488,2061,2063,2064,2066,2067,840,2069,795,2072,2074,2075,1454,2077,2080],{},[530,2062,955],{}," (\"fix the YAML first\") when the draft has a ",[530,2065,1927],{},". An op whose ",[530,2068,1525],{},[530,2070,2071],{},"container",[530,2073,1769],{}," addresses an add-on's component answers ",[530,2076,955],{},[530,2078,2079],{},"{detail, op}",", naming the add-on.",[526,2082,2083,2084,1454,2086,2088,2089,2092,2093,2095,2096,2098,2099,946,2101,989],{},"An op that cannot apply answers ",[530,2085,988],{},[530,2087,2079],{},", and nothing is saved. ",[530,2090,2091],{},"op"," is the op's index in the list, or ",[530,2094,1339],{}," when the refusal comes from writing the files back, as when a settings file's layout cannot take the change. A refusal can add keys of its own: a ",[530,2097,1529],{}," that does not parse adds ",[530,2100,1015],{},[530,2102,2103],{},"col",[526,2105,1499,2106,1502,2108,1505,2110,1508,2112,1511,2114,989],{},[530,2107,970],{},[530,2109,977],{},[530,2111,973],{},[530,2113,981],{},[535,2115,758],{"href":1514},[995,2117,2119],{"id":2118},"post-apidraftsareakeyopspreview1",[530,2120,653],{},[526,2122,2123,2124,2126],{},"Answers as ",[530,2125,640],{}," does, without saving: the draft, its undo steps and the draft list stay as they were. It takes the same body and is refused in the same cases.",[526,2128,1499,2129,1502,2131,1505,2133,1508,2135,1511,2137,989],{},[530,2130,970],{},[530,2132,977],{},[530,2134,973],{},[530,2136,981],{},[535,2138,758],{"href":1514},[995,2140,2142],{"id":2141},"post-apidraftsareakeyundo",[530,2143,666],{},[526,2145,2146,2147,2151],{},"Undoes the last request and answers as ",[535,2148,2149],{"href":581},[530,2150,584],{}," does. Undoing back to the published state drops the draft. A draft keeps its last 80 requests. No body.",[526,2153,1488,2154,2156],{},[530,2155,955],{}," when there is nothing to undo.",[526,2158,1499,2159,1502,2161,1505,2163,1508,2165,1511,2167,989],{},[530,2160,970],{},[530,2162,977],{},[530,2164,973],{},[530,2166,981],{},[535,2168,758],{"href":1514},[755,2170,2172],{"id":2171},"ending-a-draft","Ending a draft",[995,2174,2176],{"id":2175},"post-apidraftsareakeypublish",[530,2177,679],{},[526,2179,2180,2181,2184],{},"Writes each file of the draft (a file the draft deletes is removed), applies them as the ",[535,2182,2183],{"href":1514},"areas table"," says, and drops the draft. No body.",[1004,2186,2188],{"className":1006,"code":2187,"language":1008,"meta":1009,"style":1009},"{\"published\": [\"chains\u002Fdefault.yaml\"], \"changes\": [], \"result\": {\"…\": \"…\"}}\n",[530,2189,2190],{"__ignoreMap":1009},[1013,2191,2192,2194,2197,2199,2201,2204,2206,2208,2210,2212,2214,2216,2218],{"class":1015,"line":1016},[1013,2193,1540],{"class":1019},[1013,2195,2196],{"class":1032},"\"published\"",[1013,2198,1065],{"class":1019},[1013,2200,1068],{"class":1039},[1013,2202,2203],{"class":1019},"], ",[1013,2205,1275],{"class":1032},[1013,2207,1272],{"class":1019},[1013,2209,2036],{"class":1032},[1013,2211,1195],{"class":1019},[1013,2213,1280],{"class":1032},[1013,2215,1036],{"class":1019},[1013,2217,1280],{"class":1039},[1013,2219,2220],{"class":1019},"}}\n",[526,2222,2223,2225,2226,2228,2229,2232,2233,2235],{},[530,2224,1362],{}," is the names of the files written. ",[530,2227,1130],{}," is what was published, as the draft's ",[530,2230,2231],{},"result.changes"," listed it. ",[530,2234,532],{}," is the state after, with no draft left.",[526,2237,2238,2239,1502,2241,2243,2244,2246],{},"A publish checks each file against the one on disk when the file joined the draft. If any changed since, for example through a save on the Settings screens, it writes nothing. A file that already holds the draft's text is not counted as changed, so a retry after a ",[530,2240,963],{},[530,2242,1450],{},", not ",[530,2245,955],{},". The refusal:",[1004,2248,2250],{"className":1006,"code":2249,"language":1008,"meta":1009,"style":1009},"{\"detail\": \"published since this draft began: chains\u002Fdefault.yaml\",\n \"files\": {\"chains\u002Fdefault.yaml\": {\"published\": \"…\", \"draft\": \"…\", \"diff\": \"--- published\u002Fchains\u002Fdefault.yaml\\n+++ draft\u002Fchains\u002Fdefault.yaml\\n…\"}}}\n",[530,2251,2252,2266],{"__ignoreMap":1009},[1013,2253,2254,2256,2259,2261,2264],{"class":1015,"line":1016},[1013,2255,1540],{"class":1019},[1013,2257,2258],{"class":1032},"\"detail\"",[1013,2260,1036],{"class":1019},[1013,2262,2263],{"class":1039},"\"published since this draft began: chains\u002Fdefault.yaml\"",[1013,2265,1043],{"class":1019},[1013,2267,2268,2271,2273,2275,2277,2279,2281,2283,2285,2288,2290,2292,2294,2297,2299,2302,2304,2307,2309,2311],{"class":1015,"line":1023},[1013,2269,2270],{"class":1032}," \"files\"",[1013,2272,1195],{"class":1019},[1013,2274,1068],{"class":1032},[1013,2276,1195],{"class":1019},[1013,2278,2196],{"class":1032},[1013,2280,1036],{"class":1019},[1013,2282,1280],{"class":1039},[1013,2284,840],{"class":1019},[1013,2286,2287],{"class":1032},"\"draft\"",[1013,2289,1036],{"class":1019},[1013,2291,1280],{"class":1039},[1013,2293,840],{"class":1019},[1013,2295,2296],{"class":1032},"\"diff\"",[1013,2298,1036],{"class":1019},[1013,2300,2301],{"class":1039},"\"--- published\u002Fchains\u002Fdefault.yaml",[1013,2303,1206],{"class":1205},[1013,2305,2306],{"class":1039},"+++ draft\u002Fchains\u002Fdefault.yaml",[1013,2308,1206],{"class":1205},[1013,2310,1209],{"class":1039},[1013,2312,2313],{"class":1019},"}}}\n",[543,2315,2316,2326],{},[546,2317,2318],{},[549,2319,2320,2323],{},[552,2321,2322],{},"Status",[552,2324,2325],{},"When",[559,2327,2328,2337,2346,2361],{},[549,2329,2330,2334],{},[564,2331,2332],{},[530,2333,977],{},[564,2335,2336],{},"There is no draft.",[549,2338,2339,2343],{},[564,2340,2341],{},[530,2342,955],{},[564,2344,2345],{},"A file changed on disk since it joined the draft. The body is the example above.",[549,2347,2348,2352],{},[564,2349,2350],{},[530,2351,988],{},[564,2353,2354,2355,2357,2358,989],{},"The draft has a ",[530,2356,1927],{}," or any problem. The body is ",[530,2359,2360],{},"{detail, problems}",[549,2362,2363,2367],{},[564,2364,2365],{},[530,2366,963],{},[564,2368,2369],{},"The files were written but applying them failed. The draft stays.",[526,2371,1499,2372,1502,2374,1505,2376,1508,2378,1511,2380,989],{},[530,2373,970],{},[530,2375,977],{},[530,2377,973],{},[530,2379,981],{},[535,2381,758],{"href":1514},[995,2383,2385],{"id":2384},"post-apidraftsareakeyrebase",[530,2386,692],{},[526,2388,2389,2390,2392,2393,891],{},"Takes the published files as the draft's new base and keeps its text, so the next publish no longer answers ",[530,2391,955],{},". It is the way out of a conflict when the draft should win. No body. It pushes no undo step. Answers as ",[535,2394,2395],{"href":581},[530,2396,584],{},[526,2398,1488,2399,2401],{},[530,2400,977],{}," when there is no draft.",[526,2403,1499,2404,1502,2406,1505,2408,1508,2410,1511,2412,989],{},[530,2405,970],{},[530,2407,977],{},[530,2409,973],{},[530,2411,981],{},[535,2413,758],{"href":1514},[995,2415,2417],{"id":2416},"delete-apidraftsareakey",[530,2418,705],{},[526,2420,2421,2422,2425],{},"Discards the draft for good, with no undo. Answers ",[530,2423,2424],{},"204"," with no body.",[526,2427,1488,2428,2401],{},[530,2429,977],{},[526,2431,1499,2432,1502,2434,1505,2436,1508,2438,1511,2440,989],{},[530,2433,970],{},[530,2435,977],{},[530,2437,973],{},[530,2439,981],{},[535,2441,758],{"href":1514},[755,2443,2445],{"id":2444},"settings-routes","Settings routes",[526,2447,2448,2449,2451,2452,2454,2455,2457],{},"These routes read and save ",[530,2450,318],{},", and read the intake poll log, with no draft. A ",[530,2453,616],{}," draft is checked the way ",[530,2456,734],{}," checks a save.",[995,2459,2461],{"id":2460},"get-apipolicy",[530,2462,718],{},[526,2464,721,2465,2467,2468,2471,2472,2475,2476,2478,2479,2481],{},[530,2466,318],{}," from disk. It also answers ",[530,2469,2470],{},"active_count"," (the items running now), and its ",[530,2473,2474],{},"max_concurrent"," is the value the loaded policy runs under. A body sent back to ",[530,2477,734],{}," may keep ",[530,2480,2470],{},"; it is ignored.",[995,2483,2485],{"id":2484},"put-apipolicy",[530,2486,734],{},[526,2488,737,2489,2491,2492,2494],{},[530,2490,318],{}," and makes the running server use it. The body is merged over the file on disk, top-level key by key: a key the body leaves out is kept, and a key it sends as ",[530,2493,1339],{}," is removed. A save never drops what it did not edit. An unparseable file has nothing to keep, so the save replaces it.",[543,2496,2497,2511],{},[546,2498,2499],{},[549,2500,2501,2503,2506,2509],{},[552,2502,1300],{},[552,2504,2505],{},"Type",[552,2507,2508],{},"Default",[552,2510,1303],{},[559,2512,2513,2532,2557,2578,2599,2624],{},[549,2514,2515,2520,2523,2526],{},[564,2516,2517],{},[530,2518,2519],{},"loops",[564,2521,2522],{},"object",[564,2524,2525],{},"required",[564,2527,943,2528,2531],{},[530,2529,2530],{},"loops:"," entries, by fix loop.",[549,2533,2534,2538,2540,2542],{},[564,2535,2536],{},[530,2537,1836],{},[564,2539,2522],{},[564,2541,2525],{},[564,2543,2544,2545,2548,2549,1036,2551,946,2554,989],{},"The top-level ",[530,2546,2547],{},"default:"," block, beside ",[530,2550,2519],{},[530,2552,2553],{},"attempts",[530,2555,2556],{},"wall_clock_s",[549,2558,2559,2563,2566,2572],{},[564,2560,2561],{},[530,2562,2474],{},[564,2564,2565],{},"integer",[564,2567,2568,2571],{},[530,2569,2570],{},"3",", when the file has none either",[564,2573,2574,2575,989],{},"How many items run at once. At least ",[530,2576,2577],{},"1",[549,2579,2580,2591,2593,2596],{},[564,2581,2582,840,2585,840,2588],{},[530,2583,2584],{},"findings",[530,2586,2587],{},"budget",[530,2589,2590],{},"archive",[564,2592,2522],{},[564,2594,2595],{},"the file's",[564,2597,2598],{},"The blocks of the same names.",[549,2600,2601,2606,2609,2611],{},[564,2602,2603],{},[530,2604,2605],{},"triggers",[564,2607,2608],{},"list",[564,2610,2595],{},[564,2612,2613,2614,2616,2617,2621,2622,989],{},"The schedules ",[530,2615,318],{}," still holds, which still fire: see ",[535,2618,2620],{"href":2619},"\u002Freference\u002Ftriggers#when-a-schedule-fires","When a schedule fires",". Schedules otherwise live in ",[530,2623,334],{},[549,2625,2626,2640,2643,2645],{},[564,2627,2628,840,2631,840,2634,840,2637],{},[530,2629,2630],{},"rate_limit_retries",[530,2632,2633],{},"auto_escalate_stuck",[530,2635,2636],{},"auto_escalate_stuck_cap",[530,2638,2639],{},"auto_escalate_delay_s",[564,2641,2642],{},"integer or boolean",[564,2644,2595],{},[564,2646,2647],{},"The keys of the same names.",[526,2649,2650,2651,2653,2654,840,2657,946,2660,1435,2663,2667],{},"Any other top-level key of ",[530,2652,318],{}," is accepted and checked by the loader, such as ",[530,2655,2656],{},"defaults",[530,2658,2659],{},"maxima",[530,2661,2662],{},"forge_cli_timeout_s",[535,2664,2665],{"href":319},[530,2666,318],{}," lists every key.",[526,2669,2670],{},"The answer is the saved file's content. The new policy applies at once: a loop cap applies to loops that start after the save, and a counter already running keeps the cap it started with.",[543,2672,2673,2681],{},[546,2674,2675],{},[549,2676,2677,2679],{},[552,2678,2322],{},[552,2680,2325],{},[559,2682,2683],{},[549,2684,2685,2689],{},[564,2686,2687],{},[530,2688,988],{},[564,2690,2691,2692,2695,2696,2699],{},"A required field is missing, a field has the wrong type or is out of range (",[530,2693,2694],{},"max_concurrent: 0","), or the file the merge would write does not load: the answer's ",[530,2697,2698],{},"detail"," is the loader's message. Nothing is written.",[995,2701,2703],{"id":2702},"get-apiintakecheckslimit",[530,2704,750],{},[526,2706,2707,2708,2711,2712,2715,2716,2719],{},"Answers what each recent poll found, newest first. ",[530,2709,2710],{},"limit"," defaults to ",[530,2713,2714],{},"20"," and is at most ",[530,2717,2718],{},"100","; the newest 500 polls are kept. A check is not a work item event.",[1004,2721,2723],{"className":1006,"code":2722,"language":1008,"meta":1009,"style":1009},"[{\"id\": 12, \"at\": \"2026-10-07T09:12:44.123456+00:00\", \"ready\": 1, \"started\": [],\n  \"skipped\": [{\"bead\": \"Kraft-9d8b2\", \"reason\": \"epic\"}]}]\n",[530,2724,2725,2764],{"__ignoreMap":1009},[1013,2726,2727,2730,2733,2735,2738,2740,2743,2745,2747,2749,2752,2754,2756,2758,2761],{"class":1015,"line":1016},[1013,2728,2729],{"class":1019},"[{",[1013,2731,2732],{"class":1032},"\"id\"",[1013,2734,1036],{"class":1019},[1013,2736,2737],{"class":1082},"12",[1013,2739,840],{"class":1019},[1013,2741,2742],{"class":1032},"\"at\"",[1013,2744,1036],{"class":1019},[1013,2746,1257],{"class":1039},[1013,2748,840],{"class":1019},[1013,2750,2751],{"class":1032},"\"ready\"",[1013,2753,1036],{"class":1019},[1013,2755,2577],{"class":1082},[1013,2757,840],{"class":1019},[1013,2759,2760],{"class":1032},"\"started\"",[1013,2762,2763],{"class":1019},": [],\n",[1013,2765,2766,2769,2771,2774,2776,2779,2781,2784,2786,2789],{"class":1015,"line":1023},[1013,2767,2768],{"class":1032},"  \"skipped\"",[1013,2770,2023],{"class":1019},[1013,2772,2773],{"class":1032},"\"bead\"",[1013,2775,1036],{"class":1019},[1013,2777,2778],{"class":1039},"\"Kraft-9d8b2\"",[1013,2780,840],{"class":1019},[1013,2782,2783],{"class":1032},"\"reason\"",[1013,2785,1036],{"class":1019},[1013,2787,2788],{"class":1039},"\"epic\"",[1013,2790,2791],{"class":1019},"}]}]\n",[2793,2794,2795,2802,2808,2817,2846],"ul",{},[2796,2797,2798,2801],"li",{},[530,2799,2800],{},"ready"," is how many issues in beads were ready.",[2796,2803,2804,2807],{},[530,2805,2806],{},"started"," is the work item ids the poll filed.",[2796,2809,2810,2813,2814,989],{},[530,2811,2812],{},"skipped"," is the issues it left alone, each ",[530,2815,2816],{},"{bead, reason}",[2796,2818,2819,2822,2823,840,2826,840,2829,840,2832,840,2834,840,2837,795,2840,1435,2843,2845],{},[530,2820,2821],{},"reason"," is one of ",[530,2824,2825],{},"above_priority_ceiling",[530,2827,2828],{},"already_item",[530,2830,2831],{},"epic",[530,2833,2474],{},[530,2835,2836],{},"daily_budget",[530,2838,2839],{},"storage",[530,2841,2842],{},"invalid_config",[530,2844,2839],{}," is while worktrees are over the storage limit.",[2796,2847,2848,2849,840,2851,1763,2854,1580,2856,795,2858,2860],{},"With ",[530,2850,2842],{},[530,2852,2853],{},"bead",[530,2855,1339],{},[530,2857,318],{},[530,2859,300],{}," did not load and the poll could not run, and the bead's id when its item could not be filed.",[526,2862,1488,2863,1491,2865,2867],{},[530,2864,988],{},[530,2866,2710],{}," outside 1 to 100.",[755,2869,1394],{"id":2870},"the-result-object",[526,2872,2873,2875],{},[530,2874,532],{}," is the same on every route that answers a draft:",[543,2877,2878,2887],{},[546,2879,2880],{},[549,2881,2882,2884],{},[552,2883,1300],{},[552,2885,2886],{},"Holds",[559,2888,2889,2899,2923,2941,2970,3002,3018,3030,3045,3081],{},[549,2890,2891,2896],{},[564,2892,2893],{},[530,2894,2895],{},"model",[564,2897,2898],{},"Per file, the mapping it parses to. For a file that does not parse, the newest earlier state that did, else the published file.",[549,2900,2901,2906],{},[564,2902,2903],{},[530,2904,2905],{},"resolved",[564,2907,2908,2909,2912,2913,2916,2917,2919,2920,2922],{},"For a chain, the chain with ",[530,2910,2911],{},"extends"," expanded, as ",[530,2914,2915],{},"GET \u002Fapi\u002Ftemplates\u002Fchains\u002F{id}\u002Fresolved"," shows it, or ",[530,2918,1339],{}," when it does not resolve. ",[530,2921,1339],{}," for the library. A settings area has its own shape, with its ops.",[549,2924,2925,2929],{},[564,2926,2927],{},[530,2928,936],{},[564,2930,2931,2934,2935,989],{},[530,2932,2933],{},"[{path, field, message, file, line, col}]",": everything a save would refuse, with every schema error listed. See ",[535,2936,2938],{"href":2937},"#resultproblems",[530,2939,2940],{},"result.problems",[549,2942,2943,2948],{},[564,2944,2945],{},[530,2946,2947],{},"sources",[564,2949,2950,2951,2954,2955,2959,2960,2963,2964,989],{},"For a chain that resolves, ",[530,2952,2953],{},"{path: {field: {value, source}}}"," for each node, step, task and ",[535,2956,2958],{"href":2957},"\u002Fconcepts\u002Fvocabulary#fix-loop","fix loop",": its own fields, and each ",[530,2961,2962],{},"policy.*"," cap of its scope. See ",[535,2965,2967],{"href":2966},"#resultsources",[530,2968,2969],{},"result.sources",[549,2971,2972,2976],{},[564,2973,2974],{},[530,2975,1130],{},[564,2977,2978,2981,2982,2984,2985,840,2988,840,2991,795,2994,2996,2997,989],{},[530,2979,2980],{},"[{path, kind, summary, fields?}]"," against the published files, ",[530,2983,1762],{}," being ",[530,2986,2987],{},"add",[530,2989,2990],{},"change",[530,2992,2993],{},"remove",[530,2995,929],{},". See ",[535,2998,3000],{"href":2999},"#resultchanges",[530,3001,2231],{},[549,3003,3004,3009],{},[564,3005,3006],{},[530,3007,3008],{},"impact",[564,3010,3011,3012,989],{},"What a publish reaches. See ",[535,3013,3015],{"href":3014},"#resultimpact",[530,3016,3017],{},"result.impact",[549,3019,3020,3024],{},[564,3021,3022],{},[530,3023,1973],{},[564,3025,3026,3029],{},[530,3027,3028],{},"[{file, message}]"," for a file an edit rewrote whole, whose published text has comments a publish would drop.",[549,3031,3032,3037],{},[564,3033,3034],{},[530,3035,3036],{},"policy_values",[564,3038,3039,3042,3043,989],{},[530,3040,3041],{},"{auto_escalate_delay_s, auto_review_attempts}",", the instance's values from ",[530,3044,318],{},[549,3046,3047,3052],{},[564,3048,3049],{},[530,3050,3051],{},"choices",[564,3053,3054,3055,3058,3059,3062,3063,3067,3068,3071,3072,2996,3075,989],{},"The closed sets the editors offer, by field: ",[530,3056,3057],{},"ref"," (a builtin task's actions), ",[530,3060,3061],{},"target"," (a ",[535,3064,3066],{"href":3065},"\u002Fconcepts\u002Fvocabulary#forge","forge"," task's targets), ",[530,3069,3070],{},"inputs"," (what an agent task can ask for) and ",[530,3073,3074],{},"grants",[535,3076,3078],{"href":3077},"#resultchoices",[530,3079,3080],{},"result.choices",[549,3082,3083,3087],{},[564,3084,3085],{},[530,3086,1927],{},[564,3088,3089,3090,989],{},"Only when a file does not parse: ",[530,3091,3092],{},"{file, line, col, message}",[995,3094,3096],{"id":3095},"resultproblems",[530,3097,2940],{},[2793,3099,3100,3118,3128,3149,3158,3169],{},[2796,3101,3102,3104,3105,3109,3110,3113,3114,3117],{},[530,3103,1525],{}," is the component's ",[535,3106,3108],{"href":3107},"\u002Fconcepts\u002Fvocabulary#canonical-path","canonical path"," (",[530,3111,3112],{},"implementation.main.implement","), and ",[530,3115,3116],{},"field"," the key below it.",[2796,3119,3120,3121,3123,3124,3127],{},"On the library, ",[530,3122,936],{}," lists everything ",[530,3125,3126],{},"PUT \u002Fapi\u002Ftemplates\u002Flibrary"," would refuse, checked against every chain and repo.",[2796,3129,3130,3131,795,3133,3136,3137,3139,3140,3142,3143,3145,3146,989],{},"Each library problem has ",[530,3132,1766],{},[530,3134,3135],{},"repo",": the one it breaks, with both ",[530,3138,1339],{}," when the problem is in ",[530,3141,822],{}," itself, where ",[530,3144,1525],{}," is the component, such as ",[530,3147,3148],{},"tasks.implementer",[2796,3150,3151,3152,3155,3156,989],{},"Each library problem also has ",[530,3153,3154],{},"component",": the library component it comes from, or ",[530,3157,1339],{},[2796,3159,3160,3161,1454,3163,3166,3167,989],{},"A repo's problem is at ",[530,3162,1525],{},[530,3164,3165],{},"steering"," in ",[530,3168,300],{},[2796,3170,3171,3172,3174,3175,989],{},"A settings draft's problems carry keys of their own, listed with each area's ",[530,3173,2905],{}," answer on ",[535,3176,3177],{"href":475},"Draft ops",[995,3179,3181],{"id":3180},"resultsources",[530,3182,2969],{},[526,3184,3185,3187],{},[530,3186,1824],{}," is:",[2793,3189,3190,3195,3207,3212],{},[2796,3191,3192,3194],{},[530,3193,1766],{}," (the file sets it at that path);",[2796,3196,3197,3199,3200,795,3203,3206],{},[530,3198,1831],{}," (the nearest library component it inherits it from, such as ",[530,3201,3202],{},"library:tasks.implementer",[530,3204,3205],{},"library:nodes.verification",");",[2796,3208,3209,3211],{},[530,3210,616],{}," (a cap no layer sets, at the value the scope runs under); or",[2796,3213,3214,989],{},[530,3215,1836],{},[526,3217,3218,3219,3221,3222,3225,3226,3229],{},"A subprocess, builtin or forge task leaves out ",[530,3220,3165],{}," and the agent-only caps unless it sets them. With an ",[530,3223,3224],{},"on_failure"," recovery it lists those caps with ",[530,3227,3228],{},"recovery: true",", since the recovery runs under them.",[995,3231,3233],{"id":3232},"resultchanges",[530,3234,2231],{},[2793,3236,3237,3246,3262,3280,3310,3319,3344,3359],{},[2796,3238,3239,3240,3242,3243,989],{},"A reordered component is a ",[530,3241,2990],{}," whose summary says ",[530,3244,3245],{},"moved",[2796,3247,3248,3249,840,3252,3254,3255,3257,3258,3261],{},"A chain-level key that differs (",[530,3250,3251],{},"description",[530,3253,616],{},") is one ",[530,3256,2990],{}," row at the chain's own path, ",[530,3259,3260],{},"\"\"",", its summary naming the keys.",[2796,3263,3264,3265,3267,3268,3270,3271,1482,3273,946,3276,3279],{},"A chain the ",[530,3266,929],{}," op moved to a new id is one ",[530,3269,929],{}," row at ",[530,3272,3260],{},[530,3274,3275],{},"from",[530,3277,3278],{},"to"," the old and new ids.",[2796,3281,1428,3282,946,3284,3286,3287,1435,3290,3293,3294,3297,3298,3301,3302,3305,3306,3309],{},[530,3283,616],{},[530,3285,898],{}," areas each row is one dotted key of a file, ",[530,3288,3289],{},"{path, kind, summary, file}",[530,3291,3292],{},"summary"," reads \"was → now\" (",[530,3295,3296],{},"not set",", or ",[530,3299,3300],{},"no bound"," for a maximum), and a list of mappings (",[530,3303,3304],{},"schedules:",") is keyed by index (",[530,3307,3308],{},"schedules.0.cron",").",[2796,3311,3312,3313,840,3316,3318],{},"On those two areas, a file that does not parse, or that the draft deletes, has one file-level row instead, ",[530,3314,3315],{},"{path, kind, summary, fields, file}",[530,3317,1525],{}," being the file name.",[2796,3320,1428,3321,3323,3324,3326,3327,3330,3331,3333,3334,3113,3337,946,3340,3343],{},[530,3322,831],{}," area there is one row per changed file (",[530,3325,1525],{}," is the file name), then ",[530,3328,3329],{},"access.\u003Charness>"," rows (",[530,3332,3292],{}," reads ",[530,3335,3336],{},"available -> never",[530,3338,3339],{},"harnesses.\u003Cid>",[530,3341,3342],{},"profiles.\u003Cname>"," rows.",[2796,3345,1428,3346,3348,3349,3351,3352,3355,3356,3358],{},[530,3347,855],{}," area each row is one repo entry: ",[530,3350,1525],{}," is the repo's path, and ",[530,3353,3354],{},"fields"," the keys that differ. The file-level row for ",[530,3357,300],{}," stays only when no entry changed, such as a file that does not parse.",[2796,3360,3120,3361,3363,3364,840,3366,3369,3370,3373],{},[530,3362,1525],{}," is a component path (",[530,3365,3148],{},[530,3367,3368],{},"nodes.verification.review.code_review","), and each change adds ",[530,3371,3372],{},"reaches",", the ids of the chains that use the component, as published or as drafted.",[995,3375,3377],{"id":3376},"resultimpact",[530,3378,3017],{},[2793,3380,3381,3388,3399,3408,3416],{},[2796,3382,3383,3384,3387],{},"For a chain: ",[530,3385,3386],{},"{running, repos}",", the items still running it and the repos whose default it is.",[2796,3389,3390,3391,3394,3395,3398],{},"For the library: ",[530,3392,3393],{},"{chains, repos}",", the chains any change reaches and the repos whose ",[530,3396,3397],{},"steering:"," names a changed profile.",[2796,3400,3401,3402,1036,3404,3407],{},"For ",[530,3403,831],{},[530,3405,3406],{},"{tasks, chains}",", the count of tasks whose harness changed state and the ids of the chains they are in.",[2796,3409,3401,3410,1036,3412,3415],{},[530,3411,855],{},[530,3413,3414],{},"{running: {\u003Crepo path>: n}}",", the items not ended, per repo path.",[2796,3417,3401,3418,946,3420,1036,3422,989],{},[530,3419,616],{},[530,3421,898],{},[530,3423,1339],{},[995,3425,3427],{"id":3426},"resultchoices",[530,3428,3080],{},[526,3430,3431,3432,840,3434,840,3436,946,3438,3440,3441,3444,3445,3447,3448,3451],{},"Each of ",[530,3433,3057],{},[530,3435,3061],{},[530,3437,3070],{},[530,3439,3074],{}," is a list of ",[530,3442,3443],{},"{value, summary}",", and a ",[530,3446,3061],{}," also has ",[530,3449,3450],{},"waits",", true for one that runs as an external wait.",[755,3453,3455],{"id":3454},"related","Related",[2793,3457,3458,3466,3471],{},[2796,3459,3460,3462,3463,3465],{},[535,3461,474],{"href":475},": the ops ",[530,3464,640],{}," takes, and a work item's own draft.",[2796,3467,3468,3470],{},[535,3469,260],{"href":261},": the screens that call these routes.",[2796,3472,3473,3475],{},[535,3474,444],{"href":445},": who may call, and which routes are stable.",[3477,3478,3479],"style",{},"html pre.shiki code .s7iLA, html code.shiki .s7iLA{--shiki-light:#0E1116;--shiki-default:#0E1116;--shiki-dark:#F0F3F6}html pre.shiki code .sb7M8, html code.shiki .sb7M8{--shiki-light:#024C1A;--shiki-default:#024C1A;--shiki-dark:#72F088}html pre.shiki code .semJd, html code.shiki .semJd{--shiki-light:#032563;--shiki-default:#032563;--shiki-dark:#ADDCFF}html pre.shiki code .ssYy9, html code.shiki .ssYy9{--shiki-light:#023B95;--shiki-default:#023B95;--shiki-dark:#91CBFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sklAV, html code.shiki .sklAV{--shiki-light:#A0111F;--shiki-default:#A0111F;--shiki-dark:#FF9492}",{"title":1009,"searchDepth":1023,"depth":1023,"links":3481},[3482,3483,3493,3503,3511,3519,3531],{"id":757,"depth":1023,"text":758},{"id":992,"depth":1023,"text":993,"children":3484},[3485,3487,3489,3491],{"id":997,"depth":1029,"text":3486},"GET \u002Fapi\u002F​drafts",{"id":1136,"depth":1029,"text":3488},"GET \u002Fapi\u002F​drafts\u002F​{area}\u002F​{key}",{"id":1517,"depth":1029,"text":3490},"GET \u002Fapi\u002F​drafts\u002F​{area}\u002F​{key}\u002F​fragment?​path=",{"id":1604,"depth":1029,"text":3492},"GET \u002Fapi\u002F​drafts\u002F​policy\u002F​{key}\u002F​preview?​chain=",{"id":1893,"depth":1023,"text":1894,"children":3494},[3495,3497,3499,3501],{"id":1897,"depth":1029,"text":3496},"PUT \u002Fapi\u002F​drafts\u002F​{area}\u002F​{key}\u002F​files\u002F​{file}",{"id":1957,"depth":1029,"text":3498},"POST \u002Fapi\u002F​drafts\u002F​{area}\u002F​{key}\u002F​ops",{"id":2118,"depth":1029,"text":3500},"POST \u002Fapi\u002F​drafts\u002F​{area}\u002F​{key}\u002F​ops?​preview=​1",{"id":2141,"depth":1029,"text":3502},"POST \u002Fapi\u002F​drafts\u002F​{area}\u002F​{key}\u002F​undo",{"id":2171,"depth":1023,"text":2172,"children":3504},[3505,3507,3509],{"id":2175,"depth":1029,"text":3506},"POST \u002Fapi\u002F​drafts\u002F​{area}\u002F​{key}\u002F​publish",{"id":2384,"depth":1029,"text":3508},"POST \u002Fapi\u002F​drafts\u002F​{area}\u002F​{key}\u002F​rebase",{"id":2416,"depth":1029,"text":3510},"DELETE \u002Fapi\u002F​drafts\u002F​{area}\u002F​{key}",{"id":2444,"depth":1023,"text":2445,"children":3512},[3513,3515,3517],{"id":2460,"depth":1029,"text":3514},"GET \u002Fapi\u002F​policy",{"id":2484,"depth":1029,"text":3516},"PUT \u002Fapi\u002F​policy",{"id":2702,"depth":1029,"text":3518},"GET \u002Fapi\u002F​intake\u002F​checks?​limit=",{"id":2870,"depth":1023,"text":1394,"children":3520},[3521,3523,3525,3527,3529],{"id":3095,"depth":1029,"text":3522},"result.​problems",{"id":3180,"depth":1029,"text":3524},"result.​sources",{"id":3232,"depth":1029,"text":3526},"result.​changes",{"id":3376,"depth":1029,"text":3528},"result.​impact",{"id":3426,"depth":1029,"text":3530},"result.​choices",{"id":3454,"depth":1023,"text":3455},"The routes the Templates and Settings editors use to keep, change, publish and discard drafts, the policy and intake-check routes beside them, and the `result` they answer.","md",null,{},true,{"title":470,"description":3532},"bN5LkjEM6pIYiqG7p8JsV1WA86iNjjOatZzQmCKki9k",[3540,3542],{"title":466,"path":467,"stem":468,"description":3541,"children":-1},"The board's routes for connecting a repo, reading chain templates and harnesses, applying saved changes, checking for updates, disk use and opening editors.",{"title":474,"path":475,"stem":476,"description":3543,"children":-1},"The ops each kind of draft takes, one entry per op, with the answer each gives, and a work item's own draft.",1791801178647]