[{"data":1,"prerenderedAt":1172},["ShallowReactive",2],{"navigation_docs":3,"-reference-web-ui-review-page":520,"-reference-web-ui-review-page-surround":1167},[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":256,"body":522,"description":1160,"extension":1161,"links":1162,"meta":1163,"navigation":1164,"path":257,"seo":1165,"stem":258,"__hash__":1166},"docs\u002F5.reference\u002F00.web-ui\u002F5.review-page.md",{"type":523,"value":524,"toc":1143},"minimark",[525,538,545,557,562,582,586,596,621,624,643,647,663,666,670,677,697,700,707,711,735,752,767,781,786,789,813,816,820,845,848,852,911,915,936,940,961,1034,1039,1070,1084,1087,1113,1119,1123],[526,527,528,529,534,535,537],"p",{},"The review page shows an item's diff with a bar along the bottom that holds your review. This page names its parts: comparing, marking files viewed, commenting on a line, finishing a review and the page at a ",[530,531,533],"a",{"href":532},"\u002Fconcepts\u002Fvocabulary#gate","gate",". For what each outcome does, see ",[530,536,76],{"href":77},".",[526,539,540],{},[541,542],"img",{"alt":543,"src":544},"The review page: the file tree on the left, a pending thread on the whole change above a diff of calc.py, and a comment being written on lines −2 to +2 (the removed line and its replacement) with Must fix selected, above the Your review bar with Finish review","\u002Fassets\u002Freview.png",[526,546,547,551,552,556],{},[548,549,550],"strong",{},"Review changes"," opens the review page at ",[553,554,555],"code",{},"\u002Fwork-items\u002F\u003Cid>\u002Freview",". You can\nopen it at any point in the item's life, not only at a gate. The file tree is\non the left, the diff on the right, and a bar along the bottom holds your\nreview.",[558,559,561],"h2",{"id":560},"at-a-gate","At a gate",[526,563,564,566,567,570,571,574,575,578,579,581],{},[548,565,550],{}," from a waiting gate opens the review page with the gate's\ndocument first, rendered, and the gate along the top: its name, ",[548,568,569],{},"WAITING FOR\nYOU",", how many comments are pending, and ",[548,572,573],{},"Request changes"," and ",[548,576,577],{},"Approve",".\nThe changed files are listed on the right; ",[548,580,550],{}," below them\nswitches to the diff.",[558,583,585],{"id":584},"compare","Compare",[526,587,588,589,574,592,595],{},"The toolbar has two menus, ",[548,590,591],{},"Compare from",[548,593,594],{},"Compare to",":",[597,598,599,613],"ul",{},[600,601,602,604,605,608,609,612],"li",{},[548,603,591],{},": ",[548,606,607],{},"base",", the item's starting point; an earlier\nattempt; or ",[548,610,611],{},"your last review",", to see only what changed since you last\nsubmitted one.",[600,614,615,604,617,620],{},[548,616,594],{},[548,618,619],{},"latest (attempt N)",", the current state of the branch, or\nan earlier attempt.",[526,622,623],{},"Attempts are listed while a gate waits for you.",[526,625,626,629,630,634,635,638,639,642],{},[548,627,628],{},"All nodes ▾"," limits the diff to the files chosen ",[530,631,633],{"href":632},"\u002Fconcepts\u002Fvocabulary#node","nodes"," touched. On the\nright, the toolbar collapses or expands every file, and the list button holds\nthe diff settings: ",[548,636,637],{},"Side-by-side"," or ",[548,640,641],{},"Inline",", whitespace changes, changed\nwords, line wrapping, and one file at a time.",[558,644,646],{"id":645},"viewed","Viewed",[526,648,649,650,652,653,656,657,574,660,537],{},"Each file's header has ",[548,651,646],{},". Tick it once you have read the file: the\nfile folds to its header, the tree dims it, and the foot of the tree counts how\nmany you have viewed out of the total. Untick it and the file opens again. Each\nheader also has a button to comment on the whole file, and a ",[548,654,655],{},"⋮"," menu with\n",[548,658,659],{},"Copy diff",[548,661,662],{},"Copy path",[526,664,665],{},"In the tree, each file has an icon for its kind: code, a shell script,\nconfiguration, Markdown, or any other file.",[558,667,669],{"id":668},"unchanged-lines","Unchanged lines",[526,671,672,673,676],{},"A diff shows three unchanged lines around each change. The row that heads each\nblock of changes, the one starting with ",[553,674,675],{},"@@",", has arrows for the lines left out\nabove it:",[597,678,679,685,691],{},[600,680,681,684],{},[548,682,683],{},"↑"," shows 20 more lines above the block.",[600,686,687,690],{},[548,688,689],{},"↓"," shows 20 more lines below the block before it.",[600,692,693,696],{},[548,694,695],{},"↕"," shows every line in between. A gap of 20 lines or fewer has only this\none.",[526,698,699],{},"A row at the foot of the file does the same for the lines after the last\nchange. You comment on a line shown this way as on any other. A new or deleted\nfile has no arrows, since the diff already holds all of it.",[526,701,702,703,706],{},"A thread on a line the diff leaves out, one you added this way or one filed\nwith ",[553,704,705],{},"kraft item comment",", has its line shown when the page loads, with three\nlines either side, and sits under it. A file too large to read whole keeps\nsuch a thread in the list at the foot of the page.",[558,708,710],{"id":709},"commenting-on-a-line","Commenting on a line",[526,712,713,714,717,718,720,721,723,724,727,728,638,731,734],{},"Hover a line and click the ",[548,715,716],{},"+"," that appears at the left of its number. To\ncomment on a few lines, drag the ",[548,719,716],{}," down to the last one you want; the\nlines shade as you go. A drag stays inside one hunk of the diff. For a longer\nrange, click the first line's ",[548,722,716],{}," or number, then ",[548,725,726],{},"Shift","-click the last\none's. Dragging down the numbers picks a range too. ",[548,729,730],{},"c",[548,732,733],{},"Enter"," also\nopens the box on a pick.",[526,736,737,738,740,741,743,744,746,747,749,750,537],{},"Each side has its own lines. In ",[548,739,637],{},", each half has its own ",[548,742,716],{},".\nIn ",[548,745,641],{},", an unchanged line has two numbers. To comment on the old file's\nline, click the left number, then ",[548,748,716],{},". To comment on the new file's line,\nclick the right number, then ",[548,751,716],{},[526,753,754,755,757,758,760,761,763,764,766],{},"A range can run across sides, as GitLab's and GitHub's do. Drag from a removed\nline's ",[548,756,716],{}," down to the line that replaced it, or ",[548,759,726],{},"-click it. In\n",[548,762,637],{},", drag or ",[548,765,726],{},"-click across to the right half. The range\nthen covers every line between its two ends.",[526,768,769,770,773,774,773,777,780],{},"A comment box opens under the last line. Its header names the lines, marked as\nthe diff marks them: ",[548,771,772],{},"Line +5",", ",[548,775,776],{},"Lines +5 to +7",[548,778,779],{},"Lines −2 to +2",". The\nthread it makes is headed the same way.",[782,783,785],"h3",{"id":784},"moving-the-range","Moving the range",[526,787,788],{},"While the box is open, the shaded range has a small handle on its first and last\nrows.",[597,790,791,794,806],{},[600,792,793],{},"Drag one to move that end, even past the other end, which flips the range.",[600,795,796,798,799,638,802,805],{},[548,797,726],{},"-click another line, or press ",[548,800,801],{},"Shift+↑",[548,803,804],{},"Shift+↓",", to move the\nend too.",[600,807,808,809,812],{},"The box keeps what you wrote, and ",[548,810,811],{},"×"," next to the lines goes back to the\nlast line alone.",[526,814,815],{},"A suggested change you typed moves with the range, and the box says which lines\nit was written for; on a range across sides it is set aside, and not sent, until\nthe start is back on the new side.",[782,817,819],{"id":818},"after-you-add-the-comment","After you add the comment",[597,821,822,825,835],{},[600,823,824],{},"Once you add the comment, its thread stays under the last line, headed with the\nlines it covers.",[600,826,827,828,831,832,537],{},"A thread on no file, such as one from ",[553,829,830],{},"kraft item comment --body"," alone, is\nlisted above the files under ",[548,833,834],{},"On the whole change",[600,836,837,838,840,841,844],{},"A range's lines stay shaded and are quoted in the thread, and the agent that\nreads the thread gets the same quote, as it does for one made with\n",[553,839,705],{}," or an agent's ",[553,842,843],{},"add_review_comment",", which Kraft quotes\nfrom the diff.",[526,846,847],{},"The pick clears when the box closes.",[782,849,851],{"id":850},"in-the-comment-box","In the comment box",[597,853,854,877,884,890],{},[600,855,856,857,773,860,773,863,638,866,869,870,872,873,537],{},"Pick a label: ",[548,858,859],{},"No label",[548,861,862],{},"Must fix",[548,864,865],{},"Question",[548,867,868],{},"Nit",". What a\n",[548,871,862],{}," label blocks is in\n",[530,874,876],{"href":875},"\u002Fguides\u002Fday-to-day\u002Freview-a-change#block-approval-with-a-must-fix","Must-fix",[600,878,879,880,883],{},"Write the comment. Markdown works, and ",[548,881,882],{},"Preview"," shows it rendered.",[600,885,886,889],{},[548,887,888],{},"± Suggest change",", on lines of the new side, adds the lines you picked,\nfor you to edit into the code you want. Left as it was, it is not sent. It\nis off for a range that runs across lines the diff does not show, and a range\nacross sides has none.",[600,891,892,895,896,899,900,903,904,638,907,910],{},[548,893,894],{},"Add to review",", or ",[548,897,898],{},"⌘↵"," (",[548,901,902],{},"Ctrl+Enter","), keeps it as a draft. Drafts\nreach no agent until you finish the review. ",[548,905,906],{},"Cancel",[548,908,909],{},"Esc"," asks\nbefore it throws away what you wrote.",[782,912,914],{"id":913},"from-the-keyboard","From the keyboard",[526,916,917,918,922,923,926,927,929,930,932,933,935],{},"The keys that pick a line, extend the pick, comment and move between files are\nin ",[530,919,921],{"href":920},"\u002Freference\u002Fweb-ui\u002Fsidebar-search-and-keyboard#keyboard-shortcuts","Keyboard shortcuts",".\n",[548,924,925],{},"Tab"," from the lines reaches the picked line's ",[548,928,716],{},". ",[548,931,726],{}," with the\narrows keeps to one side, so a range that crosses sides is made with the mouse:\nthe handles or ",[548,934,726],{},"-click.",[558,937,939],{"id":938},"finish-review","Finish review",[526,941,942,943,946,947,929,950,952,953,956,957,960],{},"The bar at the bottom reads ",[548,944,945],{},"Your review"," with your drafts counted:\n",[548,948,949],{},"N pending, N must fix, N unlabeled",[548,951,939],{}," opens ",[548,954,955],{},"Finish your\nreview",", which lists the drafts it will send, takes an optional overall note,\nand offers three outcomes. ",[530,958,76],{"href":959},"\u002Fguides\u002Fday-to-day\u002Freview-a-change#comment-and-send-a-review-from-the-cli","\nsays what each one does.",[962,963,964,980],"table",{},[965,966,967],"thead",{},[968,969,970,974,977],"tr",{},[971,972,973],"th",{},"Outcome",[971,975,976],{},"Offered when",[971,978,979],{},"What it does",[981,982,983,1000,1017],"tbody",{},[968,984,985,990,993],{},[986,987,988],"td",{},[548,989,573],{},[986,991,992],{},"Fix rounds are left, the item is not done, cancelled or archived, and the dialog has found the node it would send the threads to.",[986,994,995,996,999],{},"Shows, before you submit, where the work will restart, the nodes that run after it, and which fix round this would be (",[548,997,998],{},"Fix round N of M",").",[968,1001,1002,1007,1014],{},[986,1003,1004],{},[548,1005,1006],{},"Comment only",[986,1008,1009,1010,1013],{},"Always. Outside a gate, the server refuses it with a ",[553,1011,1012],{},"409"," when nothing ahead in the chain will read the comments.",[986,1015,1016],{},"Sends the threads without stopping anything. Agents answer questions in the thread; at a gate, the gate stays open.",[968,1018,1019,1023,1026],{},[986,1020,1021],{},[548,1022,577],{},[986,1024,1025],{},"Only at a gate.",[986,1027,1028,1029,1033],{},"The same as ",[530,1030,1032],{"href":1031},"\u002Freference\u002Fweb-ui\u002Fitem-page#a-gate-that-is-waiting","Approve on the gate",". It stays grayed out while a must-fix thread is open.",[526,1035,1036,1038],{},[548,1037,573],{}," reads the same target the submit acts on, so the dialog and the submit cannot differ.",[597,1040,1041,1060],{},[600,1042,1043,1044,1054,1055,537],{},"At a gate the dialog reads ",[548,1045,1046,1047,1050,1051],{},"Reject ",[1048,1049,533],"em",{}," · goes back to ",[1048,1052,1053],{},"node",", and its\nbutton reads ",[548,1056,1057,1058],{},"Reject to ",[1048,1059,1053],{},[600,1061,1062,1063,1066,1067,1069],{},"When no fix rounds are left, the dialog says ",[548,1064,1065],{},"No fix rounds left"," and\n",[548,1068,573],{}," is disabled.",[526,1071,1072,1075,1076,1078,1079,1083],{},[548,1073,1074],{},"Submit review"," sends it (at a gate, with ",[548,1077,573],{}," chosen, the\nbutton reads ",[548,1080,1057,1081],{},[1048,1082,1053],{}," instead).",[526,1085,1086],{},"Once a review has gone out:",[597,1088,1089,1101],{},[600,1090,1091,1092,1095,1096,1066,1098,1100],{},"The bar reads ",[548,1093,1094],{},"N of M resolved"," and offers ",[548,1097,573],{},[548,1099,577],{}," directly.",[600,1102,1103,1104,1106,1107,952,1109,1112],{},"A comment you add after that shows there as pending, ",[548,1105,939],{}," comes\nback beside them, and ",[548,1108,577],{},[548,1110,1111],{},"Finish your review"," first, so a new\ncomment is never sent with an approval unseen.",[526,1114,1115,1118],{},[530,1116,76],{"href":1117},"\u002Fguides\u002Fday-to-day\u002Freview-a-change#comment-and-finish-a-review-in-the-web-ui"," lists the CLI verb\nbehind each of these.",[558,1120,1122],{"id":1121},"related","Related",[597,1124,1125,1130],{},[600,1126,1127,1129],{},[530,1128,76],{"href":77},": what comment, approve and request changes do, and the CLI verb for each.",[600,1131,1132,1134,1135,1137,1138,574,1140,537],{},[530,1133,244],{"href":245},": the page ",[548,1136,550],{}," is opened from, and the gate card with ",[548,1139,577],{},[548,1141,1142],{},"Reject…",{"title":1144,"searchDepth":1145,"depth":1145,"links":1146},"",2,[1147,1148,1149,1150,1151,1158,1159],{"id":560,"depth":1145,"text":561},{"id":584,"depth":1145,"text":585},{"id":645,"depth":1145,"text":646},{"id":668,"depth":1145,"text":669},{"id":709,"depth":1145,"text":710,"children":1152},[1153,1155,1156,1157],{"id":784,"depth":1154,"text":785},3,{"id":818,"depth":1154,"text":819},{"id":850,"depth":1154,"text":851},{"id":913,"depth":1154,"text":914},{"id":938,"depth":1145,"text":939},{"id":1121,"depth":1145,"text":1122},"The review page's Compare toolbar, Viewed marks, line comments and Finish review dialog, and how the page opens at a gate.","md",null,{},true,{"title":256,"description":1160},"pLTVBXXJHRaJjEDF-CQdiUDGY9bJOXblLiflu2cH14U",[1168,1170],{"title":252,"path":253,"stem":254,"description":1169,"children":-1},"What the Config tabs show before Start, where each value comes from, and how a draft of overrides is reviewed and applied.",{"title":260,"path":261,"stem":262,"description":1171,"children":-1},"The Templates screens for chains and the library, each Settings screen, and a repo's fields.",1791801164797]