Full page · 04 · Unique
Intent that travels:
the semantic layer, built.
Raw code is a raster — tokens without meaning. Intent is the vector: the semantic layer built on top. You cannot convert one into the other; intent has to be constructed. DesignGraph builds it and keeps it close to the functions it describes.
Core
Every function carries a durable summary, from a one-line label to the full decision path, zoomable across levels. Groups hold claims; claims resolve against evidence. Old codebases read back their accumulated intent — validated, not remembered.
Live example
$ groups_for_function({ "function": "handle_controller_chain_disk", "file": "src/daemon.rs" })
{
"excluded_count": 0,
"excluded_paths": [],
"freshness": {...},
"function_id": "src/daemon.rs::handle_controller_chain_disk",
"groups": [{"id": "all", "l0": "all: universal group (no authored project-level intent)"}],
"intent_labels": "absent",
"message": "no usable intent labels at /home/khoi/Documents/designgraph/.designgraph/intent/intent-labels.json — run `designgraph intent` for function L0 summaries; the group rows below are manifest-derived",
"zoom": "l0"
}
Real MCP tool output — verbatim excerpt. Field names and values are byte-identical to the live response; only the freshness block is collapsed to {...}. The function resolves to the universal all group; the intent data layer is unpopulated in this build (labels require the labeling pass), and the tool says so explicitly instead of inventing a summary. Captured live against the DesignGraph codebase.
API surface
- Tool
groups_for_function(composed intent) +groups_validate(claim checks)- Parameters
groups_for_function:function(required),file,zoom(l0–l3) ·groups_validate:full,baseline- Returns
- The function's own label plus every group it belongs to; per-zoom claims with the evidence appendix; an explicit no-intent arm when labels are absent
Use cases
- Old codebase: read the accumulated intent — validated — instead of reconstructing it.
- Review: check a function's claims before trusting its summary.
- Zoom: one-line label for triage, full decision path for the deep cut.
Honesty: the intent data layer is not yet populated in this build — the labeling pass needs its runtime, which is not configured here. The machinery is source-verified and fixture-proven; the page labels what is shipped versus what is next.