[{"data":1,"prerenderedAt":4100},["ShallowReactive",2],{"navigation_docs":3,"-reference-http-api-gates-run-control-and-ending":520,"-reference-http-api-gates-run-control-and-ending-surround":4095},[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":454,"body":522,"description":4088,"extension":4089,"links":4090,"meta":4091,"navigation":4092,"path":455,"seo":4093,"stem":456,"__hash__":4094},"docs\u002F5.reference\u002F08.http-api\u002F3.gates-run-control-and-ending.md",{"type":523,"value":524,"toc":4036},"minimark",[525,543,811,816,822,840,843,890,904,1016,1030,1035,1049,1100,1104,1185,1189,1194,1228,1270,1275,1320,1336,1341,1354,1386,1447,1453,1499,1504,1514,1540,1560,1609,1614,1635,1652,1664,1719,1765,1812,1885,1889,1894,1901,1915,1926,1975,1979,2070,2075,2082,2130,2135,2207,2212,2215,2251,2263,2292,2296,2301,2307,2516,2600,2623,2655,2660,2682,2732,2751,2798,2803,2821,2869,2873,2919,2924,2934,2941,3007,3041,3046,3064,3090,3099,3128,3133,3139,3145,3183,3188,3192,3197,3203,3212,3322,3337,3398,3485,3502,3507,3534,3545,3644,3649,3658,3685,3699,3713,3726,3786,3790,3807,3812,3826,3856,3878,3938,3943,3953,3980,3986,4032],[526,527,528,529,534,535,537,538,542],"p",{},"This page lists the board's routes that act on a ",[530,531,533],"a",{"href":532},"\u002Fconcepts\u002Fvocabulary#work-item","work item"," once it is filed: they decide its gates, control its run, end it and retry it. The routes that file, read and change an item are on ",[530,536,450],{"href":451},", which also says that every board route can change in any release. A route here that answers with the item itself answers ",[530,539,541],{"href":540},"\u002Freference\u002Fhttp-api\u002Fwork-item-object#the-stored-row","the stored row",", never the detail object.",[544,545,546,559],"table",{},[547,548,549],"thead",{},[550,551,552,556],"tr",{},[553,554,555],"th",{},"Route",[553,557,558],{},"What it does",[560,561,562,577,590,603,616,629,642,655,668,681,694,707,720,733,746,759,772,785,798],"tbody",{},[550,563,564,574],{},[565,566,567],"td",{},[530,568,570],{"href":569},"#post-apiwork-itemsidgatesgateapprove",[571,572,573],"code",{},"POST \u002Fapi\u002Fwork-items\u002F{id}\u002Fgates\u002F{gate}\u002Fapprove",[565,575,576],{},"Approves the pending gate and starts the chain again.",[550,578,579,587],{},[565,580,581],{},[530,582,584],{"href":583},"#post-apiwork-itemsidgatesgatereject",[571,585,586],{},"POST \u002Fapi\u002Fwork-items\u002F{id}\u002Fgates\u002F{gate}\u002Freject",[565,588,589],{},"Rejects the pending gate and sends the chain back to work.",[550,591,592,600],{},[565,593,594],{},[530,595,597],{"href":596},"#post-apiwork-itemsidpause",[571,598,599],{},"POST \u002Fapi\u002Fwork-items\u002F{id}\u002Fpause",[565,601,602],{},"Stops a running item and ends its sessions.",[550,604,605,613],{},[565,606,607],{},[530,608,610],{"href":609},"#post-apiwork-itemsidunblock",[571,611,612],{},"POST \u002Fapi\u002Fwork-items\u002F{id}\u002Funblock",[565,614,615],{},"Drops what a blocked or paused item still comes after.",[550,617,618,626],{},[565,619,620],{},[530,621,623],{"href":622},"#post-apiwork-itemsidsteer",[571,624,625],{},"POST \u002Fapi\u002Fwork-items\u002F{id}\u002Fsteer",[565,627,628],{},"Stores a note for the next agent launch of a paused item.",[550,630,631,639],{},[565,632,633],{},[530,634,636],{"href":635},"#post-apiwork-itemsidresume",[571,637,638],{},"POST \u002Fapi\u002Fwork-items\u002F{id}\u002Fresume",[565,640,641],{},"Starts a paused item, with a note if you give one.",[550,643,644,652],{},[565,645,646],{},[530,647,649],{"href":648},"#post-apiwork-itemsidskip",[571,650,651],{},"POST \u002Fapi\u002Fwork-items\u002F{id}\u002Fskip",[565,653,654],{},"Advances past the current node or gate without running it.",[550,656,657,665],{},[565,658,659],{},[530,660,662],{"href":661},"#post-apiwork-itemsidescalate",[571,663,664],{},"POST \u002Fapi\u002Fwork-items\u002F{id}\u002Fescalate",[565,666,667],{},"Sends a message to an agent that helps with a stopped item.",[550,669,670,678],{},[565,671,672],{},[530,673,675],{"href":674},"#post-apiwork-itemsidescalatestop",[571,676,677],{},"POST \u002Fapi\u002Fwork-items\u002F{id}\u002Fescalate\u002Fstop",[565,679,680],{},"Ends the running escalation turn.",[550,682,683,691],{},[565,684,685],{},[530,686,688],{"href":687},"#get-apiwork-itemsidcancel-preview",[571,689,690],{},"GET \u002Fapi\u002Fwork-items\u002F{id}\u002Fcancel-preview",[565,692,693],{},"Shows what a cancel would do, without doing it.",[550,695,696,704],{},[565,697,698],{},[530,699,701],{"href":700},"#post-apiwork-itemsidcancel",[571,702,703],{},"POST \u002Fapi\u002Fwork-items\u002F{id}\u002Fcancel",[565,705,706],{},"Ends an item and keeps its worktree and branch.",[550,708,709,717],{},[565,710,711],{},[530,712,714],{"href":713},"#post-apiwork-itemsidcomplete",[571,715,716],{},"POST \u002Fapi\u002Fwork-items\u002F{id}\u002Fcomplete",[565,718,719],{},"Ends an item as completed, by hand.",[550,721,722,730],{},[565,723,724],{},[530,725,727],{"href":726},"#post-apiwork-itemsidarchive",[571,728,729],{},"POST \u002Fapi\u002Fwork-items\u002F{id}\u002Farchive",[565,731,732],{},"Archives a completed or cancelled item and reclaims its worktree.",[550,734,735,743],{},[565,736,737],{},[530,738,740],{"href":739},"#post-apiwork-itemsidrestore",[571,741,742],{},"POST \u002Fapi\u002Fwork-items\u002F{id}\u002Frestore",[565,744,745],{},"Puts an archived item back under Done.",[550,747,748,756],{},[565,749,750],{},[530,751,753],{"href":752},"#post-apiwork-itemsidabandon",[571,754,755],{},"POST \u002Fapi\u002Fwork-items\u002F{id}\u002Fabandon",[565,757,758],{},"Ends an item and deletes its worktree and branch.",[550,760,761,769],{},[565,762,763],{},[530,764,766],{"href":765},"#post-apiwork-itemsidretry",[571,767,768],{},"POST \u002Fapi\u002Fwork-items\u002F{id}\u002Fretry",[565,770,771],{},"Reruns the node an item stopped on.",[550,773,774,782],{},[565,775,776],{},[530,777,779],{"href":778},"#post-apiwork-itemsidreopen-mr",[571,780,781],{},"POST \u002Fapi\u002Fwork-items\u002F{id}\u002Freopen-mr",[565,783,784],{},"Reopens a merge request closed on the forge, then retries.",[550,786,787,795],{},[565,788,789],{},[530,790,792],{"href":791},"#post-apiwork-itemsidprogress",[571,793,794],{},"POST \u002Fapi\u002Fwork-items\u002F{id}\u002Fprogress",[565,796,797],{},"Records that a worker started a plan task.",[550,799,800,808],{},[565,801,802],{},[530,803,805],{"href":804},"#post-apiwork-itemsidmr-labels",[571,806,807],{},"POST \u002Fapi\u002Fwork-items\u002F{id}\u002Fmr-labels",[565,809,810],{},"Labels the item's merge request.",[812,813,815],"h2",{"id":814},"deciding-a-gate","Deciding a gate",[817,818,820],"h3",{"id":819},"post-apiwork-itemsidgatesgateapprove",[571,821,573],{},[526,823,824,825,828,829,832,833,835,836,839],{},"Approves the pending gate ",[571,826,827],{},"{gate}"," and starts the chain again at the node after it. ",[571,830,831],{},"kraft item approve"," calls it. ",[571,834,827],{}," is the id of a gate node of the item's chain. A review agent still running on the gate is stopped first: a person's decision outranks it. The decision is recorded with who made it: see ",[530,837,482],{"href":838},"\u002Freference\u002Fevents#gates-and-review",".",[526,841,842],{},"The body is optional.",[544,844,845,861],{},[547,846,847],{},[550,848,849,852,855,858],{},[553,850,851],{},"Field",[553,853,854],{},"Type",[553,856,857],{},"Default",[553,859,860],{},"Meaning",[560,862,863],{},[550,864,865,870,873,878],{},[565,866,867],{},[571,868,869],{},"digest",[565,871,872],{},"string",[565,874,875],{},[571,876,877],{},"null",[565,879,880,881,884,885,889],{},"The digest of the chain revision you read, as ",[571,882,883],{},"kraft view artifact"," printed it. Only a gate that approves a ",[530,886,888],{"href":887},"\u002Fconcepts\u002Fvocabulary#chain-revision","chain revision"," takes one, and needs it when the revision changes the chain.",[526,891,892,893,895,896,899,900,903],{},"The answer is ",[530,894,541],{"href":540},": the item's columns as saved, without ",[571,897,898],{},"display_status",", ",[571,901,902],{},"stop"," or the other fields the detail adds.",[544,905,906,916],{},[547,907,908],{},[550,909,910,913],{},[553,911,912],{},"Status",[553,914,915],{},"When",[560,917,918,937,950,960,971,980,989,998],{},[550,919,920,925],{},[565,921,922],{},[571,923,924],{},"403",[565,926,927,928,931,932,936],{},"The request carries the ",[571,929,930],{},"X-Kraft-Session-Id"," of a worker session of this item, or of its ",[530,933,935],{"href":934},"\u002Fconcepts\u002Fvocabulary#escalation-turn","escalation turn",". A gate is a person's call.",[550,938,939,944],{},[565,940,941],{},[571,942,943],{},"404",[565,945,946,947,949],{},"There is no such item, or ",[571,948,827],{}," is no gate of its chain.",[550,951,952,957],{},[565,953,954],{},[571,955,956],{},"409",[565,958,959],{},"The item has ended.",[550,961,962,966],{},[565,963,964],{},[571,965,956],{},[565,967,968,970],{},[571,969,827],{}," is not the gate the item is waiting at.",[550,972,973,977],{},[565,974,975],{},[571,976,956],{},[565,978,979],{},"The item has review threads labeled must-fix that are not resolved. The answer lists their ids.",[550,981,982,986],{},[565,983,984],{},[571,985,956],{},[565,987,988],{},"A chain revision gate was approved without the revision's digest, or the revision changed since you read it. Read it again.",[550,990,991,995],{},[565,992,993],{},[571,994,956],{},[565,996,997],{},"A walk is already running for the item, as when two approvals arrive together. One wins.",[550,999,1000,1005],{},[565,1001,1002],{},[571,1003,1004],{},"422",[565,1006,1007,1008,1011,1012,1015],{},"The gate's required document is missing, or a chain revision cannot be applied. The ",[571,1009,1010],{},"detail"," says why, and the item stops as ",[571,1013,1014],{},"config",": retry the node that owes the document.",[526,1017,1018,1019,1022,1023,1025,1026,839],{},"The final review gate always needs its document, and any other gate does when it sets ",[571,1020,1021],{},"artifact_required: true",". The ",[571,1024,924],{}," check reads the header, so a caller that leaves it off passes: see ",[530,1027,1029],{"href":1028},"\u002Fproject\u002Fsecurity#agents-and-gates","Agents and gates",[817,1031,1033],{"id":1032},"post-apiwork-itemsidgatesgatereject",[571,1034,586],{},[526,1036,1037,1038,1040,1041,1044,1045,1048],{},"Rejects the pending gate ",[571,1039,827],{}," and sends the chain back to work, with your note as the steer. ",[571,1042,1043],{},"kraft item reject"," calls it. A review agent still running on the gate is stopped first. Each rejection counts against the gate's reject loop. Once that cap is spent, the item stays at the gate, stopped as ",[571,1046,1047],{},"cap",", and nothing reruns: a person decides.",[544,1050,1051,1063],{},[547,1052,1053],{},[550,1054,1055,1057,1059,1061],{},[553,1056,851],{},[553,1058,854],{},[553,1060,857],{},[553,1062,860],{},[560,1064,1065,1080],{},[550,1066,1067,1072,1074,1077],{},[565,1068,1069],{},[571,1070,1071],{},"note",[565,1073,872],{},[565,1075,1076],{},"required",[565,1078,1079],{},"Why. It is recorded with the rejection and carried into the rerun.",[550,1081,1082,1087,1089,1093],{},[565,1083,1084],{},[571,1085,1086],{},"node",[565,1088,872],{},[565,1090,1091],{},[571,1092,877],{},[565,1094,1095,1096,1099],{},"The node the chain re-enters at. Left out: the gate's ",[571,1097,1098],{},"reject_to",", else the execution node before the gate, else the gate itself. It must be a node of the chain before the gate.",[526,1101,892,1102,839],{},[530,1103,541],{"href":540},[544,1105,1106,1114],{},[547,1107,1108],{},[550,1109,1110,1112],{},[553,1111,912],{},[553,1113,915],{},[560,1115,1116,1128,1140,1150,1162,1173],{},[550,1117,1118,1123],{},[565,1119,1120],{},[571,1121,1122],{},"400",[565,1124,1125,1127],{},[571,1126,1086],{}," is not a node of the chain before the gate. Nothing changes.",[550,1129,1130,1134],{},[565,1131,1132],{},[571,1133,924],{},[565,1135,927,1136,931,1138,936],{},[571,1137,930],{},[530,1139,935],{"href":934},[550,1141,1142,1146],{},[565,1143,1144],{},[571,1145,943],{},[565,1147,946,1148,949],{},[571,1149,827],{},[550,1151,1152,1156],{},[565,1153,1154],{},[571,1155,956],{},[565,1157,1158,1159,1161],{},"The item has ended, or ",[571,1160,827],{}," is not the gate the item is waiting at, or a walk is already running for it.",[550,1163,1164,1168],{},[565,1165,1166],{},[571,1167,1004],{},[565,1169,1170,1171,839],{},"The body has no ",[571,1172,1071],{},[550,1174,1175,1180],{},[565,1176,1177],{},[571,1178,1179],{},"503",[565,1181,1182,1184],{},[571,1183,318],{}," does not load. Nothing changes: a rerun Kraft cannot bound is not started.",[812,1186,1188],{"id":1187},"pausing-and-resuming","Pausing and resuming",[817,1190,1192],{"id":1191},"post-apiwork-itemsidpause",[571,1193,599],{},[526,1195,1196,1197,1200,1201,1204,1205,899,1208,1211,1212,1215,1216,1219,1220,1223,1224,1227],{},"Stops a running item: its running sessions are ended and the item becomes ",[571,1198,1199],{},"paused",". ",[571,1202,1203],{},"kraft item pause"," calls it. It takes an item that is ",[571,1206,1207],{},"active",[571,1209,1210],{},"waiting"," on CI or a review, or ",[571,1213,1214],{},"rate_limited",", and clears the timer that would wake a waiting or rate-limited item. It also takes a ",[571,1217,1218],{},"queued"," or ",[571,1221,1222],{},"blocked"," item out of the hold, back to the status it came from, with ",[571,1225,1226],{},"paused_sessions"," empty. A blocked item keeps its dependencies. The body is empty.",[1229,1230,1235],"pre",{"className":1231,"code":1232,"language":1233,"meta":1234,"style":1234},"language-json shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","{\"id\": \"...\", \"paused_sessions\": [\"...\"]}\n","json","",[571,1236,1237],{"__ignoreMap":1234},[1238,1239,1242,1246,1250,1253,1257,1259,1262,1265,1267],"span",{"class":1240,"line":1241},"line",1,[1238,1243,1245],{"class":1244},"s7iLA","{",[1238,1247,1249],{"class":1248},"sb7M8","\"id\"",[1238,1251,1252],{"class":1244},": ",[1238,1254,1256],{"class":1255},"semJd","\"...\"",[1238,1258,899],{"class":1244},[1238,1260,1261],{"class":1248},"\"paused_sessions\"",[1238,1263,1264],{"class":1244},": [",[1238,1266,1256],{"class":1255},[1238,1268,1269],{"class":1244},"]}\n",[526,1271,1272,1274],{},[571,1273,1226],{}," holds the ids of the sessions it ended, and is empty for an item with none running.",[544,1276,1277,1285],{},[547,1278,1279],{},[550,1280,1281,1283],{},[553,1282,912],{},[553,1284,915],{},[560,1286,1287,1296,1305],{},[550,1288,1289,1293],{},[565,1290,1291],{},[571,1292,924],{},[565,1294,1295],{},"A worker session pauses its own item. This check does not refuse an escalation turn.",[550,1297,1298,1302],{},[565,1299,1300],{},[571,1301,943],{},[565,1303,1304],{},"There is no such item.",[550,1306,1307,1311],{},[565,1308,1309],{},[571,1310,956],{},[565,1312,1313,1314,1219,1317,1319],{},"The item is in any other status, an ended one included. An escalation turn gets this too: it runs only on an item that is ",[571,1315,1316],{},"needs_human",[571,1318,1199],{},", which pause does not take.",[526,1321,1322,1323,1325,1326,1329,1330,1332,1333,839],{},"An item the queue is starting answers ",[571,1324,956],{},", with ",[571,1327,1328],{},"work item is being started from the queue: pause it again in a moment",". A second pause stops it once it runs. A held item that something else took out in that instant answers ",[571,1331,956],{}," with ",[571,1334,1335],{},"work item status changed; try again",[817,1337,1339],{"id":1338},"post-apiwork-itemsidunblock",[571,1340,612],{},[526,1342,1343,1344,1347,1348,1350,1351,1353],{},"Stops an item coming after what it still waits on. ",[571,1345,1346],{},"kraft item unblock"," calls it. It takes a ",[571,1349,1222],{}," item and a ",[571,1352,1199],{}," one, so an item can be freed before it is started. It starts nothing: a blocked item with nothing left to wait for is released to the queue by the scheduler's next pass.",[544,1355,1356,1368],{},[547,1357,1358],{},[550,1359,1360,1362,1364,1366],{},[553,1361,851],{},[553,1363,854],{},[553,1365,857],{},[553,1367,860],{},[560,1369,1370],{},[550,1371,1372,1377,1379,1383],{},[565,1373,1374],{},[571,1375,1376],{},"dependency",[565,1378,872],{},[565,1380,1381],{},[571,1382,877],{},[565,1384,1385],{},"Drop only this dependency. Absent, every one the item still waits on; a met one stays on the record.",[1229,1387,1389],{"className":1231,"code":1388,"language":1233,"meta":1234,"style":1234},"{\"id\": \"...\", \"dropped\": [\"...\"], \"waiting_on\": [{\"id\": \"...\", \"title\": \"...\", \"status\": \"active\"}]}\n",[571,1390,1391],{"__ignoreMap":1234},[1238,1392,1393,1395,1397,1399,1401,1403,1406,1408,1410,1413,1416,1419,1421,1423,1425,1427,1430,1432,1434,1436,1439,1441,1444],{"class":1240,"line":1241},[1238,1394,1245],{"class":1244},[1238,1396,1249],{"class":1248},[1238,1398,1252],{"class":1244},[1238,1400,1256],{"class":1255},[1238,1402,899],{"class":1244},[1238,1404,1405],{"class":1248},"\"dropped\"",[1238,1407,1264],{"class":1244},[1238,1409,1256],{"class":1255},[1238,1411,1412],{"class":1244},"], ",[1238,1414,1415],{"class":1248},"\"waiting_on\"",[1238,1417,1418],{"class":1244},": [{",[1238,1420,1249],{"class":1248},[1238,1422,1252],{"class":1244},[1238,1424,1256],{"class":1255},[1238,1426,899],{"class":1244},[1238,1428,1429],{"class":1248},"\"title\"",[1238,1431,1252],{"class":1244},[1238,1433,1256],{"class":1255},[1238,1435,899],{"class":1244},[1238,1437,1438],{"class":1248},"\"status\"",[1238,1440,1252],{"class":1244},[1238,1442,1443],{"class":1255},"\"active\"",[1238,1445,1446],{"class":1244},"}]}\n",[526,1448,1449,1450,839],{},"The event is ",[571,1451,1452],{},"work_item_dependencies_dropped",[544,1454,1455,1463],{},[547,1456,1457],{},[550,1458,1459,1461],{},[553,1460,912],{},[553,1462,915],{},[560,1464,1465,1474,1482],{},[550,1466,1467,1471],{},[565,1468,1469],{},[571,1470,924],{},[565,1472,1473],{},"A worker session unblocks its own item.",[550,1475,1476,1480],{},[565,1477,1478],{},[571,1479,943],{},[565,1481,1304],{},[550,1483,1484,1488],{},[565,1485,1486],{},[571,1487,956],{},[565,1489,1490,1491,1219,1493,1495,1496,1498],{},"The item is in any status but ",[571,1492,1222],{},[571,1494,1199],{},", or ",[571,1497,1376],{}," is not one of its dependencies. Nothing is dropped.",[817,1500,1502],{"id":1501},"post-apiwork-itemsidsteer",[571,1503,625],{},[526,1505,1506,1507,1509,1510,1513],{},"Stores a note for the next agent launch of a paused item. A ",[571,1508,638],{}," that carries ",[571,1511,1512],{},"steer"," stores it and resumes in one call. The note is stored once and leads the prompt of the launch that takes it.",[544,1515,1516,1526],{},[547,1517,1518],{},[550,1519,1520,1522,1524],{},[553,1521,851],{},[553,1523,854],{},[553,1525,860],{},[560,1527,1528],{},[550,1529,1530,1535,1537],{},[565,1531,1532],{},[571,1533,1534],{},"text",[565,1536,872],{},[565,1538,1539],{},"The note. Surrounding whitespace is dropped.",[526,1541,892,1542,1545,1546,1548,1549,1551,1552,1555,1556,1559],{},[571,1543,1544],{},"{\"id\": \"...\", \"steer\": \"...\"}",". It takes a ",[571,1547,1199],{}," item, and a ",[571,1550,1316],{}," item stopped on a worker's question (",[571,1553,1554],{},"stop.kind"," ",[571,1557,1558],{},"question",").",[544,1561,1562,1570],{},[547,1563,1564],{},[550,1565,1566,1568],{},[553,1567,912],{},[553,1569,915],{},[560,1571,1572,1583,1591,1600],{},[550,1573,1574,1578],{},[565,1575,1576],{},[571,1577,1122],{},[565,1579,1580,1582],{},[571,1581,1534],{}," is blank.",[550,1584,1585,1589],{},[565,1586,1587],{},[571,1588,943],{},[565,1590,1304],{},[550,1592,1593,1597],{},[565,1594,1595],{},[571,1596,956],{},[565,1598,1599],{},"The item has ended, or is in any other status. The answer names the way on: pause a running item first, approve or reject at a gate, retry an item that stopped.",[550,1601,1602,1606],{},[565,1603,1604],{},[571,1605,956],{},[565,1607,1608],{},"The pause stopped no agent task, such as a test run or a CI wait, so no agent would read the note.",[817,1610,1612],{"id":1611},"post-apiwork-itemsidresume",[571,1613,638],{},[526,1615,1616,1617,1620,1621,1624,1625,1628,1629,1632,1633,839],{},"Starts a paused item, including one just filed, at the node it stood on. ",[571,1618,1619],{},"kraft item resume"," calls it. The worktree is first brought up to date with its base branch. A conflict goes to the node's ",[571,1622,1623],{},"on_conflict"," handler or stops the item as ",[571,1626,1627],{},"conflict",". Another git failure stops it as ",[571,1630,1631],{},"infra",", and the answer is then ",[530,1634,541],{"href":540},[526,1636,1637,1638,1641,1642,1332,1645,1648,1649,1651],{},"With every slot (",[571,1639,1640],{},"max_concurrent",") busy it answers ",[571,1643,1644],{},"200",[571,1646,1647],{},"{\"id\": \"...\", \"status\": \"queued\", \"slots\": {\"busy\": 3, \"limit\": 3}}",". The item waits as ",[571,1650,1218],{},", and Kraft makes the same request when a slot frees.",[526,1653,1654,1655,1332,1657,1660,1661,1663],{},"An item that comes after an unfinished item answers ",[571,1656,1644],{},[571,1658,1659],{},"{\"id\": \"...\", \"status\": \"blocked\", \"waiting_on\": [{\"id\", \"title\", \"status\"}]}"," instead, ahead of the slot check. One that comes after an abandoned item is refused with ",[571,1662,956],{},", naming it and the two ways on: unblock the item or abandon it.",[544,1665,1666,1678],{},[547,1667,1668],{},[550,1669,1670,1672,1674,1676],{},[553,1671,851],{},[553,1673,854],{},[553,1675,857],{},[553,1677,860],{},[560,1679,1680,1695],{},[550,1681,1682,1686,1688,1692],{},[565,1683,1684],{},[571,1685,1512],{},[565,1687,872],{},[565,1689,1690],{},[571,1691,877],{},[565,1693,1694],{},"A note that reaches every paused agent task.",[550,1696,1697,1702,1705,1710],{},[565,1698,1699],{},[571,1700,1701],{},"steers",[565,1703,1704],{},"object",[565,1706,1707],{},[571,1708,1709],{},"{}",[565,1711,1712,1715,1716,1718],{},[571,1713,1714],{},"{task path: note}",": a note for one paused agent task, which wins over ",[571,1717,1512],{}," for that task.",[1229,1720,1722],{"className":1231,"code":1721,"language":1233,"meta":1234,"style":1234},"{\"id\": \"...\", \"node_id\": \"implementation\", \"steer\": \"...\", \"steered\": [\"implementation.main.implement\"]}\n",[571,1723,1724],{"__ignoreMap":1234},[1238,1725,1726,1728,1730,1732,1734,1736,1739,1741,1744,1746,1749,1751,1753,1755,1758,1760,1763],{"class":1240,"line":1241},[1238,1727,1245],{"class":1244},[1238,1729,1249],{"class":1248},[1238,1731,1252],{"class":1244},[1238,1733,1256],{"class":1255},[1238,1735,899],{"class":1244},[1238,1737,1738],{"class":1248},"\"node_id\"",[1238,1740,1252],{"class":1244},[1238,1742,1743],{"class":1255},"\"implementation\"",[1238,1745,899],{"class":1244},[1238,1747,1748],{"class":1248},"\"steer\"",[1238,1750,1252],{"class":1244},[1238,1752,1256],{"class":1255},[1238,1754,899],{"class":1244},[1238,1756,1757],{"class":1248},"\"steered\"",[1238,1759,1264],{"class":1244},[1238,1761,1762],{"class":1255},"\"implementation.main.implement\"",[1238,1764,1269],{"class":1244},[544,1766,1767,1775],{},[547,1768,1769],{},[550,1770,1771,1773],{},[553,1772,851],{},[553,1774,860],{},[560,1776,1777,1790,1802],{},[550,1778,1779,1784],{},[565,1780,1781],{},[571,1782,1783],{},"node_id",[565,1785,1786,1787,1789],{},"The item's current node, even when a pending rewind starts the walk elsewhere, or ",[571,1788,877],{}," for an item that never started.",[550,1791,1792,1796],{},[565,1793,1794],{},[571,1795,1512],{},[565,1797,1798,1799,1801],{},"The note the relaunch carries, or ",[571,1800,877],{},". A pending rewind's note goes before yours.",[550,1803,1804,1809],{},[565,1805,1806],{},[571,1807,1808],{},"steered",[565,1810,1811],{},"The canonical paths of the paused agent tasks that were given a note.",[544,1813,1814,1822],{},[547,1815,1816],{},[550,1817,1818,1820],{},[553,1819,912],{},[553,1821,915],{},[560,1823,1824,1833,1841,1856,1865,1874],{},[550,1825,1826,1830],{},[565,1827,1828],{},[571,1829,924],{},[565,1831,1832],{},"A worker session resumes its own item. This check does not refuse an escalation turn.",[550,1834,1835,1839],{},[565,1836,1837],{},[571,1838,943],{},[565,1840,1304],{},[550,1842,1843,1847],{},[565,1844,1845],{},[571,1846,956],{},[565,1848,1849,1850,1852,1853,1855],{},"The item has ended, or is not ",[571,1851,1199],{}," (or ",[571,1854,1316],{}," on a worker's question). The answer names the way on.",[550,1857,1858,1862],{},[565,1859,1860],{},[571,1861,956],{},[565,1863,1864],{},"An escalation turn is running on it, even when the turn is the caller, or a walk is already running.",[550,1866,1867,1871],{},[565,1868,1869],{},[571,1870,956],{},[565,1872,1873],{},"A note was sent and no agent task is paused to read it, or none lies ahead.",[550,1875,1876,1880],{},[565,1877,1878],{},[571,1879,1004],{},[565,1881,1882,1884],{},[571,1883,1701],{}," names a path that is not a paused agent task.",[812,1886,1888],{"id":1887},"skipping-and-escalating","Skipping and escalating",[817,1890,1892],{"id":1891},"post-apiwork-itemsidskip",[571,1893,651],{},[526,1895,1896,1897,1900],{},"Advances past the current node, or the gate the item waits at, without running or approving it, and starts the chain at the next node. ",[571,1898,1899],{},"kraft item skip"," calls it.",[526,1902,1903,1904,1907,1908,1911,1912,839],{},"With a ",[571,1905,1906],{},"path"," that names a step or a task, only that scope is skipped: an active item keeps its walk, which counts the scope as done, and any other item resumes from where it stood. Skipping a gate does not approve it: the event is ",[571,1909,1910],{},"node_skipped",", with the gate's id, and no ",[571,1913,1914],{},"gate_approved",[526,1916,1917,1918,899,1920,899,1922,1219,1924,839],{},"A running node's sessions are ended first. It takes an item that is ",[571,1919,1207],{},[571,1921,1210],{},[571,1923,1199],{},[571,1925,1316],{},[544,1927,1928,1940],{},[547,1929,1930],{},[550,1931,1932,1934,1936,1938],{},[553,1933,851],{},[553,1935,854],{},[553,1937,857],{},[553,1939,860],{},[560,1941,1942,1960],{},[550,1943,1944,1948,1950,1954],{},[565,1945,1946],{},[571,1947,1071],{},[565,1949,872],{},[565,1951,1952],{},[571,1953,877],{},[565,1955,1956,1957,1959],{},"Why. It is recorded on the ",[571,1958,1910],{}," event.",[550,1961,1962,1966,1968,1972],{},[565,1963,1964],{},[571,1965,1906],{},[565,1967,872],{},[565,1969,1970],{},[571,1971,877],{},[565,1973,1974],{},"One node, step or task of the node the item stands on, by canonical path. Only the sessions inside it stop. Left out: the current node or pending gate.",[526,1976,892,1977,839],{},[530,1978,541],{"href":540},[544,1980,1981,1989],{},[547,1982,1983],{},[550,1984,1985,1987],{},[553,1986,912],{},[553,1988,915],{},[560,1990,1991,2000,2008,2017,2026,2035,2044,2059],{},[550,1992,1993,1997],{},[565,1994,1995],{},[571,1996,924],{},[565,1998,1999],{},"A worker session skips its own item.",[550,2001,2002,2006],{},[565,2003,2004],{},[571,2005,943],{},[565,2007,1304],{},[550,2009,2010,2014],{},[565,2011,2012],{},[571,2013,956],{},[565,2015,2016],{},"The item is in any other status, or has not started and has no current node.",[550,2018,2019,2023],{},[565,2020,2021],{},[571,2022,956],{},[565,2024,2025],{},"An escalation turn is running on it, even when the turn is the caller.",[550,2027,2028,2032],{},[565,2029,2030],{},[571,2031,956],{},[565,2033,2034],{},"A walk is already running, as when two skips arrive together. One wins.",[550,2036,2037,2041],{},[565,2038,2039],{},[571,2040,956],{},[565,2042,2043],{},"The item's status changed while the skip ran. Try again.",[550,2045,2046,2050],{},[565,2047,2048],{},[571,2049,956],{},[565,2051,2052,2053,1495,2056,2058],{},"The node, step, task or gate sets ",[571,2054,2055],{},"skippable: false",[571,2057,1906],{}," is not the node the item stands on or inside it.",[550,2060,2061,2065],{},[565,2062,2063],{},[571,2064,1004],{},[565,2066,2067,2069],{},[571,2068,1906],{}," names nothing in the item's chain.",[817,2071,2073],{"id":2072},"post-apiwork-itemsidescalate",[571,2074,664],{},[526,2076,2077,2078,2081],{},"Sends a message to an agent that helps with a stopped item: it starts an escalation turn, or continues the item's thread. ",[571,2079,2080],{},"kraft item escalate"," calls it. The turn runs after the answer. When the turn asks to retry its own item, Kraft performs that once the turn ends.",[544,2083,2084,2096],{},[547,2085,2086],{},[550,2087,2088,2090,2092,2094],{},[553,2089,851],{},[553,2091,854],{},[553,2093,857],{},[553,2095,860],{},[560,2097,2098,2112],{},[550,2099,2100,2105,2107,2109],{},[565,2101,2102],{},[571,2103,2104],{},"message",[565,2106,872],{},[565,2108,1076],{},[565,2110,2111],{},"What to tell the agent.",[550,2113,2114,2119,2122,2127],{},[565,2115,2116],{},[571,2117,2118],{},"new_thread",[565,2120,2121],{},"boolean",[565,2123,2124],{},[571,2125,2126],{},"false",[565,2128,2129],{},"Start a fresh agent session instead of continuing the latest thread.",[526,2131,892,2132,839],{},[571,2133,2134],{},"{\"id\": \"...\", \"status\": \"escalating\"}",[544,2136,2137,2145],{},[547,2138,2139],{},[550,2140,2141,2143],{},[553,2142,912],{},[553,2144,915],{},[560,2146,2147,2157,2166,2174,2189,2198],{},[550,2148,2149,2153],{},[565,2150,2151],{},[571,2152,1122],{},[565,2154,2155,1582],{},[571,2156,2104],{},[550,2158,2159,2163],{},[565,2160,2161],{},[571,2162,924],{},[565,2164,2165],{},"A worker session escalates its own item.",[550,2167,2168,2172],{},[565,2169,2170],{},[571,2171,943],{},[565,2173,1304],{},[550,2175,2176,2180],{},[565,2177,2178],{},[571,2179,956],{},[565,2181,2182,2183,2185,2186,2188],{},"The item has ended, is neither ",[571,2184,1316],{}," nor ",[571,2187,1199],{},", or has not started.",[550,2190,2191,2195],{},[565,2192,2193],{},[571,2194,956],{},[565,2196,2197],{},"A spend cap stopped it, the daily cap included: the agent would hit the same cap. The answer says how to raise it.",[550,2199,2200,2204],{},[565,2201,2202],{},[571,2203,956],{},[565,2205,2206],{},"An escalation turn is already running, even when the turn is the caller, or a walk is, such as a gate's review agent.",[817,2208,2210],{"id":2209},"post-apiwork-itemsidescalatestop",[571,2211,677],{},[526,2213,2214],{},"Ends the running escalation turn. The item keeps the status and stop it had: only the turn ends. The body is empty.",[1229,2216,2218],{"className":1231,"code":2217,"language":1233,"meta":1234,"style":1234},"{\"id\": \"...\", \"session_id\": \"...\", \"status\": \"paused\"}\n",[571,2219,2220],{"__ignoreMap":1234},[1238,2221,2222,2224,2226,2228,2230,2232,2235,2237,2239,2241,2243,2245,2248],{"class":1240,"line":1241},[1238,2223,1245],{"class":1244},[1238,2225,1249],{"class":1248},[1238,2227,1252],{"class":1244},[1238,2229,1256],{"class":1255},[1238,2231,899],{"class":1244},[1238,2233,2234],{"class":1248},"\"session_id\"",[1238,2236,1252],{"class":1244},[1238,2238,1256],{"class":1255},[1238,2240,899],{"class":1244},[1238,2242,1438],{"class":1248},[1238,2244,1252],{"class":1244},[1238,2246,2247],{"class":1255},"\"paused\"",[1238,2249,2250],{"class":1244},"}\n",[526,2252,2253,2256,2257,2260,2261,839],{},[571,2254,2255],{},"session_id"," is the turn's session, and ",[571,2258,2259],{},"status"," is always ",[571,2262,1199],{},[544,2264,2265,2273],{},[547,2266,2267],{},[550,2268,2269,2271],{},[553,2270,912],{},[553,2272,915],{},[560,2274,2275,2283],{},[550,2276,2277,2281],{},[565,2278,2279],{},[571,2280,943],{},[565,2282,1304],{},[550,2284,2285,2289],{},[565,2286,2287],{},[571,2288,956],{},[565,2290,2291],{},"No escalation turn is running.",[812,2293,2295],{"id":2294},"ending-a-work-item","Ending a work item",[817,2297,2299],{"id":2298},"get-apiwork-itemsidcancel-preview",[571,2300,690],{},[526,2302,2303,2304,2306],{},"Shows what ",[571,2305,703],{}," would do, without doing it.",[1229,2308,2310],{"className":1231,"code":2309,"language":1233,"meta":1234,"style":1234},"{\n  \"running\": {\"node\": \"mr_checks\", \"task\": \"mr_checks\", \"attempt\": 1, \"started_at\": \"2026-10-03T10:00:00+00:00\"} | null,\n  \"kept\": {\"branch\": \"kraft\u002F...\", \"worktree\": \"\u002Fpath\", \"findings\": 0, \"threads\": 1},\n  \"mr\": {\"ref\": 54, \"url\": \"https:\u002F\u002F...\", \"state\": \"open\"} | null,\n  \"spend\": {\"spent_usd\": 1.2, \"cap_usd\": 5.0},\n  \"beads\": [\"kraft-ab1\"]\n}\n",[571,2311,2312,2317,2377,2425,2469,2497,2511],{"__ignoreMap":1234},[1238,2313,2314],{"class":1240,"line":1241},[1238,2315,2316],{"class":1244},"{\n",[1238,2318,2320,2323,2326,2329,2331,2334,2336,2339,2341,2343,2345,2348,2350,2354,2356,2359,2361,2364,2367,2371,2374],{"class":1240,"line":2319},2,[1238,2321,2322],{"class":1248},"  \"running\"",[1238,2324,2325],{"class":1244},": {",[1238,2327,2328],{"class":1248},"\"node\"",[1238,2330,1252],{"class":1244},[1238,2332,2333],{"class":1255},"\"mr_checks\"",[1238,2335,899],{"class":1244},[1238,2337,2338],{"class":1248},"\"task\"",[1238,2340,1252],{"class":1244},[1238,2342,2333],{"class":1255},[1238,2344,899],{"class":1244},[1238,2346,2347],{"class":1248},"\"attempt\"",[1238,2349,1252],{"class":1244},[1238,2351,2353],{"class":2352},"ssYy9","1",[1238,2355,899],{"class":1244},[1238,2357,2358],{"class":1248},"\"started_at\"",[1238,2360,1252],{"class":1244},[1238,2362,2363],{"class":1255},"\"2026-10-03T10:00:00+00:00\"",[1238,2365,2366],{"class":1244},"} ",[1238,2368,2370],{"class":2369},"sLsVW","|",[1238,2372,2373],{"class":2352}," null",[1238,2375,2376],{"class":1244},",\n",[1238,2378,2380,2383,2385,2388,2390,2393,2395,2398,2400,2403,2405,2408,2410,2413,2415,2418,2420,2422],{"class":1240,"line":2379},3,[1238,2381,2382],{"class":1248},"  \"kept\"",[1238,2384,2325],{"class":1244},[1238,2386,2387],{"class":1248},"\"branch\"",[1238,2389,1252],{"class":1244},[1238,2391,2392],{"class":1255},"\"kraft\u002F...\"",[1238,2394,899],{"class":1244},[1238,2396,2397],{"class":1248},"\"worktree\"",[1238,2399,1252],{"class":1244},[1238,2401,2402],{"class":1255},"\"\u002Fpath\"",[1238,2404,899],{"class":1244},[1238,2406,2407],{"class":1248},"\"findings\"",[1238,2409,1252],{"class":1244},[1238,2411,2412],{"class":2352},"0",[1238,2414,899],{"class":1244},[1238,2416,2417],{"class":1248},"\"threads\"",[1238,2419,1252],{"class":1244},[1238,2421,2353],{"class":2352},[1238,2423,2424],{"class":1244},"},\n",[1238,2426,2428,2431,2433,2436,2438,2441,2443,2446,2448,2451,2453,2456,2458,2461,2463,2465,2467],{"class":1240,"line":2427},4,[1238,2429,2430],{"class":1248},"  \"mr\"",[1238,2432,2325],{"class":1244},[1238,2434,2435],{"class":1248},"\"ref\"",[1238,2437,1252],{"class":1244},[1238,2439,2440],{"class":2352},"54",[1238,2442,899],{"class":1244},[1238,2444,2445],{"class":1248},"\"url\"",[1238,2447,1252],{"class":1244},[1238,2449,2450],{"class":1255},"\"https:\u002F\u002F...\"",[1238,2452,899],{"class":1244},[1238,2454,2455],{"class":1248},"\"state\"",[1238,2457,1252],{"class":1244},[1238,2459,2460],{"class":1255},"\"open\"",[1238,2462,2366],{"class":1244},[1238,2464,2370],{"class":2369},[1238,2466,2373],{"class":2352},[1238,2468,2376],{"class":1244},[1238,2470,2472,2475,2477,2480,2482,2485,2487,2490,2492,2495],{"class":1240,"line":2471},5,[1238,2473,2474],{"class":1248},"  \"spend\"",[1238,2476,2325],{"class":1244},[1238,2478,2479],{"class":1248},"\"spent_usd\"",[1238,2481,1252],{"class":1244},[1238,2483,2484],{"class":2352},"1.2",[1238,2486,899],{"class":1244},[1238,2488,2489],{"class":1248},"\"cap_usd\"",[1238,2491,1252],{"class":1244},[1238,2493,2494],{"class":2352},"5.0",[1238,2496,2424],{"class":1244},[1238,2498,2500,2503,2505,2508],{"class":1240,"line":2499},6,[1238,2501,2502],{"class":1248},"  \"beads\"",[1238,2504,1264],{"class":1244},[1238,2506,2507],{"class":1255},"\"kraft-ab1\"",[1238,2509,2510],{"class":1244},"]\n",[1238,2512,2514],{"class":1240,"line":2513},7,[1238,2515,2250],{"class":1244},[544,2517,2518,2526],{},[547,2519,2520],{},[550,2521,2522,2524],{},[553,2523,851],{},[553,2525,860],{},[560,2527,2528,2538,2553,2573,2583],{},[550,2529,2530,2535],{},[565,2531,2532],{},[571,2533,2534],{},"running",[565,2536,2537],{},"The item's running session, if any, and when it started.",[550,2539,2540,2545],{},[565,2541,2542],{},[571,2543,2544],{},"kept",[565,2546,2547,2548,2552],{},"What cancel leaves behind. Cancel never removes the ",[530,2549,2551],{"href":2550},"\u002Fconcepts\u002Fvocabulary#worktree","worktree"," or the branch. Archive later removes the worktree but keeps a branch with commits nowhere else.",[550,2554,2555,2560],{},[565,2556,2557],{},[571,2558,2559],{},"mr",[565,2561,2562,2563,2565,2566,2569,2570,2572],{},"The item's merge request and its live state, or ",[571,2564,877],{}," before one was ever opened. ",[571,2567,2568],{},"state"," is ",[571,2571,877],{}," when the forge cannot answer.",[550,2574,2575,2580],{},[565,2576,2577],{},[571,2578,2579],{},"spend",[565,2581,2582],{},"The item's spend and its own cap.",[550,2584,2585,2590],{},[565,2586,2587],{},[571,2588,2589],{},"beads",[565,2591,2592,2593,2595,2596,2599],{},"Every bead ",[571,2594,716],{}," closes when asked with ",[571,2597,2598],{},"close_beads",". See below.",[526,2601,2602,2604,2605,1219,2608,2611,2612,2615,2616,2619,2620,2622],{},[571,2603,2589],{}," holds the item's own bead, the ones it implements, and those a ",[571,2606,2607],{},"Fixes",[571,2609,2610],{},"Closes"," trailer on its commits names (an id starting ",[571,2613,2614],{},"Kraft-",", any case). An item filed while ",[571,2617,2618],{},"bd"," was down has none yet, and ",[571,2621,2598],{}," files one for it and closes that.",[544,2624,2625,2633],{},[547,2626,2627],{},[550,2628,2629,2631],{},[553,2630,912],{},[553,2632,915],{},[560,2634,2635,2643],{},[550,2636,2637,2641],{},[565,2638,2639],{},[571,2640,943],{},[565,2642,1304],{},[550,2644,2645,2649],{},[565,2646,2647],{},[571,2648,956],{},[565,2650,2651,2652,839],{},"The item has ended, as for ",[571,2653,2654],{},"\u002Fcancel",[817,2656,2658],{"id":2657},"post-apiwork-itemsidcancel",[571,2659,703],{},[526,2661,2662,2663,2666,2667,2669,2670,2673,2674,2677,2678,839],{},"Ends the item, with a reason, and stops whatever is running. The worktree and the branch stay, and so does the merge request unless ",[571,2664,2665],{},"close_mr"," is set. The item's stored ",[571,2668,2259],{}," becomes ",[571,2671,2672],{},"abandoned",", which the board shows as ",[571,2675,2676],{},"cancelled",": see ",[530,2679,2681],{"href":2680},"\u002Freference\u002Fstatuses#displayed-status","Displayed status",[544,2683,2684,2696],{},[547,2685,2686],{},[550,2687,2688,2690,2692,2694],{},[553,2689,851],{},[553,2691,854],{},[553,2693,857],{},[553,2695,860],{},[560,2697,2698,2712],{},[550,2699,2700,2705,2707,2709],{},[565,2701,2702],{},[571,2703,2704],{},"reason",[565,2706,872],{},[565,2708,1076],{},[565,2710,2711],{},"Why it ended.",[550,2713,2714,2718,2720,2724],{},[565,2715,2716],{},[571,2717,2665],{},[565,2719,2121],{},[565,2721,2722],{},[571,2723,2126],{},[565,2725,2726,2727,2731],{},"Close the item's merge request on the ",[530,2728,2730],{"href":2729},"\u002Fconcepts\u002Fvocabulary#forge","forge"," once the cancel has landed, if it is open.",[526,2733,892,2734,2736,2737,2740,2741,1495,2744,2747,2748,2750],{},[530,2735,541],{"href":540},". With ",[571,2738,2739],{},"close_mr: true"," it also carries ",[571,2742,2743],{},"close_mr: {\"ok\": true}",[571,2745,2746],{},"{\"ok\": false, \"error\": \"...\"}"," when there was no open merge request or the forge call failed. A failed close never undoes the cancel. The key is absent when ",[571,2749,2665],{}," was not asked for.",[544,2752,2753,2761],{},[547,2754,2755],{},[550,2756,2757,2759],{},[553,2758,912],{},[553,2760,915],{},[560,2762,2763,2772,2780,2788],{},[550,2764,2765,2769],{},[565,2766,2767],{},[571,2768,924],{},[565,2770,2771],{},"A worker session of this item. An escalation turn is not refused.",[550,2773,2774,2778],{},[565,2775,2776],{},[571,2777,943],{},[565,2779,1304],{},[550,2781,2782,2786],{},[565,2783,2784],{},[571,2785,956],{},[565,2787,959],{},[550,2789,2790,2794],{},[565,2791,2792],{},[571,2793,1004],{},[565,2795,2796,1582],{},[571,2797,2704],{},[817,2799,2801],{"id":2800},"post-apiwork-itemsidcomplete",[571,2802,716],{},[526,2804,2805,2806,2809,2810,2813,2814,2817,2818,2820],{},"Ends the item as completed, by hand, with a reason, and stops whatever is running. ",[571,2807,2808],{},"kraft item complete"," calls it. Nothing runs and no gate is approved: the worktree, the branch and the merge request stay as they are. The reason goes on the timeline, as ",[571,2811,2812],{},"work_item_manually_completed"," and then ",[571,2815,2816],{},"work_item_completed",". The item's beads stay open unless ",[571,2819,2598],{}," is set.",[544,2822,2823,2835],{},[547,2824,2825],{},[550,2826,2827,2829,2831,2833],{},[553,2828,851],{},[553,2830,854],{},[553,2832,857],{},[553,2834,860],{},[560,2836,2837,2849],{},[550,2838,2839,2843,2845,2847],{},[565,2840,2841],{},[571,2842,2704],{},[565,2844,872],{},[565,2846,1076],{},[565,2848,2711],{},[550,2850,2851,2855,2857,2861],{},[565,2852,2853],{},[571,2854,2598],{},[565,2856,2121],{},[565,2858,2859],{},[571,2860,2126],{},[565,2862,2863,2864,2868],{},"Also close the item's issues in beads, as ",[530,2865,2866],{"href":687},[571,2867,690],{}," lists them.",[526,2870,892,2871,839],{},[530,2872,541],{"href":540},[544,2874,2875,2883],{},[547,2876,2877],{},[550,2878,2879,2881],{},[553,2880,912],{},[553,2882,915],{},[560,2884,2885,2893,2901,2909],{},[550,2886,2887,2891],{},[565,2888,2889],{},[571,2890,924],{},[565,2892,2771],{},[550,2894,2895,2899],{},[565,2896,2897],{},[571,2898,943],{},[565,2900,1304],{},[550,2902,2903,2907],{},[565,2904,2905],{},[571,2906,956],{},[565,2908,959],{},[550,2910,2911,2915],{},[565,2912,2913],{},[571,2914,1004],{},[565,2916,2917,1582],{},[571,2918,2704],{},[817,2920,2922],{"id":2921},"post-apiwork-itemsidarchive",[571,2923,729],{},[526,2925,2926,2927,2930,2931,839],{},"Archives a completed or cancelled item and reclaims its worktree. The item still reads as completed or cancelled. It answers ",[571,2928,2929],{},"{\"id\", \"archived_by\", \"worktree_removed\"}",". An item already archived answers the same shape with ",[571,2932,2933],{},"worktree_removed: false",[526,2935,2936,2937,2940],{},"Archive never deletes a commit, and keeps the attachment copies. It does discard uncommitted changes in the worktree, which it removes with ",[571,2938,2939],{},"git worktree remove --force",". These keys appear only in the cases below.",[544,2942,2943,2952],{},[547,2944,2945],{},[550,2946,2947,2950],{},[553,2948,2949],{},"Key",[553,2951,915],{},[560,2953,2954,2967,2983,2997],{},[550,2955,2956,2964],{},[565,2957,2958,899,2961],{},[571,2959,2960],{},"kept_branch",[571,2962,2963],{},"unpushed_commits",[565,2965,2966],{},"The branch was kept because some of its commits are on no other branch, remote-tracking branch or tag, and not in what Kraft pushed.",[550,2968,2969,2977],{},[565,2970,2971,899,2974],{},[571,2972,2973],{},"rescued_branch",[571,2975,2976],{},"rescued_commits",[565,2978,2979,2980,839],{},"The worktree's HEAD was detached on commits no branch has. Kraft saved them as ",[571,2981,2982],{},"kraft\u002Frescued\u002F\u003Cid>",[550,2984,2985,2990],{},[565,2986,2987],{},[571,2988,2989],{},"worktree_kept",[565,2991,2992,2993,2996],{},"That branch could not be made, as ",[571,2994,2995],{},"rescue failed: \u003Creason>",". The item is still archived but its worktree stays.",[550,2998,2999,3004],{},[565,3000,3001],{},[571,3002,3003],{},"repo_missing",[565,3005,3006],{},"The item's repository was moved or deleted. Archive removed the worktree directory directly and did nothing to the branch: if you only moved the repository, it is still there.",[544,3008,3009,3017],{},[547,3010,3011],{},[550,3012,3013,3015],{},[553,3014,912],{},[553,3016,915],{},[560,3018,3019,3027],{},[550,3020,3021,3025],{},[565,3022,3023],{},[571,3024,943],{},[565,3026,1304],{},[550,3028,3029,3033],{},[565,3030,3031],{},[571,3032,956],{},[565,3034,1490,3035,1219,3038,3040],{},[571,3036,3037],{},"completed",[571,3039,2672],{}," (shown as cancelled).",[817,3042,3044],{"id":3043},"post-apiwork-itemsidrestore",[571,3045,742],{},[526,3047,3048,3049,3051,3052,3055,3056,3059,3060,3063],{},"Puts an archived item back under Done. The item's ",[571,3050,2259],{}," never moved when it was archived, so it reads as completed or cancelled again. Restore clears ",[571,3053,3054],{},"archived_at"," and ",[571,3057,3058],{},"archived_by"," and records ",[571,3061,3062],{},"work_item_restored",". It does not bring back the worktree that archive removed. The body is empty.",[1229,3065,3067],{"className":1231,"code":3066,"language":1233,"meta":1234,"style":1234},"{\"id\": \"...\", \"status\": \"completed\"}\n",[571,3068,3069],{"__ignoreMap":1234},[1238,3070,3071,3073,3075,3077,3079,3081,3083,3085,3088],{"class":1240,"line":1241},[1238,3072,1245],{"class":1244},[1238,3074,1249],{"class":1248},[1238,3076,1252],{"class":1244},[1238,3078,1256],{"class":1255},[1238,3080,899],{"class":1244},[1238,3082,1438],{"class":1248},[1238,3084,1252],{"class":1244},[1238,3086,3087],{"class":1255},"\"completed\"",[1238,3089,2250],{"class":1244},[526,3091,3092,3094,3095,1219,3097,839],{},[571,3093,2259],{}," is the item's stored status, ",[571,3096,3037],{},[571,3098,2672],{},[544,3100,3101,3109],{},[547,3102,3103],{},[550,3104,3105,3107],{},[553,3106,912],{},[553,3108,915],{},[560,3110,3111,3119],{},[550,3112,3113,3117],{},[565,3114,3115],{},[571,3116,943],{},[565,3118,1304],{},[550,3120,3121,3125],{},[565,3122,3123],{},[571,3124,956],{},[565,3126,3127],{},"The item is not archived.",[817,3129,3131],{"id":3130},"post-apiwork-itemsidabandon",[571,3132,755],{},[526,3134,3135,3136,839],{},"Ends the item and deletes its worktree, branch and attachment copies. Uncommitted work and unpushed commits are lost. It answers ",[571,3137,3138],{},"{\"id\", \"status\": \"abandoned\", \"worktree_removed\"}",[526,3140,3141,3142,3144],{},"When the item's repository has been moved or deleted, abandon removes the worktree directory directly and adds ",[571,3143,3003],{},", the repository path it could not find. It does nothing to the branch.",[544,3146,3147,3155],{},[547,3148,3149],{},[550,3150,3151,3153],{},[553,3152,912],{},[553,3154,915],{},[560,3156,3157,3166,3174],{},[550,3158,3159,3163],{},[565,3160,3161],{},[571,3162,924],{},[565,3164,3165],{},"A worker session abandons its own item. An escalation turn is not refused.",[550,3167,3168,3172],{},[565,3169,3170],{},[571,3171,943],{},[565,3173,1304],{},[550,3175,3176,3180],{},[565,3177,3178],{},[571,3179,956],{},[565,3181,3182],{},"The item is active. Pause it first.",[526,3184,3185,3186,839],{},"An item that is already abandoned, a cancelled one included, is reclaimed again without a second event. A second call finds nothing left and answers ",[571,3187,2933],{},[812,3189,3191],{"id":3190},"retrying-a-work-item","Retrying a work item",[817,3193,3195],{"id":3194},"post-apiwork-itemsidretry",[571,3196,768],{},[526,3198,3199,3200,1900],{},"Reruns the node an item stopped on, with steer text if you give it. It is the only way back onto an item stopped by a task failure, and ",[571,3201,3202],{},"kraft item retry",[526,3204,3205,3206,1219,3208,3211],{},"Only a retry from a person resets the cap counters of what it reruns. A retry that carries ",[571,3207,930],{},[571,3209,3210],{},"X-Kraft-Client: mcp"," leaves them where they stand, so an item stopped on a cap stops again.",[544,3213,3214,3226],{},[547,3215,3216],{},[550,3217,3218,3220,3222,3224],{},[553,3219,851],{},[553,3221,854],{},[553,3223,857],{},[553,3225,860],{},[560,3227,3228,3243,3268,3292,3307],{},[550,3229,3230,3234,3236,3240],{},[565,3231,3232],{},[571,3233,1512],{},[565,3235,872],{},[565,3237,3238],{},[571,3239,877],{},[565,3241,3242],{},"Text carried into the rerun.",[550,3244,3245,3249,3251,3254],{},[565,3246,3247],{},[571,3248,1906],{},[565,3250,872],{},[565,3252,3253],{},"the stopped node",[565,3255,3256,3257,899,3259,1219,3262,3265,3266,839],{},"What to rerun, by canonical path: ",[571,3258,1086],{},[571,3260,3261],{},"node.step",[571,3263,3264],{},"node.step.task",". A path after the node the item stands on answers ",[571,3267,956],{},[550,3269,3270,3275,3277,3281],{},[565,3271,3272],{},[571,3273,3274],{},"restart",[565,3276,2121],{},[565,3278,3279],{},[571,3280,2126],{},[565,3282,3283,3284,899,3286,1219,3289,839],{},"Rerun the whole chain from its first node. It cannot be combined with ",[571,3285,1906],{},[571,3287,3288],{},"task_config",[571,3290,3291],{},"policy",[550,3293,3294,3298,3300,3304],{},[565,3295,3296],{},[571,3297,3288],{},[565,3299,1704],{},[565,3301,3302],{},[571,3303,877],{},[565,3305,3306],{},"Task fields to change for the retried task, validated against the chain and its policy bounds.",[550,3308,3309,3313,3315,3319],{},[565,3310,3311],{},[571,3312,3291],{},[565,3314,1704],{},[565,3316,3317],{},[571,3318,877],{},[565,3320,3321],{},"The retried scope's policy, validated the same way.",[526,3323,3324,3325,3327,3328,3330,3331,3333,3334,3336],{},"With no ",[571,3326,1906],{}," and no ",[571,3329,3274],{},", a pending rewind replaces ",[571,3332,1906],{},", and its note goes before your ",[571,3335,1512],{},". A rewind is a request-changes review submitted while no gate was pending.",[1229,3338,3340],{"className":1231,"code":3339,"language":1233,"meta":1234,"style":1234},"{\"id\": \"...\", \"node_id\": \"implement\", \"path\": \"implement\", \"loop\": null, \"steer\": null, \"attempt\": 2}\n",[571,3341,3342],{"__ignoreMap":1234},[1238,3343,3344,3346,3348,3350,3352,3354,3356,3358,3361,3363,3366,3368,3370,3372,3375,3377,3379,3381,3383,3385,3387,3389,3391,3393,3396],{"class":1240,"line":1241},[1238,3345,1245],{"class":1244},[1238,3347,1249],{"class":1248},[1238,3349,1252],{"class":1244},[1238,3351,1256],{"class":1255},[1238,3353,899],{"class":1244},[1238,3355,1738],{"class":1248},[1238,3357,1252],{"class":1244},[1238,3359,3360],{"class":1255},"\"implement\"",[1238,3362,899],{"class":1244},[1238,3364,3365],{"class":1248},"\"path\"",[1238,3367,1252],{"class":1244},[1238,3369,3360],{"class":1255},[1238,3371,899],{"class":1244},[1238,3373,3374],{"class":1248},"\"loop\"",[1238,3376,1252],{"class":1244},[1238,3378,877],{"class":2352},[1238,3380,899],{"class":1244},[1238,3382,1748],{"class":1248},[1238,3384,1252],{"class":1244},[1238,3386,877],{"class":2352},[1238,3388,899],{"class":1244},[1238,3390,2347],{"class":1248},[1238,3392,1252],{"class":1244},[1238,3394,3395],{"class":2352},"2",[1238,3397,2250],{"class":1244},[544,3399,3400,3408],{},[547,3401,3402],{},[550,3403,3404,3406],{},[553,3405,851],{},[553,3407,860],{},[560,3409,3410,3420,3434,3448,3461,3475],{},[550,3411,3412,3417],{},[565,3413,3414],{},[571,3415,3416],{},"id",[565,3418,3419],{},"The item's id.",[550,3421,3422,3426],{},[565,3423,3424],{},[571,3425,1783],{},[565,3427,3428,3429,3431,3432,839],{},"The node the rerun starts at: the one ",[571,3430,1906],{}," names, the stopped node, or the first node for a ",[571,3433,3274],{},[550,3435,3436,3440],{},[565,3437,3438],{},[571,3439,1906],{},[565,3441,3442,3443,3445,3446,839],{},"The canonical path it reruns, or ",[571,3444,877],{}," for a ",[571,3447,3274],{},[550,3449,3450,3455],{},[565,3451,3452],{},[571,3453,3454],{},"loop",[565,3456,3457,3458,3460],{},"The key of that node's fix-loop counter, or ",[571,3459,877],{}," for a gate or a node with no fix loop.",[550,3462,3463,3467],{},[565,3464,3465],{},[571,3466,1512],{},[565,3468,3469,3470,3472,3473,839],{},"The text the rerun carries: your ",[571,3471,1512],{}," (with a pending rewind's note before it), else the unresolved findings of the last review, else the last rejection's note, else ",[571,3474,877],{},[550,3476,3477,3482],{},[565,3478,3479],{},[571,3480,3481],{},"attempt",[565,3483,3484],{},"The attempt number the task it relaunches will run as: the count of that task's own sessions so far, plus one.",[526,3486,3487,3488,3490,3491,3493,3494,3496,3497,3501],{},"A ",[571,3489,1906],{}," naming a task counts only that task's sessions, and one naming a step takes the highest next attempt over the step's tasks. A ",[571,3492,1906],{}," naming a node, which is the default, takes the highest over the node's own tasks: all of its tasks except its escalation task, which is never counted. A ",[571,3495,3274],{}," does the same for the first node. A ",[530,3498,3500],{"href":3499},"\u002Fconcepts\u002Fvocabulary#walk","walk"," may enter at any one of those tasks.",[526,3503,3504,3505,839],{},"A retry that stops at once answers ",[530,3506,541],{"href":540},[526,3508,3509,3510,1332,3512,3514,3515,3517,3518,1332,3520,3055,3523,3526,3527,3529,3530,3533],{},"With every slot busy, a retry answers ",[571,3511,1644],{},[571,3513,1647],{},", and the item waits as ",[571,3516,1218],{},". Kraft makes the same request when a slot frees. An item that comes after an unfinished item answers ",[571,3519,1644],{},[571,3521,3522],{},"status: \"blocked\"",[571,3524,3525],{},"waiting_on"," first, and ",[571,3528,956],{}," when what it comes after was abandoned. ",[571,3531,3532],{},"\u002Freopen-mr"," queues the same way, after it reopens the merge request.",[526,3535,3536,3537,3540,3541,1219,3543,839],{},"An escalation turn that retries its own item is not refused. Kraft records the request and performs it once the turn ends, and the answer is ",[571,3538,3539],{},"{id, node_id, loop, steer}",", with no ",[571,3542,1906],{},[571,3544,3481],{},[544,3546,3547,3555],{},[547,3548,3549],{},[550,3550,3551,3553],{},[553,3552,912],{},[553,3554,915],{},[560,3556,3557,3566,3574,3597,3606,3615,3629],{},[550,3558,3559,3563],{},[565,3560,3561],{},[571,3562,924],{},[565,3564,3565],{},"A worker session retries its own item.",[550,3567,3568,3572],{},[565,3569,3570],{},[571,3571,943],{},[565,3573,1304],{},[550,3575,3576,3580],{},[565,3577,3578],{},[571,3579,956],{},[565,3581,3582,3583,3585,3586,1219,3588,3590,3591,3593,3594,3596],{},"The item's status is not ",[571,3584,1316],{},", so it is not stopped. A ",[571,3587,1210],{},[571,3589,1214],{}," item has a ",[571,3592,902],{}," and still answers ",[571,3595,956],{},", and a paused one is told to resume.",[550,3598,3599,3603],{},[565,3600,3601],{},[571,3602,956],{},[565,3604,3605],{},"The item has ended or has no current node.",[550,3607,3608,3612],{},[565,3609,3610],{},[571,3611,956],{},[565,3613,3614],{},"A walk is already running.",[550,3616,3617,3621],{},[565,3618,3619],{},[571,3620,956],{},[565,3622,3623,3625,3626,3628],{},[571,3624,1906],{}," is after the node the item stands on, or ",[571,3627,1512],{}," is text no agent task downstream of the node would read.",[550,3630,3631,3635],{},[565,3632,3633],{},[571,3634,1004],{},[565,3636,3637,899,3639,1219,3641,3643],{},[571,3638,1906],{},[571,3640,3288],{},[571,3642,3291],{}," is refused.",[817,3645,3647],{"id":3646},"post-apiwork-itemsidreopen-mr",[571,3648,781],{},[526,3650,3651,3652,3654,3655,3657],{},"Reopens the item's merge request on the forge and retries the stopped node, the same as ",[571,3653,768],{}," with no ",[571,3656,1906],{},". Use it on an item that stopped because its merge request was closed there without merging.",[526,3659,3660,3661,1219,3663,3665,3666,3669,3670,3673,3674,3055,3677,3680,3681,839],{},"A poller checks every ",[571,3662,1210],{},[571,3664,1316],{}," item parked at a merge-request node against the forge every ",[571,3667,3668],{},"policy.forge_poll_s"," seconds (default ",[571,3671,3672],{},"300","). When the merge request was closed without merging, it stops the item with ",[571,3675,3676],{},"stop.kind: \"mr_closed\"",[571,3678,3679],{},"facts: {ref, url}",". See ",[530,3682,3684],{"href":3683},"\u002Freference\u002Fevents#work_item_needs_human","Events: work_item_needs_human",[526,3686,3687,3688,3690,3691,3693,3694,3698],{},"There are three ways out: this route, ",[571,3689,768],{}," with the merge request node's path to open a new merge request, and ",[571,3692,703],{},". Cancelling leaves the closed merge request and the worktree as they are. ",[530,3695,3697],{"href":3696},"\u002Freference\u002Fstatuses#mr-closed-externally","MR closed externally"," lists the board's button for each.",[526,3700,3701,3702,3654,3707,3709,3710,3712],{},"The answer is that of ",[530,3703,3704],{"href":765},[571,3705,3706],{},"\u002Fretry",[571,3708,1906],{},", and so are its ",[571,3711,956],{},"s. The ones that matter here: the item has no current node, or a walk is already running.",[526,3714,3715,3716,3719,3720,3722,3723,3725],{},"The route reopens the merge request on the forge and records ",[571,3717,3718],{},"mr_reopened"," before it retries. If the retry then answers ",[571,3721,956],{},", the merge request stays reopened and the item stays stopped. Repeating this call asks the forge to reopen it again, which may fail: retry the item with ",[571,3724,768],{}," instead.",[544,3727,3728,3736],{},[547,3729,3730],{},[550,3731,3732,3734],{},[553,3733,912],{},[553,3735,915],{},[560,3737,3738,3747,3755,3767,3776],{},[550,3739,3740,3744],{},[565,3741,3742],{},[571,3743,924],{},[565,3745,3746],{},"A worker session reopens its own item's merge request.",[550,3748,3749,3753],{},[565,3750,3751],{},[571,3752,943],{},[565,3754,1304],{},[550,3756,3757,3761],{},[565,3758,3759],{},[571,3760,956],{},[565,3762,3763,3764,3766],{},"The item has ended, is not stopped with ",[571,3765,3676],{},", or has no merge request to reopen.",[550,3768,3769,3773],{},[565,3770,3771],{},[571,3772,956],{},[565,3774,3775],{},"The reopen worked and the retry was refused, as above.",[550,3777,3778,3783],{},[565,3779,3780],{},[571,3781,3782],{},"502",[565,3784,3785],{},"The forge call failed, with the forge's own message. The item stays stopped.",[812,3787,3789],{"id":3788},"routes-a-worker-calls","Routes a worker calls",[526,3791,3792,3793,3796,3797,3800,3801,3804,3805,1559],{},"A worker session calls these on its own item. Neither route refuses a worker session. A sandboxed worker under a ",[571,3794,3795],{},"network:"," policy reaches ",[571,3798,3799],{},"progress"," through its channel but not ",[571,3802,3803],{},"mr-labels",": the channel allows only a short list of routes (see ",[530,3806,1029],{"href":1028},[817,3808,3810],{"id":3809},"post-apiwork-itemsidprogress",[571,3811,794],{},[526,3813,3814,3815,3818,3819,3822,3823,1900],{},"Records that the implementing worker started plan task ",[571,3816,3817],{},"task",", as a ",[571,3820,3821],{},"plan_progress"," event. ",[571,3824,3825],{},"kraft item progress",[544,3827,3828,3838],{},[547,3829,3830],{},[550,3831,3832,3834,3836],{},[553,3833,851],{},[553,3835,854],{},[553,3837,860],{},[560,3839,3840],{},[550,3841,3842,3846,3849],{},[565,3843,3844],{},[571,3845,3817],{},[565,3847,3848],{},"integer",[565,3850,3851,3852,3855],{},"The N of the plan's ",[571,3853,3854],{},"## Task N"," heading the worker is starting.",[526,3857,892,3858,3861,3862,2569,3864,3871,3872,1495,3875,3877],{},[571,3859,3860],{},"{\"id\": \"...\", \"progress\": {...}}",", where ",[571,3863,3799],{},[530,3865,3867,3868,3870],{"href":3866},"\u002Freference\u002Fhttp-api\u002Fwork-item-object#the-progress-field","the ",[571,3869,3799],{}," field"," with its ",[571,3873,3874],{},"tasks",[571,3876,877],{}," when the item has no plan to follow.",[544,3879,3880,3888],{},[547,3881,3882],{},[550,3883,3884,3886],{},[553,3885,912],{},[553,3887,915],{},[560,3889,3890,3908,3916,3929],{},[550,3891,3892,3896],{},[565,3893,3894],{},[571,3895,1122],{},[565,3897,3898,3899,3901,3902,3904,3905,3907],{},"The item's plan has no ",[571,3900,3854],{}," headings, or ",[571,3903,3817],{}," is outside ",[571,3906,2353],{}," to the number of tasks.",[550,3909,3910,3914],{},[565,3911,3912],{},[571,3913,943],{},[565,3915,1304],{},[550,3917,3918,3922],{},[565,3919,3920],{},[571,3921,956],{},[565,3923,3924,3925,3928],{},"The chain has no implementing node (a node whose own steps hold an agent task with no ",[571,3926,3927],{},"skill:","), or the item is not running it.",[550,3930,3931,3935],{},[565,3932,3933],{},[571,3934,956],{},[565,3936,3937],{},"The run is rework after a gate rejection: it follows the rejection's note, not the plan.",[817,3939,3941],{"id":3940},"post-apiwork-itemsidmr-labels",[571,3942,807],{},[526,3944,3945,3946,1200,3949,3952],{},"Labels the item's merge request on the forge and re-creates its pipeline, then records ",[571,3947,3948],{},"mr_labels_set",[571,3950,3951],{},"kraft item mr-label"," calls it. A repair agent calls it once it has read a failed CI trace and decided which labels the trace asks for.",[544,3954,3955,3965],{},[547,3956,3957],{},[550,3958,3959,3961,3963],{},[553,3960,851],{},[553,3962,854],{},[553,3964,860],{},[560,3966,3967],{},[550,3968,3969,3974,3977],{},[565,3970,3971],{},[571,3972,3973],{},"labels",[565,3975,3976],{},"list of strings",[565,3978,3979],{},"The labels to set. Each is trimmed, and a blank one is dropped.",[526,3981,892,3982,3985],{},[571,3983,3984],{},"{\"work_item_id\": \"...\", \"labels\": [...]}",", the labels as set.",[544,3987,3988,3996],{},[547,3989,3990],{},[550,3991,3992,3994],{},[553,3993,912],{},[553,3995,915],{},[560,3997,3998,4014,4023],{},[550,3999,4000,4004],{},[565,4001,4002],{},[571,4003,943],{},[565,4005,4006,4007,839],{},"There is no such item, or its worktree is not on disk: see ",[530,4008,4010,4011,3870],{"href":4009},"\u002Freference\u002Fhttp-api\u002Fwork-item-object#the-worktree_exists-field","The ",[571,4012,4013],{},"worktree_exists",[550,4015,4016,4020],{},[565,4017,4018],{},[571,4019,1004],{},[565,4021,4022],{},"No label is left once blanks are dropped.",[550,4024,4025,4029],{},[565,4026,4027],{},[571,4028,3782],{},[565,4030,4031],{},"The forge call failed, with the forge's own message.",[4033,4034,4035],"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 .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 .ssYy9, html code.shiki .ssYy9{--shiki-light:#023B95;--shiki-default:#023B95;--shiki-dark:#91CBFF}html pre.shiki code .sLsVW, html code.shiki .sLsVW{--shiki-light:#6E011A;--shiki-light-font-style:italic;--shiki-default:#6E011A;--shiki-default-font-style:italic;--shiki-dark:#FFB1AF;--shiki-dark-font-style:italic}",{"title":1234,"searchDepth":2319,"depth":2319,"links":4037},[4038,4044,4054,4062,4076,4082],{"id":814,"depth":2319,"text":815,"children":4039},[4040,4042],{"id":819,"depth":2379,"text":4041},"POST \u002Fapi\u002F​work-​items\u002F​{id}\u002F​gates\u002F​{gate}\u002F​approve",{"id":1032,"depth":2379,"text":4043},"POST \u002Fapi\u002F​work-​items\u002F​{id}\u002F​gates\u002F​{gate}\u002F​reject",{"id":1187,"depth":2319,"text":1188,"children":4045},[4046,4048,4050,4052],{"id":1191,"depth":2379,"text":4047},"POST \u002Fapi\u002F​work-​items\u002F​{id}\u002F​pause",{"id":1338,"depth":2379,"text":4049},"POST \u002Fapi\u002F​work-​items\u002F​{id}\u002F​unblock",{"id":1501,"depth":2379,"text":4051},"POST \u002Fapi\u002F​work-​items\u002F​{id}\u002F​steer",{"id":1611,"depth":2379,"text":4053},"POST \u002Fapi\u002F​work-​items\u002F​{id}\u002F​resume",{"id":1887,"depth":2319,"text":1888,"children":4055},[4056,4058,4060],{"id":1891,"depth":2379,"text":4057},"POST \u002Fapi\u002F​work-​items\u002F​{id}\u002F​skip",{"id":2072,"depth":2379,"text":4059},"POST \u002Fapi\u002F​work-​items\u002F​{id}\u002F​escalate",{"id":2209,"depth":2379,"text":4061},"POST \u002Fapi\u002F​work-​items\u002F​{id}\u002F​escalate\u002F​stop",{"id":2294,"depth":2319,"text":2295,"children":4063},[4064,4066,4068,4070,4072,4074],{"id":2298,"depth":2379,"text":4065},"GET \u002Fapi\u002F​work-​items\u002F​{id}\u002F​cancel-​preview",{"id":2657,"depth":2379,"text":4067},"POST \u002Fapi\u002F​work-​items\u002F​{id}\u002F​cancel",{"id":2800,"depth":2379,"text":4069},"POST \u002Fapi\u002F​work-​items\u002F​{id}\u002F​complete",{"id":2921,"depth":2379,"text":4071},"POST \u002Fapi\u002F​work-​items\u002F​{id}\u002F​archive",{"id":3043,"depth":2379,"text":4073},"POST \u002Fapi\u002F​work-​items\u002F​{id}\u002F​restore",{"id":3130,"depth":2379,"text":4075},"POST \u002Fapi\u002F​work-​items\u002F​{id}\u002F​abandon",{"id":3190,"depth":2319,"text":3191,"children":4077},[4078,4080],{"id":3194,"depth":2379,"text":4079},"POST \u002Fapi\u002F​work-​items\u002F​{id}\u002F​retry",{"id":3646,"depth":2379,"text":4081},"POST \u002Fapi\u002F​work-​items\u002F​{id}\u002F​reopen-​mr",{"id":3788,"depth":2319,"text":3789,"children":4083},[4084,4086],{"id":3809,"depth":2379,"text":4085},"POST \u002Fapi\u002F​work-​items\u002F​{id}\u002F​progress",{"id":3940,"depth":2379,"text":4087},"POST \u002Fapi\u002F​work-​items\u002F​{id}\u002F​mr-​labels","The board's routes for deciding a gate, pausing, resuming, skipping, escalating, ending, archiving and retrying a work item, and the routes a worker calls.","md",null,{},true,{"title":454,"description":4088},"jKG1-gJ6o9DEGoOMOHDXz_bTdBT4NqO35GzqrF2zQx0",[4096,4098],{"title":450,"path":451,"stem":452,"description":4097,"children":-1},"The board's routes for filing a work item, duplicating it, reading the board and one item, changing an item, and acting on several at once.",{"title":458,"path":459,"stem":460,"description":4099,"children":-1},"The three shapes a work item answers in, its stored columns, and the fields that need an explanation, from its status and stop to its budget cap and plan progress.",1791801177769]