Controller chains
Trace the conditions and branches that guard a decision, including the recovery arms around it.
Follow the pathCode intent, grounded
DesignGraph carries intent across sessions, pins it to functions, and zooms into the decisions inside — every condition, caller, and state write with evidence.
The graph
Trace the conditions and branches that guard a decision, including the recovery arms around it.
Follow the pathFind the canonical write sites behind a state variable and see who truly owns its behavior.
Find the sourceIntent doesn't die with the session — the next session starts from accumulated intent, not from memory.
Continue the threadKeep durable claims close to the functions they describe, across sessions and reviews.
Read the claimsDeep dive
A call graph shows who calls whom. Ours shows the decisions guarding every call: the enclosing if/for/try chain from the call site inward — and the callers above whose guards reach down to you.
fn approve(order) {
if signed_in(user) // guard
&& within_limit(order) { // guard
charge(order) // branch
} else {
queue_review(order) // recovery arm
}
}Illustrative example — real output shows the actual guards in your code.
Follow the pathAsk who owns a field and get the canonical write sites — the functions that actually set it — not every passing mention.
state order.status
written-by: checkout.confirm (canonical)
written-by: support.refund (canonical)
read-by: reporting.summaryExample output — real queries return the actual writers for your field.
Find the sourceIntent doesn't die with the session. Session groups carry a direct link to the session file — chat_ref — so the next session starts from accumulated intent, not from memory.
group: session:2026-08-31-001
intent: "Preserve the session's ordinary function-group intent"
members: alpha, beta
chat_ref: 2026-08-31-001/chat.json (cross-session link)
claims: R1 "Both session members remain covered by the same claim contract"Continue the thread Raw code is a raster — tokens without meaning. Intent is the vector: the semantic layer built on top. You can't convert one into the other; intent has to be constructed. DG builds it: every function carries a durable summary, from a one-line label to the full decision path, that survives across sessions.
intent support.refund
L0: "refunds always queue a review"
L3: decision path + recovery arm
claim: "refunds always queue a review"
verified-by: block_ids [12, 47], call_keys, sot_vars
status: validatedIllustrative — intent labels require the LLM labeling pass; the data layer is not yet populated in this build. Block IDs and validation status shown are example shapes, not real output.
Read the claimsTry the journey
One group, three functions, one job — then zoom from what it is for into how it decides.
L0 · group intent — quoted verbatim
media-encode-decode
"the low-latency media path: benchmark driver,
D3D11 encode bridge, and ffmpeg decoder"
M1 "encode_frame_d3d11 writes base_qsv_encode_ms
alongside the per-frame encode rows"
M2 "main writes the all_key/bitrate/case_name
accumulation rows of the low-latency bench"
members:
scripts/libvpx_low_latency_bench.c::main
layer3_driver/src/bridge.rs::encode_frame_d3d11
layer3_driver/src/ffmpeg/decoder.rs::push_to_decoder
Authored group intent from an archived benchmark corpus — quoted verbatim. Project name withheld; member paths unchanged.
Three functions, one job: get frames through the pipe fast. The claims say why they belong together — each one verified against the code. Now watch one member decide. Zoom into the controller
L1 · controller — illustrative
{
"condition": [...],
"polarity": [...],
"branch": [...],
"iteration_range": [...],
"line_ref": [...]
}Illustrative instance — field names match real tool output; values elided with [...].
L3 · source — layer3_driver/src/bridge.rs::encode_frame_d3d11 (member ID verbatim; archived corpus, no line numbers to quote).
{
"condition": [...],
"polarity": [...],
"branch": [...],
"iteration_range": [...],
"line_ref": [...]
}Illustrative instance — field names match real tool output; values elided with [...].
L3 · source — guards live inside members; no standalone file::line. This guard belongs to encode_frame_d3d11.
{
"condition": [...],
"polarity": [...],
"branch": [...],
"iteration_range": [...],
"line_ref": [...]
}Illustrative instance — field names match real tool output; values elided with [...].
L3 · source — layer3_driver/src/ffmpeg/decoder.rs::push_to_decoder (member ID verbatim; archived corpus, no line numbers to quote).