[{"data":1,"prerenderedAt":2566},["ShallowReactive",2],{"navigation_docs":3,"-reference-http-api-budget-and-events":520,"-reference-http-api-budget-and-events-surround":2561},[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":462,"body":522,"description":2554,"extension":2555,"links":2556,"meta":2557,"navigation":2558,"path":463,"seo":2559,"stem":464,"__hash__":2560},"docs\u002F5.reference\u002F08.http-api\u002F5.budget-and-events.md",{"type":523,"value":524,"toc":2513},"minimark",[525,555,760,765,771,778,821,844,849,877,914,937,1039,1045,1049,1054,1087,1296,1412,1429,1446,1449,1454,1463,1557,1571,1611,1615,1620,1636,1686,1726,1773,1778,1781,1907,1953,2024,2029,2052,2061,2108,2113,2123,2128,2149,2166,2183,2228,2233,2258,2278,2282,2287,2311,2320,2357,2362,2380,2385,2399,2404,2409,2435,2444,2469,2479,2483,2509],[526,527,528,529,534,535,537,538,542,543,547,548,551,552,554],"p",{},"This page lists the board's routes for a ",[530,531,533],"a",{"href":532},"\u002Fconcepts\u002Fvocabulary#work-item","work item","'s budget, the dry run of a create, its events, its diff and review, and its documents. Like the other board routes they can change in any release: see ",[530,536,450],{"href":451}," for the rule, and the ",[530,539,541],{"href":540},"\u002Freference\u002Fhttp-api#stable-routes","stable routes"," for the two that keep their shape. Prefer the ",[544,545,546],"code",{},"kraft"," command with ",[544,549,550],{},"--json",". The fields these routes read from a work item's detail are under ",[530,553,458],{"href":459},".",[556,557,558,571],"table",{},[559,560,561],"thead",{},[562,563,564,568],"tr",{},[565,566,567],"th",{},"Route",[565,569,570],{},"What it does",[572,573,574,588,601,614,627,640,653,666,679,692,708,721,734,747],"tbody",{},[562,575,576,585],{},[577,578,579],"td",{},[530,580,582],{"href":581},"#get-apibudgettoday",[544,583,584],{},"GET \u002Fapi\u002Fbudget\u002Ftoday",[577,586,587],{},"Answers the instance's spend since local midnight against the daily cap.",[562,589,590,598],{},[577,591,592],{},[530,593,595],{"href":594},"#post-apiwork-itemsidbudgetraise",[544,596,597],{},"POST \u002Fapi\u002Fwork-items\u002F{id}\u002Fbudget\u002Fraise",[577,599,600],{},"Raises the dollar cap that stopped an item and retries it.",[562,602,603,611],{},[577,604,605],{},[530,606,608],{"href":607},"#post-apiwork-itemsdry_run1",[544,609,610],{},"POST \u002Fapi\u002Fwork-items?dry_run=1",[577,612,613],{},"Runs every check of a create and files nothing.",[562,615,616,624],{},[577,617,618],{},[530,619,621],{"href":620},"#get-apiwork-itemsidevents",[544,622,623],{},"GET \u002Fapi\u002Fwork-items\u002F{id}\u002Fevents",[577,625,626],{},"Reads an item's events, forward or backward.",[562,628,629,637],{},[577,630,631],{},[530,632,634],{"href":633},"#get-apiwork-itemsiddiff",[544,635,636],{},"GET \u002Fapi\u002Fwork-items\u002F{id}\u002Fdiff",[577,638,639],{},"Answers the changes the agents made.",[562,641,642,650],{},[577,643,644],{},[530,645,647],{"href":646},"#get-apiwork-itemsidcompare",[544,648,649],{},"GET \u002Fapi\u002Fwork-items\u002F{id}\u002Fcompare",[577,651,652],{},"Diffs any two review targets.",[562,654,655,663],{},[577,656,657],{},[530,658,660],{"href":659},"#put-apiwork-itemsidviewed",[544,661,662],{},"PUT \u002Fapi\u002Fwork-items\u002F{id}\u002Fviewed",[577,664,665],{},"Marks a file viewed.",[562,667,668,676],{},[577,669,670],{},[530,671,673],{"href":672},"#delete-apiwork-itemsidviewed",[544,674,675],{},"DELETE \u002Fapi\u002Fwork-items\u002F{id}\u002Fviewed",[577,677,678],{},"Clears the mark.",[562,680,681,689],{},[577,682,683],{},[530,684,686],{"href":685},"#get-apiwork-itemsidfix-target",[544,687,688],{},"GET \u002Fapi\u002Fwork-items\u002F{id}\u002Ffix-target",[577,690,691],{},"Answers where a request-changes review would restart.",[562,693,694,702],{},[577,695,696],{},[530,697,699],{"href":698},"#post-apiwork-itemsidreview",[544,700,701],{},"POST \u002Fapi\u002Fwork-items\u002F{id}\u002Freview",[577,703,704,705,554],{},"Submits a review; this page covers its ",[544,706,707],{},"digest",[562,709,710,718],{},[577,711,712],{},[530,713,715],{"href":714},"#get-apiwork-itemsidattachmentskind",[544,716,717],{},"GET \u002Fapi\u002Fwork-items\u002F{id}\u002Fattachments\u002F{kind}",[577,719,720],{},"Reads the spec or plan attached at intake.",[562,722,723,731],{},[577,724,725],{},[530,726,728],{"href":727},"#get-apiwork-itemsiddocuments",[544,729,730],{},"GET \u002Fapi\u002Fwork-items\u002F{id}\u002Fdocuments",[577,732,733],{},"Lists the documents linked to an item.",[562,735,736,744],{},[577,737,738],{},[530,739,741],{"href":740},"#get-apiwork-itemsidartifact",[544,742,743],{},"GET \u002Fapi\u002Fwork-items\u002F{id}\u002Fartifact",[577,745,746],{},"Reads the pending gate's document.",[562,748,749,757],{},[577,750,751],{},[530,752,754],{"href":753},"#get-apiwork-itemsidartifactskind",[544,755,756],{},"GET \u002Fapi\u002Fwork-items\u002F{id}\u002Fartifacts\u002F{kind}",[577,758,759],{},"Reads the document a task wrote.",[761,762,764],"h2",{"id":763},"budget","Budget",[766,767,769],"h3",{"id":768},"get-apibudgettoday",[544,770,584],{},[526,772,773,774,777],{},"Answers the instance's spend since local midnight against ",[544,775,776],{},"policy.budget.daily_usd",":",[779,780,785],"pre",{"className":781,"code":782,"language":783,"meta":784,"style":784},"language-json shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","{\"spent_usd\": 3.4, \"cap_usd\": 20.0}\n","json","",[544,786,787],{"__ignoreMap":784},[788,789,792,796,800,803,807,810,813,815,818],"span",{"class":790,"line":791},"line",1,[788,793,795],{"class":794},"s7iLA","{",[788,797,799],{"class":798},"sb7M8","\"spent_usd\"",[788,801,802],{"class":794},": ",[788,804,806],{"class":805},"ssYy9","3.4",[788,808,809],{"class":794},", ",[788,811,812],{"class":798},"\"cap_usd\"",[788,814,802],{"class":794},[788,816,817],{"class":805},"20.0",[788,819,820],{"class":794},"}\n",[526,822,823,826,827,830,831,833,834,837,838,554],{},[544,824,825],{},"cap_usd"," is ",[544,828,829],{},"null"," when ",[544,832,776],{}," is unset. The same two numbers are ",[544,835,836],{},"daily"," in a work item's ",[530,839,841],{"href":840},"\u002Freference\u002Fhttp-api\u002Fwork-item-object#the-budget_cap-field",[544,842,843],{},"budget_cap",[766,845,847],{"id":846},"post-apiwork-itemsidbudgetraise",[544,848,597],{},[526,850,851,852,855,856,859,860,863,864,867,868,871,872,876],{},"Raises the dollar cap that stopped the item and retries the stopped node, as ",[544,853,854],{},"POST \u002Fapi\u002Fwork-items\u002F{id}\u002Fretry"," does. With every slot busy the cap is raised and the retry is queued: the answer is ",[544,857,858],{},"200"," with ",[544,861,862],{},"{\"id\": \"...\", \"status\": \"queued\", \"slots\": {\"busy\": 3, \"limit\": 3}}",". ",[544,865,866],{},"kraft item raise-budget"," calls it. It raises the item's own cap, or the item-wide ",[544,869,870],{},"budget_usd"," of its policy: whichever stopped the item. ",[530,873,875],{"href":874},"\u002Freference\u002Fcli\u002Fitem#raise-a-cap-that-stopped-an-item","Raise a cap that stopped an item"," says what the command accepts and refuses.",[556,878,879,892],{},[559,880,881],{},[562,882,883,886,889],{},[565,884,885],{},"Field",[565,887,888],{},"Type",[565,890,891],{},"Meaning",[572,893,894],{},[562,895,896,900,905],{},[577,897,898],{},[544,899,870],{},[577,901,902,903],{},"number or ",[544,904,829],{},[577,906,907,908,910,911,554],{},"The new cap. ",[544,909,829],{}," means no cap. The field is required: leaving it out answers ",[544,912,913],{},"422",[526,915,916,917,924,925,802,928,931,932,936],{},"The answer is ",[530,918,920,923],{"href":919},"\u002Freference\u002Fhttp-api\u002Fgates-run-control-and-ending#post-apiwork-itemsidretry",[544,921,922],{},"\u002Fretry","'s"," with no ",[544,926,927],{},"path",[544,929,930],{},"{id, node_id, path, loop, steer, attempt}",", or ",[530,933,935],{"href":934},"\u002Freference\u002Fhttp-api\u002Fwork-item-object#the-stored-row","the stored row"," when the retry stops at once.",[556,938,939,949],{},[559,940,941],{},[562,942,943,946],{},[565,944,945],{},"Status",[565,947,948],{},"When",[572,950,951,961,971,981,997,1009,1026],{},[562,952,953,958],{},[577,954,955],{},[544,956,957],{},"403",[577,959,960],{},"A worker session or an escalation turn raises a cap. A spending cap is a person's call.",[562,962,963,968],{},[577,964,965],{},[544,966,967],{},"404",[577,969,970],{},"There is no such item.",[562,972,973,978],{},[577,974,975],{},[544,976,977],{},"409",[577,979,980],{},"The item has ended.",[562,982,983,987],{},[577,984,985],{},[544,986,977],{},[577,988,989,990,992,993,996],{},"The item is not stopped, or a different cap stopped it: a node, step or task's ",[544,991,870],{},", a ",[544,994,995],{},"token_budget"," or the daily cap.",[562,998,999,1003],{},[577,1000,1001],{},[544,1002,977],{},[577,1004,1005,1006,1008],{},"Spend a harness never reported stopped it and the body sets a number. Only ",[544,1007,829],{}," passes that stop.",[562,1010,1011,1015],{},[577,1012,1013],{},[544,1014,977],{},[577,1016,1017,1018,554],{},"The retry could not start because a walk is still running. The cap is not changed. This is one of ",[530,1019,1020,1022,1023,1025],{"href":919},[544,1021,922],{},"'s ",[544,1024,977],{},"s",[562,1027,1028,1032],{},[577,1029,1030],{},[544,1031,913],{},[577,1033,1034,1035,1038],{},"The new cap is at or below what the item has already spent, so it would stop again at once. Or the policy's ",[544,1036,1037],{},"maxima"," refuse an item-wide cap.",[526,1040,1041,1042,1044],{},"If the retry is refused after the cap was raised, the answer has the retry's own status, ",[544,1043,977],{}," for example, and its message says the cap was raised and the retry was not.",[761,1046,1048],{"id":1047},"dry-run","Dry run",[766,1050,1052],{"id":1051},"post-apiwork-itemsdry_run1",[544,1053,610],{},[526,1055,1056,1057,1060,1061,1064,1065,1067,1068,809,1070,1072,1073,1076,1077,1079,1080,1083,1084,1086],{},"Runs every check ",[544,1058,1059],{},"POST \u002Fapi\u002Fwork-items"," runs, up to and including validating ",[544,1062,1063],{},"node_overrides",", then answers ",[544,1066,858],{}," without filing anything: no row, no bead, no attachment copy, no spawn. The body is a create's. A body that would answer ",[544,1069,957],{},[544,1071,913],{}," or ",[544,1074,1075],{},"503"," on an ordinary create answers the same on a dry run. The ",[544,1078,957],{}," for an agent's ",[544,1081,1082],{},"autostart"," is checked before the ",[544,1085,913],{},"s, so it runs here too.",[779,1088,1090],{"className":781,"code":1089,"language":783,"meta":784,"style":784},"{\n  \"dry_run\": true,\n  \"nodes\": [...],\n  \"skipped\": [{\"node\": \"spec\", \"why\": \"covered_by\", \"kind\": \"spec\"}, {\"node\": \"...\", \"why\": \"skip\"}],\n  \"gates\": [\"spec_approval\", \"...\"],\n  \"caps\": {\n    \"budget_usd\": 5.0,\n    \"budget_source\": \"item\",\n    \"daily_usd\": 20.0,\n    \"nodes\": {\"implement\": {\"attempts\": 3, \"wall_clock_s\": 7200}}\n  }\n}\n",[544,1091,1092,1097,1111,1127,1186,1203,1212,1225,1238,1250,1285,1291],{"__ignoreMap":784},[788,1093,1094],{"class":790,"line":791},[788,1095,1096],{"class":794},"{\n",[788,1098,1100,1103,1105,1108],{"class":790,"line":1099},2,[788,1101,1102],{"class":798},"  \"dry_run\"",[788,1104,802],{"class":794},[788,1106,1107],{"class":805},"true",[788,1109,1110],{"class":794},",\n",[788,1112,1114,1117,1120,1124],{"class":790,"line":1113},3,[788,1115,1116],{"class":798},"  \"nodes\"",[788,1118,1119],{"class":794},": [",[788,1121,1123],{"class":1122},"sLsVW","...",[788,1125,1126],{"class":794},"],\n",[788,1128,1130,1133,1136,1139,1141,1145,1147,1150,1152,1155,1157,1160,1162,1164,1167,1169,1171,1174,1176,1178,1180,1183],{"class":790,"line":1129},4,[788,1131,1132],{"class":798},"  \"skipped\"",[788,1134,1135],{"class":794},": [{",[788,1137,1138],{"class":798},"\"node\"",[788,1140,802],{"class":794},[788,1142,1144],{"class":1143},"semJd","\"spec\"",[788,1146,809],{"class":794},[788,1148,1149],{"class":798},"\"why\"",[788,1151,802],{"class":794},[788,1153,1154],{"class":1143},"\"covered_by\"",[788,1156,809],{"class":794},[788,1158,1159],{"class":798},"\"kind\"",[788,1161,802],{"class":794},[788,1163,1144],{"class":1143},[788,1165,1166],{"class":794},"}, {",[788,1168,1138],{"class":798},[788,1170,802],{"class":794},[788,1172,1173],{"class":1143},"\"...\"",[788,1175,809],{"class":794},[788,1177,1149],{"class":798},[788,1179,802],{"class":794},[788,1181,1182],{"class":1143},"\"skip\"",[788,1184,1185],{"class":794},"}],\n",[788,1187,1189,1192,1194,1197,1199,1201],{"class":790,"line":1188},5,[788,1190,1191],{"class":798},"  \"gates\"",[788,1193,1119],{"class":794},[788,1195,1196],{"class":1143},"\"spec_approval\"",[788,1198,809],{"class":794},[788,1200,1173],{"class":1143},[788,1202,1126],{"class":794},[788,1204,1206,1209],{"class":790,"line":1205},6,[788,1207,1208],{"class":798},"  \"caps\"",[788,1210,1211],{"class":794},": {\n",[788,1213,1215,1218,1220,1223],{"class":790,"line":1214},7,[788,1216,1217],{"class":798},"    \"budget_usd\"",[788,1219,802],{"class":794},[788,1221,1222],{"class":805},"5.0",[788,1224,1110],{"class":794},[788,1226,1228,1231,1233,1236],{"class":790,"line":1227},8,[788,1229,1230],{"class":798},"    \"budget_source\"",[788,1232,802],{"class":794},[788,1234,1235],{"class":1143},"\"item\"",[788,1237,1110],{"class":794},[788,1239,1241,1244,1246,1248],{"class":790,"line":1240},9,[788,1242,1243],{"class":798},"    \"daily_usd\"",[788,1245,802],{"class":794},[788,1247,817],{"class":805},[788,1249,1110],{"class":794},[788,1251,1253,1256,1259,1262,1264,1267,1269,1272,1274,1277,1279,1282],{"class":790,"line":1252},10,[788,1254,1255],{"class":798},"    \"nodes\"",[788,1257,1258],{"class":794},": {",[788,1260,1261],{"class":798},"\"implement\"",[788,1263,1258],{"class":794},[788,1265,1266],{"class":798},"\"attempts\"",[788,1268,802],{"class":794},[788,1270,1271],{"class":805},"3",[788,1273,809],{"class":794},[788,1275,1276],{"class":798},"\"wall_clock_s\"",[788,1278,802],{"class":794},[788,1280,1281],{"class":805},"7200",[788,1283,1284],{"class":794},"}}\n",[788,1286,1288],{"class":790,"line":1287},11,[788,1289,1290],{"class":794},"  }\n",[788,1292,1294],{"class":790,"line":1293},12,[788,1295,820],{"class":794},[556,1297,1298,1306],{},[559,1299,1300],{},[562,1301,1302,1304],{},[565,1303,885],{},[565,1305,891],{},[572,1307,1308,1322,1344,1354,1381,1394],{},[562,1309,1310,1315],{},[577,1311,1312],{},[544,1313,1314],{},"nodes",[577,1316,1317,1318,1321],{},"The chain that would be filed, in ",[544,1319,1320],{},"chain_definition","'s own node shape.",[562,1323,1324,1329],{},[577,1325,1326],{},[544,1327,1328],{},"skipped",[577,1330,1331,1332,1335,1336,1339,1340,1343],{},"Every node the attachments or ",[544,1333,1334],{},"skip_nodes"," dropped. ",[544,1337,1338],{},"covered_by"," names the attachment kind that made it redundant, and ",[544,1341,1342],{},"skip"," is your own choice.",[562,1345,1346,1351],{},[577,1347,1348],{},[544,1349,1350],{},"gates",[577,1352,1353],{},"The ids of the gate nodes left in the chain.",[562,1355,1356,1364],{},[577,1357,1358,809,1361],{},[544,1359,1360],{},"caps.budget_usd",[544,1362,1363],{},"caps.budget_source",[577,1365,1366,1367,1369,1370,1372,1373,863,1376,826,1378,1380],{},"The create route's own cap resolution: ",[544,1368,1235],{}," for the body's own ",[544,1371,870],{},", else ",[544,1374,1375],{},"\"policy\"",[544,1377,870],{},[544,1379,829],{}," when no cap applies.",[562,1382,1383,1388],{},[577,1384,1385],{},[544,1386,1387],{},"caps.daily_usd",[577,1389,1390,931,1392,554],{},[544,1391,776],{},[544,1393,829],{},[562,1395,1396,1401],{},[577,1397,1398],{},[544,1399,1400],{},"caps.nodes",[577,1402,1403,1404,1407,1408,1411],{},"Each fix-loop node's ",[544,1405,1406],{},"attempts"," and ",[544,1409,1410],{},"wall_clock_s",", resolved as the walk resolves them. See below.",[526,1413,1414,1415,1418,1419,809,1422,1072,1425,1428],{},"A dry run skips everything after those checks: it has no ",[544,1416,1417],{},"slots"," key, no ",[544,1420,1421],{},"repo_warning",[544,1423,1424],{},"duplicate_warning",[544,1426,1427],{},"bead_warning",", and it files no bead and copies no attachment.",[526,1430,1431,1433,1434,1438,1439,1442,1443,1445],{},[544,1432,1400],{}," resolves the way the ",[530,1435,1437],{"href":1436},"\u002Fconcepts\u002Fvocabulary#walk","walk"," resolves caps at run time: the node's own ",[544,1440,1441],{},"policy",", the ",[544,1444,1063],{}," entry and any item-wide override are layered on in the same order. A node's own override and an item-wide value each show where they apply.",[761,1447,482],{"id":1448},"events",[766,1450,1452],{"id":1451},"get-apiwork-itemsidevents",[544,1453,623],{},[526,1455,1456,1457,1460,1461,554],{},"Reads an item's events, oldest first. Each row is ",[544,1458,1459],{},"{seq, work_item_id, type, payload, node_id, created_at}",": see ",[530,1462,482],{"href":483},[556,1464,1465,1479],{},[559,1466,1467],{},[562,1468,1469,1472,1474,1477],{},[565,1470,1471],{},"Query",[565,1473,888],{},[565,1475,1476],{},"Default",[565,1478,891],{},[572,1480,1481,1502,1524],{},[562,1482,1483,1488,1491,1496],{},[577,1484,1485],{},[544,1486,1487],{},"after_seq",[577,1489,1490],{},"integer",[577,1492,1493],{},[544,1494,1495],{},"0",[577,1497,1498,1499,554],{},"Return events with a greater ",[544,1500,1501],{},"seq",[562,1503,1504,1509,1511,1514],{},[577,1505,1506],{},[544,1507,1508],{},"before_seq",[577,1510,1490],{},[577,1512,1513],{},"none",[577,1515,1516,1517,1520,1521,1523],{},"Page backward instead: return the last ",[544,1518,1519],{},"limit"," events with ",[544,1522,1501],{}," below it.",[562,1525,1526,1530,1532,1540],{},[577,1527,1528],{},[544,1529,1519],{},[577,1531,1490],{},[577,1533,1534,1535,859,1538],{},"none, or ",[544,1536,1537],{},"100",[544,1539,1508],{},[577,1541,1542,1543,1546,1547,1550,1551,1553,1554,1556],{},"At most this many events, from ",[544,1544,1545],{},"1"," to ",[544,1548,1549],{},"500",". With ",[544,1552,1487],{}," alone it bounds the forward window to the first ",[544,1555,1519],{}," events after it.",[526,1558,1559,1560,1562,1563,1565,1566,826,1568,1570],{},"Without ",[544,1561,1508],{},", the route returns every event after ",[544,1564,1487],{},". With it, ",[544,1567,1519],{},[544,1569,1537],{}," when omitted.",[556,1572,1573,1581],{},[559,1574,1575],{},[562,1576,1577,1579],{},[565,1578,945],{},[565,1580,948],{},[572,1582,1583,1591],{},[562,1584,1585,1589],{},[577,1586,1587],{},[544,1588,967],{},[577,1590,970],{},[562,1592,1593,1597],{},[577,1594,1595],{},[544,1596,913],{},[577,1598,1599,1601,1602,1546,1604,931,1606,1407,1608,1610],{},[544,1600,1519],{}," is outside ",[544,1603,1545],{},[544,1605,1549],{},[544,1607,1487],{},[544,1609,1508],{}," are both given.",[761,1612,1614],{"id":1613},"diff-and-review","Diff and review",[766,1616,1618],{"id":1617},"get-apiwork-itemsiddiff",[544,1619,636],{},[526,1621,1622,1623,1626,1627,826,1630,1546,1633,1635],{},"Answers the changes the agents made, for a reviewer with no filesystem access. It keeps two ranges apart: the top level is ",[544,1624,1625],{},"HEAD"," to the working tree (the uncommitted part, usually empty at a gate), and ",[544,1628,1629],{},"landed",[544,1631,1632],{},"base_ref",[544,1634,1625],{}," (what the chain's nodes committed).",[556,1637,1638,1650],{},[559,1639,1640],{},[562,1641,1642,1644,1646,1648],{},[565,1643,1471],{},[565,1645,888],{},[565,1647,1476],{},[565,1649,891],{},[572,1651,1652],{},[562,1653,1654,1659,1662,1667],{},[577,1655,1656],{},[544,1657,1658],{},"ignore_whitespace",[577,1660,1661],{},"boolean",[577,1663,1664],{},[544,1665,1666],{},"false",[577,1668,1669,1670,1673,1674,1677,1678,1681,1682,1685],{},"As ",[544,1671,1672],{},"git diff -w",". A file whose only change is whitespace drops out of ",[544,1675,1676],{},"files",", the per-file counts and ",[544,1679,1680],{},"diff"," together, so the three never disagree. ",[544,1683,1684],{},"untracked"," does not follow it.",[526,1687,1688,1689,809,1692,809,1694,809,1696,809,1698,809,1700,809,1703,1705,1706,1708,1709,1712,1713,1407,1716,1719,1720,1722,1723,554],{},"The answer carries ",[544,1690,1691],{},"work_item_id",[544,1693,1632],{},[544,1695,1676],{},[544,1697,1680],{},[544,1699,1684],{},[544,1701,1702],{},"truncated",[544,1704,1658],{}," (the value it used), ",[544,1707,1629],{}," (",[544,1710,1711],{},"{commits, files, diff, truncated}","), ",[544,1714,1715],{},"diff_max_bytes",[544,1717,1718],{},"worktree_path",". An item with no ",[544,1721,1632],{}," answers the same keys empty, with ",[544,1724,1725],{},"base_ref: null",[556,1727,1728,1736],{},[559,1729,1730],{},[562,1731,1732,1734],{},[565,1733,945],{},[565,1735,948],{},[572,1737,1738,1755,1764],{},[562,1739,1740,1744],{},[577,1741,1742],{},[544,1743,967],{},[577,1745,1746,1747,554],{},"The item has no worktree on disk. See ",[530,1748,1750,1751,1754],{"href":1749},"\u002Freference\u002Fhttp-api\u002Fwork-item-object#the-worktree_exists-field","The ",[544,1752,1753],{},"worktree_exists"," field",[562,1756,1757,1761],{},[577,1758,1759],{},[544,1760,977],{},[577,1762,1763],{},"A sandboxed worker can still write the worktree, so host git does not read it.",[562,1765,1766,1770],{},[577,1767,1768],{},[544,1769,1549],{},[577,1771,1772],{},"Git could not read the worktree.",[766,1774,1776],{"id":1775},"get-apiwork-itemsidcompare",[544,1777,649],{},[526,1779,1780],{},"Diffs any two review targets of the pending gate.",[556,1782,1783,1795],{},[559,1784,1785],{},[562,1786,1787,1789,1791,1793],{},[565,1788,1471],{},[565,1790,888],{},[565,1792,1476],{},[565,1794,891],{},[572,1796,1797,1818,1834,1852,1873,1892],{},[562,1798,1799,1804,1807,1812],{},[577,1800,1801],{},[544,1802,1803],{},"from",[577,1805,1806],{},"target",[577,1808,1809],{},[544,1810,1811],{},"base",[577,1813,1814,1815,554],{},"The older side. It cannot be ",[544,1816,1817],{},"latest",[562,1819,1820,1825,1827,1831],{},[577,1821,1822],{},[544,1823,1824],{},"to",[577,1826,1806],{},[577,1828,1829],{},[544,1830,1817],{},[577,1832,1833],{},"The newer side.",[562,1835,1836,1840,1843,1845],{},[577,1837,1838],{},[544,1839,1314],{},[577,1841,1842],{},"string",[577,1844,1513],{},[577,1846,1847,1848,1851],{},"Comma-separated node ids. Only files those nodes touched are kept, and ",[544,1849,1850],{},"groups"," lists each node's files.",[562,1853,1854,1858,1860,1864],{},[577,1855,1856],{},[544,1857,1658],{},[577,1859,1661],{},[577,1861,1862],{},[544,1863,1666],{},[577,1865,1866,1867,863,1870,1685],{},"As on ",[544,1868,1869],{},"\u002Fdiff",[544,1871,1872],{},"touched_by",[562,1874,1875,1880,1882,1884],{},[577,1876,1877],{},[544,1878,1879],{},"file",[577,1881,1842],{},[577,1883,1513],{},[577,1885,1886,1887,1889,1890,554],{},"A repository-relative path. Only that file is kept, in ",[544,1888,1676],{}," and in ",[544,1891,1680],{},[562,1893,1894,1899,1901,1904],{},[577,1895,1896],{},[544,1897,1898],{},"context",[577,1900,1490],{},[577,1902,1903],{},"git's 3",[577,1905,1906],{},"Unchanged lines around each change, 0 to 1000000. A number past the file's length gives the whole file.",[526,1908,1909,1910,809,1912,1914,1915,1072,1918,1921,1922,1407,1924,1926,1927,1712,1930,809,1933,1935,1936,1407,1938,1712,1941,809,1943,809,1945,809,1947,809,1949,1407,1951,554],{},"A target is ",[544,1911,1811],{},[544,1913,1817],{}," (the working tree), ",[544,1916,1917],{},"last_review",[544,1919,1920],{},"attempt:N",". The answer carries ",[544,1923,1803],{},[544,1925,1824],{}," (each ",[544,1928,1929],{},"{target, sha}",[544,1931,1932],{},"rebased",[544,1934,1676],{}," (each with ",[544,1937,1872],{},[544,1939,1940],{},"viewed",[544,1942,1850],{},[544,1944,1680],{},[544,1946,1684],{},[544,1948,1702],{},[544,1950,1658],{},[544,1952,1715],{},[556,1954,1955,1963],{},[559,1956,1957],{},[562,1958,1959,1961],{},[565,1960,945],{},[565,1962,948],{},[572,1964,1965,1983,1995,2004,2015],{},[562,1966,1967,1972],{},[577,1968,1969],{},[544,1970,1971],{},"400",[577,1973,1974,1975,826,1977,1979,1980,1982],{},"A target is not one of the four, or ",[544,1976,1803],{},[544,1978,1817],{},". Or ",[544,1981,1879],{}," is empty, absolute, or leaves the repository.",[562,1984,1985,1989],{},[577,1986,1987],{},[544,1988,967],{},[577,1990,1991,1992,1994],{},"No review has been submitted for the gate (",[544,1993,1917],{},"), the gate has no such attempt, or the item has no worktree on disk.",[562,1996,1997,2001],{},[577,1998,1999],{},[544,2000,977],{},[577,2002,2003],{},"The item has no base commit, or a sandboxed worker can still write the worktree.",[562,2005,2006,2010],{},[577,2007,2008],{},[544,2009,913],{},[577,2011,2012,2014],{},[544,2013,1898],{}," is not a number from 0 to 1000000.",[562,2016,2017,2021],{},[577,2018,2019],{},[544,2020,1549],{},[577,2022,2023],{},"Git could not diff the two targets.",[766,2025,2027],{"id":2026},"put-apiwork-itemsidviewed",[544,2028,662],{},[526,2030,2031,2032,2035,2036,2038,2039,2041,2042,2044,2045,2048,2049,2051],{},"Marks a file viewed. ",[544,2033,2034],{},"?file=\u003Cpath>&to=\u003Ctarget>"," names it: ",[544,2037,1879],{}," is a repository-relative path, and ",[544,2040,1824],{}," is a compare target, ",[544,2043,1817],{}," by default. The answer is ",[544,2046,2047],{},"{file, to, viewed}",", with ",[544,2050,1940],{}," true.",[526,2053,2054,2055,2057,2058,2060],{},"A mark belongs to the file's content at ",[544,2056,1824],{},", not to the ",[544,2059,1803],{}," side. A file that has not changed since you ticked it stays ticked in any other comparison, and a new attempt that edits it clears the tick.",[556,2062,2063,2071],{},[559,2064,2065],{},[562,2066,2067,2069],{},[565,2068,945],{},[565,2070,948],{},[572,2072,2073,2087,2099],{},[562,2074,2075,2079],{},[577,2076,2077],{},[544,2078,1971],{},[577,2080,2081,2083,2084,2086],{},[544,2082,1879],{}," is empty, absolute, or leaves the repository. Or ",[544,2085,1824],{}," is not a compare target.",[562,2088,2089,2093],{},[577,2090,2091],{},[544,2092,967],{},[577,2094,2095,2096,2098],{},"The item does not have the target ",[544,2097,1824],{},", or has no worktree on disk.",[562,2100,2101,2105],{},[577,2102,2103],{},[544,2104,977],{},[577,2106,2107],{},"A sandboxed worker can still write the worktree.",[766,2109,2111],{"id":2110},"delete-apiwork-itemsidviewed",[544,2112,675],{},[526,2114,2115,2116,2118,2119,2122],{},"Clears the mark, with the same query, answer (",[544,2117,1940],{}," false) and refusals as ",[544,2120,2121],{},"PUT",". It clears the mark on that content wherever it was made.",[766,2124,2126],{"id":2125},"get-apiwork-itemsidfix-target",[544,2127,688],{},[526,2129,2130,2131,2134,2135,2138,2139,2145,2146,554],{},"Answers where the work restarts if the reviewer requests changes now. It takes ",[544,2132,2133],{},"?node=&gate="," for a target the reviewer picked, and answers ",[544,2136,2137],{},"{gate, node, then, round, reason}",": the shape of ",[530,2140,2142],{"href":2141},"\u002Freference\u002Fhttp-api\u002Fwork-item-object#the-fix_target-field",[544,2143,2144],{},"fix_target"," with a ",[544,2147,2148],{},"reason",[526,2150,2151,2152,2155,2156,1407,2159,2162,2163,2165],{},"With no gate pending it gives what a gateless ",[544,2153,2154],{},"request_changes"," would target, with ",[544,2157,2158],{},"gate",[544,2160,2161],{},"round"," ",[544,2164,829],{},". It does git work per thread, so call it on demand.",[526,2167,2168,2170,2171,2174,2175,809,2178,931,2181,554],{},[544,2169,2148],{}," is one of ",[544,2172,2173],{},"requested"," (you named the node), ",[544,2176,2177],{},"threads on \u003Cpath or node>",[544,2179,2180],{},"current node",[544,2182,2158],{},[556,2184,2185,2193],{},[559,2186,2187],{},[562,2188,2189,2191],{},[565,2190,945],{},[565,2192,948],{},[572,2194,2195,2207,2219],{},[562,2196,2197,2201],{},[577,2198,2199],{},[544,2200,1971],{},[577,2202,2203,2206],{},[544,2204,2205],{},"node"," is not before the pending gate. With no gate pending, it is not at or before the item's current node.",[562,2208,2209,2213],{},[577,2210,2211],{},[544,2212,977],{},[577,2214,2215,2216,2218],{},"The item has ended, or ",[544,2217,2158],{}," is not pending.",[562,2220,2221,2225],{},[577,2222,2223],{},[544,2224,977],{},[577,2226,2227],{},"With no gate pending, the item has no current node, or its changes target cannot be worked out. The answer says why.",[766,2229,2231],{"id":2230},"post-apiwork-itemsidreview",[544,2232,701],{},[526,2234,2235,2236,826,2239,809,2242,1072,2244,863,2247,2250,2251,2254,2255,2257],{},"Submits a review on whichever gate is pending: ",[544,2237,2238],{},"outcome",[544,2240,2241],{},"approve",[544,2243,2154],{},[544,2245,2246],{},"comment",[530,2248,2249],{"href":77},"Review a change"," covers it. ",[544,2252,2253],{},"POST \u002Fapi\u002Fwork-items\u002F{id}\u002Fgates\u002F{gate}\u002Freview"," takes the same body for a named gate, and answers ",[544,2256,977],{}," when that gate is not pending.",[526,2259,2260,2261,2264,2265,2267,2268,2271,2272,2274,2275,2277],{},"A review with ",[544,2262,2263],{},"outcome: approve"," takes an optional ",[544,2266,707],{},", passed to the gate approval as ",[544,2269,2270],{},"POST \u002Fapi\u002Fwork-items\u002F{id}\u002Fgates\u002F{gate}\u002Fapprove"," takes it. A chain revision gate needs it: the one ",[544,2273,743],{}," returned. Without it, or with a stale one, the route answers ",[544,2276,977],{},". Any other gate ignores it.",[761,2279,2281],{"id":2280},"documents","Documents",[766,2283,2285],{"id":2284},"get-apiwork-itemsidattachmentskind",[544,2286,717],{},[526,2288,2289,2290,826,2293,1072,2296,2299,2300,2303,2304,2307,2308,554],{},"Reads the spec or plan attached at intake. ",[544,2291,2292],{},"kind",[544,2294,2295],{},"spec",[544,2297,2298],{},"plan",". It reads the copy Kraft keeps under ",[544,2301,2302],{},"run\u002Fattachments\u002F\u003Cid>\u002F",", the one the worktree gets when the item starts. Before the item starts nothing is indexed, so this is how the board and the phone open one, as do ",[544,2305,2306],{},"kraft view docs --attachment"," and the MCP tool ",[544,2309,2310],{},"get_attachment",[526,2312,2313,2314,809,2317,2319],{},"It answers ",[544,2315,2316],{},"{work_item_id, kind, path, title, content, truncated}",[544,2318,927],{}," being where the worktree puts it.",[556,2321,2322,2330],{},[559,2323,2324],{},[562,2325,2326,2328],{},[565,2327,945],{},[565,2329,948],{},[572,2331,2332,2341],{},[562,2333,2334,2338],{},[577,2335,2336],{},[544,2337,967],{},[577,2339,2340],{},"The item has no such attachment, or its copy is gone.",[562,2342,2343,2347],{},[577,2344,2345],{},[544,2346,913],{},[577,2348,2349,2351,2352,2354,2355,554],{},[544,2350,2292],{}," is neither ",[544,2353,2295],{}," nor ",[544,2356,2298],{},[766,2358,2360],{"id":2359},"get-apiwork-itemsiddocuments",[544,2361,730],{},[526,2363,2364,2365,2368,2369,2372,2373,2376,2377,2379],{},"Lists the documents linked to the item, newest first, as ",[544,2366,2367],{},"{work_item_id, documents}",". An attachment that is not indexed yet is listed as ",[544,2370,2371],{},"attachment:\u003Cid>:\u003Ckind>",", which ",[544,2374,2375],{},"GET \u002Fapi\u002Fdocuments\u002F{id}"," reads. It comes from the copy under ",[544,2378,2302],{}," while the item has no worktree directory, before it starts and after the worktree is removed.",[766,2381,2383],{"id":2382},"get-apiwork-itemsidartifact",[544,2384,743],{},[526,2386,2387,2388,2391,2392,2394,2395,2398],{},"Reads the pending gate's document from the item's worktree, as it is on disk now. It answers ",[544,2389,2390],{},"{work_item_id, path, absolute_path, title, content, truncated, artifact_max_bytes}",". A chain revision is rendered as its gate shows it, and the answer adds ",[544,2393,707],{},", which an approval sends back. ",[544,2396,2397],{},"kraft view artifact"," calls it.",[526,2400,2313,2401,2403],{},[544,2402,967],{}," when the gate has no artifact or the file cannot be read.",[766,2405,2407],{"id":2406},"get-apiwork-itemsidartifactskind",[544,2408,756],{},[526,2410,2411,2412,2414,2415,2418,2419,2423,2424,2426,2427,2429,2430,1372,2433,554],{},"Reads the document of ",[544,2413,2292],{}," a task wrote (its ",[544,2416,2417],{},"produces","), whether or not a gate is pending on it: what the task's ",[2420,2421,2422],"strong",{},"Output"," opens. ",[544,2425,2292],{}," must be one the item's chain names, as a task's ",[544,2428,2417],{}," or a gate's ",[544,2431,2432],{},"artifact",[544,2434,967],{},[526,2436,2437,2438,2440,2441,554],{},"It reads the item's worktree as ",[544,2439,743],{}," does, with a chain revision rendered as its gate shows it, and answers ",[544,2442,2443],{},"{kind, work_item_id, path, absolute_path, title, content, truncated}",[556,2445,2446,2454],{},[559,2447,2448],{},[562,2449,2450,2452],{},[565,2451,945],{},[565,2453,948],{},[572,2455,2456],{},[562,2457,2458,2462],{},[577,2459,2460],{},[544,2461,967],{},[577,2463,2464,2465,2468],{},"The file there is refused (a symlink, an unreadable file): the answer gives the reason, and the item's timeline records ",[544,2466,2467],{},"artifact_refused",". Or the worktree has no file and Kraft has no copy.",[526,2470,2471,2472,2475,2476,554],{},"With no file in the worktree it reads the copy the gate's approval indexed. That answer has the same fields with ",[544,2473,2474],{},"origin"," in place of ",[544,2477,2478],{},"absolute_path",[761,2480,2482],{"id":2481},"related","Related",[2484,2485,2486,2494,2499,2504],"ul",{},[2487,2488,2489,1407,2491,2493],"li",{},[530,2490,450],{"href":451},[530,2492,454],{"href":455},": the routes that file, change, decide and end a work item.",[2487,2495,2496,2498],{},[530,2497,458],{"href":459},": the fields these routes read from an item's detail.",[2487,2500,2501,2503],{},[530,2502,482],{"href":483},": every event type, and the WebSocket that streams them.",[2487,2505,2506,2508],{},[530,2507,76],{"href":77},": the review these routes carry, from the board.",[2510,2511,2512],"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 .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 .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}html pre.shiki code .semJd, html code.shiki .semJd{--shiki-light:#032563;--shiki-default:#032563;--shiki-dark:#ADDCFF}",{"title":784,"searchDepth":1099,"depth":1099,"links":2514},[2515,2521,2525,2529,2543,2553],{"id":763,"depth":1099,"text":764,"children":2516},[2517,2519],{"id":768,"depth":1113,"text":2518},"GET \u002Fapi\u002F​budget\u002F​today",{"id":846,"depth":1113,"text":2520},"POST \u002Fapi\u002F​work-​items\u002F​{id}\u002F​budget\u002F​raise",{"id":1047,"depth":1099,"text":1048,"children":2522},[2523],{"id":1051,"depth":1113,"text":2524},"POST \u002Fapi\u002F​work-​items?​dry_​run=​1",{"id":1448,"depth":1099,"text":482,"children":2526},[2527],{"id":1451,"depth":1113,"text":2528},"GET \u002Fapi\u002F​work-​items\u002F​{id}\u002F​events",{"id":1613,"depth":1099,"text":1614,"children":2530},[2531,2533,2535,2537,2539,2541],{"id":1617,"depth":1113,"text":2532},"GET \u002Fapi\u002F​work-​items\u002F​{id}\u002F​diff",{"id":1775,"depth":1113,"text":2534},"GET \u002Fapi\u002F​work-​items\u002F​{id}\u002F​compare",{"id":2026,"depth":1113,"text":2536},"PUT \u002Fapi\u002F​work-​items\u002F​{id}\u002F​viewed",{"id":2110,"depth":1113,"text":2538},"DELETE \u002Fapi\u002F​work-​items\u002F​{id}\u002F​viewed",{"id":2125,"depth":1113,"text":2540},"GET \u002Fapi\u002F​work-​items\u002F​{id}\u002F​fix-​target",{"id":2230,"depth":1113,"text":2542},"POST \u002Fapi\u002F​work-​items\u002F​{id}\u002F​review",{"id":2280,"depth":1099,"text":2281,"children":2544},[2545,2547,2549,2551],{"id":2284,"depth":1113,"text":2546},"GET \u002Fapi\u002F​work-​items\u002F​{id}\u002F​attachments\u002F​{kind}",{"id":2359,"depth":1113,"text":2548},"GET \u002Fapi\u002F​work-​items\u002F​{id}\u002F​documents",{"id":2382,"depth":1113,"text":2550},"GET \u002Fapi\u002F​work-​items\u002F​{id}\u002F​artifact",{"id":2406,"depth":1113,"text":2552},"GET \u002Fapi\u002F​work-​items\u002F​{id}\u002F​artifacts\u002F​{kind}",{"id":2481,"depth":1099,"text":2482},"The board's routes for the daily spend total, raising a budget, the dry run of a create, an item's events, its diff and review, and its documents.","md",null,{},true,{"title":462,"description":2554},"BHwC27VqZidlh_2fQeP66mXXzYQ2XK6Taee9SsHKN0s",[2562,2564],{"title":458,"path":459,"stem":460,"description":2563,"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.",{"title":466,"path":467,"stem":468,"description":2565,"children":-1},"The board's routes for connecting a repo, reading chain templates and harnesses, applying saved changes, checking for updates, disk use and opening editors.",1791801178133]