[{"data":1,"prerenderedAt":34},["ShallowReactive",2],{"$f2ndh5h0b08mlh":3},{"href":4,"title":5,"description":6,"kind":7,"mark":7,"planned":8,"contributors":9,"provenance":7,"html":10,"headings":11},"\u002Fdocs\u002Fcontrol\u002Fself-improvement","Self-improvement","After a run that went wrong, the OS proposes one change to the task. You decide, and an approved change is a new version you can see.",null,false,[],"\u003Ch2 id=\"what-it-does\">What it does\u003C\u002Fh2>\n\u003Cp>Self-improvement fixes how a task runs. After a run that gave it something to learn from, the OS reviews the run\nagainst the task's definition and may propose \u003Cstrong>one\u003C\u002Fstrong> change to the task: its skill, its tools, its gates or its\nspend. Nothing changes until you approve it.\u003C\u002Fp>\n\u003Cp>It does not ask whether a team should exist, or chase a business number. See\n\u003Ca href=\"\u002Fdocs\u002Fcontrol\u002Fretrospectives\">Retrospectives\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch2 id=\"which-runs-get-a-pass\">Which runs get a pass\u003C\u002Fh2>\n\u003Cp>A task is reviewed only if its version hands every ending to the OS's review task, with a successor on \u003Ccode>terminal\u003C\u002Fcode>:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-json\">{ &quot;slug&quot;: &quot;task-self-improvement&quot;, &quot;on&quot;: &quot;terminal&quot; }\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>The tasks in \u003Cstrong>Catalog\u003C\u002Fstrong> carry it, so a copy of one does too. A task you create does not until you add it. A pass\nis a run of that review task, on your enterprise's model connection, and its cost counts like any run's.\u003C\u002Fp>\n\u003Cp>Even then, not every run gets a pass. A run gets one when:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>it \u003Cstrong>failed\u003C\u002Fstrong>, or it \u003Cstrong>succeeded with at least one failed tool call\u003C\u002Fstrong> on its record. A clean success is left alone;\u003C\u002Fli>\n\u003Cli>the failure was the task's own. A run stopped because it went quiet (\u003Ccode>run_stalled\u003C\u002Fcode>) is not, and a cancelled or\nblocked run gets no pass;\u003C\u002Fli>\n\u003Cli>the task is not itself part of the loop: a task that decides recommendations, or a run carrying one out, is never\nreviewed;\u003C\u002Fli>\n\u003Cli>the task has had no pass in the last \u003Cstrong>six hours\u003C\u002Fstrong>, and has no recommendation waiting;\u003C\u002Fli>\n\u003Cli>your enterprise owns the task. A \u003Ca href=\"\u002Fdocs\u002Fwork\u002Ftasks#clone-and-copy\">clone\u003C\u002Fa> is not reviewed, and neither are the OS's\nown tasks.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>When a run is passed over because it was a clean success, went quiet, belongs to the loop, or came within six hours\nof the last pass, its events say so (\u003Ccode>improvement.skipped\u003C\u002Fcode>, with the reason).\u003C\u002Fp>\n\u003Cp>A pass keeps at most one recommendation: the one it is surest will help, and never a cosmetic one. A pass that finds\nnothing worth changing proposes nothing, and that is a good result.\u003C\u002Fp>\n\u003Ch2 id=\"deciding\">Deciding\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>Operations → Self-Improvement\u003C\u002Fstrong> lists the recommendations waiting for you, each with its task, what it proposes,\nhow sure the review is, and when it was raised. \u003Cstrong>Self-Improvement\u003C\u002Fstrong> in the sidebar counts them. They are not\nblockers: nothing waits on them, so \u003Cstrong>Blockers\u003C\u002Fstrong> does not list them. \u003Cstrong>Tasks\u003C\u002Fstrong> shows each task's count, and a task's\npage lists its own.\u003C\u002Fp>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Decision\u003C\u002Fth>\n\u003Cth>What happens\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>Decline\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>Needs a reason. The recommendation is kept, declined, and the review sees it next time, so the same change is not proposed again without new evidence.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>Approve\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>The OS carries it out: it writes the task's next version with the change.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Cp>Only the enterprise that owns a task can approve a change to it.\u003C\u002Fp>\n\u003Cp>A task given the OS's recommendation tools can decide recommendations too, and can also mark one \u003Cstrong>actioned\u003C\u002Fstrong>:\nsomeone else takes the work, tracked by the issue or pull request it links. Every decision records who made it, a\nperson or a run, and \u003Cstrong>Decided in the last 60 days\u003C\u002Fstrong> lists them with their reasons.\u003C\u002Fp>\n\u003Ch2 id=\"statuses\">Statuses\u003C\u002Fh2>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Status\u003C\u002Fth>\n\u003Cth>Means\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>pending\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Waiting for a decision. While one waits, its task gets no new pass.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>declined\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Turned down, with the reason.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>actioned\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Handed to work tracked elsewhere, with its link.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>implementing\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Approved; the change is being written.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>complete\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The new version is published.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>error\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The change could not be made: the implementing run failed, was blocked or cancelled, or the change broke a rule below. You can approve or decline it again from its page.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Ch2 id=\"what-the-change-may-never-do\">What the change may never do\u003C\u002Fh2>\n\u003Cp>An approved change is carried out by one of the OS's own tasks, on your enterprise's model connection. It may change\nonly the task's skill, tools, gates and spend, and it is refused if it would:\u003C\u002Fp>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Refused\u003C\u002Fth>\n\u003Cth>Code\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Give the task a tool it did not have\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>tools_widened\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Remove a gate\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>gates_removed\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Raise the task's spend\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>spend_increased\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Raise its model tier\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>tier_increased\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Write a repository command into the skill\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>repo_command_in_skill\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Write your own data (an id, an email address) into the skill\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>tenant_data_in_skill\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Leave a skill that cannot be read\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>unparseable_workflow\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Cp>The goal, the success metric, the guardrails, the inputs, the workspace, the successors and the schedule are never\ntouched. A change that needs any of those, or needs more access, is yours to make by editing the task.\u003C\u002Fp>\n\u003Ch2 id=\"the-new-version-and-going-back\">The new version, and going back\u003C\u002Fh2>\n\u003Cp>An approved change is published as the task's next \u003Ca href=\"\u002Fdocs\u002Fwork\u002Ftasks#versions\">version\u003C\u002Fa>, like any edit. Runs already\nunder way keep the version they started on; the next run uses the new one. Any other recommendation still waiting on\nthe task is declined as superseded, since it was written against the old version.\u003C\u002Fp>\n\u003Cp>To undo a change, open the previous version in the task's \u003Cstrong>Version history\u003C\u002Fstrong> and save its content as a new version.\nThere is no one-click rollback.\u003C\u002Fp>\n\u003Ch2 id=\"over-the-api\">Over the API\u003C\u002Fh2>\n\u003Cp>With an \u003Ca href=\"\u002Fdocs\u002Fapi\u002Fauthentication\">API token\u003C\u002Fa> scoped \u003Ccode>recommendations:read\u003C\u002Fcode> (and \u003Ccode>recommendations:write\u003C\u002Fcode> to decide):\u003C\u002Fp>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Call\u003C\u002Fth>\n\u003Cth>What it does\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Frecommendations\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The recommendations waiting for a decision, or with \u003Ccode>view=decided\u003C\u002Fcode>, those decided in the last 60 days.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Frecommendations\u002F{id}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>One recommendation, in full.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Frecommendations\u002F{id}\u002Fdecision\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Approve or decline one. A decline needs a reason. Send an \u003Ccode>idempotencyKey\u003C\u002Fcode> and a retried call returns the first decision rather than deciding twice.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n",[12,16,19,22,25,28,31],{"id":13,"text":14,"level":15,"planned":8},"what-it-does","What it does",2,{"id":17,"text":18,"level":15,"planned":8},"which-runs-get-a-pass","Which runs get a pass",{"id":20,"text":21,"level":15,"planned":8},"deciding","Deciding",{"id":23,"text":24,"level":15,"planned":8},"statuses","Statuses",{"id":26,"text":27,"level":15,"planned":8},"what-the-change-may-never-do","What the change may never do",{"id":29,"text":30,"level":15,"planned":8},"the-new-version-and-going-back","The new version, and going back",{"id":32,"text":33,"level":15,"planned":8},"over-the-api","Over the API",1791124519615]