feat(code-graph-incremental): fourteen more languages and their suites

What does this MR do and why?

Ninth slice of code-graph-incremental. Fourteen more languages get their rule files: Go, Java, Kotlin, Ruby, PHP, C#, C, C++, Scala, Bash, Elixir, Lua, Swift, Zig. Each is YAML only; no engine code changes. Their 128 suites run through the incremental engine and pass. The two suites that put two languages in one graph (C with C++, Java with Kotlin) are skipped with the reason written next to them. Nothing is wired to the CLI or server yet.

Relates to #1284. Reference implementation: !2454 (closed).

Testing

cargo nextest run -p integration-tests-codegraph: incremental_suites 177/177 (was 49), suites 247/247 unchanged. cargo test -p code-graph-incremental: 50 tests; the rule-file test compiles every embedded YAML.

Performance Analysis

No runtime change: nothing calls this crate yet.

  • This merge request does not introduce any performance regression. If a performance regression is expected, explain why.
Agent context: long-form analysis, file-by-file walkthroughs, profiler output, alternatives considered

What lands

crates/code-graph-incremental/langs/{go,java,kotlin,ruby,php,csharp,c,cpp,scala,bash,elixir,lua,swift,zig}.yaml
crates/code-graph-incremental/src/treesitter.rs        lang_yaml entries
crates/integration-tests-codegraph/fixtures_incremental/{go,java,kotlin,jvm,ruby,php,csharp,c,cpp,scala,bash,elixir,lua,swift,zig}/
crates/integration-tests-codegraph/src/validator.rs    write_suite_files: fixture_dir copy shared by both runners
crates/integration-tests-codegraph/src/{runner,incremental}.rs
docs/dev/agents-crate-map.md

Rule files and fixtures are copied from !2454 (closed). Nine Kotlin and one Ruby suite build their repository from a fixture_dir under fixtures/code/; the directory copy moves from the old runner into the shared validator so both runners have it, and the old runner reads sizes from the returned list instead of its own walk.

The two skipped suites

cpp/cross_language.yaml (pipeline: cpp over .c, .h, .cpp) and jvm/cross_language_resolution.yaml (pipeline: java over .java and .kt) passed in the reference only because Parse fell back to the pipeline's grammar for files of another language: .kt went through the Java grammar and Java rules. !2627 (merged) closed that on review, so those files are now listed, not parsed, and the suites fail honestly. What they need is a family graph like code-graph's LanguageFamily (C+C++, Java+Kotlin+Scala): each file parsed with its own grammar and rules, resolved in one shared graph. Env is one language per run today. Tracked as a design item for after the CLI slices.

Not in this MR: TypeScript family (typescript.yaml covers TS, TSX, JS; 41 suites, 20 known failures), Rust (39 suites, 26 known failures), HCL and YAML (no rule files). Each gets its own MR.

MR stack

MR Contents
!2620 (merged) !2627 (merged) !2629 (merged) !2631 (merged) !2633 (merged) !2638 (merged) !2641 (merged) !2644 (merged) merged: runner through snapshots and reindex
9 (this) fourteen languages and their suites
10 TypeScript family
11 Rust
12 orbit index --engine incremental, full index through the existing DuckDB sink
13 snapshot next to the DuckDB file, changed paths from git, incremental CLI
14 default flip per language; old pipeline and its fixtures retire

%{all_commits}

Merge request reports

Loading
Loading