Skip to content

Historical development case comparison

Historical development evidence. See the current v0.2.0 evaluation case comparison for the independently reviewed, immutable result. These cases remain useful regression evidence but are not part of that evaluation denominator.

This page expands the 131 cases scoreable by both sides in the corrected 24 July development run. Exact means complete token ranges, no unallowed extras, and the one reviewed navigation target. A language-server disagreement is a contract result, not an automatic defect verdict.

Import, re-export, and export-metadata bindings are optional. They remain visible in reports but do not make an otherwise exact case non-exact.

LanguageSharedBoth exactBifrost onlyLSP onlyNeither
C++1511112
C#1611320
Go65010
Java114700
JavaScript83320
TypeScript98100
PHP109100
Python1310030
Ruby1651001
Rust1511310
Scala128211
Total1318531114

These 31 cases satisfy the reviewed contract in Bifrost but not in the reference LSP. Nine LSP results are position_unverified; the remaining 22 are hard disagreements.

LanguageSeparating casesCurrent distinction
C++cpp-parity-concrete-override-method-callclangd expands the implementation family beyond the concrete receiver.
C#csharp-parity-interface-receiver-method-call, csharp-parity-concrete-implementation-method-call, csharp-parity-buffer-implementation-method-callRoslyn returns related interface/implementation-family calls beyond the reviewed static identity.
Javajava-service-method-call, java-nested-class-constructor, java-parity-static-import-method-call, java-parity-interface-receiver-method-call, java-parity-concrete-implementation-method-call, java-lambda-body-member-call, java-static-qualified-method-callJDT LS returns every expected usage site. Five cases use broader containing ranges and two group interface and override-family calls.
JavaScriptjs-class-construction, js-parity-commonjs-destructured-function-call, js-commonjs-barrel-class-constructionTypeScript LS broadens constructor navigation in one case and omits two CommonJS edges.
TypeScriptts-default-class-import-and-constructionTypeScript LS reaches the expected class plus an enclosing constructor-body range, so strict singleton navigation is position-unverified.
PHPphp-class-constructionIntelephense returns both the class and explicit constructor; Bifrost returns the reviewed class target alone.
Rubyruby-relative-nested-constant, ruby-include-instance-mixin, ruby-prepend-method-precedence, ruby-top-level-implicit-self-method-call, ruby-singleton-method-dispatch, ruby-class-variable-access, ruby-parity-autoload-constant-definition, ruby-parity-attr-reader-method-call, ruby-parity-alias-method-call, ruby-factory-return-member-callRuby LSP spans range, declaration-inclusion, mixin, alias, generated-reader, singleton, and factory-return boundaries. No single approximation label explains the group.
Rustrust-parity-associated-type-definition-no-movement, rust-parity-associated-type-use-definition, rust-ufcs-trait-method-through-barrelBifrost keeps associated-type owner identity and the UFCS trait member narrower than rust-analyzer.
Scalascala-class-construction, scala-object-apply-callBifrost separates class/companion identity and connects the visible application to the authored apply member.

These 11 cases are the clearest current Bifrost parity backlog.

LanguageSeparating casesCurrent Bifrost gap
C++cpp-parity-function-like-macro-expanded-callDoes not navigate the visible macro argument to the expanded function definition.
C#csharp-parity-namespace-alias-constructor, csharp-parity-extension-method-callNavigates the alias to the namespace surface and does not resolve the extension receiver.
Gogo-dot-import-concrete-receiver-callMisclassifies both imported concrete member selectors as shadowed local bindings.
JavaScriptjs-parity-computed-string-literal-method-call, js-commonjs-barrel-member-callMisses the computed string-literal call and the member immediately following new Client() through a destructured barrel.
Pythonpython-module-import, python-parity-reexported-class-alias-classmethod, python-barrel-inherited-member-callMisses module declaration navigation, one alias-site usage, and a narrow inherited-member contract.
Rustrust-parity-macro-generated-function-referenceDoes not expand the declarative macro to recover the generated declaration and call.
Scalascala-parity-case-class-generated-construction-and-copyHandles construction but cannot resolve the generated copy receiver.
LanguageCaseCurrent distinction
C++cpp-class-referenceBifrost misses a required class usage; clangd adds constructor-family tokens.
C++cpp-parity-using-alias-constructorBifrost navigates declaration identity to the underlying class and lacks C++ type lookup; clangd misses the alias usage and adds constructor-family locations.
Rubyruby-require-relative-class-constructionBifrost misses the class self-construction; Ruby LSP reaches the expected lines but not exact token ranges.
Scalascala-parity-trait-method-implementationBifrost over-expands to a concrete call while Metals omits the reviewed implementation edge.

Twenty-three cases are unsupported by the corresponding LSP profile because the authored operation is not advertised: 6 Go, 5 JavaScript/TypeScript, 4 PHP, 4 Ruby, 3 Scala, and 1 C++. Bifrost exactly satisfies 17 of them, is non-exact on 4, and shares the unsupported boundary on 2 configured-build cases.

Four runtime-driven cases are not planned for either side: one JavaScript, two Python, and one Ruby case.

The highest-value additions are:

  1. More compiler-generated and configured-project controls where LSPs should lead: macros, source generators, SDK symbols, conditional compilation, and synthetic members.
  2. Interface-family minimal pairs with multiple implementations and receiver contexts, separating intentional symbol-family grouping from receiver sensitivity.
  3. Alias and barrel chains with direct, one-hop, and two-hop controls.
  4. Future competitor runners evaluated against these same frozen source contracts, without tool-specific scoring exceptions.