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.
Related Issues
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.mdRule 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}