File detail
cache-reuse.rq
reqlan rq/indexer/cache-reuse.rq
| Idea | Status | Tags | Summary | Katz |
|---|---|---|---|---|
| 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 | |
| already_cached | Mechanisms that already reuse stored state: - Soft sync mtime skip on [ideas_schema.documents_table] ( [nonblocking_index] ) - Idle stale check that indexes only dirty paths ( [indexing_trigger_auto] ) - Git date columns on [ideas_schema.ideas_table] ( no git walk on every UI paint ) - Fuzzy search and paged Ideas Summary SQL over SQLite ( avoid full in-memory dumps when used ) [index_cache_reuse] | 0.040 | ||
| single_sync_walk | done | One native directory walk records base roots, `.rq` paths, and allowlisted code paths. The walk does not read file bodies. Startup, Refresh, and create-base each run that walk once. They do not call `findFiles` and they do not run a second native `syncWorkspace` walk. Soft sync indexes the path list and skips unchanged mtimes. Idle stale check stats paths already stored in SQLite. New files arrive from the file watcher. The language server does not walk. The extension sends the base roots after the scan. Overlapping callers share one in-flight scan. CLI and MCP `sync_workspace` uses the same walk ( one pass, stop at nested bases ). [index_cache_reuse] [sequencing.soft_sync] [sequencing.scan_limits] | 0.080 | |
| single_open_store | draft | The extension adapter owns a live [workspace_index] / SQLite connection per base. `getAnalysisApi()` / [analysis_runtime] must not open a second runtime that re-runs `ensure_ready` → `sync_workspace` when the adapter already synced. Reuse the open store for file-context, deprecation, and semantic commands. [index_cache_reuse] [consumers.extension_ui_consumers] | 0.040 | |
| reuse_sqlite_edges_for_hops | draft | Activity bar and Ideas Summary already query hop neighbourhoods from SQLite edges. Language-server reference ranking ( [reference_code_completion_sequencing] ) rebuilds adjacency from open Langium documents in [completion_provider]. When the index is ready, completion hop ranking should prefer indexed edges ( or a shared hop API ) over a second AST-derived graph. [index_cache_reuse] [consumers.extension_ui_consumers] | 0.040 | |
| path_completion_listing_cache | draft | Import and anonymous file-path completion ( [import_code_completion_ranking], [anonymous_reference_code_completion], [reference_code_completion_objects] ) walk directories via [path_completion]. Reuse directory listings across keystrokes ( TTL cache ) so each keystroke does not re-walk the filesystem; clear the cache in tests and on demand. [index_cache_reuse] | 0.040 | |
| avoid_full_list_all_ideas | draft | Prefer `fuzzySearch`, paged SQL, or catalog deltas over materialising every idea. Avoid: - reference-search / wildcard panels calling `listAllIdeas` when search APIs suffice - Ideas Summary `sendFullGraph` dumping all ideas and edges ( [graphical_graph] guidance ) - repeated full-catalog pushes when only a few documents changed [index_cache_reuse] [consumers.extension_ui_consumers] | 0.051 | |
| 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 | |
| inbound_snapshot_events | done | Host → LSP inbound snapshots are event-driven and incremental. Push only when the ideas index is ready ( catalog update, ready-edge, visible-editor change, or window focus ). While Syncing or not ready, do not push an empty batch that clears the language-server last-good map; set a deferred flag and flush on the next ready event. The language client often starts before the index — registration must ensure-open / defer, not skip forever. Each notification is a per-document merge for visible editors; URIs not in the batch stay as last-good until replaced or the document closes. After a single-file enqueue reaches ready, notify catalog so consumers get a ready-state event ( mid-sync catalog notifies alone are not enough ). Coalesce concurrent push work so catalog spam drains to one ready pass. Related: [unify_inbound_indexes], ["../extension/language/support/open-file-sequencing.rq".lazy_features_after_outbound], ["../extension/language/syntax/features-syntax-highlighting.rq".inbound_inlay_index_performance]. | 0.133 | |
| overview_coverage_reuse | draft | Overview coverage must not re-walk the base with `.rqignore` when a soft sync just produced an equivalent file set. Reuse the last sync document list or a cheap SQLite documents query. [index_cache_reuse] [sequencing.soft_sync] | 0.040 |
Related clusters
file
community
folder
status
status
status
tag
Local graph
Initialising graph…