From b12a6cf7b64b334015f391351af28813b1c2fc35 Mon Sep 17 00:00:00 2001 From: swapnil <78632212+swapnilpaliwal-sd@users.noreply.github.com> Date: Sun, 13 Sep 2026 22:54:32 -0700 Subject: [PATCH 1/2] =?UTF-8?q?README:=20the=20front=20page=20a=20reader?= =?UTF-8?q?=20expects=20=E2=80=94=20tagline,=20quick=20start=20first,=20wh?= =?UTF-8?q?at=20you=20get,=20how=20it=20works,=20accuracy,=20layout,=20dev?= =?UTF-8?q?elopment?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The substance is unchanged (every measured number is kept); the order and shape follow what established projects do: what it is in one line, how to run it in three, then depth. Two open-source project names and two library names are dropped from the public text. --- README.md | 337 ++++++++++++++++++++++-------------------------------- 1 file changed, 138 insertions(+), 199 deletions(-) diff --git a/README.md b/README.md index a9c1b476..66bdf801 100644 --- a/README.md +++ b/README.md @@ -1,250 +1,189 @@ -# AxiomCode code graph - -**A knowledge graph of what code actually does, derived formally rather than guessed.** - -`axiom-code-graph` builds a *type-directed call graph*: for every call site in a codebase it resolves -which function (or set of functions) can actually run, by reasoning over the type system — receiver -types, type hierarchy, overload applicability, generics, closure and function-reference targets — -with the platform library and third-party dependencies linked in as typed signatures. - -The engine is language-independent: it solves over a relational IR, so support for a language is a -matter of emitting that IR. The first front end is JVM-based, and the validation below uses it -because the platform ships its own class-file parser — which lets ground truth be read from compiled -artifacts with no third-party analyzer in the loop. Additional front ends follow the same contract. - -The output is a queryable graph of program structure with provenance on every edge, designed to answer -questions like *"if I change this method, what breaks?"*, *"who can reach this sink?"*, *"what is the -minimum code an agent needs to read to reason about this change?"* — and to be **auditable** when it -answers them. +
+ A type-resolved call graph of your codebase — derived formally, validated against ground truth, queryable from one SQLite file. +
+ + + ++ Quick start · + What you get · + How it works · + Accuracy · + Layout · + Development +
--- -## Why it exists - -An AI agent working on a real codebase has to decide what to read. Today that decision is made by -text: grep, fuzzy search, embeddings. Text-similarity retrieval has two failure modes and both are -expensive: +For every call site in a codebase, the engine resolves **which function — or set of functions — can actually run**, by reasoning over the type system: receiver types, hierarchy, overloads, generics, closures and function references, with libraries linked in as typed signatures. Every edge carries a **confidence tier** and every blind spot is **declared, never dropped**. The result is one `graph.sqlite` per language whose schema is documented inside it, so a person or an AI agent can answer *"if I change this, what breaks?"*, *"who can reach this?"*, *"what do I need to read?"* — and see how sure the answer is. -* **It returns too much.** On a 3,200-file project, a grep-style expansion from a changed method - returns tens of thousands of methods. That is a context window filled with code that has no causal - relationship to the change — tokens paid for noise, and a model whose attention is diluted. -* **It misses the one that matters.** The method that breaks is often the one that never mentions your - method's name — it dispatches through an interface, a lambda stored in a field, an inherited - override. Name matching cannot see those edges. Neither can embeddings. +## Quick start -A call graph fixes both, *if* you can trust it. An untrustworthy call graph is worse than none: a -missing edge is a silent wrong answer, and an over-fanned edge floods the context you were trying to -shrink. So the design goal here is not "produce a graph" — it is **produce a graph whose errors are -known, bounded, and labelled.** +```bash +git clone https://github.com/AxiomCodeAI/axiom-code-graph.git && cd axiom-code-graph +npm install # builds the parser and the engine -## What it is designed to do +bin/axiomcode