# get_definition Benchmark Observations

Manual inspection date: 2026-06-18

The checked-in benchmark manifest now exercises `get_definition` for every target language. Smoke runs used `cargo run --bin bifrost_benchmark -- run --manifest benchmark/targets.toml --repo <name> --max-files 80` against pinned cached checkouts. Supported-language FQNs were also inspected with direct `target/debug/bifrost --tool get_definition` calls against the subset workspaces.

The C++ and Scala manifest entries intentionally repeat the inspected same-file query three times. Those duplicate rows are not additional semantic claims; they exercise the public batch API's per-file and per-language cache behavior in the daily benchmark suite.

| Repo | Language | Query | Expected | Observed | Manual verdict | False positives | False negatives / follow-up |
| --- | --- | --- | --- | --- | --- | --- | --- |
| google-gson | Java | `gson/src/main/java/com/google/gson/Gson.java:319:14` `TypeAdapter` | `resolved`, `com.google.gson.TypeAdapter` | `resolved`, `com.google.gson.TypeAdapter` at `gson/src/main/java/com/google/gson/TypeAdapter.java:121..322` | Accurate imported/same-package Java type reference resolution. | None observed for this probe. | Overloaded same-owner method calls such as `toJson(...)` can return `ambiguous` until overload filtering is added. |
| gin-go | Go | `gin.go:238:12` `New` | `resolved`, `github.com/gin-gonic/gin.New` | `resolved`, `github.com/gin-gonic/gin.New` at `gin.go:202..233` | Accurate same-package function resolution. This also guards against the known short-name/canonical-FQN drift around `gin.New`. | None observed. | None for this probe. |
| fmt-cpp | C++ | `include/fmt/base.h:2798:11` `vformat_to` | `resolved`, `detail.vformat_to` | `resolved`, `detail.vformat_to` at `include/fmt/format-inl.h:1467..1474` | Accurate relative namespace-qualified C++ call resolution through included implementation declarations. | None observed for this probe. | C++ out-of-line methods can return both declaration and definition candidates; keep signature/body preference as follow-up. |
| express-js | JavaScript | `lib/application.js:574:3` `tryRender` | `resolved`, `tryRender` | `resolved`, `tryRender` at `lib/application.js:625..631` | Accurate same-file function reference resolution. | None observed for this probe. | Method/property references such as `app.listen` currently return `no_definition`; add CommonJS/property-assignment binding later. |
| ky-ts | TypeScript | `source/core/Ky.ts:151:18` `Ky` | `resolved`, `Ky` | `resolved`, `Ky` at `source/core/Ky.ts:142..1042` | Accurate same-file class reference resolution. | None observed. | None for this probe. |
| click-py | Python | `src/click/core.py:1366:42` `_complete_visible_commands` | `resolved`, `click.core._complete_visible_commands` | `resolved`, `click.core._complete_visible_commands` at `src/click/core.py:57..73` | Accurate same-file Python helper call resolution. | None observed for this probe. | Overloaded `Command.main` calls resolve to multiple `click.core.Command.main` definitions; keep overload disambiguation as a follow-up. |
| serde-json-rs | Rust | `src/value/mod.rs:535:20` `Value::Number` | `resolved`, `value.Value.Number` | `resolved`, `value.Value.Number` at `src/value/mod.rs:142` | Accurate enum-variant reference resolution. | None observed. | None for this probe. |
| fastroute-php | PHP | `src/RouteCollector.php:74:16` `addRoute` | `resolved`, `FastRoute.RouteCollector.addRoute` | `resolved`, `FastRoute.RouteCollector.addRoute` at `src/RouteCollector.php:31..47` | Accurate same-class `$this->addRoute(...)` PHP method reference resolution. | None observed for this probe. | Typed-property receiver chains such as `$this->dataGenerator->addRoute(...)` currently return `no_definition`; add property-promotion/field receiver inference later. |
| scala-xml | Scala | `shared/src/main/scala/scala/xml/Elem.scala:107:13` `Elem` | `resolved`, `scala.xml.Elem$.apply` | `resolved`, `scala.xml.Elem$.apply` at `shared/src/main/scala/scala/xml/Elem.scala:27..30` | Accurate companion-object `apply` resolution for an in-package Scala call site. | None observed for this probe. | Overloaded Scala members and inherited receiver methods can still return `ambiguous` or `no_definition`; keep signature-sensitive filtering and hierarchy lookup as follow-up. |
| dapper-csharp | C# | `Dapper/SqlMapper.cs:1862:28` `CacheInfo` | `resolved`, `Dapper.SqlMapper$CacheInfo` | `resolved`, `Dapper.SqlMapper$CacheInfo` at `Dapper/SqlMapper.CacheInfo.cs:10..18` | Accurate C# nested type reference resolution across partial class files. | None observed for this probe. | Overloaded C# methods can return `ambiguous` until signature-sensitive call filtering is added to `get_definition`. |
