See docs/prs for the PR document. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Reviewed-on: #121 Co-authored-by: claude-code <claude-code@javagil.de>
196 lines
14 KiB
XML
196 lines
14 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1600 900" width="1600" height="900" role="img" aria-label="Inside a werkrevisor review: configuration files, steps and the services they call">
|
||
<title>Inside 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; }
|
||
.head { font-size: 15px; font-weight: 700; letter-spacing: 1.5px; fill: #55615f; }
|
||
.card-title { font-size: 18px; font-weight: 700; }
|
||
.card-sub { font-size: 13.5px; fill: #55615f; }
|
||
.card-item { font-size: 14.5px; fill: #3e4645; }
|
||
.used { font-size: 13px; font-weight: 600; fill: #0e6b7d; }
|
||
.num { font-size: 15px; font-weight: 700; fill: #ffffff; }
|
||
.step { font-size: 17.5px; font-weight: 700; }
|
||
.what { font-size: 14.5px; fill: #3e4645; }
|
||
.when { font-size: 13.5px; fill: #55615f; font-style: italic; }
|
||
.chip { font-size: 12.5px; font-weight: 700; fill: #ffffff; letter-spacing: 0.3px; }
|
||
.svc { font-size: 18px; font-weight: 700; fill: #ffffff; }
|
||
.svc-text { font-size: 14px; fill: #3e4645; }
|
||
.note { font-size: 14.5px; fill: #3e4645; }
|
||
.footer { font-size: 14px; fill: #55615f; }
|
||
</style></defs>
|
||
<rect width="1600" height="900" fill="#ffffff"/>
|
||
<text class="title" x="40" y="60">Inside a werkrevisor review</text>
|
||
<text class="subtitle" x="40" y="94">Which files configure it, which services it calls, and when.</text>
|
||
<rect x="30" y="118" width="380" height="752" rx="16" fill="#f3f6f5"/>
|
||
<rect x="424" y="118" width="800" height="752" rx="16" fill="#f3f6f5"/>
|
||
<rect x="1238" y="118" width="332" height="752" rx="16" fill="#f3f6f5"/>
|
||
<text class="head" x="50" y="148">CONFIGURATION</text>
|
||
<text class="head" x="444" y="148">STEPS OF ONE REVIEW</text>
|
||
<text class="head" x="1258" y="148">ENVIRONMENT</text>
|
||
<rect x="46" y="164" width="348" height="132" rx="12" fill="#ffffff" stroke="#c9d3d1" stroke-width="1.5"/>
|
||
<text class="card-title" x="64" y="192">Host config</text>
|
||
<text class="used" x="378" y="192" text-anchor="end">steps 2–11</text>
|
||
<text class="card-sub" x="64" y="212">machine config, WERKREVISOR_CONFIG_TOML</text>
|
||
<text class="card-item" x="64" y="238">· model, provider order, budget</text>
|
||
<text class="card-item" x="64" y="258">· gate, engine, Jev endpoint</text>
|
||
<text class="card-item" x="64" y="278">· risk template, doc check</text>
|
||
<rect x="46" y="304" width="348" height="132" rx="12" fill="#ffffff" stroke="#c9d3d1" stroke-width="1.5"/>
|
||
<text class="card-title" x="64" y="332">.werkrevisor.toml</text>
|
||
<text class="used" x="378" y="332" text-anchor="end">steps 1–5, 7–9</text>
|
||
<text class="card-sub" x="64" y="352">repository, head of the default branch</text>
|
||
<text class="card-item" x="64" y="378">· hard and judged paths, DB schema</text>
|
||
<text class="card-item" x="64" y="398">· PR document globs, writing rules</text>
|
||
<text class="card-item" x="64" y="418">· Jev questions, risk template</text>
|
||
<rect x="46" y="444" width="348" height="132" rx="12" fill="#ffffff" stroke="#c9d3d1" stroke-width="1.5"/>
|
||
<text class="card-title" x="64" y="472">Risk templates</text>
|
||
<text class="used" x="378" y="472" text-anchor="end">steps 5, 9</text>
|
||
<text class="card-sub" x="64" y="492">per ecosystem, in werkrevisor</text>
|
||
<text class="card-item" x="64" y="518">· jvm-spring-backend: 16 categories</text>
|
||
<text class="card-item" x="64" y="538">· typescript-frontend: 15 categories</text>
|
||
<text class="card-item" x="64" y="558">· tuned in .werkrevisor.toml</text>
|
||
<rect x="46" y="584" width="348" height="132" rx="12" fill="#ffffff" stroke="#c9d3d1" stroke-width="1.5"/>
|
||
<text class="card-title" x="64" y="612">Built into werkrevisor</text>
|
||
<text class="used" x="378" y="612" text-anchor="end">steps 3–10</text>
|
||
<text class="card-sub" x="64" y="632">code and defaults</text>
|
||
<text class="card-item" x="64" y="658">· questions for files and findings</text>
|
||
<text class="card-item" x="64" y="678">· PR document check questions</text>
|
||
<text class="card-item" x="64" y="698">· limits, timeouts, defaults</text>
|
||
<rect x="46" y="724" width="348" height="132" rx="12" fill="#ffffff" stroke="#c9d3d1" stroke-width="1.5"/>
|
||
<text class="card-title" x="64" y="752">Files of the pull request</text>
|
||
<text class="used" x="378" y="752" text-anchor="end">steps 3, 6–8</text>
|
||
<text class="card-sub" x="64" y="772">read at the head commit</text>
|
||
<text class="card-item" x="64" y="798">· PR documents, e.g. docs/prs/*.md</text>
|
||
<text class="card-item" x="64" y="818">· AGENTS.md as context of the model</text>
|
||
<text class="card-item" x="64" y="838">· changed files in full or as excerpt</text>
|
||
<rect x="440" y="162" width="768" height="52" rx="12" fill="#ffffff" stroke="#c9d3d1" stroke-width="1.2"/>
|
||
<circle cx="466" cy="191" r="15" fill="#0e6b7d"/>
|
||
<text class="num" x="466" y="196" text-anchor="middle">1</text>
|
||
<text class="step" x="494" y="186">Read the pull request</text>
|
||
<text class="what" x="494" y="208">head, WIP title, earlier result and approval, files and diff; .werkrevisor.toml</text>
|
||
<rect x="1144" y="171" width="52" height="22" rx="11" fill="#5f6b69"/>
|
||
<text class="chip" x="1170" y="186" text-anchor="middle">Gitea</text>
|
||
<text class="when" x="1196" y="209" text-anchor="end">always</text>
|
||
<rect x="440" y="220" width="768" height="52" rx="12" fill="#ffffff" stroke="#c9d3d1" stroke-width="1.2"/>
|
||
<circle cx="466" cy="249" r="15" fill="#0e6b7d"/>
|
||
<text class="num" x="466" y="254" text-anchor="middle">2</text>
|
||
<text class="step" x="494" y="244">Rules</text>
|
||
<text class="what" x="494" y="266">hard paths, secrets, size, open questions, writing rules, mechanical files, images</text>
|
||
<rect x="1098" y="229" width="98" height="22" rx="11" fill="#0e6b7d"/>
|
||
<text class="chip" x="1147" y="244" text-anchor="middle">werkrevisor</text>
|
||
<text class="when" x="1196" y="267" text-anchor="end">always</text>
|
||
<rect x="440" y="278" width="768" height="52" rx="12" fill="#ffffff" stroke="#c9d3d1" stroke-width="1.2"/>
|
||
<circle cx="466" cy="307" r="15" fill="#0e6b7d"/>
|
||
<text class="num" x="466" y="312" text-anchor="middle">3</text>
|
||
<text class="step" x="494" y="302">PR documents</text>
|
||
<text class="what" x="494" y="324">each section and scenario: clear, specific, Gherkin used well</text>
|
||
<rect x="1159" y="287" width="37" height="22" rx="11" fill="#7446a8"/>
|
||
<text class="chip" x="1178" y="302" text-anchor="middle">Jev</text>
|
||
<text class="when" x="1196" y="325" text-anchor="end">engine classifier or combined</text>
|
||
<rect x="440" y="336" width="768" height="52" rx="12" fill="#ffffff" stroke="#c9d3d1" stroke-width="1.2"/>
|
||
<circle cx="466" cy="365" r="15" fill="#0e6b7d"/>
|
||
<text class="num" x="466" y="370" text-anchor="middle">4</text>
|
||
<text class="step" x="494" y="360">DB changesets</text>
|
||
<text class="what" x="494" y="382">deploy risk, loss of existing data</text>
|
||
<rect x="1159" y="345" width="37" height="22" rx="11" fill="#7446a8"/>
|
||
<text class="chip" x="1178" y="360" text-anchor="middle">Jev</text>
|
||
<text class="when" x="1196" y="383" text-anchor="end">schema files changed, judge = jev</text>
|
||
<rect x="440" y="394" width="768" height="52" rx="12" fill="#ffffff" stroke="#c9d3d1" stroke-width="1.2"/>
|
||
<circle cx="466" cy="423" r="15" fill="#0e6b7d"/>
|
||
<text class="num" x="466" y="428" text-anchor="middle">5</text>
|
||
<text class="step" x="494" y="418">Each changed file</text>
|
||
<text class="what" x="494" y="440">weakened checks, security, and the categories of the risk template</text>
|
||
<rect x="1159" y="403" width="37" height="22" rx="11" fill="#7446a8"/>
|
||
<text class="chip" x="1178" y="418" text-anchor="middle">Jev</text>
|
||
<text class="when" x="1196" y="441" text-anchor="end">path judge with scope all</text>
|
||
<rect x="440" y="452" width="768" height="52" rx="12" fill="#ffffff" stroke="#c9d3d1" stroke-width="1.2"/>
|
||
<circle cx="466" cy="481" r="15" fill="#0e6b7d"/>
|
||
<text class="num" x="466" y="486" text-anchor="middle">6</text>
|
||
<text class="step" x="494" y="476">PR document vs each file</text>
|
||
<text class="what" x="494" y="498">contradiction, unrelated change, data outflow</text>
|
||
<rect x="1159" y="461" width="37" height="22" rx="11" fill="#7446a8"/>
|
||
<text class="chip" x="1178" y="476" text-anchor="middle">Jev</text>
|
||
<text class="when" x="1196" y="499" text-anchor="end">doc check, PR document changed</text>
|
||
<rect x="440" y="510" width="768" height="52" rx="12" fill="#ffffff" stroke="#c9d3d1" stroke-width="1.2"/>
|
||
<circle cx="466" cy="539" r="15" fill="#0e6b7d"/>
|
||
<text class="num" x="466" y="544" text-anchor="middle">7</text>
|
||
<text class="step" x="494" y="534">Context for the model</text>
|
||
<text class="what" x="494" y="556">full files at the head; an economy model selects excerpt lines</text>
|
||
<rect x="1106" y="519" width="90" height="22" rx="11" fill="#24733e"/>
|
||
<text class="chip" x="1151" y="534" text-anchor="middle">OpenRouter</text>
|
||
<rect x="1048" y="519" width="52" height="22" rx="11" fill="#5f6b69"/>
|
||
<text class="chip" x="1074" y="534" text-anchor="middle">Gitea</text>
|
||
<text class="when" x="1196" y="557" text-anchor="end">full files on; excerpts for large files</text>
|
||
<rect x="440" y="568" width="768" height="52" rx="12" fill="#ffffff" stroke="#c9d3d1" stroke-width="1.2"/>
|
||
<circle cx="466" cy="597" r="15" fill="#0e6b7d"/>
|
||
<text class="num" x="466" y="602" text-anchor="middle">8</text>
|
||
<text class="step" x="494" y="592">Model review</text>
|
||
<text class="what" x="494" y="614">PR-Agent asks the model of the host config; it advises or decides</text>
|
||
<rect x="1106" y="577" width="90" height="22" rx="11" fill="#24733e"/>
|
||
<text class="chip" x="1151" y="592" text-anchor="middle">OpenRouter</text>
|
||
<text class="when" x="1196" y="615" text-anchor="end">not in classifier mode; budget left</text>
|
||
<rect x="440" y="626" width="768" height="52" rx="12" fill="#ffffff" stroke="#c9d3d1" stroke-width="1.2"/>
|
||
<circle cx="466" cy="655" r="15" fill="#0e6b7d"/>
|
||
<text class="num" x="466" y="660" text-anchor="middle">9</text>
|
||
<text class="step" x="494" y="650">Findings</text>
|
||
<text class="what" x="494" y="672">real defect, severity, risk category</text>
|
||
<rect x="1159" y="635" width="37" height="22" rx="11" fill="#7446a8"/>
|
||
<text class="chip" x="1178" y="650" text-anchor="middle">Jev</text>
|
||
<text class="when" x="1196" y="673" text-anchor="end">the model reported findings</text>
|
||
<rect x="440" y="684" width="768" height="52" rx="12" fill="#ffffff" stroke="#c9d3d1" stroke-width="1.2"/>
|
||
<circle cx="466" cy="713" r="15" fill="#0e6b7d"/>
|
||
<text class="num" x="466" y="718" text-anchor="middle">10</text>
|
||
<text class="step" x="494" y="708">Verdict and output</text>
|
||
<text class="what" x="494" y="730">worst reason; RED for risk and finding in one file or category</text>
|
||
<rect x="1106" y="693" width="90" height="22" rx="11" fill="#3b6fb6"/>
|
||
<text class="chip" x="1151" y="708" text-anchor="middle">Statistics</text>
|
||
<rect x="1048" y="693" width="52" height="22" rx="11" fill="#5f6b69"/>
|
||
<text class="chip" x="1074" y="708" text-anchor="middle">Gitea</text>
|
||
<rect x="944" y="693" width="98" height="22" rx="11" fill="#0e6b7d"/>
|
||
<text class="chip" x="993" y="708" text-anchor="middle">werkrevisor</text>
|
||
<text class="when" x="1196" y="731" text-anchor="end">always</text>
|
||
<rect x="440" y="742" width="768" height="52" rx="12" fill="#ffffff" stroke="#c9d3d1" stroke-width="1.2"/>
|
||
<circle cx="466" cy="771" r="15" fill="#0e6b7d"/>
|
||
<text class="num" x="466" y="776" text-anchor="middle">11</text>
|
||
<text class="step" x="494" y="766">Diagrams</text>
|
||
<text class="what" x="494" y="788">PR Lens draws the change; SVGs on the comment, not in the verdict</text>
|
||
<rect x="1144" y="751" width="52" height="22" rx="11" fill="#5f6b69"/>
|
||
<text class="chip" x="1170" y="766" text-anchor="middle">Gitea</text>
|
||
<rect x="1048" y="751" width="90" height="22" rx="11" fill="#24733e"/>
|
||
<text class="chip" x="1093" y="766" text-anchor="middle">OpenRouter</text>
|
||
<text class="when" x="1196" y="789" text-anchor="end">[diagrams] enabled</text>
|
||
<rect x="440" y="804" width="768" height="42" rx="12" fill="#fdf3e1" stroke="#d9a441" stroke-width="1.5"/>
|
||
<text class="note" x="462" y="830">A possible secret in the diff: nothing goes to Jev or a model, and the review is YELLOW.</text>
|
||
<rect x="1254" y="164" width="300" height="128" rx="12" fill="#eef1f0" stroke="#c9d3d1" stroke-width="1.2"/>
|
||
<rect x="1254" y="164" width="300" height="40" rx="12" fill="#0e6b7d"/>
|
||
<rect x="1254" y="192" width="300" height="12" fill="#0e6b7d"/>
|
||
<text class="svc" x="1272" y="191">Werkator</text>
|
||
<text class="svc-text" x="1272" y="230">starts a review for each head commit,</text>
|
||
<text class="svc-text" x="1272" y="252">its exit code is the merge gate</text>
|
||
<rect x="1254" y="304" width="300" height="128" rx="12" fill="#eef1f0" stroke="#c9d3d1" stroke-width="1.2"/>
|
||
<rect x="1254" y="304" width="300" height="40" rx="12" fill="#5f6b69"/>
|
||
<rect x="1254" y="332" width="300" height="12" fill="#5f6b69"/>
|
||
<text class="svc" x="1272" y="331">Gitea</text>
|
||
<text class="svc-text" x="1272" y="370">reads the PR; writes the comment,</text>
|
||
<text class="svc-text" x="1272" y="392">line comments, status, approval, merge</text>
|
||
<rect x="1254" y="444" width="300" height="128" rx="12" fill="#eef1f0" stroke="#c9d3d1" stroke-width="1.2"/>
|
||
<rect x="1254" y="444" width="300" height="40" rx="12" fill="#7446a8"/>
|
||
<rect x="1254" y="472" width="300" height="12" fill="#7446a8"/>
|
||
<text class="svc" x="1272" y="471">TypeSafe · Jev</text>
|
||
<text class="svc-text" x="1272" y="510">typed questions, probabilities;</text>
|
||
<text class="svc-text" x="1272" y="532">about 0.001 USD per review</text>
|
||
<rect x="1254" y="584" width="300" height="128" rx="12" fill="#eef1f0" stroke="#c9d3d1" stroke-width="1.2"/>
|
||
<rect x="1254" y="584" width="300" height="40" rx="12" fill="#24733e"/>
|
||
<rect x="1254" y="612" width="300" height="12" fill="#24733e"/>
|
||
<text class="svc" x="1272" y="611">OpenRouter</text>
|
||
<text class="svc-text" x="1272" y="650">MiniMax M3: model review;</text>
|
||
<text class="svc-text" x="1272" y="672">GPT-6 Luna: excerpts; key budget</text>
|
||
<rect x="1254" y="724" width="300" height="128" rx="12" fill="#eef1f0" stroke="#c9d3d1" stroke-width="1.2"/>
|
||
<rect x="1254" y="724" width="300" height="40" rx="12" fill="#3b6fb6"/>
|
||
<rect x="1254" y="752" width="300" height="12" fill="#3b6fb6"/>
|
||
<text class="svc" x="1272" y="751">Statistics service</text>
|
||
<text class="svc-text" x="1272" y="790">usage record with costs</text>
|
||
<text class="svc-text" x="1272" y="812">and seconds per phase</text>
|
||
<text class="footer" x="1560" y="890" text-anchor="end">git.javagil.de/mi/werkrevisor</text>
|
||
</svg>
|