vet

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 5b9719eb475b1f45dd3403fe1c219634f7c20f9f
parent e2ad4d9a0c05b6fcf96fa98edf4e05a335d9485f
Author: andrewlaack-collab <andrew.laack@imbue.com>
Date:   Tue,  3 Feb 2026 00:56:19 +0000

Arch doc (#10)


Diffstat:
MREADME.md | 30+-----------------------------
Aarchitecture.dot | 25+++++++++++++++++++++++++
Aarchitecture.svg | 104+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 130 insertions(+), 29 deletions(-)

diff --git a/README.md b/README.md @@ -34,35 +34,7 @@ vet "Refactor storage layer" --base-commit main Vet snapshots the repo and diff, optionally adds a goal and agent conversation, runs LLM checks, then filters/deduplicates findings into a final list of issues. -TODO: Create rendering pipeline for this. GitHub MD doesn't directly support Graphviz. - -```dot -digraph VET_DataFlow { - rankdir=TB; - node [shape=box, style=rounded]; - - subgraph cluster_inputs { - label="Inputs"; - diff [label="Git diff"]; - goal [label="Goal\n(optional)", style=dashed]; - history [label="Conversation history\n(optional)", style=dashed]; - } - - context [label="Repo snapshot"]; - checks [label="LLM checks"]; - post [label="Filter + deduplicate"]; - issues [label="Issues"]; - - diff -> context; - diff -> checks; - goal -> checks [style=dashed]; - history -> checks [style=dashed]; - context -> checks; - - checks -> post; - post -> issues; -} -``` +![architecture](architecture.svg) ## Why Vet diff --git a/architecture.dot b/architecture.dot @@ -0,0 +1,25 @@ +digraph VET_DataFlow { + rankdir=TB; + node [shape=box, style=rounded]; + + subgraph cluster_inputs { + label="Inputs"; + diff [label="Git diff"]; + goal [label="Goal\n(optional)", style=dashed]; + history [label="Conversation history\n(optional)", style=dashed]; + } + + context [label="Repo snapshot"]; + checks [label="LLM checks"]; + post [label="Filter + deduplicate"]; + issues [label="Issues"]; + + diff -> context; + diff -> checks; + goal -> checks [style=dashed]; + history -> checks [style=dashed]; + context -> checks; + + checks -> post; + post -> issues; +} diff --git a/architecture.svg b/architecture.svg @@ -0,0 +1,104 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by graphviz version 14.1.1 (0) + --> +<!-- Title: VET_DataFlow Pages: 1 --> +<svg width="352pt" height="378pt" + viewBox="0.00 0.00 352.00 378.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 373.5)"> +<title>VET_DataFlow</title> +<polygon fill="white" stroke="none" points="-4,4 -4,-373.5 347.75,-373.5 347.75,4 -4,4"/> +<g id="clust1" class="cluster"> +<title>cluster_inputs</title> +<polygon fill="none" stroke="black" points="28.75,-280 28.75,-361.5 335.75,-361.5 335.75,-280 28.75,-280"/> +<text xml:space="preserve" text-anchor="middle" x="182.25" y="-344.2" font-family="Times,serif" font-size="14.00">Inputs</text> +</g> +<!-- diff --> +<g id="node1" class="node"> +<title>diff</title> +<path fill="none" stroke="black" d="M81,-326.5C81,-326.5 48.5,-326.5 48.5,-326.5 42.5,-326.5 36.5,-320.5 36.5,-314.5 36.5,-314.5 36.5,-302.5 36.5,-302.5 36.5,-296.5 42.5,-290.5 48.5,-290.5 48.5,-290.5 81,-290.5 81,-290.5 87,-290.5 93,-296.5 93,-302.5 93,-302.5 93,-314.5 93,-314.5 93,-320.5 87,-326.5 81,-326.5"/> +<text xml:space="preserve" text-anchor="middle" x="64.75" y="-303.45" font-family="Times,serif" font-size="14.00">Git diff</text> +</g> +<!-- context --> +<g id="node4" class="node"> +<title>context</title> +<path fill="none" stroke="black" d="M83.5,-252C83.5,-252 12,-252 12,-252 6,-252 0,-246 0,-240 0,-240 0,-228 0,-228 0,-222 6,-216 12,-216 12,-216 83.5,-216 83.5,-216 89.5,-216 95.5,-222 95.5,-228 95.5,-228 95.5,-240 95.5,-240 95.5,-246 89.5,-252 83.5,-252"/> +<text xml:space="preserve" text-anchor="middle" x="47.75" y="-228.95" font-family="Times,serif" font-size="14.00">Repo snapshot</text> +</g> +<!-- diff&#45;&gt;context --> +<g id="edge1" class="edge"> +<title>diff&#45;&gt;context</title> +<path fill="none" stroke="black" d="M60.72,-290.32C58.82,-282.19 56.49,-272.28 54.34,-263.1"/> +<polygon fill="black" stroke="black" points="57.79,-262.47 52.1,-253.53 50.97,-264.07 57.79,-262.47"/> +</g> +<!-- checks --> +<g id="node5" class="node"> +<title>checks</title> +<path fill="none" stroke="black" d="M173.62,-180C173.62,-180 111.88,-180 111.88,-180 105.88,-180 99.88,-174 99.88,-168 99.88,-168 99.88,-156 99.88,-156 99.88,-150 105.88,-144 111.88,-144 111.88,-144 173.62,-144 173.62,-144 179.62,-144 185.62,-150 185.62,-156 185.62,-156 185.62,-168 185.62,-168 185.62,-174 179.62,-180 173.62,-180"/> +<text xml:space="preserve" text-anchor="middle" x="142.75" y="-156.95" font-family="Times,serif" font-size="14.00">LLM checks</text> +</g> +<!-- diff&#45;&gt;checks --> +<g id="edge2" class="edge"> +<title>diff&#45;&gt;checks</title> +<path fill="none" stroke="black" d="M78.76,-290.17C86.96,-279.55 97.16,-265.45 104.75,-252 115.85,-232.35 125.76,-208.81 132.68,-190.88"/> +<polygon fill="black" stroke="black" points="135.9,-192.27 136.15,-181.68 129.35,-189.8 135.9,-192.27"/> +</g> +<!-- goal --> +<g id="node2" class="node"> +<title>goal</title> +<polygon fill="none" stroke="black" stroke-dasharray="5,2" points="180.38,-329 111.12,-329 111.12,-288 180.38,-288 180.38,-329"/> +<text xml:space="preserve" text-anchor="middle" x="145.75" y="-311.7" font-family="Times,serif" font-size="14.00">Goal</text> +<text xml:space="preserve" text-anchor="middle" x="145.75" y="-295.2" font-family="Times,serif" font-size="14.00">(optional)</text> +</g> +<!-- goal&#45;&gt;checks --> +<g id="edge3" class="edge"> +<title>goal&#45;&gt;checks</title> +<path fill="none" stroke="black" stroke-dasharray="5,2" d="M145.34,-287.71C144.82,-262.82 143.93,-219.91 143.34,-191.49"/> +<polygon fill="black" stroke="black" points="146.85,-191.73 143.14,-181.81 139.85,-191.88 146.85,-191.73"/> +</g> +<!-- history --> +<g id="node3" class="node"> +<title>history</title> +<polygon fill="none" stroke="black" stroke-dasharray="5,2" points="327.38,-329 198.12,-329 198.12,-288 327.38,-288 327.38,-329"/> +<text xml:space="preserve" text-anchor="middle" x="262.75" y="-311.7" font-family="Times,serif" font-size="14.00">Conversation history</text> +<text xml:space="preserve" text-anchor="middle" x="262.75" y="-295.2" font-family="Times,serif" font-size="14.00">(optional)</text> +</g> +<!-- history&#45;&gt;checks --> +<g id="edge4" class="edge"> +<title>history&#45;&gt;checks</title> +<path fill="none" stroke="black" stroke-dasharray="5,2" d="M246.32,-287.71C225,-262.04 187.77,-217.21 164.24,-188.87"/> +<polygon fill="black" stroke="black" points="167.16,-186.92 158.08,-181.46 161.78,-191.39 167.16,-186.92"/> +</g> +<!-- context&#45;&gt;checks --> +<g id="edge5" class="edge"> +<title>context&#45;&gt;checks</title> +<path fill="none" stroke="black" d="M71.23,-215.7C82.99,-207.03 97.42,-196.4 110.23,-186.96"/> +<polygon fill="black" stroke="black" points="112.01,-189.99 117.99,-181.24 107.86,-184.36 112.01,-189.99"/> +</g> +<!-- post --> +<g id="node6" class="node"> +<title>post</title> +<path fill="none" stroke="black" d="M192.38,-108C192.38,-108 93.12,-108 93.12,-108 87.12,-108 81.12,-102 81.12,-96 81.12,-96 81.12,-84 81.12,-84 81.12,-78 87.12,-72 93.12,-72 93.12,-72 192.38,-72 192.38,-72 198.38,-72 204.38,-78 204.38,-84 204.38,-84 204.38,-96 204.38,-96 204.38,-102 198.38,-108 192.38,-108"/> +<text xml:space="preserve" text-anchor="middle" x="142.75" y="-84.95" font-family="Times,serif" font-size="14.00">Filter + deduplicate</text> +</g> +<!-- checks&#45;&gt;post --> +<g id="edge6" class="edge"> +<title>checks&#45;&gt;post</title> +<path fill="none" stroke="black" d="M142.75,-143.7C142.75,-136.41 142.75,-127.73 142.75,-119.54"/> +<polygon fill="black" stroke="black" points="146.25,-119.62 142.75,-109.62 139.25,-119.62 146.25,-119.62"/> +</g> +<!-- issues --> +<g id="node7" class="node"> +<title>issues</title> +<path fill="none" stroke="black" d="M157.75,-36C157.75,-36 127.75,-36 127.75,-36 121.75,-36 115.75,-30 115.75,-24 115.75,-24 115.75,-12 115.75,-12 115.75,-6 121.75,0 127.75,0 127.75,0 157.75,0 157.75,0 163.75,0 169.75,-6 169.75,-12 169.75,-12 169.75,-24 169.75,-24 169.75,-30 163.75,-36 157.75,-36"/> +<text xml:space="preserve" text-anchor="middle" x="142.75" y="-12.95" font-family="Times,serif" font-size="14.00">Issues</text> +</g> +<!-- post&#45;&gt;issues --> +<g id="edge7" class="edge"> +<title>post&#45;&gt;issues</title> +<path fill="none" stroke="black" d="M142.75,-71.7C142.75,-64.41 142.75,-55.73 142.75,-47.54"/> +<polygon fill="black" stroke="black" points="146.25,-47.62 142.75,-37.62 139.25,-47.62 146.25,-47.62"/> +</g> +</g> +</svg>