Graph Theory System Modeling · a recorded run

One question, four hops

A coding agent asked a typed graph of a real code base where the Stripe webhook is handled. The graph answered with five pointers and no file contents. This page replays that run step by step, exactly as it was recorded on 16 September 2026.

The run

NavigationMaster [11] Subscriptions,payments & consent files in subsystem 11 injects, calls calls injects config StripeWebhookControllerActor · entry point StripeWebhookHandlerResource SubscriptionServiceProcess SubscriptionEventRepositoryResource StripePropertiesResource Edges as the answer describes them. Roles as the graph stores them.
4 graph steps5 pointers0 file contents sent13.9 s~190k tokens, mostly cachedpack 1.0.0

The recorded event keeps the four expressions, the answer and the pointers. It does not keep what each step returned, so the panel describes what the verb returns by contract and does not invent a payload. The navigator in this run is a hosted model inside the server, reached through codemap_ask; an agent can also run the same verbs itself through codemap_step, with no model in between.

What came back

The answer, in the navigator's words: “So the call chain is: StripeWebhookController → StripeWebhookHandler → SubscriptionService (+ SubscriptionEventRepository for event persistence).” And five pointers. A pointer is a name, a role, a subsystem, a size and a path. The agent opens these files and no others.

When the graph does not know

The same server, the same night, a question about something this code base does not contain.

0 steps · no pointers · terminal: abstain Where is the Kubernetes operator that scales the recommendation engine?

“This question falls outside what this graph indexes. … there is no ‘recommendation engine’ subsystem in the L1 index … this graph has no pointer to offer.”

An answer that can say “not here” is one you can test. The locally trained navigator abstains on every out-of-graph question in its shipped build.

The shape of the graph

Three levels

1hub, where every session starts
34navigators, one per subsystem or group
1,594files, one node each
92hyperedges: groups of files that move together

Counts from graph pack 1.1.1: a Spring Boot backend and an Angular frontend.

Six roles a file can have

Seventeen kinds of edge

The five most common. The rare ones carry the most meaning: 6 TRIGGERS, 11 VALIDATES, 13 CONSTRAINS.

Thirteen verbs, seven tools

The navigation language

What an agent sees over MCP

What it costs, both ways

For

A hop on the graph is small. Three questions answered by hand: 1.1 KB of tool output against 26.9 KB of grep, 2.2 KB once the grep was refined.

At equal content similarity, two files joined by a typed edge change together 4 to 9 times as often as two without one.

Against

Over 35 paired tasks, agents with the served graph used 1.6 times the tokens of agents with grep, 3.5 more turns and 88.5 seconds longer.

That night's log holds 166 requests for a prose answer and none that walk the graph step by step. The comparison that matters has not been run yet.