v1.108.302 — Nothing we could say about Rust
Nothing we could say about Rust. Rust had 20 tracker mentions and zero measurement, while the README talked about 70+ languages. Racket has had a fidelity harness since 1.108.298; the language people actually ask about had none.
benchmarks/rust_fidelity/ — scored against Rust's own parser
Same asymmetric shape as the Racket harness: extra and wrong_span gated at 0, missing reported and broken out by kind so a gap has a name instead of being a shortfall. Target ripgrep pinned by commit SHA, 110 files, 0 parse failures either side: 95.8% coverage, 44 fully clean files. missing (156) is entirely module and macro, both deliberate omissions with stated reasons.
CI gates the same two buckets against frozen oracle data, so it runs with no Rust toolchain and no network.
The ceiling is lower than Racket's, and the README says so. syn parses; it does not expand. Racket's oracle expands, so syntax-original? separates macro-introduced names from human-typed ones. Nothing here can: an item produced by a macro_rules! invocation is invisible to the oracle and to jCodeMunch, unscored in both directions. A green run is not evidence about macro-generated code.
Three Rust definition classes that yielded no symbol — PARSER_GENERATION 4 → 5
Found by the harness on its first run:
union Foo { .. }was absent fromRUST_SPECentirely — no symbol, not even the name.- A trait method with a signature and no default body is a
function_signature_item, a different node type fromfunction_item. The half of a trait an implementor must provide was the half we could not find. - A
const/staticinside a function body was excluded by the locals gate — which was already letting nestedfns through, so it was a node-type rule wearing a scope rule's name.
3474 → 3514 symbols on ripgrep, coverage 95.0% → 95.8%, unexplained gaps three kinds → none.
The generation bump is the clearest case that counter has had. Unlike a new file extension, where coverage arrives through discovery, every .rs file in an existing index was already parsed at generation 4 with the old symbol set — and incremental never re-reads unchanged content.
schema_driven fails closed on a table under an undeclared key — #555, @RascoApps
The existing guard raises when a table has rows but no declared column was populated. It is structurally blind to a disagreement about the key: the lookup returns [], no rows exist, and the check never runs. That is how search_ast served an empty table for every language and preset.
The check runs inside encode, on post-transform data, so schemas that pre-flatten a nested shape need no exemption at all.
Also
.mtsand.ctsindexed as nothing — TypeScript's ESM and CommonJS module extensions sat in the reindex hook's watched set and in no extension-to-language map.racket_definition_forms(@otherjoel) — declare a Racket project's own defining macros so what they bind becomes searchable.
Tests
8517 passed, 13 skipped, 0 failed. 3.13 reproduce: 8511 passed, 19 skipped, 0 errors — the same 8530 total. All eight CI matrix jobs green.