Find a file
Gergő Magyar bd9586e008
fix: recover duplicate candidates and expose test inventory gaps (#3743)
* fix: recover missed test scenarios

Run the full core test inventory and retrieve identical callback bodies
across setup contexts. Separate assertion evidence from context and
retain conservative input, path and runtime provenance checks.

Restore prepared test inputs and report missing runtime collection.
Add the audited recall corpus and inventory regressions.

* Address PR review feedback (#3743)

Correct counted nouns in the inventory report, document fully skipped modules, and include unhandled runner errors in the incomplete-collection warning.

* Address PR review feedback (#3743)

Force-stage explicit temporary fixtures despite inherited Git ignores, and isolate recorded-file collection-error accounting in the inventory tests.

* fix(review): simplify selection and guard mixed artifacts

* feat(test): detect fixture consolidation opportunities

Capture source inputs used by integration tests and compare fixture clones,
executed blocks, and assertion subjects and values. Report partial overlaps
with the unique checks and fixture spans that consolidation must preserve.
Keep cross-language structural suggestions separate from observed equality.

Use pinned jscpd with direct pair verification when longer representatives
hide partial clones. Retain capture gaps and native/worker limitations.

Validate with 1,245 detector regressions, 28 pipeline pair controls, and 12
manually labeled comparisons. Scan 30,698 core cases and find 3,111 opportunity
groups; exclude the capture's 103 failed and 89 skipped cases.

* Fix scenario-map review findings (#3743)

Resolve assertion aliases by lexical binding and normalize duplicate static object keys. Capture fixture files through checked descriptors with bounded reads and guaranteed cleanup.

* fix: address test duplicate audit false signals

* refactor(test): reuse assertion binding analysis

Reuse lexical bindings within each evidence extraction while retaining
assertion-specific offsets and expansion limits. Deduplicate fixture
coverage endpoints numerically without string conversion.

Preserve complete assertion evidence across 29,286 static instances and
weighted coverage across 10,000 generated interval cases.

* Fix scenario-map review findings (#3743)

Bind consolidation evidence to the assertion call accepted by the check
extractor, so unsupported same-line calls cannot supply incorrect subjects
or expectations. Keep source provenance private and serialized checks intact.

Exercise omitted plugins alongside instrumented Vitest runs.

* fix: retain input-shaped scenario controls (#3743)

Compare assertion subject structure separately from exact input-bearing
assertion keys, so changing literal inputs retains table-row and boundary
classification. Preserve selectors, callee identity and regex values.

Keep the control expectations unchanged. Add regressions for literal
inputs, queried subjects and nested regex arguments; bump the fingerprint
engine version so reclassified findings resurface.

* test: give scenario cases unique titles

Include the parameterized case index so repeated input expressions and truncated audit paths cannot collide in the CI execution inventory.

* fix: scope assertion subjects to their bindings

Prevent same-named declarations in different files or scopes from
becoming exact assertion matches. Preserve same-binding consolidation
and advance the fingerprint engine to version 5.

* fix: raise full-suite planning heap budget

The 30,953-case replay aborts at the default 4 GiB heap. Give only
the Plan step 8 GiB and document the same local invocation.

The identical four coverage slices complete in 4m34s at 8.2 GiB
peak RSS, retaining all 116,409 candidate pairs.

* fix: stream full-suite scenario reports

The full inventory produces a 663 MiB report, exceeding V8's
single-string limit. Write records incrementally and stream only
required fields when reading baselines and publishing issue updates.

Replay preserves all 116,398 pairs from 30,953 collected cases.
The report remains partial when the trace run fails.

* fix: preserve test lifecycles during capture

Forced test repeats changed cache and file state. Capture ordinary runs,
retain runnable siblings during tracing, and keep retry-bearing files
inconclusive. Preserve failure details and mark failed captures partial.

Use the original JSON serializer so test mocks cannot break fixture reads.

* fix: limit trace capture to candidates

Keep sibling tests in both passes for suite state, while recording only candidate task IDs. This prevents unrelated timing checks and large corpus tests from failing under tracing.

* ci: budget full-suite trace collection

* fix: address scenario-map feedback (#3743)

---------

Co-authored-by: Gergo Magyar <gergomagyar0@gmail.com>
2026-10-30 21:06:08 +00:00
.agents/plugins chore: release v1.6.12 (#3272) 2026-09-12 22:16:01 +01:00
.claude feat(mcp): reduce response size and query overhead (#3621) 2026-10-18 17:32:09 +01:00
.claude-plugin chore: release v1.6.12 (#3272) 2026-09-12 22:16:01 +01:00
.cursor fix(storage): rename index metadata to gitnexus.json with dual-write compatibility (#2363) 2026-07-03 19:32:59 +01:00
.devcontainer fix(devcontainer): support packaged native runtime (#3763) 2026-10-29 07:03:45 +00:00
.factory-plugin feat: add Factory AI (Droid) integration (#2543) 2026-09-24 19:12:40 +01:00
.gemini/commands feat(review): add PR reviewer swarm agents (#1851) 2026-05-29 18:24:16 +01:00
.github fix: recover duplicate candidates and expose test inventory gaps (#3743) 2026-10-30 21:06:08 +00:00
.history/gitnexus fix(test): add --repo to CLI e2e tool tests for multi-repo environment 2026-03-18 08:12:25 +00:00
.husky feat: configure prettier with pre-commit hook (#563) 2026-03-28 14:58:04 +00:00
.sisyphus/drafts fixed constructor to method relation not getting stored in kuzu issue 2026-01-26 22:58:15 +05:30
deploy/kubernetes ci(docker): mirror signed images to Docker Hub alongside GHCR (#1029) 2026-04-23 18:59:26 +01:00
docs feat(ingestion): opt-in indexing of named dot directories (GITNEXUS_INCLUDE_DOT_DIRS) (#3745) 2026-10-29 07:02:45 +00:00
Documentation Add Kilo Code + GitNexus MCP setup guide (#2259) 2026-07-02 11:04:22 +01:00
eslint-rules feat: add gitnexus auto-sync for scheduled remote clone and analyze (#2493) 2026-09-02 19:40:18 +01:00
eval feat(eval): add capped two-cell trial (#3778) 2026-10-30 15:19:51 +00:00
gitnexus fix: recover duplicate candidates and expose test inventory gaps (#3743) 2026-10-30 21:06:08 +00:00
gitnexus-claude-plugin fix(cli): recover pnpm and Bun invocation paths (#3721) 2026-10-25 21:05:02 +00:00
gitnexus-cursor-integration feat(mcp): reduce response size and query overhead (#3621) 2026-10-18 17:32:09 +01:00
gitnexus-factory-plugin feat(storage): share one index store across linked worktrees and sibling clones (#3374) 2026-09-25 11:20:12 +01:00
gitnexus-shared fix(scope): reduce memory for terminal import misses (#3741) 2026-10-27 15:41:48 +00:00
gitnexus-test-setup feat: merge gitnexus-mcp into gitnexus package - unified CLI+MCP 2026-02-04 01:12:41 +05:30
gitnexus-web chore(deps): consolidate Dependabot updates and fix CI pin assertions (#3764) 2026-10-29 17:41:24 +00:00
pr-swarm-review feat(skills): GitNexus Engineering Tool Kits (#2566) 2026-07-19 15:07:24 +01:00
.cursorrules docs: agent development framework, GitHub templates, eval refactor (#479) 2026-03-25 06:48:41 +00:00
.dockerignore fix(ci): Change docker base image from alpine to debian (#1014) 2026-04-21 21:31:58 +01:00
.env.example feat(web): resolve a root-relative GITNEXUS_BACKEND_URL against the page origin (#3640) 2026-10-24 08:45:24 +01:00
.git-blame-ignore-revs feat: configure eslint with unused import removal (#564) 2026-03-28 15:28:09 +00:00
.gitattributes fix(lbug): ship FTS per-platform and recover in-place native aborts (#3274) 2026-09-14 08:52:24 +01:00
.gitignore feat: add the test scenario map and a Vitest 5 mutation runner (#3686) 2026-10-27 16:46:58 +00:00
.gitleaks.toml feat(analyze): private GitHub repos via PAT + Azure DevOps Server support (#2076, #2210) (#2223) 2026-06-16 05:49:02 +01:00
.gitleaksignore feat: add the test scenario map and a Vitest 5 mutation runner (#3686) 2026-10-27 16:46:58 +00:00
.mcp.json fix: use cross-platform npx command in .mcp.json 2026-02-22 17:46:04 +00:00
.prettierignore fix(taint): report inline and factory handler flows (#3612) 2026-10-17 20:22:58 +00:00
.prettierrc feat: configure prettier with pre-commit hook (#563) 2026-03-28 14:58:04 +00:00
.vercelignore fix: web citation/code panel bugs and serve analyze/route hardening (#3348) 2026-09-23 13:27:22 +01:00
.windsurfrules resources implemented and agents.md and skills updated to use it 2026-02-05 05:13:48 +05:30
AGENTS.md fix(rename): apply the exact reviewed edit plan (#3617) 2026-10-17 19:38:01 +01:00
ARCHITECTURE.md perf(ingestion): reduce indexing overhead and declaration memory (#3726) 2026-10-26 15:13:48 +00:00
CHANGELOG.md perf(hooks): cmdline-first Linux db-lock scan, drop the lsof fallback (#2180) (#2183) 2026-06-13 11:52:14 +01:00
CLAUDE.md fix(rename): apply the exact reviewed edit plan (#3617) 2026-10-17 19:38:01 +01:00
compound-engineering.local.md feat: Phase 7 type resolution — return-aware loop inference & PHP class-property iterables (#341) 2026-03-18 08:39:38 +00:00
CONTRIBUTING.md fix(ci): avoid RC tag collisions during npm processing (#3649) 2026-10-20 20:51:26 +01:00
docker-compose.yaml feat(web): resolve a root-relative GITNEXUS_BACKEND_URL against the page origin (#3640) 2026-10-24 08:45:24 +01:00
docker-server.mjs feat(web): resolve a root-relative GITNEXUS_BACKEND_URL against the page origin (#3640) 2026-10-24 08:45:24 +01:00
docker-server.test.mjs feat(web): resolve a root-relative GITNEXUS_BACKEND_URL against the page origin (#3640) 2026-10-24 08:45:24 +01:00
Dockerfile.cli fix(docker): verify bundled FTS artifacts (#3669) 2026-10-21 17:27:30 +00:00
Dockerfile.web fix(security): Pin Docker Node base images, remove runtime package-manager CVE surface, verify Trivy on PRs, and harden Dependabot policy (#1455) 2026-05-09 16:55:31 +01:00
DoD.md chore: compile first-party packages with TypeScript 7 (#3311) 2026-09-17 22:16:00 +01:00
eslint.config.mjs feat: add the test scenario map and a Vitest 5 mutation runner (#3686) 2026-10-27 16:46:58 +00:00
GUARDRAILS.md fix(rename): apply the exact reviewed edit plan (#3617) 2026-10-17 19:38:01 +01:00
LICENSE docs: update license copyright holder 2026-02-03 22:54:01 +05:30
llms.txt docs: agent development framework, GitHub templates, eval refactor (#479) 2026-03-25 06:48:41 +00:00
MIGRATION.md feat(cache): derive parser and PDG cache identities automatically (#3606) 2026-10-17 07:38:45 +03:00
package-lock.json chore(deps): bump lint-staged to 16 to drop vulnerable braces (#3553) 2026-10-10 12:29:09 +01:00
package.json chore(deps): bump lint-staged to 16 to drop vulnerable braces (#3553) 2026-10-10 12:29:09 +01:00
README.md docs: simplify guides and verify receiver gaps (#3694) 2026-10-23 09:06:03 +01:00
render.yaml fix(serve): protect MCP route with optional bearer auth (#3100) 2026-08-30 17:12:46 +01:00
RUNBOOK.md fix(lbug): guard read queries against runaway native memory (#3696) (#3749) 2026-10-28 14:08:17 +00:00
SECURITY.md fix(server,web): honor the grep tool contract — real regex, fileFilter, caseSensitive (#3109) 2026-08-31 20:43:28 +01:00
skills.mdm FEAT: Added support for optional skill generation based on KuzuDB after initial repo analysis (npx gitnexus analyze --skills) (#171) 2026-03-13 08:29:13 +00:00
TESTING.md fix(lbug): guard read queries against runaway native memory (#3696) (#3749) 2026-10-28 14:08:17 +00:00
type-resolution-roadmap.md docs: simplify guides and verify receiver gaps (#3694) 2026-10-23 09:06:03 +01:00
type-resolution-system.md docs: simplify guides and verify receiver gaps (#3694) 2026-10-23 09:06:03 +01:00

GitNexus

GitNexus indexes a codebase into a knowledge graph of symbols, calls, dependencies and execution flows. Use it through your coding agent's MCP tools, the CLI, or a web graph explorer.

Quick start · Documentation · Web UI · Discord

https://github.com/user-attachments/assets/172685ba-8e54-4ea7-9ad1-e31a3398da72

Quick start

Requires Node.js 22.18+ on 22.x, or 24.11+. See platform requirements for Linux and Windows native dependencies.

# Run from your repository root
npx gitnexus analyze

# Connect your editors once
npx gitnexus setup

analyze builds the index, installs agent skills, registers Claude Code hooks, and writes AGENTS.md / CLAUDE.md context files. setup configures MCP for your editors. Use gitnexus analyze --index-only to index without those repository integration files.

For repeated use, install globally with npm install -g gitnexus. If installation fails, see troubleshooting.

What you can do

Task Tool
Find code and related execution flows query
Inspect a symbol's callers and dependencies context
Check what a change could affect impact
Trace a path between two symbols trace
Review the impact of a Git diff detect_changes
Preview and apply a semantic rename rename

Ask your agent questions such as “What calls this function?” or “What would this change affect?” Resolution depends on language support and available evidence; check reported ambiguity, index freshness and coverage limits.

Editor setup

gitnexus setup detects Claude Code, Cursor, Codex, Antigravity, Factory Droid, OpenCode, CodeBuddy and Qoder. Windsurf requires manual MCP configuration. To select editors:

gitnexus setup -c cursor,codex

See editor setup for the support matrix, manual MCP configuration, hooks and plugin installation.

Everyday commands

gitnexus analyze                 # Refresh the current repository's index
gitnexus analyze --watch         # Reindex as local files change
gitnexus query "authentication"  # Search the graph
gitnexus impact UserService --direction upstream
gitnexus status                  # Check index freshness
gitnexus list                    # List indexed repositories
gitnexus serve                   # Serve indexed repositories to the web UI

For multiple concurrent agents, use one gitnexus mcp --http --port 3111 server and connect clients to http://127.0.0.1:3111/mcp. See the shared-server instructions.

Web UI

Run gitnexus serve, then open gitnexus.vercel.app. The UI connects to the backend to browse indexed repositories and use AI chat. It uses the existing index; no re-upload or re-index is needed.

GitNexus graph explorer

For Docker, hosted deployments, image verification, or a local frontend, see deployment.

Supported languages

C, C++, C#, COBOL, Dart, Go, Java, JavaScript, Kotlin, Objective-C, PHP, Python, Ruby, Rust, Swift, TypeScript, Vue and Zig have registered providers. Support varies by construct; see the language inventories for measured behavior, exclusions and remaining gaps.

Documentation

Read For
CLI reference Commands, indexing flags, watch mode, configuration and shared stores
Environment variables · vector tuning Runtime settings and search tuning
MCP reference All tools, resources, examples, policies and response budgets
Editor setup Supported integrations and manual configuration
Deployment Docker, Render, image signatures and local frontend setup
Wiki generation Model configuration and generated repository documentation
Runbook Index recovery, embeddings and operational troubleshooting
Architecture · type resolution How the indexer and resolution layers work
Type-resolution roadmap Planned work and acceptance criteria

Security and privacy

The CLI indexes code locally without an LLM. Optional remote embeddings, wiki generation and AI chat use the providers you configure. The web UI accesses the backend it connects to. Review security guidance and deployment authentication before exposing an index to other users.

Development

See CONTRIBUTING.md for setup and pull requests, TESTING.md for validation, and GUARDRAILS.md for repository rules.

Enterprise

GitNexus is available as an enterprise offering — fully managed SaaS or self-hosted deployment. Commercial use of the OSS version is also available with proper licensing.

Enterprise includes:

  • PR Review — automated blast radius analysis on pull requests
  • Auto-updating Code Wiki — always up-to-date documentation (Code Wiki is also available in OSS)
  • Auto-reindexing — knowledge graph stays fresh automatically
  • Multi-repo support — unified graph across repositories
  • OCaml support — additional language coverage
  • Priority feature/language support — request new languages or features

Upcoming: auto regression forensics · end-to-end test generation

👉 Learn more at akonlabs.com — for commercial licensing or enterprise inquiries, ping us on Discord or email founders@akonlabs.com

Community Integrations

Built by the community — not officially maintained, but worth checking out.

Project Author Description
pi-gitnexus @tintinweb GitNexus plugin for pi — pi install npm:pi-gitnexus
gitnexus-stable-ops @ShunsukeHayashi Stable ops & deployment workflows (Miyabi ecosystem)
KiloCode MCP workflow @oktanishq Guide to connect GitNexus MCP to Kilo Code and verify tools.

Have a project built on GitNexus? Open a PR to add it here!

License

PolyForm Noncommercial 1.0.0. Commercial licensing is available through akonlabs.com.

Acknowledgments