A coding agent is only as good as what it can see. Paste whole files into its context and it drowns in noise, burns tokens, and guesses. BNLGit feeds it something better: a typed, line-anchored, cryptographically-pinned summary of every file — then hands it the exact source lines, at the exact commit, the moment it needs them.
Every step is deterministic and inspectable. Nothing is a black box, and nothing leaves your infrastructure.
x.py.llm — symbols, endpoints, side effects, line-anchored (schema v3).Every summary is a block of typed facts an agent can parse, join across files, and trust — each one anchored to a line and pinned to the blob it describes.
# generated fact block — schema v3 symbol verify_token(token: str) -> Claims @ L42 reads env "JWT_PUBLIC_KEY" raises ExpiredSignatureError, InvalidToken security signature checked before payload is trusted @ L51 endpoint POST /api/session -> verify_token @ L88 db none stale? no # tracks blob 9f3c1e… ; re-derives on change
Typed facts surface what matters — symbols, endpoints, side effects, security notes — so the model reasons over structure instead of scrolling raw files hoping to find it.
A compact fact block replaces thousands of lines of source. More of the system fits in the window at once — cheaper calls, wider understanding.
Every fact is line-anchored and SHA-pinned, so the agent answers with auth.py:42 instead of a confident guess. Wrong context is the #1 cause of wrong code — this removes it.
Staleness is tracked per blob SHA. When source changes, its summary is marked stale and re-derived — the agent is never quietly working from last week's version.
And it scales across repositories. Because the facts are typed and joinable, an agent can query them across your whole fleet over MCP — understanding how a change in one service ripples through another, with per-repo access still enforced on every read.
Straight talk: we're running a rigorous benchmark (agent task-success, token reduction, time-to-first-correct-edit, with vs. without the layer) and will publish the numbers when they're earned. This page is the mechanism — why grounded, typed, current context makes any model code better — not a stat we haven't measured yet.