From 993ee9bf8248caa92525107207a13f106fc46e63 Mon Sep 17 00:00:00 2001 From: Dmitry Teryaev Date: Sat, 16 May 2026 11:29:00 +0300 Subject: [PATCH] sync docs and agent files with landed hints and ontology 13 Move HINTS propose/plan to completed, refresh AGENT-GUIDE, README, verification checklist, exploration skill, and architecture paper (five tools, ten edges, no Karpathy cite); rebuild paper.pdf. Co-authored-by: Cursor --- .cursor/rules/project-overview.mdc | 4 +- AGENTS.md | 3 +- README.md | 2 +- docs/AGENT-GUIDE.md | 4 +- docs/MANUAL-VERIFICATION-CHECKLIST.md | 20 +++++----- docs/paper/README.md | 7 ++-- docs/paper/figures/gps.tex | 10 +++-- docs/paper/paper.pdf | Bin 130141 -> 130248 bytes docs/paper/paper.tex | 35 ++++++++++-------- docs/paper/references.bib | 9 ----- docs/skills/java-codebase-explore.md | 5 ++- mcp_hints.py | 4 +- plans/{ => completed}/CURSOR-PROMPTS-HINTS.md | 28 +++++++------- plans/{ => completed}/PLAN-HINTS.md | 6 +-- .../HINTS-ROAD-SIGNS-PROPOSE.md | 6 +-- 15 files changed, 73 insertions(+), 70 deletions(-) rename plans/{ => completed}/CURSOR-PROMPTS-HINTS.md (89%) rename plans/{ => completed}/PLAN-HINTS.md (98%) rename propose/{ => completed}/HINTS-ROAD-SIGNS-PROPOSE.md (99%) diff --git a/.cursor/rules/project-overview.mdc b/.cursor/rules/project-overview.mdc index e61576f..ff1d9e1 100644 --- a/.cursor/rules/project-overview.mdc +++ b/.cursor/rules/project-overview.mdc @@ -19,7 +19,8 @@ when needed. ## Where to look - `README.md` — feature surface, env vars, ranking, capabilities, - MCP tools (`search` / `find` / `describe` / `neighbors` / `resolve`), `java-codebase-rag` CLI, + MCP tools (`search` / `find` / `describe` / `neighbors` / `resolve`; response + `hints` + pagination echo on locate tools — see README), `java-codebase-rag` CLI, "Re-index required" callouts. The current `ontology_version` is **13** (material `OVERRIDES` Symbol→Symbol edges: subtype instance method → supertype declaration with matching `signature`, one @@ -57,6 +58,7 @@ when needed. | `graph_enrich.py` | `module` / `microservice` resolution, `BrownfieldOverrides` (route + role + capability + http client + async producer), meta-annotation walk, `resolve_routes_for_method` / `resolve_http_client_for_method` / `resolve_async_producer_for_method`. | | `java_ontology.py` | Source of truth for `VALID_ROLES`, `VALID_CAPABILITIES`, `VALID_CLIENT_KINDS`, `VALID_HTTP_CALL_STRATEGIES`, `VALID_ASYNC_CALL_STRATEGIES`, `VALID_HTTP_CALL_MATCHES`. | | `chunk_heuristics.py` | Query-time chunk hints (no AST / no re-index). | +| `mcp_hints.py` | MCP v2 road-sign `hints` catalog (`generate_hints`; locked v1 templates in `propose/completed/HINTS-ROAD-SIGNS-PROPOSE.md`). | | `index_common.py` | Embedding config (no CocoIndex dep). | | `java_index_flow_lancedb.py` | CocoIndex flow (used by `java-codebase-rag init` / `increment` / `reprocess` / `erase`). | | `java_index_v1_common.py` | Shared file walker / exclude patterns. | diff --git a/AGENTS.md b/AGENTS.md index 0e466ac..d27f47e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -8,7 +8,8 @@ for tools that don't read `.cursor/rules/`. ## Where to look - `README.md` — feature surface, env vars, ranking, capabilities, - MCP tool list (`search` / `find` / `describe` / `neighbors` / `resolve`), + MCP tool list (`search` / `find` / `describe` / `neighbors` / `resolve`; + response `hints` + pagination echo — see README), CLI ops (`java-codebase-rag --help`), and "Re-index required" callouts. **`ontology_version` is currently 13** (stored `OVERRIDES` method→method edges traversable via `neighbors`; plus v12 HTTP brownfield rename, `CodebaseHttpMethod` enum, inbound HTTP layer-C replace — see README graph section). - [`docs/JAVA-CODEBASE-RAG-CLI.md`](./docs/JAVA-CODEBASE-RAG-CLI.md) — operator guide for the `java-codebase-rag` CLI (`init` / `increment` / `reprocess` / `erase`, `meta`, `tables`, `diagnose-ignore`, `analyze-pr`; hidden `refresh` alias → `reprocess` — see that doc). diff --git a/README.md b/README.md index 2e95a37..ad582d9 100644 --- a/README.md +++ b/README.md @@ -261,7 +261,7 @@ Example: {"kind":"symbol","filter":{"microservice":"chat-core","symbol_kind":"interface"}} ``` -**MCP v2 response extras (`hints`, pagination echo):** On success, `search`, `find`, `describe`, and `neighbors` return a `hints` field (`list[str]`, capped at five unique strings) with short, templated suggestions for likely next tool calls; hints are advisory. `hints` is always empty when `success` is false. `search` and `find` additionally echo the request’s `limit` and `offset` on success; on failure those echoed fields are omitted (`null` in JSON). The find page-full hint fires only when another page may exist (handler over-fetches by one row; not exposed on the output model). `neighbors` echoes `requested_edge_types` (deduped edge labels from the request) on success for empty-result hints and diagnostics. See [`propose/HINTS-ROAD-SIGNS-PROPOSE.md`](./propose/HINTS-ROAD-SIGNS-PROPOSE.md) Appendix A for the locked v1 template catalog. +**MCP v2 response extras (`hints`, pagination echo):** On success, `search`, `find`, `describe`, and `neighbors` return a `hints` field (`list[str]`, capped at five unique strings) with short, templated suggestions for likely next tool calls; hints are advisory. `hints` is always empty when `success` is false. `search` and `find` additionally echo the request’s `limit` and `offset` on success; on failure those echoed fields are omitted (`null` in JSON). The find page-full hint fires only when another page may exist (handler over-fetches by one row; not exposed on the output model). `neighbors` echoes `requested_edge_types` (deduped edge labels from the request) on success for empty-result hints and diagnostics. See [`propose/completed/HINTS-ROAD-SIGNS-PROPOSE.md`](./propose/completed/HINTS-ROAD-SIGNS-PROPOSE.md) Appendix A for the locked v1 template catalog. --- diff --git a/docs/AGENT-GUIDE.md b/docs/AGENT-GUIDE.md index ff8b5d1..6244f7d 100644 --- a/docs/AGENT-GUIDE.md +++ b/docs/AGENT-GUIDE.md @@ -20,7 +20,7 @@ > replace same-method built-in rows). **Design rationale:** navigation surface and tools — > [`propose/completed/MCP-API-V2-REDESIGN-PROPOSE.md`](../propose/completed/MCP-API-V2-REDESIGN-PROPOSE.md); > HTTP brownfield rename, `CodebaseHttpMethod`, and exclusivity — -> [`propose/HTTP-ROUTE-METHOD-ENUM-PROPOSE.md`](../propose/HTTP-ROUTE-METHOD-ENUM-PROPOSE.md). +> [`propose/completed/HTTP-ROUTE-METHOD-ENUM-PROPOSE.md`](../propose/completed/HTTP-ROUTE-METHOD-ENUM-PROPOSE.md). --- @@ -35,6 +35,8 @@ This MCP indexes Java enterprise projects into two stores: **MCP surface (navigation only):** `search`, `find`, `describe`, `neighbors`, `resolve`. +**Response extras (advisory):** On success, `search`, `find`, `describe`, and `neighbors` include a top-level `hints` list (≤5 templated next-call strings). `search` and `find` also echo `limit` / `offset`. Hints are safe to ignore; they are empty when `success` is false. Locked catalog: [`propose/completed/HINTS-ROAD-SIGNS-PROPOSE.md`](../propose/completed/HINTS-ROAD-SIGNS-PROPOSE.md) Appendix A. + **Operator / diagnostics (not MCP):** use the **`java-codebase-rag`** CLI — lifecycle (`init`, `increment`, `reprocess`, `erase`) plus `meta`, `tables`, `diagnose-ignore`, `analyze-pr`. Rebuilds are slow; the coding agent should not pretend it can reindex via MCP. For lifecycle commands, subprocess progress is written to **stderr** (use **`--quiet`** to suppress it); **stdout** is only the structured result payload. **Use this MCP when** you need whole-codebase context: who calls what, what handles a route, what a method invokes, where clients point, or fuzzy “where is concept X” entry points. diff --git a/docs/MANUAL-VERIFICATION-CHECKLIST.md b/docs/MANUAL-VERIFICATION-CHECKLIST.md index f753c8c..09c0cb8 100644 --- a/docs/MANUAL-VERIFICATION-CHECKLIST.md +++ b/docs/MANUAL-VERIFICATION-CHECKLIST.md @@ -13,15 +13,15 @@ Each item has: - a **Verification prompt** — paste verbatim into your agent (or run the shell snippet yourself) - **Expected (calibration)** — what the same prompt produces on - `tests/bank-chat-system` (ontology **11**). If your numbers diverge wildly, + `tests/bank-chat-system` (ontology **13**). If your numbers diverge wildly, that's a signal, not a verdict — what matters is the **shape** (proportions, error rates, presence of expected edges). - **If failing → fix** — concrete next step Calibration was captured against `tests/bank-chat-system` on -`master @ e90cbecc` (ontology version **11**): 84 files, 92 types, 474 -members, 0 parse errors, 17 routes, 11 `EXPOSES`, 793 `CALLS`, 2 `HTTP_CALLS`, -5 `ASYNC_CALLS`, 2 `Client` rows, microservices = `chat-core` + `chat-assign`. +`chore/docs-sync @ 1fa1b28` (ontology version **13**): 84 files, 92 types, 474 +members, 0 parse errors, 17 routes, 11 `EXPOSES`, 793 `CALLS`, 24 `OVERRIDES`, +2 `HTTP_CALLS`, 5 `ASYNC_CALLS`, 2 `Client` rows, microservices = `chat-core` + `chat-assign`. **Convention:** Graph ops use MCP. Index health / rebuild / PR analysis use **`java-codebase-rag`** (see README **CLI reference**). Example: @@ -83,16 +83,16 @@ export JAVA_CODEBASE_RAG_INDEX_DIR=/tmp/verify_index ## Phase 1 — Index health (4 items) -### 1.1 ☐ Ontology version is 11 +### 1.1 ☐ Ontology version is 13 **Verification prompt:** > In a shell with `JAVA_CODEBASE_RAG_INDEX_DIR` and `JAVA_CODEBASE_RAG_SOURCE_ROOT` > set for your graph, run `java-codebase-rag meta` (JSON output if piped). Report > `ontology_version`, `built_at`, `source_root`, and `parse_errors`. Does -> `ontology_version` equal `11`? +> `ontology_version` equal `13`? -**Expected (calibration):** `ontology_version: 11`, +**Expected (calibration):** `ontology_version: 13`, `parse_errors: 0`. **If failing → fix:** older ontology means a stale graph file. Re-pull the @@ -313,7 +313,7 @@ exact count. > with `{"kind":"client","filter":{},"limit":200}`. Rows should include > `client_kind`, `target_service`, paths, `source_layer`. -**Expected (calibration):** `ontology_version=11`, `counts.clients=2`, both +**Expected (calibration):** `ontology_version=13`, `counts.clients=2`, both `rest_template` in the fixture. **If failing → fix:** ontology < 10 → full rebuild. Zero clients when you @@ -496,7 +496,7 @@ expect Feign → README §3c brownfield. If everything is green: - Commit `.java-codebase-rag.yml` and `@Codebase*` stubs. -- Record **ontology 11** (or current `java-codebase-rag meta` value) in your team docs. +- Record **ontology 13** (or current `java-codebase-rag meta` value) in your team docs. - Periodically diff `java-codebase-rag meta` `counts` after large refactors. If something is red: @@ -522,4 +522,4 @@ java-codebase-rag meta --source-root tests/bank-chat-system --index-dir /tmp/cal `build_ast_graph.py` still takes `--kuzu-path` (the Kuzu file). Point it at `/code_graph.kuzu` so it matches the layout `java-codebase-rag meta --index-dir` expects under that directory. -Current snapshot: `tests/bank-chat-system`, `master @ e90cbecc`, ontology **11**. +Current snapshot: `tests/bank-chat-system`, `chore/docs-sync @ 1fa1b28`, ontology **13**. diff --git a/docs/paper/README.md b/docs/paper/README.md index dd65bce..c9802a8 100644 --- a/docs/paper/README.md +++ b/docs/paper/README.md @@ -8,8 +8,9 @@ architecture report: > May 2026. The paper describes the three-layer architecture (Extract \& Store / Navigate / -Reason), the four-tool MCP surface, the GPS metaphor (locate \-- inspect \-- walk), -the design principles that drove a v1\->v2 collapse from 9 tools to 4, and what +Reason), the five-tool MCP surface, the GPS metaphor (locate \-- inspect \-- walk), +the design principles that drove a v1\->v2 collapse from 9 tools to a small fixed +set (currently five navigation tools), and what the system deliberately does not do. It contains no empirical evaluation; testing on real legacy codebases is in progress and the data is not yet ready to publish. @@ -19,7 +20,7 @@ to publish. | File | Purpose | |---|---| | `paper.tex` | Main LaTeX source. Single-file paper, ~320 lines. | -| `references.bib` | BibTeX bibliography (13 entries). | +| `references.bib` | BibTeX bibliography. | | `figures/layers.tex` | TikZ source: three-layer architecture diagram. | | `figures/gps.tex` | TikZ source: GPS-metaphor / three-primitive diagram. | | `figures/workflow.tex` | TikZ source: canonical agent-interaction trace. | diff --git a/docs/paper/figures/gps.tex b/docs/paper/figures/gps.tex index 418941a..31f043f 100644 --- a/docs/paper/figures/gps.tex +++ b/docs/paper/figures/gps.tex @@ -24,14 +24,16 @@ \node[prim, walk, right=of inspect] (walk) {WALK\\ \footnotesize\itshape where can I go?}; % --- Tools above each primitive --- -\node[tool, above=0.7cm of locate, xshift=-0.85cm] (s) {search}; -\node[tool, above=0.7cm of locate, xshift=0.85cm] (f) {find}; -\node[tool, above=0.7cm of inspect] (d) {describe}; -\node[tool, above=0.7cm of walk] (n) {neighbors}; +\node[tool, above=0.7cm of locate, xshift=-1.15cm] (s) {search}; +\node[tool, above=0.7cm of locate, xshift=0cm] (f) {find}; +\node[tool, above=0.7cm of locate, xshift=1.15cm] (r) {resolve}; +\node[tool, above=0.7cm of inspect] (d) {describe}; +\node[tool, above=0.7cm of walk] (n) {neighbors}; % --- Connections tools -> primitives --- \draw[arr] (s) -- (locate.north -| s); \draw[arr] (f) -- (locate.north -| f); +\draw[arr] (r) -- (locate.north -| r); \draw[arr] (d) -- (inspect); \draw[arr] (n) -- (walk); diff --git a/docs/paper/paper.pdf b/docs/paper/paper.pdf index 68b7bade702ec7a6c72623ae13dd0c8e7dcf6328..14d6fcd2d43e7824d3fabd41ea4072e4bce06089 100644 GIT binary patch delta 69995 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 delta 69850 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 NFgP~~B_%~qMhe+wP3Zst diff --git a/docs/paper/paper.tex b/docs/paper/paper.tex index 121a103..df71efa 100644 --- a/docs/paper/paper.tex +++ b/docs/paper/paper.tex @@ -78,7 +78,7 @@ % ============================================================================= \begin{abstract} \noindent -Large language model agents reason poorly about codebases the moment the codebase no longer fits in their context window. The standard remedy --- chunked retrieval-augmented generation over source files \cite{lewis2020rag} --- treats source code as prose and produces irrelevant or contradictory chunks for non-trivial questions ("who calls this method", "what HTTP routes does this microservice expose", "if I change this DTO, what breaks"). \textbf{java-codebase-rag} is a graph-native code intelligence layer that replaces chunk retrieval with deterministic graph navigation. It exposes a deliberately small Model Context Protocol (MCP) surface --- four tools: \texttt{search}, \texttt{find}, \texttt{describe}, \texttt{neighbors} --- backed by a typed property graph extracted from Java microservice source via tree-sitter \cite{treesitter}. The four tools collapse onto three primitive operations the agent actually performs: \emph{locate} a starting node (\texttt{search}, \texttt{find}); \emph{inspect} a node's full record (\texttt{describe}); \emph{walk} edges in the graph (\texttt{neighbors}). We call this metaphor \emph{a GPS for the agent}: the agent always knows where it is in the codebase, what is adjacent, and how to move. This report describes the architecture, the inspirations (GraphRAG \cite{edge2024graphrag}, context engineering \cite{karpathy2025context}, the MCP standard \cite{anthropic2024mcp}, and the broader AST-graph-RAG line), and the design principles that shaped a v2 redesign from a 9-tool surface into the current 4-tool surface plus eight operator CLI subcommands grouped as lifecycle (\texttt{init}, \texttt{increment}, \texttt{reprocess}, \texttt{erase}), introspection (\texttt{meta}, \texttt{tables}, \texttt{diagnose-ignore}), and analysis (\texttt{analyze-pr}) (Section~\ref{sec:layer3} discusses the CLI briefly; full reference in \texttt{docs/JAVA-CODEBASE-RAG-CLI.md}). We do not include empirical evaluation: testing on real legacy codebases is in progress and the data is not yet ready to publish. The contribution of this report is conceptual: it argues for a particular shape of code-intelligence layer --- minimal, typed, graph-native, agent-shaped --- and shows the architecture in enough detail that a reader could rebuild it for another language ecosystem. +Large language model agents reason poorly about codebases the moment the codebase no longer fits in their context window. The standard remedy --- chunked retrieval-augmented generation over source files \cite{lewis2020rag} --- treats source code as prose and produces irrelevant or contradictory chunks for non-trivial questions ("who calls this method", "what HTTP routes does this microservice expose", "if I change this DTO, what breaks"). \textbf{java-codebase-rag} is a graph-native code intelligence layer that replaces chunk retrieval with deterministic graph navigation. It exposes a deliberately small Model Context Protocol (MCP) surface --- five tools: \texttt{search}, \texttt{find}, \texttt{describe}, \texttt{neighbors}, \texttt{resolve} --- backed by a typed property graph extracted from Java microservice source via tree-sitter \cite{treesitter}. The five tools collapse onto three primitive operations the agent actually performs: \emph{locate} a starting node (\texttt{search}, \texttt{find}, \texttt{resolve}); \emph{inspect} a node's full record (\texttt{describe}); \emph{walk} edges in the graph (\texttt{neighbors}). We call this metaphor \emph{a GPS for the agent}: the agent always knows where it is in the codebase, what is adjacent, and how to move. This report describes the architecture, the inspirations (GraphRAG \cite{edge2024graphrag}, the MCP standard \cite{anthropic2024mcp}, and the broader AST-graph-RAG line), and the design principles that shaped a v2 redesign from a 9-tool surface into the current 5-tool surface plus eight operator CLI subcommands grouped as lifecycle (\texttt{init}, \texttt{increment}, \texttt{reprocess}, \texttt{erase}), introspection (\texttt{meta}, \texttt{tables}, \texttt{diagnose-ignore}), and analysis (\texttt{analyze-pr}) (Section~\ref{sec:layer3} discusses the CLI briefly; full reference in \texttt{docs/JAVA-CODEBASE-RAG-CLI.md}). We do not include empirical evaluation: testing on real legacy codebases is in progress and the data is not yet ready to publish. The contribution of this report is conceptual: it argues for a particular shape of code-intelligence layer --- minimal, typed, graph-native, agent-shaped --- and shows the architecture in enough detail that a reader could rebuild it for another language ecosystem. \end{abstract} \vspace{0.6em} @@ -103,11 +103,11 @@ \section{Inspirations} \paragraph{GraphRAG and AST-graph retrieval.} Microsoft's GraphRAG \cite{edge2024graphrag} demonstrated that constructing a knowledge graph from source documents and retrieving over the graph --- with community detection for global summarisation and hierarchical context for local queries --- substantially outperforms flat vector retrieval for query-focused summarisation. The lesson generalises beyond text: \emph{any} corpus with strong relational structure benefits from extracting that structure once and querying it as a graph. Source code has the strongest relational structure of any corpus we routinely retrieve over (compilers extract it for free); not exploiting it is a missed opportunity. Subsequent work in the AST-graph-RAG line \cite{guo2024lightrag} reinforces the pattern: lighter, simpler graph backends with cleaner ontologies often beat heavyweight ones for retrieval quality. -\paragraph{Context engineering.} Karpathy's \cite{karpathy2025context} framing of context engineering --- the delicate art of filling the context window with the right information at the right time --- shifted our thinking on tool design. A tool that returns 5\,KB of plausibly-relevant text is not equivalent to a tool that returns 200 bytes of structured truth; the second is far more useful. Lost-in-the-middle effects \cite{liu2023lostmiddle} mean that long noisy contexts actively hurt downstream reasoning. The correct response is not "retrieve better" but "retrieve less, with type guarantees". Every tool in the java-codebase-rag surface returns small, typed, deterministic JSON. The agent never has to decide whether what it received is signal or noise. +\paragraph{Context engineering.} Context engineering --- filling the context window with the right information at the right time --- shaped our tool design. A tool that returns 5\,KB of plausibly-relevant text is not equivalent to a tool that returns 200 bytes of structured truth; the second is far more useful. Lost-in-the-middle effects \cite{liu2023lostmiddle} mean that long noisy contexts actively hurt downstream reasoning. The correct response is not "retrieve better" but "retrieve less, with type guarantees". Every tool in the java-codebase-rag surface returns small, typed, deterministic JSON. The agent never has to decide whether what it received is signal or noise. \paragraph{Model Context Protocol.} The MCP standard \cite{anthropic2024mcp} fixed the impedance mismatch between agents and tools: a single transport, a single way to declare schemas, and a single way to bind tools to hosts (Claude Code, Cursor, Qwen Code, and others). Without MCP this report would describe a Claude-Code-only system. With MCP, a single Python server reaches every host the user already prefers. The standard does one thing well and stops. -\paragraph{The agent-skills layer.} Anthropic's agent skills \cite{anthropic2025skills} provided the missing piece between raw tool calls and agent reasoning: a skill is a slash-invokable, declaratively-described chain of tool calls that encodes a recurring intent ("trace this request flow", "show me callers of this method"). Skills are how a 4-tool MCP grows into hundreds of usable agent intents without growing the tool surface. We describe the planned skills layer briefly in \S\ref{sec:future} and defer its specification to a separate document; empirical testing showed that a comprehensive prose guide (mirrored as \texttt{AGENT-GUIDE.md} and \texttt{QWEN.md}) is sufficient for current weak-model performance, so the skills layer is not yet on the critical path. +\paragraph{The agent-skills layer.} Anthropic's agent skills \cite{anthropic2025skills} provided the missing piece between raw tool calls and agent reasoning: a skill is a slash-invokable, declaratively-described chain of tool calls that encodes a recurring intent ("trace this request flow", "show me callers of this method"). Skills are how a small fixed MCP surface grows into hundreds of usable agent intents without growing the tool count. We describe the planned skills layer briefly in \S\ref{sec:future} and defer its specification to a separate document; empirical testing showed that a comprehensive prose guide (mirrored as \texttt{docs/AGENT-GUIDE.md}) is sufficient for current weak-model performance, so the skills layer is not yet on the critical path. \paragraph{What we are not.} We do not claim novelty over GraphRAG, LightRAG, or LSP-backed tooling. We claim that a particular synthesis --- minimal MCP surface, typed property graph, three-primitive navigation model, agent-shaped affordances --- is the right shape for code intelligence at the agentic-development layer. The synthesis is the contribution. @@ -120,7 +120,7 @@ \section{Architecture: three layers} \begin{figure}[H] \centering \input{figures/layers.tex} -\caption{Three-layer architecture. \textbf{Layer 1 (Extract \& Store)} ingests Java source via tree-sitter and emits nodes and edges into an embedded property graph. \textbf{Layer 2 (Navigate)} exposes four MCP tools collapsing onto three primitive operations: locate, inspect, walk. \textbf{Layer 3 (Reason)} is the agent host (Claude Code, Qwen Code, or any MCP-compatible runtime) plus optional skills. Each layer is replaceable: swap the extractor for another language, swap the graph backend, swap the agent host --- contracts hold.} +\caption{Three-layer architecture. \textbf{Layer 1 (Extract \& Store)} ingests Java source via tree-sitter and emits nodes and edges into an embedded property graph. \textbf{Layer 2 (Navigate)} exposes five MCP tools collapsing onto three primitive operations: locate, inspect, walk. \textbf{Layer 3 (Reason)} is the agent host (Claude Code, Qwen Code, or any MCP-compatible runtime) plus optional skills. Each layer is replaceable: swap the extractor for another language, swap the graph backend, swap the agent host --- contracts hold.} \label{fig:layers} \end{figure} @@ -131,7 +131,7 @@ \subsection{Layer 1: extract and store} The graph is stored in K\`uzu \cite{kuzu2023}, an embedded property-graph database with a Cypher-style query language. K\`uzu was chosen over Neo4j for two pragmatic reasons: it embeds in-process (no separate database server to operate), and it has zero ongoing cost for a developer-side tool. Cocoindex \cite{cocoindex2024} drives the indexing pipeline (incremental rebuilds, dependency tracking, change detection on source files). -The ontology is small by design (Table~\ref{tab:ontology}). Three node kinds (\textsc{symbol}, \textsc{route}, \textsc{client}) cover everything an agent realistically asks about; nine edge types cover every relation we have found load-bearing in practice. The ontology version is currently 11; the discipline is that no edge type ships unless at least three realistic agent questions in our use-case backlog require it. +The ontology is small by design (Table~\ref{tab:ontology}). Three node kinds (\textsc{symbol}, \textsc{route}, \textsc{client}) cover everything an agent realistically asks about; ten edge types cover every relation we have found load-bearing in practice. The ontology version is currently 13; the discipline is that no edge type ships unless at least three realistic agent questions in our use-case backlog require it. \begin{table}[H] \centering @@ -147,10 +147,11 @@ \subsection{Layer 1: extract and store} \textsc{route} & An HTTP-exposed endpoint (Spring \texttt{@RequestMapping}, JAX-RS \texttt{@Path}, etc.). One per HTTP method + path. \\ \textsc{client} & A typed reference to an external service: declared HTTP client (Feign, OpenFeign, REST clients) or messaging client. \\ \midrule -\multicolumn{2}{l}{\emph{Edge types (9)}} \\ +\multicolumn{2}{l}{\emph{Edge types (10)}} \\ \textsc{extends} & Class- or interface-inheritance edge (Java \texttt{extends}). \\ \textsc{implements} & Interface-implementation edge (Java \texttt{implements}). \\ \textsc{injects} & Dependency-injection edge: a symbol receives another via constructor, field, or setter injection. \\ +\textsc{overrides} & Subtype method overrides a supertype declaration with the same signature. \\ \textsc{declares} & Container declares a member: class \textsc{declares} method, package \textsc{declares} class, etc. \\ \textsc{declares\_client} & Module declares a typed external-service client. \\ \textsc{calls} & In-process method call. The work-horse edge. \\ @@ -164,12 +165,12 @@ \subsection{Layer 1: extract and store} \subsection{Layer 2: navigate (the MCP)} \label{sec:layer2} -Layer 2 is the public surface of the system. Four tools, three primitive operations (Figure~\ref{fig:gps}). Every tool returns small, typed JSON; no tool returns more than a single page of results without explicit pagination. +Layer 2 is the public surface of the system. Five tools, three primitive operations (Figure~\ref{fig:gps}). Every tool returns small, typed JSON; no tool returns more than a single page of results without explicit pagination. Successful outputs may also carry advisory \texttt{hints} (templated next-call strings) and pagination echoes on \texttt{search} / \texttt{find}. \begin{figure}[H] \centering \input{figures/gps.tex} -\caption{The GPS metaphor. Four MCP tools collapse onto three primitive operations: \emph{locate} (where am I?), \emph{inspect} (what is here?), \emph{walk} (where can I go?). Every realistic agent question decomposes into a chain over these three primitives. The agent supplies the reasoning; the graph supplies the geometry.} +\caption{The GPS metaphor. Five MCP tools collapse onto three primitive operations: \emph{locate} (where am I?), \emph{inspect} (what is here?), \emph{walk} (where can I go?). Every realistic agent question decomposes into a chain over these three primitives. The agent supplies the reasoning; the graph supplies the geometry.} \label{fig:gps} \end{figure} @@ -191,7 +192,7 @@ \subsection{Layer 2: navigate (the MCP)} \subsection{Layer 3: reason (the agent)} \label{sec:layer3} -Layer 3 is whatever MCP-compatible host the developer prefers --- Claude Code, Qwen Code, Cursor, or another runtime. The host loads the java-codebase-rag MCP server, sees the four tools, and the agent reasons over them. There is no logic in this layer that is specific to java-codebase-rag; the entire affordance is the four tools and a prose agent guide (\texttt{docs/AGENT-GUIDE.md}, with a Qwen-specific mirror at \texttt{QWEN.md}) that documents the canonical workflows --- forced reasoning preamble, decision tree, edge taxonomy, worked examples. +Layer 3 is whatever MCP-compatible host the developer prefers --- Claude Code, Qwen Code, Cursor, or another runtime. The host loads the java-codebase-rag MCP server, sees the five tools, and the agent reasons over them. There is no logic in this layer that is specific to java-codebase-rag; the entire affordance is the five tools and a prose agent guide (\texttt{docs/AGENT-GUIDE.md}) that documents the canonical workflows --- forced reasoning preamble, decision tree, edge taxonomy, worked examples. A planned addition (deferred) is a thin skills layer that turns recurring intents (\texttt{/callers}, \texttt{/routes}, \texttt{/explain-feature}) into one-line slash invocations that compile to MCP-call chains. Empirical testing on the target codebase showed that the prose guide alone is sufficient for current weak-model accuracy, so the skills layer is not yet implemented. @@ -208,7 +209,7 @@ \section{Agent workflow} \label{fig:workflow} \end{figure} -The workflow is general. The java-codebase-rag agent guide enumerates 15+ canonical intents, each decomposing into 2--5 tool calls over the same four tools. New intents are new chains, not new tools. +The workflow is general. The java-codebase-rag agent guide enumerates 15+ canonical intents, each decomposing into 2--5 tool calls over the same five tools. New intents are new chains, not new tools. A subtle point worth surfacing: the agent's first move is almost always \texttt{search}, not \texttt{find}. Natural-language questions arrive fuzzy; \texttt{search} is the cheapest way to get from "fuzzy English" to "candidate node ids". Once the agent has an id, all subsequent navigation is deterministic. This shape --- semantic at the boundary, structural in the interior --- is the practical reconciliation between vector retrieval and graph navigation. We do not need hybrid retrieval (parallel vector $+$ graph fusion) for most questions; we need \emph{sequential} retrieval, with the vector step strictly outside the graph step. @@ -216,13 +217,13 @@ \section{Agent workflow} \section{Design principles} \label{sec:principles} -The architecture above did not arrive in one step. It arrived after a v1 surface of nine MCP tools collapsed --- in design review --- into four. Five design principles guided the collapse, and they remain binding for any future surface change. +The architecture above did not arrive in one step. It arrived after a v1 surface of nine MCP tools collapsed --- in design review --- into a small fixed set (currently five navigation tools). Five design principles guided the collapse, and they remain binding for any future surface change. \begin{enumerate} \item \textbf{The MCP is a graph navigator, not a reasoning engine.} If a tool's job is to combine results, summarise across nodes, or rank candidates, the tool belongs in the agent's reasoning, not the MCP. Move it to a skill or to a CLI subcommand. \item \textbf{Every tool has a single primitive operation.} If a tool does two things ("search and describe", "find and walk"), it should be two tools or one tool with a strict contract. Composite tools confuse weak models and double the failure surface. \item \textbf{Schemas are closed where finite.} Every parameter that takes one of $N$ known values is a \texttt{Literal}-typed enumeration. The agent gets explicit affordances; the server gets free input validation. -\item \textbf{Operational surface is human-shaped, not agent-shaped.} {\sloppy Tools the agent does not call belong in a CLI (\texttt{java-codebase-rag} lifecycle and introspection subcommands --- \texttt{init}, \texttt{increment}, \texttt{reprocess}, \texttt{erase}, \texttt{meta}, \texttt{tables}, \texttt{diagnose-ignore}, \texttt{analyze-pr}), not the MCP. The MCP surface stays at four tools forever.\par} +\item \textbf{Operational surface is human-shaped, not agent-shaped.} {\sloppy Tools the agent does not call belong in a CLI (\texttt{java-codebase-rag} lifecycle and introspection subcommands --- \texttt{init}, \texttt{increment}, \texttt{reprocess}, \texttt{erase}, \texttt{meta}, \texttt{tables}, \texttt{diagnose-ignore}, \texttt{analyze-pr}), not the MCP. The MCP navigation surface stays small and fixed; new agent intents are new chains over the existing tools, not new tools.\par} \item \textbf{Walks are explicit, not silent.} The system never multi-hops without the agent asking. Multi-hop intents become multi-call chains. The agent always knows what edges it walked, and the user always can audit. \end{enumerate} @@ -247,10 +248,10 @@ \section{Future work} \label{sec:future} {\sloppy -Three threads are open and prioritised. \textbf{(1) Real-codebase evaluation.} Testing on a large legacy Java microservice estate is in progress; once stable, we expect to publish accuracy numbers (intent $\to$ correct-tool-chain rate, end-to-end answer correctness against human labels) for the four-tool surface against weak (Qwen) and strong (Claude Sonnet 4.5) hosts. \textbf{(2) Skills layer.} A 13-skill set --- 10 single-call navigation skills (\texttt{/callers}, \texttt{/callees}, \texttt{/routes}, \texttt{/controllers}, \ldots) and 3 multi-step workflow skills (\texttt{/explain-feature}, \texttt{/impact-of}, \texttt{/trace-request-flow}) --- is designed and on hold until the prose-guide approach shows insufficient. \textbf{(3) Tier-2 incremental rebuilds.} Today the index rebuilds the affected modules; we want commit-level incremental rebuilds for sub-second index updates on large monorepos. +Three threads are open and prioritised. \textbf{(1) Real-codebase evaluation.} Testing on a large legacy Java microservice estate is in progress; once stable, we expect to publish accuracy numbers (intent $\to$ correct-tool-chain rate, end-to-end answer correctness against human labels) for the five-tool surface against weak (Qwen) and strong (Claude Sonnet 4.5) hosts. \textbf{(2) Skills layer.} A 13-skill set --- 10 single-call navigation skills (\texttt{/callers}, \texttt{/callees}, \texttt{/routes}, \texttt{/controllers}, \ldots) and 3 multi-step workflow skills (\texttt{/explain-feature}, \texttt{/impact-of}, \texttt{/trace-request-flow}) --- is designed and on hold until the prose-guide approach shows insufficient. \textbf{(3) Tier-2 incremental rebuilds.} Today the index rebuilds the affected modules; we want commit-level incremental rebuilds for sub-second index updates on large monorepos. \par} -We deliberately list \emph{no} item that would grow the MCP tool count. The four-tool surface is a load-bearing commitment; it will not be revisited without proof that it cannot accommodate a real intent. +We deliberately list \emph{no} item that would grow the MCP tool count without proof that the existing five tools cannot accommodate a real intent. % ============================================================================= \section*{Acknowledgements} @@ -265,7 +266,7 @@ \section*{Acknowledgements} \section{Tool signatures (verbatim)} \label{app:tools} -The four MCP tools have the following Python (Pydantic) signatures, simplified for readability. The full source lives at \texttt{mcp\_v2.py} in the repository. +The five MCP tools have the following Python (Pydantic) signatures, simplified for readability. The full source lives at \texttt{mcp\_v2.py} in the repository. \begin{lstlisting}[language=Python] DeclarationSymbolKind = Literal[ @@ -274,7 +275,7 @@ \section{Tool signatures (verbatim)} ] EdgeType = Literal[ - "EXTENDS", "IMPLEMENTS", "INJECTS", "DECLARES", + "EXTENDS", "IMPLEMENTS", "INJECTS", "OVERRIDES", "DECLARES", "DECLARES_CLIENT", "CALLS", "EXPOSES", "HTTP_CALLS", "ASYNC_CALLS" ] @@ -308,6 +309,8 @@ \section{Tool signatures (verbatim)} def describe(id: str) -> DescribeOutput: ... +def resolve(identifier: str, hint_kind: str | None = None) -> ResolveOutput: ... + def neighbors( id: str, direction: Literal["in", "out"], diff --git a/docs/paper/references.bib b/docs/paper/references.bib index 08c6530..634455e 100644 --- a/docs/paper/references.bib +++ b/docs/paper/references.bib @@ -28,15 +28,6 @@ @misc{lewis2020rag url = {https://arxiv.org/abs/2005.11401} } -@misc{karpathy2025context, - author = {Karpathy, Andrej}, - title = {Context engineering: the delicate art of filling the context window}, - howpublished = {Online essay}, - year = {2025}, - url = {https://x.com/karpathy/status/1937902205765607626}, - note = {Accessed 2026-05-08} -} - @misc{anthropic2025skills, author = {Anthropic}, title = {Agent Skills}, diff --git a/docs/skills/java-codebase-explore.md b/docs/skills/java-codebase-explore.md index 1b0b3fa..f55eaec 100644 --- a/docs/skills/java-codebase-explore.md +++ b/docs/skills/java-codebase-explore.md @@ -205,7 +205,7 @@ disagreement as evidence of staleness, not as a contradiction. - **Wire fields:** Cross-service and resolver-heavy edges carry **`edge.attrs`** (same map surfaced as `attrs` in payloads). Treat **`attrs.confidence`**, **`attrs.strategy`**, and **`attrs.match`** as structured hints: low confidence means “resolver could not pin this cleanly,” not “definitely false.” - **MCP vs editor:** If the open buffer contradicts graph edges (deleted method, renamed class), **trust the file** and treat MCP as stale until **`reprocess`** (or at least acknowledge incremental lag after **`increment`**). -- **Operational check:** Use **`java-codebase-rag meta`** to compare index health, ontology version (currently **v11** in this repo’s README), and recency signals—then decide whether to re-run **`reprocess`** before continuing a mission. +- **Operational check:** Use **`java-codebase-rag meta`** to compare index health, ontology version (currently **13** in this repo’s README), and recency signals—then decide whether to re-run **`reprocess`** before continuing a mission. ## Anti-patterns @@ -234,12 +234,13 @@ Five MCP tools: Three node kinds: `symbol`, `route`, `client`. Ids carry a prefix (`sym:`, `route:` / `r:`, `client:` / `c:`). -Nine edge types: +Ten edge types: | Group | Edges | | ----- | ----- | | Type wiring | `EXTENDS`, `IMPLEMENTS`, `INJECTS` | | Containment | `DECLARES`, `DECLARES_CLIENT` | +| Method overrides | `OVERRIDES` | | Method calls | `CALLS` | | Service boundary | `EXPOSES` | | Cross-service | `HTTP_CALLS`, `ASYNC_CALLS` | diff --git a/mcp_hints.py b/mcp_hints.py index 72e3f06..ee2f43b 100644 --- a/mcp_hints.py +++ b/mcp_hints.py @@ -1,7 +1,7 @@ """Pure MCP v2 road-sign hint generation (no graph I/O, no search, no LLM). -Locked v1 catalog: ``propose/HINTS-ROAD-SIGNS-PROPOSE.md`` Appendix A. -Priority cap: same propose §7.12 / ``plans/PLAN-HINTS.md`` principles. +Locked v1 catalog: ``propose/completed/HINTS-ROAD-SIGNS-PROPOSE.md`` Appendix A. +Priority cap: same propose §7.12 / ``plans/completed/PLAN-HINTS.md`` principles. """ from __future__ import annotations diff --git a/plans/CURSOR-PROMPTS-HINTS.md b/plans/completed/CURSOR-PROMPTS-HINTS.md similarity index 89% rename from plans/CURSOR-PROMPTS-HINTS.md rename to plans/completed/CURSOR-PROMPTS-HINTS.md index ff1806d..7e5c8ad 100644 --- a/plans/CURSOR-PROMPTS-HINTS.md +++ b/plans/completed/CURSOR-PROMPTS-HINTS.md @@ -1,7 +1,7 @@ # Cursor task prompts — Hints (road signs) + stored `OVERRIDES` -Status: **active**. Plan: [`plans/PLAN-HINTS.md`](./PLAN-HINTS.md). Propose: -[`propose/HINTS-ROAD-SIGNS-PROPOSE.md`](../propose/HINTS-ROAD-SIGNS-PROPOSE.md). +Status: **completed** (landed). Plan: [`plans/completed/PLAN-HINTS.md`](./PLAN-HINTS.md). Propose: +[`propose/completed/HINTS-ROAD-SIGNS-PROPOSE.md`](../propose/completed/HINTS-ROAD-SIGNS-PROPOSE.md). One prompt per PR. Copy the fenced **Prompt** block into Cursor agent mode with the listed `@-files` attached. @@ -22,13 +22,13 @@ is merged to `master`. **Branch:** `feat/hints-stored-overrides` off `master`. **Base:** `master`. -**Plan section:** [`plans/PLAN-HINTS.md`](./PLAN-HINTS.md) § PR-A — Stored `OVERRIDES` edges + ontology bump. +**Plan section:** [`plans/completed/PLAN-HINTS.md`](./PLAN-HINTS.md) § PR-A — Stored `OVERRIDES` edges + ontology bump. **PR title:** `materialize OVERRIDES rel and bump ontology to 13` **Attach (`@-files`):** -- `@plans/PLAN-HINTS.md` (PR-A section + principles + cross-PR risks) -- `@propose/HINTS-ROAD-SIGNS-PROPOSE.md` (§6 PR-A, §7.17) +- `@plans/completed/PLAN-HINTS.md` (PR-A section + principles + cross-PR risks) +- `@propose/completed/HINTS-ROAD-SIGNS-PROPOSE.md` (§6 PR-A, §7.17) - `@build_ast_graph.py` - `@ast_java.py` - `@kuzu_queries.py` (`override_axis_rollup_for` — reference only unless optional hygiene is justified) @@ -43,7 +43,7 @@ is merged to `master`. **Prompt:** ```` -You are implementing PR-HINTS-A from `plans/PLAN-HINTS.md` (the **PR-A** section). +You are implementing PR-HINTS-A from `plans/completed/PLAN-HINTS.md` (the **PR-A** section). Read the PR-A **File-by-file changes** and **Tests for PR-A** before coding. If this prompt and the plan disagree, the plan wins; the propose fills background only. @@ -125,7 +125,7 @@ present; server `describe` text must **not** claim stored `OVERRIDES` is unusabl `neighbors` (rollup/dot-key carve-out may remain for virtual keys). ```bash -# Allowed paths for PR-A (see `plans/PLAN-HINTS.md` PR-A file-by-file). Anything +# Allowed paths for PR-A (see `plans/completed/PLAN-HINTS.md` PR-A file-by-file). Anything # else printed here is a red flag — confirm against that list or trim scope before merge. git diff master..HEAD --name-only | rg -v '^(tests/|build_ast_graph\.py|ast_java\.py|java_index_flow_lancedb\.py|kuzu_queries\.py|mcp_v2\.py|server\.py|README\.md)$' || true ``` @@ -153,7 +153,7 @@ fixture expects overrides; paste command + key line in the PR body. ## Definition of Done -- [ ] PR-A plan definition of done satisfied (`plans/PLAN-HINTS.md`). +- [ ] PR-A plan definition of done satisfied (`plans/completed/PLAN-HINTS.md`). - [ ] `.venv/bin/ruff check .` and `.venv/bin/python -m pytest tests -v` green. - [ ] PR title: `materialize OVERRIDES rel and bump ontology to 13` - [ ] Branch: `feat/hints-stored-overrides` @@ -166,13 +166,13 @@ fixture expects overrides; paste command + key line in the PR body. **Branch:** `feat/mcp-v2-hints` off `master` **after PR-HINTS-A is merged**. **Base:** `master` at merge commit of PR-HINTS-A. -**Plan section:** [`plans/PLAN-HINTS.md`](./PLAN-HINTS.md) § PR-B — `hints`, pagination echo, `mcp_hints.py` catalog. +**Plan section:** [`plans/completed/PLAN-HINTS.md`](./PLAN-HINTS.md) § PR-B — `hints`, pagination echo, `mcp_hints.py` catalog. **PR title:** `add MCP v2 hints and find/search pagination echo` **Attach (`@-files`):** -- `@plans/PLAN-HINTS.md` (PR-B section + principles §7.12 priority) -- `@propose/HINTS-ROAD-SIGNS-PROPOSE.md` (§3, Appendix A — canonical template strings) +- `@plans/completed/PLAN-HINTS.md` (PR-B section + principles §7.12 priority) +- `@propose/completed/HINTS-ROAD-SIGNS-PROPOSE.md` (§3, Appendix A — canonical template strings) - `@mcp_hints.py` (create) - `@mcp_v2.py` (outputs + handler wiring) - `@server.py` (optional: tool `description=` updates for `hints` / pagination — minimal) @@ -182,12 +182,12 @@ fixture expects overrides; paste command + key line in the PR body. **Prompt:** ```` -You are implementing PR-HINTS-B from `plans/PLAN-HINTS.md` (the **PR-B** section). +You are implementing PR-HINTS-B from `plans/completed/PLAN-HINTS.md` (the **PR-B** section). PR-HINTS-A is already on `master` (stored `OVERRIDES`, `EdgeType` includes it, ontology 13). Do not re-land builder/schema work here. -Read **Appendix A** in `propose/HINTS-ROAD-SIGNS-PROPOSE.md` for verbatim v1 template +Read **Appendix A** in `propose/completed/HINTS-ROAD-SIGNS-PROPOSE.md` for verbatim v1 template strings. If §3.3 and Appendix A disagree, Appendix A wins; if you change strings, update the propose in the same PR. @@ -206,7 +206,7 @@ update the propose in the same PR. 3. **`README.md`** — Document `hints` and pagination echo briefly under MCP v2. 4. **`server.py`** — Only if needed for LLM-facing tool descriptions; keep stdout clean. 5. **Tests** — Implement **all** `test_*` names listed under **Tests for PR-B** in - `plans/PLAN-HINTS.md` (verbatim names). Prefer crafted pydantic payloads where the + `plans/completed/PLAN-HINTS.md` (verbatim names). Prefer crafted pydantic payloads where the scenario does not need a DB; use `kuzu_graph` / fixtures where integration is required. diff --git a/plans/PLAN-HINTS.md b/plans/completed/PLAN-HINTS.md similarity index 98% rename from plans/PLAN-HINTS.md rename to plans/completed/PLAN-HINTS.md index 333351a..b8d3f50 100644 --- a/plans/PLAN-HINTS.md +++ b/plans/completed/PLAN-HINTS.md @@ -1,7 +1,7 @@ # Plan: Hints (road signs) + stored `OVERRIDES` edges -Status: **active (planning)**. This plan implements -[`propose/HINTS-ROAD-SIGNS-PROPOSE.md`](../propose/HINTS-ROAD-SIGNS-PROPOSE.md). +Status: **completed** (landed). This plan implemented +[`propose/completed/HINTS-ROAD-SIGNS-PROPOSE.md`](../propose/completed/HINTS-ROAD-SIGNS-PROPOSE.md). Depends on: **none** (strict `find` frame and `resolve` tool are already landed per the propose open-links section). @@ -219,5 +219,5 @@ Use **verbatim** names below (adjust only if pytest collection would collide; if ## Cursor handoff -Per-PR execution prompts: [`plans/CURSOR-PROMPTS-HINTS.md`](CURSOR-PROMPTS-HINTS.md) +Per-PR execution prompts: [`plans/completed/CURSOR-PROMPTS-HINTS.md`](CURSOR-PROMPTS-HINTS.md) (structure aligned with completed `plans/completed/CURSOR-PROMPTS-*.md` handoffs). diff --git a/propose/HINTS-ROAD-SIGNS-PROPOSE.md b/propose/completed/HINTS-ROAD-SIGNS-PROPOSE.md similarity index 99% rename from propose/HINTS-ROAD-SIGNS-PROPOSE.md rename to propose/completed/HINTS-ROAD-SIGNS-PROPOSE.md index 855cd93..64d1080 100644 --- a/propose/HINTS-ROAD-SIGNS-PROPOSE.md +++ b/propose/completed/HINTS-ROAD-SIGNS-PROPOSE.md @@ -1,6 +1,6 @@ # HINTS-ROAD-SIGNS — machine-readable next-action signals on MCP V2 outputs -**Status**: under review +**Status**: completed (landed: stored `OVERRIDES` edges + MCP `hints` catalog; plan: [`plans/completed/PLAN-HINTS.md`](../plans/completed/PLAN-HINTS.md)) **Author**: Dmitriy Teriaev + Perplexity Computer **Date**: 2026-05-14 (revised 2026-05-15) @@ -269,7 +269,7 @@ results==[] and edge_types non-empty → "0 results — check if the requested len(results)==limit and (max_score - min_score) < 0.1*max_score → "results look weak — narrow the query or try find(role=…)" # requires SearchOutput.limit echo, see §3.1 ``` -File placement (`mcp_hints.py`), function decomposition, integration points in `mcp_v2.py`, and test file names go in `plans/PLAN-HINTS.md` — not in this propose. +File placement (`mcp_hints.py`), function decomposition, integration points in `mcp_v2.py`, and test file names go in `plans/completed/PLAN-HINTS.md` — not in this propose. ## Appendix B — What changed (traceability) @@ -291,7 +291,7 @@ File placement (`mcp_hints.py`), function decomposition, integration points in ` 7. Old decision §7.14 (no hints for `find` when no filter was passed) dropped. In the post-#117 strict-frame world, `find()` without a filter is a contract error that fails loud — the carve-out was solving a problem the strict frame already solved. 8. New decision §7.15 added: hints are documentation-grade, not programmatic-dispatch. Locks the consumer model so future readers don't relitigate it. 9. New decision §7.16 added: cross-tool hints allowed at v1, scoped to the one row pointing at `resolve(…)`. Other cross-tool templates need their own amendment per §7.11. -10. Appendix A trimmed from a `mcp_hints.py` skeleton with function bodies to a verbatim template catalog. Function decomposition is plan-level work and belongs in `plans/PLAN-HINTS.md`. +10. Appendix A trimmed from a `mcp_hints.py` skeleton with function bodies to a verbatim template catalog. Function decomposition is plan-level work and belongs in `plans/completed/PLAN-HINTS.md`. 11. Open-links section rewritten: #117 landed, `resolve` shipped, #118 is a partial overlap (documentation-grade only) not a resolution. Misleading "locking hints here mostly resolves #118" claim removed. **What changed after the fourth review pass (2026-05-15, PR-A builder sharpening)**