feat: establish first-class lexical language parity #2

Merged
trevon merged 14 commits from feat/language-parity-foundation into bench/yams-architecture-reproducibility 2026-08-30 22:09:40 +00:00
3 changed files with 24 additions and 15 deletions
Showing only changes of commit e56ea81f9d - Show all commits

docs: publish lexical language parity contract
Some checks failed
build / build-linux (pull_request) Successful in 36s
build / build-macos (pull_request) Has been cancelled
build / release (pull_request) Has been cancelled

trvon 2026-08-30 15:58:33 -06:00
Signed by: trevon
GPG key ID: 38686EA797D7A8A7

View file

@ -6,10 +6,11 @@ elements, and dependency edges show calls, imports, and inheritance. The same
model is emitted as versioned JSON for other tools, including a future Fold model is emitted as versioned JSON for other tools, including a future Fold
integration. integration.
The initial extractor recognizes Rust, Dart, Python, C/C++, The initial extractor provides first-class lexical profiles for Rust, Dart,
JavaScript/TypeScript, and Swift source extensions. Symbol extraction is intentionally conservative and C/C++, and JavaScript/TypeScript, with explicitly secondary Python and Swift
lexical in v0.1; every relationship records its backend, confidence, and source coverage. Symbol extraction is intentionally conservative and lexical in v0.1;
location so consumers can distinguish it from imported symbolic evidence. every relationship records its backend, confidence, and all contributing source
locations so consumers can distinguish it from imported symbolic evidence.
See [language support and parity](docs/architecture/language-support.md) for the See [language support and parity](docs/architecture/language-support.md) for the
construct-level coverage matrix and first-class promotion contract. construct-level coverage matrix and first-class promotion contract.
@ -56,6 +57,8 @@ default; an internal or vendored URL can be supplied with --cytoscape-url.
confidence. confidence.
- A focused Rust test suite, quality gate, bounded auto-loop, and artifact-based - A focused Rust test suite, quality gate, bounded auto-loop, and artifact-based
benchmark runner. benchmark runner.
- A labeled language-parity corpus with independent gates for every advertised
language; Python and Swift remain characterization-only secondary profiles.
## Important limits ## Important limits

View file

@ -4,7 +4,9 @@
- Versioned graph JSON. - Versioned graph JSON.
- Fast lexical multi-language preview. - Fast lexical multi-language preview.
- Dart classes, functions/methods, imports, inheritance, and local calls. - First-class lexical profiles for Dart, Rust, C/C++, and
JavaScript/TypeScript, with labeled parity fixtures and per-language gates.
- Characterized secondary Python and Swift coverage.
- Fold SARIF/native finding overlay. - Fold SARIF/native finding overlay.
- Interactive Cytoscape building. - Interactive Cytoscape building.
- Transparent structural indicators and deterministic tests. - Transparent structural indicators and deterministic tests.

View file

