200 lines
19 KiB
XML
200 lines
19 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1600 900" width="1600" height="900" role="img" aria-label="Decisions in a werkrevisor review: where it ends early or takes a shortcut">
|
|
<title>Decisions in a werkrevisor review</title>
|
|
<defs><style>
|
|
text { font-family: Inter, "IBM Plex Sans", "Segoe UI", Helvetica, Arial, sans-serif; fill: #141616; }
|
|
.title { font-size: 40px; font-weight: 700; letter-spacing: -0.5px; }
|
|
.subtitle { font-size: 21px; fill: #55615f; }
|
|
.row { font-size: 15px; font-weight: 700; letter-spacing: 1px; fill: #55615f; }
|
|
.node { font-size: 15.5px; font-weight: 600; }
|
|
.out { font-size: 14.5px; font-weight: 600; fill: #ffffff; }
|
|
.out-dark { fill: #141616; }
|
|
.yes { font-size: 13.5px; font-weight: 700; fill: #0e6b7d; }
|
|
.footer { font-size: 14px; fill: #55615f; }
|
|
</style>
|
|
<marker id="a" viewBox="0 0 10 10" refX="8.5" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
|
|
<path d="M0,0 L10,5 L0,10 z" fill="#6e7c7a"/></marker></defs>
|
|
<rect width="1600" height="900" fill="#ffffff"/>
|
|
<text class="title" x="40" y="60">Decisions in a werkrevisor review</text>
|
|
<text class="subtitle" x="40" y="94">Each check can end the review early or take a shortcut; otherwise the review goes on to the right.</text>
|
|
<rect x="30" y="136" width="1540" height="236" rx="16" fill="#f3f6f5"/>
|
|
<text class="row" x="48" y="164">1 BEFORE THE MODEL: THE PULL REQUEST AND THE RULES</text>
|
|
<rect x="69.14285714285714" y="186.0" width="176" height="84" rx="12" fill="#ffffff" stroke="#c9d3d1" stroke-width="1.5"/>
|
|
<text class="node" x="157.14285714285714" y="223" text-anchor="middle">Werkator starts</text>
|
|
<text class="node" x="157.14285714285714" y="243" text-anchor="middle">the review</text>
|
|
<path d="M245.14285714285714,228 H281.42857142857144" fill="none" stroke="#6e7c7a" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<polygon points="301.42857142857144,186.0 441.42857142857144,186.0 459.42857142857144,228 441.42857142857144,270.0 301.42857142857144,270.0 283.42857142857144,228" fill="#e7f1f3" stroke="#0e6b7d" stroke-width="2"/>
|
|
<text class="node" x="371.42857142857144" y="223" text-anchor="middle">Head current,</text>
|
|
<text class="node" x="371.42857142857144" y="243" text-anchor="middle">PR open?</text>
|
|
<path d="M459.42857142857144,228 H495.71428571428567" fill="none" stroke="#6e7c7a" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<text class="yes" x="465.42857142857144" y="220">yes</text>
|
|
<path d="M371.42857142857144,270.0 V290" fill="none" stroke="#5f6b75" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<text class="yes" x="379.42857142857144" y="285">no</text>
|
|
<rect x="287.42857142857144" y="292" width="168" height="52" rx="10" fill="#5f6b75"/>
|
|
<text class="out" x="371.42857142857144" y="315" text-anchor="middle">Exit 30,</text>
|
|
<text class="out" x="371.42857142857144" y="334" text-anchor="middle">writes nothing</text>
|
|
<polygon points="515.7142857142857,186.0 655.7142857142857,186.0 673.7142857142857,228 655.7142857142857,270.0 515.7142857142857,270.0 497.71428571428567,228" fill="#e7f1f3" stroke="#0e6b7d" stroke-width="2"/>
|
|
<text class="node" x="585.7142857142857" y="223" text-anchor="middle">Marked ready,</text>
|
|
<text class="node" x="585.7142857142857" y="243" text-anchor="middle">"WIP: " removed?</text>
|
|
<path d="M673.7142857142857,228 H710.0" fill="none" stroke="#6e7c7a" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<text class="yes" x="679.7142857142857" y="220">yes</text>
|
|
<path d="M585.7142857142857,270.0 V290" fill="none" stroke="#58616b" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<text class="yes" x="593.7142857142857" y="285">no</text>
|
|
<rect x="501.71428571428567" y="292" width="168" height="33" rx="10" fill="#58616b"/>
|
|
<text class="out" x="585.7142857142857" y="315" text-anchor="middle">ERROR</text>
|
|
<polygon points="730.0,186.0 870.0,186.0 888.0,228 870.0,270.0 730.0,270.0 712.0,228" fill="#e7f1f3" stroke="#0e6b7d" stroke-width="2"/>
|
|
<text class="node" x="800.0" y="223" text-anchor="middle">Head reviewed</text>
|
|
<text class="node" x="800.0" y="243" text-anchor="middle">before?</text>
|
|
<path d="M888.0,228 H924.2857142857142" fill="none" stroke="#6e7c7a" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<text class="yes" x="894.0" y="220">no</text>
|
|
<path d="M800.0,270.0 V290" fill="none" stroke="#0e6b7d" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<text class="yes" x="808.0" y="285">yes</text>
|
|
<rect x="716.0" y="292" width="168" height="52" rx="10" fill="#0e6b7d"/>
|
|
<text class="out" x="800.0" y="315" text-anchor="middle">Reuses that</text>
|
|
<text class="out" x="800.0" y="334" text-anchor="middle">verdict</text>
|
|
<rect x="926.2857142857142" y="186.0" width="176" height="84" rx="12" fill="#ffffff" stroke="#c9d3d1" stroke-width="1.5"/>
|
|
<text class="node" x="1014.2857142857142" y="223" text-anchor="middle">Rules on files</text>
|
|
<text class="node" x="1014.2857142857142" y="243" text-anchor="middle">and diff</text>
|
|
<path d="M1102.2857142857142,228 H1138.5714285714284" fill="none" stroke="#6e7c7a" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<polygon points="1158.5714285714284,186.0 1298.5714285714284,186.0 1316.5714285714284,228 1298.5714285714284,270.0 1158.5714285714284,270.0 1140.5714285714284,228" fill="#e7f1f3" stroke="#0e6b7d" stroke-width="2"/>
|
|
<text class="node" x="1228.5714285714284" y="223" text-anchor="middle">Open question in</text>
|
|
<text class="node" x="1228.5714285714284" y="243" text-anchor="middle">a PR document?</text>
|
|
<path d="M1316.5714285714284,228 H1352.857142857143" fill="none" stroke="#6e7c7a" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<text class="yes" x="1322.5714285714284" y="220">no</text>
|
|
<path d="M1228.5714285714284,270.0 V290" fill="none" stroke="#c0392b" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<text class="yes" x="1236.5714285714284" y="285">yes</text>
|
|
<rect x="1144.5714285714284" y="292" width="168" height="52" rx="10" fill="#c0392b"/>
|
|
<text class="out" x="1228.5714285714284" y="315" text-anchor="middle">RED,</text>
|
|
<text class="out" x="1228.5714285714284" y="334" text-anchor="middle">no model call</text>
|
|
<polygon points="1372.857142857143,186.0 1512.857142857143,186.0 1530.857142857143,228 1512.857142857143,270.0 1372.857142857143,270.0 1354.857142857143,228" fill="#e7f1f3" stroke="#0e6b7d" stroke-width="2"/>
|
|
<text class="node" x="1442.857142857143" y="223" text-anchor="middle">Possible secret</text>
|
|
<text class="node" x="1442.857142857143" y="243" text-anchor="middle">in the diff?</text>
|
|
<path d="M1442.857142857143,270.0 V290" fill="none" stroke="#d4a514" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<text class="yes" x="1450.857142857143" y="285">yes</text>
|
|
<rect x="1358.857142857143" y="292" width="168" height="52" rx="10" fill="#d4a514"/>
|
|
<text class="out out-dark" x="1442.857142857143" y="315" text-anchor="middle">YELLOW, nothing</text>
|
|
<text class="out out-dark" x="1442.857142857143" y="334" text-anchor="middle">to Jev or a model</text>
|
|
<path d="M1530.857142857143,228 H1544.857142857143 V386 H157.14285714285714 V444.0" fill="none" stroke="#6e7c7a" stroke-width="2.5" stroke-dasharray="7 5" marker-end="url(#a)"/>
|
|
<rect x="30" y="396" width="1540" height="236" rx="16" fill="#f3f6f5"/>
|
|
<text class="row" x="48" y="424">2 THE SHORTCUT, JEV, THE CONTEXT AND THE MODEL</text>
|
|
<polygon points="87.14285714285714,446.0 227.14285714285714,446.0 245.14285714285714,488 227.14285714285714,530.0 87.14285714285714,530.0 69.14285714285714,488" fill="#e7f1f3" stroke="#0e6b7d" stroke-width="2"/>
|
|
<text class="node" x="157.14285714285714" y="483" text-anchor="middle">Only mechanical,</text>
|
|
<text class="node" x="157.14285714285714" y="503" text-anchor="middle">image or approved?</text>
|
|
<path d="M245.14285714285714,488 H281.42857142857144" fill="none" stroke="#6e7c7a" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<text class="yes" x="251.14285714285714" y="480">no</text>
|
|
<path d="M157.14285714285714,530.0 V550" fill="none" stroke="#0e6b7d" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<text class="yes" x="165.14285714285714" y="545">yes</text>
|
|
<rect x="73.14285714285714" y="552" width="168" height="52" rx="10" fill="#0e6b7d"/>
|
|
<text class="out" x="157.14285714285714" y="575" text-anchor="middle">Verdict of the</text>
|
|
<text class="out" x="157.14285714285714" y="594" text-anchor="middle">rules alone</text>
|
|
<rect x="283.42857142857144" y="446.0" width="176" height="84" rx="12" fill="#ffffff" stroke="#c9d3d1" stroke-width="1.5"/>
|
|
<text class="node" x="371.42857142857144" y="473" text-anchor="middle">Jev: PR documents,</text>
|
|
<text class="node" x="371.42857142857144" y="493" text-anchor="middle">changesets, files;</text>
|
|
<text class="node" x="371.42857142857144" y="513" text-anchor="middle">PR document check</text>
|
|
<path d="M459.42857142857144,488 H495.71428571428567" fill="none" stroke="#6e7c7a" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<polygon points="515.7142857142857,446.0 655.7142857142857,446.0 673.7142857142857,488 655.7142857142857,530.0 515.7142857142857,530.0 497.71428571428567,488" fill="#e7f1f3" stroke="#0e6b7d" stroke-width="2"/>
|
|
<text class="node" x="585.7142857142857" y="483" text-anchor="middle">Approved before,</text>
|
|
<text class="node" x="585.7142857142857" y="503" text-anchor="middle">new blocks safe?</text>
|
|
<path d="M673.7142857142857,488 H710.0" fill="none" stroke="#6e7c7a" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<text class="yes" x="679.7142857142857" y="480">no</text>
|
|
<path d="M585.7142857142857,530.0 V550" fill="none" stroke="#24733e" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<text class="yes" x="593.7142857142857" y="545">yes</text>
|
|
<rect x="501.71428571428567" y="552" width="168" height="52" rx="10" fill="#24733e"/>
|
|
<text class="out" x="585.7142857142857" y="575" text-anchor="middle">Approval</text>
|
|
<text class="out" x="585.7142857142857" y="594" text-anchor="middle">carried over</text>
|
|
<polygon points="730.0,446.0 870.0,446.0 888.0,488 870.0,530.0 730.0,530.0 712.0,488" fill="#e7f1f3" stroke="#0e6b7d" stroke-width="2"/>
|
|
<text class="node" x="800.0" y="483" text-anchor="middle">Classifier mode,</text>
|
|
<text class="node" x="800.0" y="503" text-anchor="middle">no model?</text>
|
|
<path d="M888.0,488 H924.2857142857142" fill="none" stroke="#6e7c7a" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<text class="yes" x="894.0" y="480">no</text>
|
|
<path d="M800.0,530.0 V550" fill="none" stroke="#24733e" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<text class="yes" x="808.0" y="545">yes</text>
|
|
<rect x="716.0" y="552" width="168" height="52" rx="10" fill="#24733e"/>
|
|
<text class="out" x="800.0" y="575" text-anchor="middle">GREEN only if</text>
|
|
<text class="out" x="800.0" y="594" text-anchor="middle">Jev judged all files</text>
|
|
<polygon points="944.2857142857142,446.0 1084.2857142857142,446.0 1102.2857142857142,488 1084.2857142857142,530.0 944.2857142857142,530.0 926.2857142857142,488" fill="#e7f1f3" stroke="#0e6b7d" stroke-width="2"/>
|
|
<text class="node" x="1014.2857142857142" y="483" text-anchor="middle">Prompt within</text>
|
|
<text class="node" x="1014.2857142857142" y="503" text-anchor="middle">the input limit?</text>
|
|
<path d="M1102.2857142857142,488 H1138.5714285714284" fill="none" stroke="#6e7c7a" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<text class="yes" x="1108.2857142857142" y="480">yes</text>
|
|
<path d="M1014.2857142857142,530.0 V550" fill="none" stroke="#d4a514" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<text class="yes" x="1022.2857142857142" y="545">no</text>
|
|
<rect x="930.2857142857142" y="552" width="168" height="52" rx="10" fill="#d4a514"/>
|
|
<text class="out out-dark" x="1014.2857142857142" y="575" text-anchor="middle">Excerpts, then diff;</text>
|
|
<text class="out out-dark" x="1014.2857142857142" y="594" text-anchor="middle">else YELLOW</text>
|
|
<polygon points="1158.5714285714284,446.0 1298.5714285714284,446.0 1316.5714285714284,488 1298.5714285714284,530.0 1158.5714285714284,530.0 1140.5714285714284,488" fill="#e7f1f3" stroke="#0e6b7d" stroke-width="2"/>
|
|
<text class="node" x="1228.5714285714284" y="483" text-anchor="middle">Budget left</text>
|
|
<text class="node" x="1228.5714285714284" y="503" text-anchor="middle">on the key?</text>
|
|
<path d="M1316.5714285714284,488 H1352.857142857143" fill="none" stroke="#6e7c7a" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<text class="yes" x="1322.5714285714284" y="480">yes</text>
|
|
<path d="M1228.5714285714284,530.0 V550" fill="none" stroke="#58616b" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<text class="yes" x="1236.5714285714284" y="545">no</text>
|
|
<rect x="1144.5714285714284" y="552" width="168" height="52" rx="10" fill="#58616b"/>
|
|
<text class="out" x="1228.5714285714284" y="575" text-anchor="middle">ERROR,</text>
|
|
<text class="out" x="1228.5714285714284" y="594" text-anchor="middle">no model call</text>
|
|
<rect x="1354.857142857143" y="446.0" width="176" height="84" rx="12" fill="#ffffff" stroke="#c9d3d1" stroke-width="1.5"/>
|
|
<text class="node" x="1442.857142857143" y="483" text-anchor="middle">Model review:</text>
|
|
<text class="node" x="1442.857142857143" y="503" text-anchor="middle">advises or decides</text>
|
|
<path d="M1530.857142857143,488 H1544.857142857143 V646 H157.14285714285714 V704.0" fill="none" stroke="#6e7c7a" stroke-width="2.5" stroke-dasharray="7 5" marker-end="url(#a)"/>
|
|
<rect x="30" y="656" width="1540" height="236" rx="16" fill="#f3f6f5"/>
|
|
<text class="row" x="48" y="684">3 AFTER THE MODEL: FINDINGS, VERDICT AND OUTPUT</text>
|
|
<polygon points="87.14285714285714,706.0 227.14285714285714,706.0 245.14285714285714,748 227.14285714285714,790.0 87.14285714285714,790.0 69.14285714285714,748" fill="#e7f1f3" stroke="#0e6b7d" stroke-width="2"/>
|
|
<text class="node" x="157.14285714285714" y="743" text-anchor="middle">Model call</text>
|
|
<text class="node" x="157.14285714285714" y="763" text-anchor="middle">failed?</text>
|
|
<path d="M245.14285714285714,748 H281.42857142857144" fill="none" stroke="#6e7c7a" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<text class="yes" x="251.14285714285714" y="740">no</text>
|
|
<path d="M157.14285714285714,790.0 V810" fill="none" stroke="#3b6fb6" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<text class="yes" x="165.14285714285714" y="805">yes</text>
|
|
<rect x="73.14285714285714" y="812" width="168" height="52" rx="10" fill="#3b6fb6"/>
|
|
<text class="out" x="157.14285714285714" y="835" text-anchor="middle">Hint if Jev judged</text>
|
|
<text class="out" x="157.14285714285714" y="854" text-anchor="middle">all files, else YELLOW</text>
|
|
<rect x="283.42857142857144" y="706.0" width="176" height="84" rx="12" fill="#ffffff" stroke="#c9d3d1" stroke-width="1.5"/>
|
|
<text class="node" x="371.42857142857144" y="743" text-anchor="middle">Jev judges each</text>
|
|
<text class="node" x="371.42857142857144" y="763" text-anchor="middle">finding</text>
|
|
<path d="M459.42857142857144,748 H495.71428571428567" fill="none" stroke="#6e7c7a" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<path d="M371.42857142857144,790.0 V810" fill="none" stroke="#e07b2e" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<text class="yes" x="379.42857142857144" y="805"></text>
|
|
<rect x="287.42857142857144" y="812" width="168" height="52" rx="10" fill="#e07b2e"/>
|
|
<text class="out out-dark" x="371.42857142857144" y="835" text-anchor="middle">ORANGE, YELLOW</text>
|
|
<text class="out out-dark" x="371.42857142857144" y="854" text-anchor="middle">or a hint</text>
|
|
<rect x="497.71428571428567" y="706.0" width="176" height="84" rx="12" fill="#ffffff" stroke="#c9d3d1" stroke-width="1.5"/>
|
|
<text class="node" x="585.7142857142857" y="733" text-anchor="middle">Verdict: the worst</text>
|
|
<text class="node" x="585.7142857142857" y="753" text-anchor="middle">reason wins; risk and</text>
|
|
<text class="node" x="585.7142857142857" y="773" text-anchor="middle">finding: RED</text>
|
|
<path d="M673.7142857142857,748 H710.0" fill="none" stroke="#6e7c7a" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<polygon points="730.0,706.0 870.0,706.0 888.0,748 870.0,790.0 730.0,790.0 712.0,748" fill="#e7f1f3" stroke="#0e6b7d" stroke-width="2"/>
|
|
<text class="node" x="800.0" y="743" text-anchor="middle">GREEN without</text>
|
|
<text class="node" x="800.0" y="763" text-anchor="middle">full review?</text>
|
|
<path d="M888.0,748 H924.2857142857142" fill="none" stroke="#6e7c7a" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<text class="yes" x="894.0" y="740">no</text>
|
|
<path d="M800.0,790.0 V810" fill="none" stroke="#d4a514" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<text class="yes" x="808.0" y="805">yes</text>
|
|
<rect x="716.0" y="812" width="168" height="52" rx="10" fill="#d4a514"/>
|
|
<text class="out out-dark" x="800.0" y="835" text-anchor="middle">Becomes</text>
|
|
<text class="out out-dark" x="800.0" y="854" text-anchor="middle">YELLOW</text>
|
|
<polygon points="944.2857142857142,706.0 1084.2857142857142,706.0 1102.2857142857142,748 1084.2857142857142,790.0 944.2857142857142,790.0 926.2857142857142,748" fill="#e7f1f3" stroke="#0e6b7d" stroke-width="2"/>
|
|
<text class="node" x="1014.2857142857142" y="743" text-anchor="middle">RED for</text>
|
|
<text class="node" x="1014.2857142857142" y="763" text-anchor="middle">max_red_rounds?</text>
|
|
<path d="M1102.2857142857142,748 H1138.5714285714284" fill="none" stroke="#6e7c7a" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<text class="yes" x="1108.2857142857142" y="740">no</text>
|
|
<path d="M1014.2857142857142,790.0 V810" fill="none" stroke="#c0392b" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<text class="yes" x="1022.2857142857142" y="805">yes</text>
|
|
<rect x="930.2857142857142" y="812" width="168" height="52" rx="10" fill="#c0392b"/>
|
|
<text class="out" x="1014.2857142857142" y="835" text-anchor="middle">RED, asks the</text>
|
|
<text class="out" x="1014.2857142857142" y="854" text-anchor="middle">human reviewers</text>
|
|
<polygon points="1158.5714285714284,706.0 1298.5714285714284,706.0 1316.5714285714284,748 1298.5714285714284,790.0 1158.5714285714284,790.0 1140.5714285714284,748" fill="#e7f1f3" stroke="#0e6b7d" stroke-width="2"/>
|
|
<text class="node" x="1228.5714285714284" y="743" text-anchor="middle">Head still</text>
|
|
<text class="node" x="1228.5714285714284" y="763" text-anchor="middle">the same?</text>
|
|
<path d="M1316.5714285714284,748 H1352.857142857143" fill="none" stroke="#6e7c7a" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<text class="yes" x="1322.5714285714284" y="740">yes</text>
|
|
<path d="M1228.5714285714284,790.0 V810" fill="none" stroke="#5f6b75" stroke-width="2.5" marker-end="url(#a)"/>
|
|
<text class="yes" x="1236.5714285714284" y="805">no</text>
|
|
<rect x="1144.5714285714284" y="812" width="168" height="52" rx="10" fill="#5f6b75"/>
|
|
<text class="out" x="1228.5714285714284" y="835" text-anchor="middle">Exit 30,</text>
|
|
<text class="out" x="1228.5714285714284" y="854" text-anchor="middle">writes nothing</text>
|
|
<rect x="1354.857142857143" y="706.0" width="176" height="84" rx="12" fill="#ffffff" stroke="#c9d3d1" stroke-width="1.5"/>
|
|
<text class="node" x="1442.857142857143" y="733" text-anchor="middle">Comment, status,</text>
|
|
<text class="node" x="1442.857142857143" y="753" text-anchor="middle">approval, merge;</text>
|
|
<text class="node" x="1442.857142857143" y="773" text-anchor="middle">usage record</text>
|
|
<text class="footer" x="1560" y="890" text-anchor="end">git.javagil.de/mi/werkrevisor</text>
|
|
</svg>
|