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