Code intent, grounded

From session intent
to function decisions.

DesignGraph carries intent across sessions, pins it to functions, and zooms into the decisions inside — every condition, caller, and state write with evidence.

Journey map: session intent carried across sessions, pinned to function intent, zoomed into decisions with evidence
Intent across sessions, decisions inside functions.
Built for engineers who care about the why

The graph

From code shape
to code understanding.

Controller chains

Trace the conditions and branches that guard a decision, including the recovery arms around it.

Follow the path

State ownership

Find the canonical write sites behind a state variable and see who truly owns its behavior.

Find the source

Session memory

Intent doesn't die with the session — the next session starts from accumulated intent, not from memory.

Continue the thread

Intent that travels

Keep durable claims close to the functions they describe, across sessions and reviews.

Read the claims

Deep dive

Each feature,
up close.

Controller chains

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 path

Try the journey

Start with intent.
Zoom into decisions.

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

Zoom diagram: encode member flowing through a guard into the decoder member, with state write and claims attached
Illustrative — the shape of a real chain (member → guard → member), not tool output. Live chains carry budget + truncation markers, never silent.
1 · encode_frame_d3d11 — zoom to evidence
{
  "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).

2 · the guard — zoom to evidence
{
  "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.

3 · push_to_decoder — zoom to evidence
{
  "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).

Make the invisible
legible.

Start with the graph Explore on GitHub