[{"data":1,"prerenderedAt":1112},["ShallowReactive",2],{"navigation_docs":3,"-reference-chain-nodes-result-file":270,"-reference-chain-nodes-result-file-surround":1107},[4,28,51,110,243],{"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},"Troubleshooting and FAQ","\u002Fget-started\u002Ftroubleshooting","1.get-started\u002F3.troubleshooting",{"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},"Vocabulary","\u002Fconcepts\u002Fvocabulary","2.concepts\u002F1.vocabulary",{"title":40,"path":41,"stem":42},"How a work item runs","\u002Fconcepts\u002Fhow-a-work-item-runs","2.concepts\u002F2.how-a-work-item-runs",{"title":44,"path":45,"stem":46},"Caps and budgets","\u002Fconcepts\u002Fcaps-and-budgets","2.concepts\u002F3.caps-and-budgets",{"title":48,"path":49,"stem":50},"Why a permission gate","\u002Fconcepts\u002Fpermission-gate","2.concepts\u002F4.permission-gate",{"title":52,"path":53,"stem":54,"children":55},"Guides","\u002Fguides","3.guides",[56,58,62,66,70,74,78,82,86,90,94,98,102,106],{"title":10,"path":53,"stem":57},"3.guides\u002Findex",{"title":59,"path":60,"stem":61},"Use Kraft from your agent","\u002Fguides\u002Fagent-integration","3.guides\u002F01.agent-integration",{"title":63,"path":64,"stem":65},"Kraft Lite","\u002Fguides\u002Fkraft-lite","3.guides\u002F02.kraft-lite",{"title":67,"path":68,"stem":69},"Remote access","\u002Fguides\u002Fremote-access","3.guides\u002F03.remote-access",{"title":71,"path":72,"stem":73},"Add or override a harness","\u002Fguides\u002Fadding-a-harness","3.guides\u002F04.adding-a-harness",{"title":75,"path":76,"stem":77},"Schedule or webhook work","\u002Fguides\u002Fschedule-and-webhook-work","3.guides\u002F05.schedule-and-webhook-work",{"title":79,"path":80,"stem":81},"Add a security review or a gate reviewer","\u002Fguides\u002Fadd-review-agents","3.guides\u002F06.add-review-agents",{"title":83,"path":84,"stem":85},"Kraft for VS Code","\u002Fguides\u002Fvscode","3.guides\u002F07.vscode",{"title":87,"path":88,"stem":89},"Reviewing a change","\u002Fguides\u002Freview-a-change","3.guides\u002F08.review-a-change",{"title":91,"path":92,"stem":93},"Write your own chain","\u002Fguides\u002Fwrite-your-own-chain","3.guides\u002F09.write-your-own-chain",{"title":95,"path":96,"stem":97},"Switch a harness","\u002Fguides\u002Fswitch-harness","3.guides\u002F10.switch-harness",{"title":99,"path":100,"stem":101},"Upgrade your templates","\u002Fguides\u002Fupgrading-templates","3.guides\u002F11.upgrading-templates",{"title":103,"path":104,"stem":105},"Operations","\u002Fguides\u002Foperations","3.guides\u002F12.operations",{"title":107,"path":108,"stem":109},"Worker Kit","\u002Fguides\u002Fworker-kit","3.guides\u002F13.worker-kit",{"title":111,"path":112,"stem":113,"children":114},"Reference","\u002Freference","4.reference",[115,117,139,183,201,205,227,231,235,239],{"title":10,"path":112,"stem":116},"4.reference\u002Findex",{"title":118,"path":119,"stem":120,"children":121},"CLI","\u002Freference\u002Fcli","4.reference\u002F1.cli\u002Findex",[122,123,127,131,135],{"title":10,"path":119,"stem":120},{"title":124,"path":125,"stem":126},"Item verbs","\u002Freference\u002Fcli\u002Fitem","4.reference\u002F1.cli\u002F2.item",{"title":128,"path":129,"stem":130},"View verbs","\u002Freference\u002Fcli\u002Fview","4.reference\u002F1.cli\u002F3.view",{"title":132,"path":133,"stem":134},"Repo verbs","\u002Freference\u002Fcli\u002Frepo","4.reference\u002F1.cli\u002F4.repo",{"title":136,"path":137,"stem":138},"Admin verbs","\u002Freference\u002Fcli\u002Fadmin","4.reference\u002F1.cli\u002F5.admin",{"title":140,"path":141,"stem":142,"children":143},"Configuration","\u002Freference\u002Fconfiguration","4.reference\u002F2.configuration\u002Findex",[144,145,155,159,163,167,171,175,179],{"title":10,"path":141,"stem":142},{"title":146,"path":147,"stem":148,"children":149},"Repos","\u002Freference\u002Fconfiguration\u002Frepos","4.reference\u002F2.configuration\u002F2.repos\u002Findex",[150,151],{"title":10,"path":147,"stem":148},{"title":152,"path":153,"stem":154},"Workspaces","\u002Freference\u002Fconfiguration\u002Frepos\u002Fworkspaces","4.reference\u002F2.configuration\u002F2.repos\u002F3.workspaces",{"title":156,"path":157,"stem":158},"Policy","\u002Freference\u002Fconfiguration\u002Fpolicy","4.reference\u002F2.configuration\u002F3.policy",{"title":160,"path":161,"stem":162},"Library and chains","\u002Freference\u002Fconfiguration\u002Flibrary-and-chains","4.reference\u002F2.configuration\u002F4.library-and-chains",{"title":164,"path":165,"stem":166},"Harnesses file","\u002Freference\u002Fconfiguration\u002Fharnesses-file","4.reference\u002F2.configuration\u002F5.harnesses-file",{"title":168,"path":169,"stem":170},"Access","\u002Freference\u002Fconfiguration\u002Faccess","4.reference\u002F2.configuration\u002F6.access",{"title":172,"path":173,"stem":174},"Intake","\u002Freference\u002Fconfiguration\u002Fintake","4.reference\u002F2.configuration\u002F7.intake",{"title":176,"path":177,"stem":178},"Sandbox host","\u002Freference\u002Fconfiguration\u002Fsandbox","4.reference\u002F2.configuration\u002F8.sandbox",{"title":180,"path":181,"stem":182},"Environment variables","\u002Freference\u002Fconfiguration\u002Fenvironment-variables","4.reference\u002F2.configuration\u002F9.environment-variables",{"title":184,"path":185,"stem":186,"children":187},"Chain nodes","\u002Freference\u002Fchain-nodes","4.reference\u002F3.chain-nodes\u002Findex",[188,189,193,197],{"title":10,"path":185,"stem":186},{"title":190,"path":191,"stem":192},"Subprocess tasks","\u002Freference\u002Fchain-nodes\u002Fsubprocess-tasks","4.reference\u002F3.chain-nodes\u002F2.subprocess-tasks",{"title":194,"path":195,"stem":196},"Fix loop and judge","\u002Freference\u002Fchain-nodes\u002Ffix-loop","4.reference\u002F3.chain-nodes\u002F3.fix-loop",{"title":198,"path":199,"stem":200},"Result file","\u002Freference\u002Fchain-nodes\u002Fresult-file","4.reference\u002F3.chain-nodes\u002F4.result-file",{"title":202,"path":203,"stem":204},"Permission gate","\u002Freference\u002Fpermissions","4.reference\u002F4.permissions",{"title":206,"path":207,"stem":208,"children":209},"Agent harnesses","\u002Freference\u002Fharnesses","4.reference\u002F5.harnesses\u002Findex",[210,211,215,219,223],{"title":10,"path":207,"stem":208},{"title":212,"path":213,"stem":214},"Unattended runs","\u002Freference\u002Fharnesses\u002Funattended-runs","4.reference\u002F5.harnesses\u002F2.unattended-runs",{"title":216,"path":217,"stem":218},"Agent profiles","\u002Freference\u002Fharnesses\u002Fagent-profiles","4.reference\u002F5.harnesses\u002F3.agent-profiles",{"title":220,"path":221,"stem":222},"Harness files","\u002Freference\u002Fharnesses\u002Fharness-files","4.reference\u002F5.harnesses\u002F4.harness-files",{"title":224,"path":225,"stem":226},"Fallback and escalation","\u002Freference\u002Fharnesses\u002Ffallback-and-escalation","4.reference\u002F5.harnesses\u002F5.fallback-and-escalation",{"title":228,"path":229,"stem":230},"Inbound triggers","\u002Freference\u002Ftriggers","4.reference\u002F6.triggers",{"title":232,"path":233,"stem":234},"HTTP API","\u002Freference\u002Fhttp-api","4.reference\u002F7.http-api",{"title":236,"path":237,"stem":238},"MCP tools","\u002Freference\u002Fmcp-tools","4.reference\u002F8.mcp-tools",{"title":240,"path":241,"stem":242},"Events","\u002Freference\u002Fevents","4.reference\u002F9.events",{"title":244,"path":245,"stem":246,"children":247},"Project","\u002Fproject","5.project",[248,250,254,258,262,266],{"title":10,"path":245,"stem":249},"5.project\u002Findex",{"title":251,"path":252,"stem":253},"Architecture","\u002Fproject\u002Farchitecture","5.project\u002F1.architecture",{"title":255,"path":256,"stem":257},"Contributing","\u002Fproject\u002Fcontributing","5.project\u002F2.contributing",{"title":259,"path":260,"stem":261},"Security","\u002Fproject\u002Fsecurity","5.project\u002F3.security",{"title":263,"path":264,"stem":265},"Data and privacy","\u002Fproject\u002Fdata-and-privacy","5.project\u002F4.data-and-privacy",{"title":267,"path":268,"stem":269},"Status and support","\u002Fproject\u002Fstatus-and-support","5.project\u002F5.status-and-support",{"id":271,"title":198,"body":272,"description":1100,"extension":1101,"links":1102,"meta":1103,"navigation":1104,"path":199,"seo":1105,"stem":200,"__hash__":1106},"docs\u002F4.reference\u002F3.chain-nodes\u002F4.result-file.md",{"type":273,"value":274,"toc":1090},"minimark",[275,292,297,323,327,535,539,542,724,727,786,795,797,800,903,914,930,932,940,1020,1022,1025,1086],[276,277,278,279,283,284,287,288,291],"p",{},"Every agent and subprocess task gets ",[280,281,282],"code",{},"KRAFT_RESULT_PATH"," in its environment:\nthe path of a JSON file it writes before it exits. Kraft reads the task's\nstatus, findings, verdict and usage back from it. The file is\n",[280,285,286],{},"run\u002Fresults\u002F\u003Csession id>.json"," under ",[280,289,290],{},"$KRAFT_HOME",", and it stays after the\nsession ends.",[293,294,296],"h2",{"id":295},"who-must-write-it","Who must write it",[298,299,300,312],"ul",{},[301,302,303,307,308,311],"li",{},[304,305,306],"strong",{},"An agent task must."," Kraft's instructions to every agent say what to\nwrite. An agent that exits cleanly without a result file ends ",[280,309,310],{},"failed",", and\nso does one whose turn ends with a background job still running.",[301,313,314,317,318,322],{},[304,315,316],{},"A subprocess task may."," Without one, its exit code decides. See\n",[319,320,190],"a",{"href":321},"\u002Freference\u002Fchain-nodes\u002Fsubprocess-tasks#how-the-status-is-decided",".",[293,324,326],{"id":325},"example","Example",[328,329,334],"pre",{"className":330,"code":331,"language":332,"meta":333,"style":333},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"status\": \"done\",\n  \"session_summary_ref\": \".engineering\u002Fsessions\u002F2c1f.md\",\n  \"findings\": [\n    {\n      \"severity\": \"important\",\n      \"message\": \"The retry loop never backs off, so a down server gets hammered.\",\n      \"file\": \"src\u002Fclient.py\",\n      \"line\": 42,\n      \"source_plugin\": \"code-review\"\n    }\n  ]\n}\n","json","",[280,335,336,345,373,394,409,415,438,459,480,497,517,523,529],{"__ignoreMap":333},[337,338,341],"span",{"class":339,"line":340},"line",1,[337,342,344],{"class":343},"sMK4o","{\n",[337,346,348,351,355,358,361,364,368,370],{"class":339,"line":347},2,[337,349,350],{"class":343},"  \"",[337,352,354],{"class":353},"spNyl","status",[337,356,357],{"class":343},"\"",[337,359,360],{"class":343},":",[337,362,363],{"class":343}," \"",[337,365,367],{"class":366},"sfazB","done",[337,369,357],{"class":343},[337,371,372],{"class":343},",\n",[337,374,376,378,381,383,385,387,390,392],{"class":339,"line":375},3,[337,377,350],{"class":343},[337,379,380],{"class":353},"session_summary_ref",[337,382,357],{"class":343},[337,384,360],{"class":343},[337,386,363],{"class":343},[337,388,389],{"class":366},".engineering\u002Fsessions\u002F2c1f.md",[337,391,357],{"class":343},[337,393,372],{"class":343},[337,395,397,399,402,404,406],{"class":339,"line":396},4,[337,398,350],{"class":343},[337,400,401],{"class":353},"findings",[337,403,357],{"class":343},[337,405,360],{"class":343},[337,407,408],{"class":343}," [\n",[337,410,412],{"class":339,"line":411},5,[337,413,414],{"class":343},"    {\n",[337,416,418,421,425,427,429,431,434,436],{"class":339,"line":417},6,[337,419,420],{"class":343},"      \"",[337,422,424],{"class":423},"sBMFI","severity",[337,426,357],{"class":343},[337,428,360],{"class":343},[337,430,363],{"class":343},[337,432,433],{"class":366},"important",[337,435,357],{"class":343},[337,437,372],{"class":343},[337,439,441,443,446,448,450,452,455,457],{"class":339,"line":440},7,[337,442,420],{"class":343},[337,444,445],{"class":423},"message",[337,447,357],{"class":343},[337,449,360],{"class":343},[337,451,363],{"class":343},[337,453,454],{"class":366},"The retry loop never backs off, so a down server gets hammered.",[337,456,357],{"class":343},[337,458,372],{"class":343},[337,460,462,464,467,469,471,473,476,478],{"class":339,"line":461},8,[337,463,420],{"class":343},[337,465,466],{"class":423},"file",[337,468,357],{"class":343},[337,470,360],{"class":343},[337,472,363],{"class":343},[337,474,475],{"class":366},"src\u002Fclient.py",[337,477,357],{"class":343},[337,479,372],{"class":343},[337,481,483,485,487,489,491,495],{"class":339,"line":482},9,[337,484,420],{"class":343},[337,486,339],{"class":423},[337,488,357],{"class":343},[337,490,360],{"class":343},[337,492,494],{"class":493},"sbssI"," 42",[337,496,372],{"class":343},[337,498,500,502,505,507,509,511,514],{"class":339,"line":499},10,[337,501,420],{"class":343},[337,503,504],{"class":423},"source_plugin",[337,506,357],{"class":343},[337,508,360],{"class":343},[337,510,363],{"class":343},[337,512,513],{"class":366},"code-review",[337,515,516],{"class":343},"\"\n",[337,518,520],{"class":339,"line":519},11,[337,521,522],{"class":343},"    }\n",[337,524,526],{"class":339,"line":525},12,[337,527,528],{"class":343},"  ]\n",[337,530,532],{"class":339,"line":531},13,[337,533,534],{"class":343},"}\n",[293,536,538],{"id":537},"fields","Fields",[276,540,541],{},"The file is one JSON object. Kraft ignores keys it does not know.",[543,544,545,564],"table",{},[546,547,548],"thead",{},[549,550,551,555,558,561],"tr",{},[552,553,554],"th",{},"Field",[552,556,557],{},"Type",[552,559,560],{},"Read from",[552,562,563],{},"Meaning",[565,566,567,586,604,621,634,652,673,700],"tbody",{},[549,568,569,574,577,580],{},[570,571,572],"td",{},[280,573,354],{},[570,575,576],{},"string",[570,578,579],{},"every task",[570,581,582,583,322],{},"How the task went. See ",[319,584,354],{"href":585},"#status",[549,587,588,593,595,597],{},[570,589,590],{},[280,591,592],{},"concerns",[570,594,576],{},[570,596,579],{},[570,598,599,600,603],{},"With ",[280,601,602],{},"done_with_concerns",", why. From a judge or a gate review, the reasoning.",[549,605,606,611,613,615],{},[570,607,608],{},[280,609,610],{},"question",[570,612,576],{},[570,614,579],{},[570,616,599,617,620],{},[280,618,619],{},"needs_context",", what the task needs to know. The item stops with it.",[549,622,623,627,629,631],{},[570,624,625],{},[280,626,380],{},[570,628,576],{},[570,630,579],{},[570,632,633],{},"The session summary's path, relative to the repo root.",[549,635,636,640,643,646],{},[570,637,638],{},[280,639,401],{},[570,641,642],{},"array",[570,644,645],{},"measuring tasks",[570,647,648,649,322],{},"What a review or check found. See ",[319,650,401],{"href":651},"#findings",[549,653,654,659,661,667],{},[570,655,656],{},[280,657,658],{},"verdict",[570,660,576],{},[570,662,663,664],{},"a fix-loop judge, a gate's ",[280,665,666],{},"auto_review",[570,668,669,670,322],{},"See ",[319,671,658],{"href":672},"#verdict",[549,674,675,680,683,686],{},[570,676,677],{},[280,678,679],{},"suggested_action",[570,681,682],{},"object",[570,684,685],{},"the last task a node ran before it stopped",[570,687,688,691,692,695,696,699],{},[280,689,690],{},"{\"action\": \"skip\" | \"retry\" | \"abandon\", \"reason\": \"...\"}",". ",[280,693,694],{},"kraft view show"," prints the one command that takes it. Any other ",[280,697,698],{},"action"," is ignored.",[549,701,702,714,717,719],{},[570,703,704,707,708,707,711],{},[280,705,706],{},"usage",", ",[280,709,710],{},"cost_usd",[280,712,713],{},"model",[570,715,716],{},"object, number, string",[570,718,579],{},[570,720,669,721,322],{},[319,722,706],{"href":723},"#usage",[725,726,354],"h3",{"id":354},[543,728,729,738],{},[546,730,731],{},[549,732,733,736],{},[552,734,735],{},"Value",[552,737,563],{},[565,739,740,749,765,774],{},[549,741,742,746],{},[570,743,744],{},[280,745,367],{},[570,747,748],{},"The task finished.",[549,750,751,755],{},[570,752,753],{},[280,754,602],{},[570,756,757,758,760,761,764],{},"The task finished but doubts the result; ",[280,759,592],{}," says why. The node goes on. A repair in an ",[280,762,763],{},"on_failure"," recovery that ends this way stops the item for you.",[549,766,767,771],{},[570,768,769],{},[280,770,310],{},[570,772,773],{},"The task could not finish.",[549,775,776,780],{},[570,777,778],{},[280,779,619],{},[570,781,782,783,785],{},"The task is missing information; ",[280,784,610],{}," says what. The item stops for you with the question. Ask for everything at once: each question costs a new run.",[276,787,788,789,791,792,794],{},"A file that is not valid JSON, is not UTF-8, has no ",[280,790,354],{}," or has any\nother value ends the task ",[280,793,310],{},". An empty file counts as no file.",[725,796,401],{"id":401},[276,798,799],{},"Each entry is an object:",[543,801,802,814],{},[546,803,804],{},[549,805,806,809,812],{},[552,807,808],{},"Key",[552,810,811],{},"Required",[552,813,563],{},[565,815,816,844,855,868,880,891],{},[549,817,818,822,825],{},[570,819,820],{},[280,821,424],{},[570,823,824],{},"yes",[570,826,827,707,830,832,833,836,837,840,841,322],{},[280,828,829],{},"critical",[280,831,433],{}," or ",[280,834,835],{},"minor",". Which ones open a fix loop is ",[280,838,839],{},"findings.loop_severities"," in ",[319,842,843],{"href":157},"policy.yaml",[549,845,846,850,852],{},[570,847,848],{},[280,849,445],{},[570,851,824],{},[570,853,854],{},"What is wrong and why.",[549,856,857,861,863],{},[570,858,859],{},[280,860,504],{},[570,862,824],{},[570,864,865,866,322],{},"Who found it, such as ",[280,867,513],{},[549,869,870,874,877],{},[570,871,872],{},[280,873,466],{},[570,875,876],{},"no",[570,878,879],{},"The path, relative to the repo root.",[549,881,882,886,888],{},[570,883,884],{},[280,885,339],{},[570,887,876],{},[570,889,890],{},"An integer. Not part of the finding's identity, so an approximate line is fine.",[549,892,893,898,900],{},[570,894,895],{},[280,896,897],{},"same_as",[570,899,876],{},[570,901,902],{},"The 16-character tag of a finding from an earlier round that this one restates. Only a tag the task was shown counts; any other is ignored.",[276,904,905,906,909,910,913],{},"An entry missing a required key, or with an unknown severity, is dropped. The\n",[280,907,908],{},"findings_measured"," event counts dropped entries under ",[280,911,912],{},"dropped",", per task.",[276,915,916,917,919,920,707,922,924,925,927,928,322],{},"A finding's identity across rounds is its ",[280,918,897],{},", or else a hash of\n",[280,921,504],{},[280,923,466],{}," and ",[280,926,445],{},". The fix loop's stuck check and the\njudge's history read it. See ",[319,929,194],{"href":195},[725,931,658],{"id":658},[276,933,934,935,832,937,939],{},"A verdict from a task that ended ",[280,936,310],{},[280,938,619],{}," does not count,\nwhatever it says: Kraft reads it as the last column below.",[543,941,942,955],{},[546,943,944],{},[549,945,946,949,952],{},[552,947,948],{},"Written by",[552,950,951],{},"Values",[552,953,954],{},"Anything else",[565,956,957,985],{},[549,958,959,965,981],{},[570,960,961,962],{},"A fix loop's ",[280,963,964],{},"judge",[570,966,967,707,970,707,973,976,977,322],{},[280,968,969],{},"continue",[280,971,972],{},"stop_needs_human",[280,974,975],{},"stop_downgrade",". See ",[319,978,980],{"href":979},"\u002Freference\u002Fchain-nodes\u002Ffix-loop#the-judge","The judge",[570,982,983],{},[280,984,969],{},[549,986,987,992,1015],{},[570,988,989,990],{},"A gate's ",[280,991,666],{},[570,993,994,707,997,707,1000,1003,1004,691,1007,924,1009,1011,1012,1014],{},[280,995,996],{},"approve",[280,998,999],{},"reject",[280,1001,1002],{},"fixed"," (it repaired the worktree and the node runs again), ",[280,1005,1006],{},"undecided",[280,1008,999],{},[280,1010,1002],{}," need ",[280,1013,592],{},", which becomes the steer for the re-run.",[570,1016,1017,1019],{},[280,1018,1006],{},": the gate waits for you",[725,1021,706],{"id":706},[276,1023,1024],{},"Kraft reads a session's tokens and cost from the result file first, and from\nthe agent's log after that when the harness declares a log format. A harness\nthat reports usage only through the result file is asked to write it there.",[543,1026,1027,1035],{},[546,1028,1029],{},[549,1030,1031,1033],{},[552,1032,808],{},[552,1034,563],{},[565,1036,1037,1050,1063,1077],{},[549,1038,1039,1047],{},[570,1040,1041,707,1044],{},[280,1042,1043],{},"usage.input_tokens",[280,1045,1046],{},"usage.output_tokens",[570,1048,1049],{},"Tokens used.",[549,1051,1052,1060],{},[570,1053,1054,707,1057],{},[280,1055,1056],{},"usage.cache_creation_input_tokens",[280,1058,1059],{},"usage.cache_read_input_tokens",[570,1061,1062],{},"Cache tokens, counted as billed input.",[549,1064,1065,1074],{},[570,1066,1067,1069,1070,1073],{},[280,1068,710],{}," (or ",[280,1071,1072],{},"total_cost_usd",")",[570,1075,1076],{},"What the session cost, at the top level of the file. Leave it out rather than guess.",[549,1078,1079,1083],{},[570,1080,1081],{},[280,1082,713],{},[570,1084,1085],{},"The model that did the work.",[1087,1088,1089],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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);}",{"title":333,"searchDepth":347,"depth":347,"links":1091},[1092,1093,1094],{"id":295,"depth":347,"text":296},{"id":325,"depth":347,"text":326},{"id":537,"depth":347,"text":538,"children":1095},[1096,1097,1098,1099],{"id":354,"depth":375,"text":354},{"id":401,"depth":375,"text":401},{"id":658,"depth":375,"text":658},{"id":706,"depth":375,"text":706},"The JSON file a task writes at $KRAFT_RESULT_PATH, and every field Kraft reads from it.","md",null,{},true,{"title":198,"description":1100},"OtEB5JD-uPCVlXbZXlYN_c37tYVUJmpPXpSsEaXYlGk",[1108,1110],{"title":194,"path":195,"stem":196,"description":1109,"children":-1},"When a node's fix loop opens, what its repair tasks are told, when the judge runs, and what each verdict does.",{"title":202,"path":203,"stem":204,"description":1111,"children":-1},"What Kraft's permission gate does per harness, how it decides, and the keys that configure it.",1790824510245]