Missing package facts hide live uses, public members, framework bindings and test roles #540
Labels
No labels
code-review
correctness
dos
performance
security
severity/high
severity/low
severity/medium
tech-debt
Kind/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
h-dv/code-index#540
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Scope (consolidated 2026-11-12)
A symbol used as a value can appear unused because its language package emits no reference. Statement-defined members, enum children and template expressions can be absent entirely. Missing docs and signatures also force source reads, while missing test markers make test edits look like production risk. Packages must emit these facts and the host must preserve their meaning; unsupported constructs must withhold an earned zero.
Priority: High · Risk: wrong answer · Size: L
Merged into this ticket: #535 (Value uses and earned zeros), #548 (Framework scope and bridge gaps), #577 (Per-symbol test role), #534 (Conditional C# imports)
Done
macro_receiver_startincrates/guest/rust/src/rust.rsrestores index/try/parenthesized macro receivers (b94c542a/c5239753, Rust package 0.1.8); the reported account restored exactly 30 correct ripgrep binds.install_shippedandgate_packages_match_checkout_recordsincrates/test-support/src/shipped.rs, pluscheck_shipped_activationincrates/indexer/tests/corpus/shipped.rs.work_estimate,crates/indexer/src/index/inherited_members.rs, tested incrates/indexer/tests/resolver_cost_model.rs; withdrawal/direct-base repairs and audited baselineeefa9b6fshipped. Conditional using extraction remains open.render_refandattribute_refincrates/guest/svelte/src/walk.rshandle render/attachment calls; they do not cover ordinary mustache expressions.Remaining
Value uses and earned zeros
Statement and child members
Language shapes, docs and claims
Per-symbol test facts
Conditional imports
Framework regions and bridges
Acceptance
Suggested order
Original report
Summary
Several kinds of member are never symbols, so "where is
X.Yused" has no answer in any of these languages. This is also the main reason qualified-readresolution is low.rust.rs:2464-2471documents that no plugin emitsSymbolKind::VARIANT)Category::Output×36,Match::None×27). The code-index MCP itself cannot findFactStringTooLongorCsharpPartialby nameCommandFlags.Buffered,Row.Firstcannot bindX::class/X::CONST::classlines in guzzle, 0 refs. The guest saysclass_constant_access_expressionis "deliberately not covered"namespace X {}(members getcontainer_name null; zod v3utilgives 663no_candidate),abstractmethod signatures, ambientdeclare functionin.d.tslang-out/typescript/fixtureAcme\Child\run\run; theirextendsis lost)Proposal
VARIANT/ enum-case / class-const / record-property symbols withparentset to the enclosing type, plus TS namespace and anonymous-class containers.Enum::Variant/Type::CONST/Type.Member→ the child of the resolvedType.X::classemits a qualifiedtyperef.Acceptance
find_references("CommandFlags.Buffered")(or the equivalent id) answers.Filed from the per-language review on 2026-11-09: 8 agents, one per language plus one for Vue/Svelte/XAML/timeline, run against copies of the pinned corpus repos (
tests/corpus/corpus.toml) using installed build2dcfc615, which differs from master only by XAML/CI commits. The top claim of every issue was spot-checked in the main session. Artifacts live under the review session's scratchpadlang-out/<lang>/and are available on request.Members that are never symbols: Rust enum variants, C# enum members/record props, PHP consts/enum cases/X::class, TS namespacesto Extraction coverage: members defined by statement (JS app.x = fn, Ruby alias), enum/const members, docs and signatures, per-language gaps, file claims#!/usr/bin/env rubyshebang is indexed as text only, because every language claim is path-based #298Field case from the #534 bind account: the Rust package lost the qualifier of index-expression receivers (shipped recall regression)
rust-ripgreptests/json.rs:162msgs[0].unwrap_begin()used to bind toMessage::unwrap_begin(tests/json.rs:21) under the old pin (rust 0.1.5). Under the shipped rust 0.1.7 the ref has an empty qualifier and stays unresolved. There are 30 such correct binds lost on ripgrep (26Message.unwrap_*, 4IncrementalIgnore.root/normalize), all with an index expression or similar non-path receiver. To do: find the guest change between 0.1.5 and 0.1.7 that dropped the receiver qualifier forindex_expression(and siblings), restore it, and add a guest fixture plus a corpus bind check. This blocks the #534 re-bless.Fixed on branch
codex-534(b94c542a), merged intointegration-1109(c5239753). Rust package 0.1.8, rebuilt through the existing flow (build.sh+package_records --write --package rust).crates/guest/rust/src/rust.rswalk_macro_token_tree(from330c6f25). Inside macro token trees (assert_eq!withinrgtest!) the receiver arrives as a delimiter group, not anindex_expression, and the bare-identifier guard cleared it. Ordinary receiver capture was unchanged across 0.1.5–0.1.7.macro_receiver_startkeeps the full index/try/parenthesized receiver spelling. Call-result and field-suffix receivers stay unproven on purpose (negative controls in the fixture). A broader first draft added 6 wrong rust-analyzer binds and was discarded.#[test]function as an untested production change #577Extraction coverage: members defined by statement (JS app.x = fn, Ruby alias), enum/const members, docs and signatures, per-language gaps, file claimsto Missing package facts hide live uses, public members, framework bindings and test roles#[test]function as an untested production change #577