@ -5,9 +5,13 @@ JavaScript/TypeScript, and Swift. Recognition does not imply compiler-level
coverage: the current backend is deliberately lexical, line-oriented, and coverage: the current backend is deliberately lexical, line-oriented, and
evidence-labeled. evidence-labeled.
The first-class parity targets are Dart, Rust, C/C++, and The first-class lexical profiles are Dart, Rust, C/C++, and
JavaScript/TypeScript. Python and Swift remain secondary until their extraction JavaScript/TypeScript. Here, parity means each profile has dedicated construct
contracts and fixtures reach the same standard. patterns, relationship evidence, positive and clean-negative fixtures, stable
regression assertions, and an independent benchmark gate. It does not mean the
languages have identical grammar features or compiler-grade resolution. Python
and Swift remain secondary until their extraction contracts and fixtures reach
the same standard.
Plain `.h` files remain classified as C++ because their language cannot be Plain `.h` files remain classified as C++ because their language cannot be
determined from the extension alone. C projects that require header symbol determined from the extension alone. C projects that require header symbol
@ -18,12 +22,12 @@ frontend; Brick does not guess that ownership.
| Language | Useful current coverage | Important gaps | Tier | | Language | Useful current coverage | Important gaps | Tier |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| Dart | Classes, mixins, enums, extensions, methods, named constructors, accessors, import/export/part directives, `extends`/`with`/`implements`/`on`, and ordinary calls | operators, generic relationship targets, conditional directives, and multiline declarations | first-class target | | Dart | Classes, mixins, enums, extensions, methods, named constructors, accessors, import/export/part directives, `extends`/`with`/`implements`/`on`, and ordinary calls | operators, generic relationship targets, conditional directives, and multiline declarations | first-class lexical |
| Rust | Structs, enums, traits, ordinary/async/const/unsafe/extern functions, simple inherent/trait impl ownership, ordinary/turbofish/macro calls, braced `use` resolution, and raw-string masking | module ownership, unions/type aliases, nested generic impl headers, glob imports, and macro definitions | first-class target | | Rust | Structs, enums, traits, ordinary/async/const/unsafe/extern functions, simple inherent/trait impl ownership, ordinary/turbofish/macro calls, braced `use` resolution, and raw-string masking | module ownership, unions/type aliases, nested generic impl headers, glob imports, and macro definitions | first-class lexical |
| C | Distinct `.c` identity, includes, structs/unions/enums, narrow function forms, and ordinary calls | anonymous typedef aggregates, function pointers, C23 attributes, macros, and multiline declarations | first-class target | | C | Distinct `.c` identity, includes, structs/unions/enums, narrow function forms, and ordinary calls | anonymous typedef aggregates, function pointers, C23 attributes, macros, and multiline declarations | first-class lexical |
| C++ | Classes/structs/unions/enums, `final`, constructors/destructors/operators, override-qualified methods, multiple inheritance, ordinary calls, and local include resolution | namespaces, overload disambiguation, lambdas, concepts/requires, complex template bases, and multiline declarations | first-class target | | C++ | Classes/structs/unions/enums, `final`, constructors/destructors/operators, override-qualified methods, multiple inheritance, ordinary calls, and local include resolution | namespaces, overload disambiguation, lambdas, concepts/requires, complex template bases, and multiline declarations | first-class lexical |
| JavaScript | Default/exported classes, inheritance, owned methods/constructors, named functions, arrows, ES imports/re-exports, CommonJS `require`, dynamic imports, ordinary calls, and multiline template masking | function expressions, computed methods, decorators, JSX structure, package exports, and type-aware member calls | first-class target | | JavaScript | Default/exported classes, inheritance, owned methods/constructors, named functions, arrows, ES imports/re-exports, CommonJS `require`, dynamic imports, ordinary calls, and multiline template masking | function expressions, computed methods, decorators, JSX structure, package exports, and type-aware member calls | first-class lexical |
| TypeScript | JavaScript forms plus interfaces/enums/namespaces, generic and abstract classes/functions/methods, `implements`, type imports/re-exports, and typed arrows | type aliases, overload declarations, decorators, declaration merging, TSX structure, and path mappings | first-class target | | TypeScript | JavaScript forms plus interfaces/enums/namespaces, generic and abstract classes/functions/methods, `implements`, type imports/re-exports, and typed arrows | type aliases, overload declarations, decorators, declaration merging, TSX structure, and path mappings | first-class lexical |
| Python | Characterized fixture coverage for basic classes, functions/async functions, imports, calls, inheritance, and indentation scopes | multiple bases, qualified ownership, decorators, multiline strings, relative/dynamic imports, and complete multi-import handling | secondary | | Python | Characterized fixture coverage for basic classes, functions/async functions, imports, calls, inheritance, and indentation scopes | multiple bases, qualified ownership, decorators, multiline strings, relative/dynamic imports, and complete multi-import handling | secondary |
| Swift | Characterized extension recognition plus incidental simple `class`, `func`, inheritance, ownership, and call matching | no dedicated profile; imports, protocols, actors, enums, extensions, async/generic forms, and Swift-specific signatures are incomplete | secondary | | Swift | Characterized extension recognition plus incidental simple `class`, `func`, inheritance, ownership, and call matching | no dedicated profile; imports, protocols, actors, enums, extensions, async/generic forms, and Swift-specific signatures are incomplete | secondary |
@ -69,7 +73,7 @@ the same corpus. Their assertions are characterization tests, not evidence of
first-class parity. In particular, the Swift fixture preserves the visible gap first-class parity. In particular, the Swift fixture preserves the visible gap
between file/type recognition and Swift-specific relationship extraction. between file/type recognition and Swift-specific relationship extraction.
## Delivery order ## Delivered foundation order
1. Shared resolver and scope foundation. 1. Shared resolver and scope foundation.
2. A golden fixture harness and mixed-language collision corpus. 2. A golden fixture harness and mixed-language collision corpus.