You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
grapharc.examples.plan_incident is the only shipped registry, and it is built to demo refusal: four chain-shaped kinds, one denied edge. Nothing shipped demos the other half of the planner's contract — a model decomposing one goal into a parallel topology: fan-out from START, a join, a fork, a fan-in.
We built exactly that registry out-of-tree for a demo and a real local model (qwen3:8b) used it well on the first try, proposing 9 nodes with a 4-way parallel evidence pull (pull_logs, pull_metrics, pull_deploys, pull_tickets) joining into correlate, a fork into test_hypothesis + estimate_impact, and a fan-in to write_report — admitted, executed with the pulls genuinely running concurrently, goal_met. The prompt's parallelism paragraph works; there is just no in-tree registry a reader can point --registry at to see it.
Why it matters
Fan-out/fan-in is the reason to use a graph runtime at all — a chain demos nothing LangGraph-shaped. It is also where the governance story gets interesting: per-kind write permissions are what make a 4-way parallel join safe (each branch may only write its own state field, so the join cannot race), and no shipped example exercises that.
What to consider
Add grapharc.examples.plan_research (or similar): ~9 investigative kinds, a distinct state field per kind with WRITES scoped one-field-per-kind, a policy-denied kind (page_oncall) for continuity with the incident demo's thesis, and a goal check on the final report field.
Mention it in the README's planner section and the plan cookbook page as the second --registry target.
A scripted-planner reply that proposes the parallel shape keeps the demo runnable with no model, same as plan_incident.
Acceptance criteria
grapharc plan "<question>" --registry grapharc.examples.plan_research:build_registry runs to goal_met with the scripted planner, the topology event shows the fan-out/join/fork/fan-in edges, and a test asserts each kind may only write its own field.
Which is each of the four shapes this issue asked for, and nothing shipped had:
fan-out from START — four evidence pulls (pull_logs, pull_metrics, pull_deploys, pull_tickets)
a join — all four into correlate
a fork — correlate into test_hypothesis and estimate_impact
a fan-in — both into write_report
page_oncall is registered and policy-denied, so the registry still demonstrates refusal alongside decomposition rather than replacing the plan_incident lesson.
Activity
tests: the deep dive's figure refreshes itself on request (#119)
Shashankss1205 commentedon Sep 26, 2026
Closed by #115, contributed by @only-ouc.
Verified against the merged code rather than taken from the pull request description — running the shipped scripted plan:
Which is each of the four shapes this issue asked for, and nothing shipped had:
START— four evidence pulls (pull_logs,pull_metrics,pull_deploys,pull_tickets)correlatecorrelateintotest_hypothesisandestimate_impactwrite_reportpage_oncallis registered and policy-denied, so the registry still demonstrates refusal alongside decomposition rather than replacing theplan_incidentlesson.