Skip to content

[#329] Graphviz via async plugin pipeline - #342

Open
gregoreesmaa wants to merge 4 commits into
mainfrom
issue/329-graphviz
Open

gregoreesmaa wants to merge 4 commits into
mainfrom
issue/329-graphviz

Conversation

@gregoreesmaa

@gregoreesmaa gregoreesmaa commented Sep 12, 2026

Copy link
Copy Markdown
Owner

Based on main (unstacked 2026-09-12; was stacked on #341); closes #329.

Graphviz renderer row on the async plugin pipeline (spec docs/plugins-async-spec.md §3 tool table: dot -Tpng SRC -o OUT):

  • src/core/plugin_cache.zig: Renderer.graphviz (appended; earlier ordinals unchanged), dot→graphviz + graphviz→graphviz mappings, cache-path arm, unit test (both tokens + /read/plugins/graphviz/<hex>.png shape).
  • scripts/read-plugin-render.sh: graphviz→dot probe + render stanza.
  • Fixture test_cases/plugin_graphviz.md (```dot fence) + suite case 4j (skeleton: code-card state, no seeding).
  • docs/spec.md Blocks line gains Graphviz.

Gates: zig build test -Doptimize=ReleaseFast --summary all 427/427 pass; screenshot suite adds only screenshots/plugin_graphviz.png; size_gate.sh PASS (binary=196232, byte-identical to parent — zero growth); check_test_cases.sh PASS.

Renderer binary requirement: no dot CLI in this env — coverage is skeleton + probe-false determinism, proven live: probe graphviz → exit 1, render graphviz SRC OUT → exit 1 (→ naive code fallback per spec §5). Live PNG render needs Graphviz installed.


Unstack + review response (2026-09-12, commit 100264a)

  • Branch replayed onto main (was stacked on [#330] D2 via async plugin pipeline #341); this PR now contains only the Graphviz renderer work.
  • Reviewer screenshot comment addressed: plugin_graphviz.png now shows the rendered diagram — suite case 4j pre-seeds synthetic test_cases/assets/graphviz-seed.png (regenerable via scripts/gen-plugin-seeds.py) at the fence's content-addressed cache path and captures with --settle-images through the shipped stat-exists path (mermaid-4e precedent). Seed pixels are synthetic.
  • Gates on the replayed branch: 424/424 tests, suite exit 0 (only plugin_graphviz.png new), size_gate.sh 196232B, check_test_cases.sh + ship_separation.sh PASS.

Comment thread screenshots/plugin_graphviz.png
Comment thread screenshots/plugin_graphviz.png
Comment thread test_cases/assets/graphviz-seed.png
gregoreesmaa added a commit that referenced this pull request Sep 12, 2026
22-node rankdir=TB tall fixture with ellipse rank-grid seed (476x3008,
three scrolled frames) and 15-node rankdir=LR wide fixture with branch
lane + collection rail seed (2000x600, clamped fold), folded into case
4j; generator script stays byte-identical across the plugin branches.
gregoreesmaa added a commit that referenced this pull request Sep 12, 2026
22-node rankdir=TB tall fixture with ellipse rank-grid seed (476x3008,
three scrolled frames) and 15-node rankdir=LR wide fixture with branch
lane + collection rail seed (2000x600, clamped fold), folded into case
4j; generator script stays byte-identical across the plugin branches.
gregoreesmaa added a commit that referenced this pull request Sep 12, 2026
22-node rankdir=TB tall fixture with ellipse rank-grid seed (476x3008,
three scrolled frames) and 15-node rankdir=LR wide fixture with branch
lane + collection rail seed (2000x600, clamped fold), folded into case
4j; generator script stays byte-identical across the plugin branches.
22-node rankdir=TB tall fixture with ellipse rank-grid seed (476x3008,
three scrolled frames) and 15-node rankdir=LR wide fixture with branch
lane + collection rail seed (2000x600, clamped fold), folded into case
4j; generator script stays byte-identical across the plugin branches.
Owner: the Pillow-mimicked seeds faked Graphviz support. All three
seeds are now genuine dot 16.0.0 output for the exact fixture fence
sources (dot -Tpng, the same flags the shipped helper uses), verified
reproducible: scripts/gen-plugin-seeds.py shells out to the real dot
binary (fails loudly without it) and regenerates pixel-identical assets
for all three. The dot fixtures compiled cleanly as written; only the
pixels change.

Tall scroll walk retuned to initial + 800 + 1600 (the real 705x2065
render fits; a 2400 third frame showed only trailing sliver plus empty
viewport, so it goes).

Suite 436/436 green. No src/ changes: ship binary untouched by this PR.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feat] Add support for Graphviz

1 participant