Skip to content
CodeVetter docs
Esc
navigateopen⌘Jpreview
On this page

Structural graph coverage contract

Structural graph coverage contract

Last verified: 2026-07-18

CodeVetter’s canonical repository graph is local, source-backed, bounded, and deterministic. This document records the capability floor the product must keep while the implementation evolves.

Required capabilities

Capability CodeVetter contract Reproducible evidence
Syntax symbols Bundled extraction for TypeScript, TSX, JavaScript, JSX, Rust, Python, Go, Java, C, C++, C#, Ruby, PHP, Kotlin, and Swift with stable source-located files, symbols, imports, calls, inheritance, tests, and metadata nodes structural_graph/extract/tests.rs, language.rs
Cross-file resolution Deterministic resolution for imports, calls, inheritance/types, tests, docs, analytics events, persistence, and configuration; collisions retain candidates structural_graph/resolve.rs tests
Trust and ambiguity Every node and edge carries trust, origin, evidence, source anchors, and candidate identities where resolution is ambiguous contracts.rs, storage.rs, interchange.rs tests
Communities and topology Stable communities, hubs, bridges, cross-community edges, and bounded suggested questions remain navigation evidence rather than architectural fact structural_graph/analysis.rs tests
Incremental repair Changed-file replacement, delete/rename cleanup, relationship re-resolution, cancellation, last-good snapshot retention, and warm no-op refresh structural_graph/service.rs, storage.rs, perf_bench.rs
Query and explain Bounded search, explain, neighbors, path, impact, community, snapshot comparison, filters, pagination, freshness, coverage, and truncation structural_graph/query/tests.rs, MCP server tests
Source evidence Anchors survive extraction, storage, query, Review context, proof export, and source-opening UI storage.rs tests, src/lib/review-proof.test.ts
Large-graph access SQLite retains the complete graph while UI, IPC, and MCP projections remain explicitly bounded perf_bench.rs, tests/e2e/repo-unpacked.spec.ts
Local execution Build and query require no network, provider, or external runtime perf_bench.rs offline release qualification

Measured fixture contract

The checked fixture covers cross-package Rust symbol isolation and cross-file Swift extension extraction. The release benchmark also runs expected-answer queries against the current CodeVetter repository.

Run the fixture and large-repository checks with:

cargo test --manifest-path apps/desktop/src-tauri/Cargo.toml --release \
  perf_bench::bench_structural_graph_query_relevance -- \
  --ignored --nocapture --test-threads=1

The raw-text comparison is preloaded in memory, so filesystem I/O does not bias the graph result. Full build, incremental repair, storage, memory, query, and UI budgets remain separate release gates in docs/development/performance.md.

Product exclusions

The canonical graph does not need document/media semantic ingestion, provider-generated reports, automatic Git hooks, hosted graph databases, standalone network services, or an unbounded export catalog. Those features may be evaluated independently, but they cannot weaken the local source-backed graph, trust semantics, explicit bounds, or no-repository-mutation rule.

Release interpretation

This contract is not a readiness claim by itself. A release also requires the current extractor, resolution, analysis, query, incremental repair, Review, offline, workbench, full test/build, and performance gates to pass in the same candidate worktree.

Was this page helpful?