Code reference detail
inbound-referencer-index-perf.test.ts
packages/language/test/inbound-referencer-index-perf.test.ts
| Idea | Status | Tags | Summary | Katz |
|---|---|---|---|---|
| lazy_features_after_outbound | done | After the hot path is on screen, show the rest when its data is ready. This pass must not delay [open_file_algorithm] steps 1 – 5. Related: [language_server], [unify_inbound_indexes], [background_startup], [inlay_hints], [codelens]. Work: - Confirm each qualified reference. Read that target file once, at depth 1. Then paint the idea line or the missing-idea error ( [missing_reference_colour_sequence] ). - Inbound backlinks: inlay hints and the file-top CodeLens, from the host snapshot ( [unify_inbound_indexes] ). - Attribute and name catalogs for completion and quick fixes. - Unqualified comment matches from that snapshot ( [comment_backlink_sequence] ). Until the first ready snapshot arrives, inlay hints and the file CodeLens stay empty. Those handlers do not open SQLite and do not call `list_all_ideas`. Later updates are incremental ready-state events ( ["../../../indexer/cache-reuse.rq".inbound_snapshot_events] ); last-good stays until replaced. When a ready snapshot arrives, refresh the visible editors. | 0.283 | |
| open_file_algorithm | done | When the editor opens or changes a `.rq` buffer, `reqlan-lsp` runs this sequence. Do not wait for the ideas index. Do not wait for a workspace crawl. Detail: [open_file_sequence_diagram]. Related: [open_file_reference_sequencing], [language_server_rust], [ast_lifecycle], [outbound_one_hop], [open_file_hot_path], [token_colour_sequence], [missing_reference_colour_sequence], [lazy_features_after_outbound]. The hot path finishes before the first diagnostics publish. 1. Parse this buffer once ( [ast_lifecycle] ). 2. Colour tokens from that parse ( [token_colour_sequence] ). 3. Emit same-file links and same-file missing-idea errors from that parse. 4. Parse each imported file once, at depth 1, for idea names and lines ( [outbound_one_hop] ). Link an imported name that exists. Underline an imported name that does not ( [missing_reference_colour_sequence] ). 5. Return. A qualified reference may link to its file from the path token. Do not read that file on this path. After that publish, a background pass fills the rest ( [lazy_features_after_outbound] ). That pass must not delay steps 1 – 5. The server sends the hot publish before it starts that pass. It runs that pass only while no client message waits. A hover or a definition request goes first. A change reuses the import roots loaded at open. It does not read the config again. The node engine keeps [node_engine_open_path]. | 0.330 | |
| complementary_information_rendering | The extension should render computed information inline in the editor as complementary text. Complementary rendering should include resolved references and optionally indirect references behind a toggle. Complementary rendering should not mutate source files unless the user explicitly applies a change. | 0.040 | ||
| inbound_inlay_hints_whole_graph | done | Inbound references shown in [view_references_as_inlay_hints] should include referencers from the whole requirement graph across the workspace, not only ideas declared in the current file. Coverage comes from SQLite ["../../../indexer/sqlite-schema.rq".edges_table] via ["../../../indexer/cache-reuse.rq".unify_inbound_indexes], not from Langium IndexManager. Whole-graph coverage must not regress to per-idea full-index scans — see [inbound_inlay_index_performance]. Implemented by ["../../../../packages/language/src/reqlan-inbound-reference-inlay-label.ts"], ["../../../../packages/language/src/reqlan-inlay-hint-provider.ts"]. [view_references_as_inlay_hints] [traceable_inlay_hints] [inbound_inlay_index_performance] | 0.056 | |
| inbound_inlay_index_performance | done | Computing inbound reference inlay hints for a document with many ideas must look up a pre-pushed SQLite inbound snapshot ( ["../../../indexer/cache-reuse.rq".unify_inbound_indexes] ) in near-constant time per declaration. Show the hints when that snapshot arrives ( ["../support/open-file-sequencing.rq".lazy_features_after_outbound] ). Until the first ready snapshot arrives, hints stay empty. Later index sync must not clear last-good with an empty mid-sync push ( ["../../../indexer/cache-reuse.rq".inbound_snapshot_events] ). Must not call Langium `findAllReferences` / equivalent full-index scans once per idea ( that is O ( ideas × workspace refs ) and freezes the editor on dense graphs ). Implemented by ["../../../../packages/language/src/reqlan-inbound-reference-inlay-label.ts"] and ["../../../../packages/language/src/reqlan-inlay-hint-provider.ts"]. [view_references_as_inlay_hints] [inbound_inlay_hints_whole_graph] | 0.122 | |
| view_references_as_inlay_hints | done | References should be shown as inlay hints in the editor. This should be a toggleable setting, which should be available in the command palette. N-lines ( configurable setting ) of hints should be shown below the idea. Inbound lookup must stay interactive on large graphs via [inbound_inlay_index_performance]. The Rust server honours `reqlan.referencesInlayHints.enabled` and the host inbound snapshot ( `byIdeaName` + `fileReferencers` ). Implemented by ["../../../../packages/language/src/reqlan-inlay-hint-provider.ts"], ["../../../../packages/language/src/reqlan-inbound-reference-inlay-label.ts"], ["../../../../packages/language/src/reqlan-inlay-hint-settings.ts"], ["../../../../packages/extension/src/extension/register-reference-inlay-hints.ts"], and ["../../../../crates/reqlan-lsp/src/session.rs"]. | 0.093 | |
| index_cache_reuse | draft | Identify where the ideas index, diagnostics store, or in-process caches already hold data that other modules recompute. Goal: one walk, one sync, one open store where possible; reuse SQLite edges and mtime maps instead of rebuilding graphs from scratch. Related: [nonblocking_index], [indexing_incrementality], [consumers.index_consumers], [sequencing.index_sequencing]. | 0.164 | |
| unify_inbound_indexes | done | Inlay hints and code lens must read inbound edges from [ideas_schema.edges_table], not Langium IndexManager. Query: edges whose `target_id` is an idea in the open file, plus `comment_link` / `file_reference` rows whose `target_file` matches that file. File-top CodeLens uses the `file_reference` subset ( ["../extension/language/syntax/features-syntax-highlighting.rq".file_inbound_code_lens] ). The extension host runs the query and pushes a snapshot to the language server. The language server does not open SQLite ( [consumers.extension_ui_consumers] ). Updates follow index sync independently of open-file parse ( ["../language/syntax.rq".open_file_reference_sequencing], [inbound_snapshot_events] ). Mutation hooks already use the same store. Share one graph. Related: [index_cache_reuse], ["../indexer/indexer.rq".local_symbolic_analysis], ["../extension/language/syntax/features-syntax-highlighting.rq".inbound_inlay_index_performance]. | 0.213 |
Reference labels
"../../../../packages/language/test/inbound-referencer-index-perf.test.ts", "../../../../packages/language/test/inbound-referencer-index-perf.test.ts:inlay referencers come from the pushed snapshot, not findAllReferences", "../../packages/language/test/inbound-referencer-index-perf.test.ts:inlay referencers come from the pushed snapshot, not findAllReferences", ../../../../packages/language/test/inbound-referencer-index-perf.test.ts, ../../../../packages/language/test/inbound-referencer-index-perf.test.ts:inlay referencers come from the pushed snapshot, not findAllReferences, ../../packages/language/test/inbound-referencer-index-perf.test.ts:inlay referencers come from the pushed snapshot, not findAllReferences