Cluster detail
status: Not present
Status cluster for Not present.
status
475 ideas
73 files
| Idea | File | Status | Summary | Katz |
|---|---|---|---|---|
| spec | packages/extension/src/analytical_submodule/spec.rq | this folder is the extension host adapter for `@reqlan/analytical`: VS Code wiring ( watchers, Uri helpers, IndexService ) over the shared WorkspaceIndex engine. Index ownership lives in packages / analytical. Product-surface registration lives in ["../extension/register-contributions.ts"]. Export UI lives in ["../export_module"]. | 0.040 | |
| import_alpha | packages/language/test/fixtures/wildcard-refs/alpha.rq | alpha idea | 0.040 | |
| import_beta | packages/language/test/fixtures/wildcard-refs/alpha.rq | beta idea | 0.040 | |
| other_thing | packages/language/test/fixtures/wildcard-refs/alpha.rq | not matched by import_* | 0.040 | |
| import_gamma | packages/language/test/fixtures/wildcard-refs/gamma.rq | gamma idea | 0.040 | |
| import_alpha | packages/packages/language/test/fixtures/wildcard-refs/alpha.rq | alpha idea | 0.040 | |
| import_beta | packages/packages/language/test/fixtures/wildcard-refs/alpha.rq | beta idea | 0.040 | |
| other_thing | packages/packages/language/test/fixtures/wildcard-refs/alpha.rq | not matched by import_* | 0.040 | |
| import_gamma | packages/packages/language/test/fixtures/wildcard-refs/gamma.rq | gamma idea | 0.040 | |
| base | reqlan rq/bases/base.rq | A base is a container for ideas, ideasets, and files. It forms the boundary of one ideas graph and is consumed by the CLI and the extension. Marker: a directory is a base only when it owns a `.reqlan` folder ( [app_memory_doc.application_memory] ). No bare workspace folder is treated as a base until the user creates `.reqlan` there ( [create_base_onboarding] ). Aligns with [ontology_base]. Discovery and registry: [base_discovery], [base_registry]. Marker path helpers: [application_memory_impl]. | 0.322 | |
| base_configuration | reqlan rq/bases/base.rq | Base configuration is distinct from, but related to, [extension_configuration]. Optional settings live at `<base>/.reqlan/config.json` ( one config per base ). For an `.rq` file, the applying base is the nearest ancestor that owns `.reqlan`; that base's config applies when present. See [extension_configuration.configuration_location]; resolved by [path_resolve]. | 0.087 | |
| base_configuration_provider | reqlan rq/bases/base.rq | Base-level settings live at `<base>/.reqlan/config.json`. Extension-level settings remain VS Code configuration for the product host. | 0.040 | |
| base_initialisation | reqlan rq/bases/base.rq | Bases are initialised with `<base>/.reqlan/config.json`, `.reqlan/.rqignore` ( gitignore-syntax path filters; see [extension_configuration.configuration_rqignore] ), `.reqlan/.gitignore` ( [base_initialisation_ignore] ), and a sqlite ideas index under `.reqlan` ( [base_ownership] ). [create_base_impl] creates the `.reqlan` marker and seeds a minimal `config.json`, default `.rqignore` ( ["../extension/index-host/index.rq".rqignore_initialisation] ), and `.gitignore` when the base is new. Full install sequencing ( extension welcome vs base seeds vs agent files ): ["../extension/host/installation.rq".base_installation]. | 0.081 | |
| base_linking | reqlan rq/bases/base.rq | A base may have one-directional relationships with other bases. This follows a subscription model. Bases may be cross subscribed. Unless linked, than bases remain isolated. Base linking is configured in the config file in the base. reqlan directory. - an unlinked child base should sever the contained ideas from the parent base ( i. e. the parent should just see the child as a separate base and child ideas shouldn't be visible, the indexer shouldn't crawl it. ) they should be functionally distinct - bases, distinct from eachother in the system file tree, should be linkeable ( either one way or both ways ) - A linked child base should allow the parent base to see the child's ideas. The indexs should be linked, and the child counts etc should be included in the parents. - A child base should always be able to link to parent base ideas. | 0.040 | |
| base_modes | reqlan rq/bases/base.rq | A base may be linked to | 0.040 | |
| base_nesting | reqlan rq/bases/base.rq | Bases may nest: any subdirectory that owns its own `.reqlan` is a child base. Parent-base indexing includes only `.rq` files under the parent root that are **not** under any child base root ( [base_discovery] ownership exclusion ). Nested bases appear as siblings in the multi-base registry; the longest-matching base root wins for a given file path ( [implied_context] ). | 0.060 | |
| base_ownership | reqlan rq/bases/base.rq | Each base holds its own [ideas_index] store under `<base>/.reqlan/ideas-index.sqlite`. Path keys inside the index are relative to that base root, not the VS Code workspace root. Store path: [application_memory_impl]; per-base engine: [workspace_index] via [base_registry]. | 0.112 | |
| create_base_onboarding | reqlan rq/bases/base.rq | When discovery finds **zero** bases under any VS Code workspace folder ( root or child ), the extension prompts the user to create a reqlan base at the workspace-folder root. Do not auto-create `.reqlan`. Command `reqlan.createBase` creates `<folder>/.reqlan/` ( empty directory is a valid marker ) via [create_base_impl], then calls [base_registry] `refresh` so the new marker is registered and the returned [base] descriptor matches discovery ( [refresh_rediscovers_bases] ). With multiple workspace folders and no bases, prompt against the first folder. Headless create-base helper: [create_base_impl] ( also used by CLI `init` ). | 0.172 | |
| implied_context | reqlan rq/bases/base.rq | The **active base** for editor-adjacent surfaces is the longest-matching base root that contains the focused file path. When no file is focused, the last selected base ( Ideas Summary switcher / activity bar ) or the first discovered base is used. Context, local graph, and analysers bind to the active base's index — not a merged global graph. User / explicit pin is a pointer swap only — [active_base_switch]. Core selection: [base_discovery] ( `baseForPath` / `selectDefaultBase` ); editor pin / switch: [editor_index_adapter]. | 0.075 | |
| multi_base_environment | reqlan rq/bases/base.rq | Analytical features are multibase aware via [base_registry]: one [ideas_index] / `WorkspaceIndex` per base, isolated catalogs ( no cross-base idea-id collision ). Surfaces list all discovered bases; Ideas Summary and context panes scope to the active / selected base ( [active_base_switch] ). Cross-base reference resolution and merged graphs are out of scope for the first multi-base pass. Headless ( CLI / MCP ) selects one base via [analysis_runtime]; the editor hosts [editor_index_adapter]. | 0.134 | |
| no_base_behaviour | reqlan rq/bases/base.rq | When no base is found, the extension should prompt the user to create a base at the workspace-folder root. consideration should be made for the [cli_package], the [extension] and the [analysis_scope] The indexing should not throw errors - it should default to a global tmp index scope the workspace; or current working directory. In the cli; an warning should be shown on first command execution if no base is found. | 0.040 | |
| brand | reqlan rq/brand.rq | reqlan has a simple brand. Dark rust; and aqua blue pallete. Pink for highlights. Logo is nodular graph / crosshair | 0.040 | |
| extension_brand | reqlan rq/brand.rq | The extension uses the brand logo from ["../site/public/logo.svg"]. PNG is used for marketplace, language file icon, activity bar, README, and chat participant surfaces ( Azure Marketplace rejects SVG ). WebP is generated as a raster fallback. | 0.040 | |
| file_icon | reqlan rq/brand.rq | the file icon for. rq files should use the reqlan logo. | 0.040 | |
| cli_package | reqlan rq/cli/cli_package.rq | `packages/cli` ( `@reqlan/cli` ) is the Clipanion CLI published to npm as the `reqlan` ( and `rq` ) binary. Headless commands go through the core analytical engine ( `@reqlan/analytical/core` / `reqlan-napi` ), not Langium. Entry: ["../../packages/cli/src/main.ts"] via ["../../packages/cli/bin/cli.js"] ( [windows_esm_entry] ). Analysis commands reuse [application_memory] ( `<base>/.reqlan` ) and the analytical ["../indexer/indexer.rq".index] so the CLI shares the ideas index with the extension and MCP. | 0.214 | |
| commands | reqlan rq/cli/cli_package.rq | Minimal commands: - `parse <file>` — parse one `.rq` file via the core engine `parseReqlanSource` ( Rust `reqlan-parse` ); print diagnostics or an AST summary ( `--json` for machine output ). - `analyse` / `analyze` — file ( `--file` ), idea ( `--idea` ), workspace completion ( default ), local symbolic ( `--local-symbolic <file>`: outbound + same-file inbound, no index — ["../indexer/indexer.rq".local_symbolic_analysis] ), or broken references ( `--broken-refs` ) via `AnalysisApi`. `--glob` limits `--broken-refs` to a path subset of the base. `--include-comments` adds unresolved ["../language/syntax.rq".comment_reference] sites ( ["../core_analysis/core.rq".test_references] ). - `search <query>` — semantic search via `AnalysisApi.searchRequirements`. Repeatable `--context <path|path#idea|name>` biases ranking by graph hop distance ( ["../core_analysis/search.rq".contextual_search] ). - `click <target>` — compact local context for an idea, `.rq` file, or indexed code file via `AnalysisApi.click` ( ["./click.rq".click] ). No match uses search; more than one match is ranked by session distance. Optional `--session` continues a click session. `--max-backlinks` / `--max-siblings` / `--max-outbound` / `--max-candidates` cap lists. - `export` / `export html` — multi-file HTML site via `NativeAnalysisApi.exportHtml` ( [html_export.html_export] ). `--exclude-secret` omits `*.secret.rq`. `--exclude-ignored` omits paths matched by `.reqlan/.rqignore`. `--url-base` mounts root-relative hrefs per [html_export.html_export_url_base]. `--header-href` / `--header-label` set the topbar home link per [html_export.html_export_header_link]. - `init [directory]` — create a new [base] marker ( `.reqlan` ) at the given path or cwd ( [init] ). - `check` — CI wrapper around ["../core_analysis/core.rq".index] unresolved references ( ["../core_analysis/check.rq".check] ). Reports broken idea, comment, file, and import references ( ["../core_analysis/check.rq".check_unresolved_imports] ). Skips lines after ["../language/syntax.rq".comment_reference_ignore]. Repeatable `--glob <pattern>` limits the recursive scan to files that match any pattern ( ["../core_analysis/check.rq".check_glob_patterns] ). One `--glob` selects the same files as one path glob. A positional file outside those patterns is checked as that file. A positional directory outside those patterns is not walked. `--json` / `--pipe` select machine output. Exit status is 1 when the command finds issues. Issue order groups shared missing targets ( ["../core_analysis/check.rq".check_order_by_target] ). `--wildcard-zero` / `--wildcard-one` are `warn` ( default ), `error`, or `off` ( ["../core_analysis/check.rq".check_wildcard_zero], ["../core_analysis/check.rq".check_wildcard_one] ). Repeatable `--skip-target <glob>` omits issues whose missing target matches the glob ( ["../core_analysis/check.rq".check_skip_targets] ). `--skip-gitignored-targets` omits file-reference issues whose missing target is gitignored ( ["../core_analysis/check.rq".check_skip_gitignored_targets] ). - `barrel <file>` — split a large `.rq` page into one file per idea and a container import page ( ["../extension/host/features-commands.rq".barrel_page] ). - `diff [<from>] [<to>]` — compare ideas between two git revisions ( ["./diff.rq".diff] ). No arguments compare pending `.rq` edits with `HEAD`, or `HEAD~1` with `HEAD` when those edits are absent. `--verbosity` is `summary` ( default ), `references`, or `text`. `--json` prints the same rows as MCP. Extra args from `pnpm run`: [pnpm_extra_args]. | 0.760 | |
| watch | reqlan rq/cli/cli_package.rq | The cli should be able to watch a base and maintain the index as files change. | 0.040 | |
| scope | reqlan rq/codestyle/typescript.rq | TypeScript package standards for `packages/extension` ( npm `reqlan-extension` ), especially UI state. Complements [development_core.rust_mindset] and [extension_architecture.state_machine_mindset]. Webview inventory: [webview_doc.webview]. Package role: [core_architecture.extension_package]. | 0.040 | |
| elevator_pitch | reqlan rq/constitution.rq | Build high quality, verifiable, explainable systems, quickly Site landing: ["./site/site.rq".elevator_pitch_section] | 0.056 | |
| general_purpose | reqlan rq/constitution.rq | The language should work in any stack. And ideally, even in non-software development environments. | 0.040 | |
| inspiration | reqlan rq/constitution.rq | This project draws upon ideas from the following fields: - LLMS - Software development - Obsidian / Personal Knowledge Management systems. - Industrial Control Engineering - Ontology based business information systems | 0.040 | |
| llm_first | reqlan rq/constitution.rq | The language should be designed to be easy to use with llms. It should be support token minimisation. | 0.040 | |
| mission_statement | reqlan rq/constitution.rq | This project offers a structred semantic framework for supporting people working with llms to document their semantic requirements as code; and provide ergonomic consumption and definition of them. | 0.040 | |
| scope | reqlan rq/constitution.rq | The scope of these requirements spans the entire project, including the language itself, the developer-user tooling, and the reqlan-developer environment. | 0.040 | |
| simplicity | reqlan rq/constitution.rq | The language should be simple to understand and use, and offer flexibility in the syntax for minimised friction and bp. | 0.040 | |
| supply_chain | reqlan rq/constitution.rq | The supply chain for this project should be open and transparent, minimising risk and immature dependencies. | 0.095 | |
| vsc_first | reqlan rq/constitution.rq | The language should be designed to be easy to use with vscode. | 0.040 | |
| base_containers | reqlan rq/core-architecture.rq | Ideas are organised in [bases]; each base holds the [ideas_index] store under its `.reqlan` application memory. Discovery and nesting: ["./bases/base.rq".base], ["./bases/base.rq".base_nesting]. | 0.040 | |
| cli_package | reqlan rq/core-architecture.rq | `packages/cli` ( `@reqlan/cli` ) is a Clipanion CLI over the core analytical engine ( `@reqlan/analytical/core` ) for parse, analyse, search, and export. Entry: [cli_main]. Binary name `reqlan` ( alias `rq` ). Published to npm with language, analytical, and MCP per [package_versioning] and [distribution.version_management]. | 0.094 | |
| extension_package | reqlan rq/core-architecture.rq | `packages/extension` ( npm `reqlan-extension` ) is the editor product per [distribution.extension_package]. It registers `.rq` language support, TextMate grammars, starts the language client, and owns activity bar, Ideas Summary, chat, skills, and mutation hooks. Ideas index engine lives in [analytical_package] / [indexer]; the extension only hosts a thin VS Code adapter ( [editor_index_adapter] ) for watchers and UI. Host entry: [extension_main]. LSP process: [lsp_rust.language_server_rust]. Node fallback: [language_server_main]. Depends on [language_package] and [analytical_package]. Follows [extension_architecture.event_driven] and [extension_architecture.state_machine_mindset] for JS state; webview UI standards in ["./codestyle/typescript.rq".ui_state_management]. This is the one Marketplace / Open VSX shippable; see [package_versioning]. | 0.128 | |
| extension_surfaces | reqlan rq/core-architecture.rq | Product surfaces on [extension_package] nest under [extension_hub.extension_domains]: - Host lifecycle: [extension_hub.host_lifecycle] - Language surface: [extension_hub.language_surface] - Index host: [extension_hub.index_host] ( [graph_analysers], editor adapter ) - Local context ( activity bar + context model ): [extension_hub.local_context] ( [activitybar.activity_bar], [context_scope_doc.context_scope] ) - Workspace summary ( Ideas Summary ): [extension_hub.workspace_summary] ( [ideas_summary_doc.ideas_summary] ) - Presentation ( shared webview + graph lib ): [extension_hub.presentation] ( [webview_doc.webview] ) - Agent surface: [extension_hub.agent_surface] ( [chat_participant_doc.chat_participant], [skills_and_mcp] ) - Graph mutation: [extension_hub.graph_mutation] ( [mutation_hooks] ) - Export surface: [extension_hub.export_surface] ( [export_doc.export_webview] ) | 0.047 | |
| grammar_and_parser | reqlan rq/core-architecture.rq | The language server parses with `reqlan-parse` ( [lsp_rust.language_server_rust] ). Do not switch the language to tree-sitter. Main `.rq` grammar file: [reqlan_grammar]. Comment-token grammar for `rq:[…]` in non- `.rq` sources: [comment_grammar]. `langium generate` still builds host AST modules and TextMate JSON per [development_build.build_prepare]. The checked-in TextMate grammar paints the editor before semantic tokens. Syntax requirements that the grammar must satisfy live in [syntax]; conceptual units in [ontology.idea], [ontology.ideaset], [ontology.reference], [ontology.import_statement]. Host services stay in [language_module]. The language server does not load them. | 0.172 | |
| hierarchy_of_truth | reqlan rq/core-architecture.rq | Align with [development_core.hierarchy_of_requirements]: - User request trumps these requirements; these requirements trump current implementation. - Language concepts: [ontology]; syntax rules: [syntax]. - Package seams and process topology: this file ( [workspace_packages], [language_runtime] ). - Editor UI and host contracts: [extension_hub.extension_domains] ( [product_map] ). - Distribution and publishables: [distribution]; internal vs shippable versioning: [package_versioning]. | 0.040 | |
| ideas_index | reqlan rq/core-architecture.rq | The ideas index is built and maintained by the [indexer] in [analytical_package]. Path: Rust parse / extract → SQLite via [workspace_index] ( [rust_port.analytical_rust_port] ). Application memory: each [bases.base] holds SQLite under `<base>/.reqlan/` ( shared by extension, [cli_package], and [mcp_package] ) — see ["./extension/index-host/index.rq".application_memory]. Multi-base: a BaseRegistry owns one [workspace_index] per discovered base; the extension adapter routes file events to the owning base. In the editor, [editor_index_adapter] watches `**\*.rq` and forwards changes to the owning base's [workspace_index]; it serves UIs, commands, chat, and analysers. The Rust language server reads the same store for catalogs, rename, and find-references ( [lsp_rust.language_server_rust] ). Headless ( MCP / CLI ) uses [analysis_runtime] ( nearest base containing cwd when several exist ). Capability requirements: [indexer.index_ideas], [indexer.index_technology], and sibling analysers in that file. Triggers: [indexer.triggers] and ["./extension/index-host/index.rq".idea_index_triggers]. | 0.100 | |
| language_package | reqlan rq/core-architecture.rq | `packages/language` ( `@reqlan/language` ) is the canonical language definition. It owns Langium grammars, generated AST and parser, scoped linking, validators, and LSP service providers. Public DI entry is [language_module] via `createReqlanServices`. Consumers: [analytical_package] ( native index / analysis via napi ), [extension_package] ( LSP ). Published to npm as a library dependency of [analytical_package]; not Marketplace-published. See [distribution.version_management] and [package_versioning]. | 0.105 | |
| language_runtime | reqlan rq/core-architecture.rq | Ideaset (language_runtime) | 0.050 | |
| language_server | reqlan rq/core-architecture.rq | The language server is the `reqlan-lsp` binary ( [lsp_rust.language_server_rust] ). The extension launches it over stdio ( [extension_main] ). It parses open `.rq` buffers for definition, completion, semantic tokens, inlays, document links, and validation. It reads the ideas index for workspace names. It does not keep a syntax tree for every file. A Node Langium process remains only when `reqlan.languageServer.engine` is `node`, or when the binary is missing ( [language_server_main] ). Product expectation for LSP navigation and validation: [extension_scope.lsp_support]. | 0.167 | |
| mcp_package | reqlan rq/core-architecture.rq | `packages/mcp` ( `@reqlan/mcp` ) is a stdio MCP server over the analytical analysis API — no VS Code host required. Entry: [mcp_main] via ["../packages/mcp/bin/mcp.js"]. Binary name `reqlan-mcp`. Used by Cursor and other MCP clients per [chat_participant_doc.mcp] and [skills_and_mcp.mcp_tools]. Search and retrieval use ["./extension/agent/skills-and-mcp.rq".mcp_click_retrieval] ( `click` ) only. npm `mcpName` is `io.github.littletuna4/reqlan` for MCP Registry ownership checks ( ["../packages/mcp/package.json"] ). Published to npm with language, analytical, and CLI per [package_versioning] and [distribution.version_management] ( `mcp/v*` ). Windows ESM entry uses `pathToFileURL` like ["./cli/cli_package.rq".windows_esm_entry]. | 0.109 | |
| monorepo | reqlan rq/core-architecture.rq | The workspace is a pnpm monorepo ( `packages\*`, extension webviews, and `site` ) per ["../pnpm-workspace.yaml"] and [development_core.pnpm]. TypeScript project references build in order language → analytical → mcp → cli → extension per ["../tsconfig.build.json"]. Living requirements for the product live in this `reqlan rq` folder. Root orchestration ( Langium generate, package builds, Cursor skill sync ) lives in ["../package.json"]. Why libraries are separate packages ( and how Changesets sees them ): [package_versioning]. | 0.040 | |
| package_versioning | reqlan rq/core-architecture.rq | Separate workspace packages exist for build isolation and reuse — not because each ships to every channel. [language_package] and [analytical_package] are leaf libraries shared by LSP, index, MCP, and CLI; they need their own package boundaries for TypeScript project refs and a single grammar / index ownership point. Release-driving channels: - Marketplace / Open VSX: [extension_package] ( `ext/v*` ) - GitHub Pages: [site_package] ( `site/v*` ) - npm registry: [language_package], [analytical_package], [cli_package], and [mcp_package] ( `language/v*`, `analytical/v*`, `cli/v*`, `mcp/v*` ) via Changesets `changeset publish` Changesets config is [changeset_config]. [language_package] and [analytical_package] stay in the Changesets graph so a lib change can bump their versions and patch dependents via `updateInternalDependencies: "patch"` ( including the extension, CLI, and MCP ). Extension webview folders may be private pnpm members ( e. g. `@reqlan/ideas-summary-webview` ) so Vite / Svelte can own deps; they bundle into extension media and are not Changesets publish targets. Activity-bar UI is not a separate package. json product. Contributors record release intent with a changeset on publishable packages when user-facing behaviour changes; see [distribution.version_management]. | 0.139 | |
| product_map | reqlan rq/core-architecture.rq | Ideaset (product_map) | 0.050 | |
| runtime_topology | reqlan rq/core-architecture.rq | The editor and the index do not share one process. - LSP process: `reqlan-lsp` for live `.rq` editing ( [lsp_rust.language_server_rust] ). - Analytical [workspace_index] ( extension host via [editor_index_adapter], MCP / CLI via [analysis_runtime] ): full-workspace graph for tables, local graph, chat, MCP. Editor ↔ extension host: VS Code APIs and webview postMessage. Editor ↔ LSP: vscode-languageclient over stdio. The language server reads the ideas index directly. Host catalog notifications are optional. Stack sketch: [development_core.stack]. | 0.040 | |
| scope | reqlan rq/core-architecture.rq | These requirements describe the cross-package system architecture of the reqlan monorepo: language definition, language server, ideas index, editor product, and companion tools. They are distinct from [extension_scope.scope], which bounds only the VS Code extension and LSP product surface. Language concepts live in [ontology]; syntax truth lives in [syntax]; editor module contracts live under extension / module. Grouped as [workspace_packages], [language_runtime], and [product_map]. | 0.040 | |
| site_package | reqlan rq/core-architecture.rq | `site` is the marketing / docs Next. js site per [distribution.site_package]. It is off the language-service and ideas-index path. Release-driving publishable alongside [extension_package]; see [package_versioning]. | 0.058 | |
| workspace_packages | reqlan rq/core-architecture.rq | Ideaset (workspace_packages) | 0.050 | |
| analysers | reqlan rq/core_analysis/core.rq | Queries over [index]: list, file-related, local graph, completion, deprecation, git dates, [test_references]. [graph_analysers] | 0.078 | |
| analysis_scope | reqlan rq/core_analysis/core.rq | `@reqlan/analytical` — shared index + analysis API. Hosts: CLI, [extension], MCP. Native rewrite: [rust_port.analytical_rust_port]. [parse] [index] [search] [export] [analysers] [runtime] | 0.087 | |
| check | reqlan rq/core_analysis/core.rq | reqlan check is a analysis tool surfaced by the cli. Intended for use in CI. see ["./check.rq".check] ["./check.rq".check_order_by_target] ["./check.rq".check_wildcard_sparse] ["./check.rq".check_wildcard_zero] ["./check.rq".check_wildcard_one] ["./check.rq".check_skip_targets] ["./check.rq".check_skip_gitignored_targets] ["./check.rq".check_meta_implementation] | 0.040 | |
| export | reqlan rq/core_analysis/core.rq | Snapshot → html / md / json / csv. [export_doc.export_pipeline] [html_export.html_export] | 0.051 | |
| index | reqlan rq/core_analysis/core.rq | Ideas / edges → SQLite ( `<base>/.reqlan` ). [indexer.index] | 0.331 | |
| modules | reqlan rq/core_analysis/core.rq | Ideaset (modules) | 0.040 | |
| parse | reqlan rq/core_analysis/core.rq | Lex + parse `.rq` for the index path ( not LSP ). [parser_lexer] → extract in [index]. | 0.051 | |
| runtime | reqlan rq/core_analysis/core.rq | Headless facade: `createAnalysisRuntime` / `AnalysisApi`. [core_arch.analysis_runtime] | 0.078 | |
| search | reqlan rq/core_analysis/core.rq | Rank ideas: fuzzy, contextual, semantic. [search_doc.search] | 0.051 | |
| html_export_attribute_pages | reqlan rq/core_analysis/html_export.rq | Html export should generate a dedicated page per attribute key used in the export scope. Attribute pages should show a distribution of distinct values ( counts and share of ideas ), and a searchable full list of ideas that declare the attribute with their values for that key. Emission defaults on and is controllable via includeAttributePages so this page family can be flagged in or out without changing the export pipeline shape. The attributes index, idea attribute tables, and search results should link to these pages when enabled. | 0.078 | |
| html_export_attributes_index | reqlan rq/core_analysis/html_export.rq | Html export should provide a searchable attributes index page listing every attribute key used in the export scope. Each attribute entry should summarize distinct values and idea counts, and link to the dedicated attribute page when [html_export_attribute_pages] is enabled. | 0.089 | |
| html_export_cluster_pages | reqlan rq/core_analysis/html_export.rq | Html export should support cluster pages that group related ideas. Deterministic clusters should at least include file, folder, tag, and status groupings. Optional computed clusters should use graph or semantic analysis when available without making export correctness depend on them. | 0.080 | |
| html_export_code_reference_pages | reqlan rq/core_analysis/html_export.rq | Html export should generate dedicated pages for outbound file_reference targets and inbound comment_link code files that are not idea-hosting reqlan files already covered by [html_export_file_pages]. Code-file pages should list referencing ideas and reference labels, and participate in search and navigation. Emission defaults on and is controllable via includeCodeFilePages so this page family can be flagged in or out later. Outbound reference path cells and graph external file nodes should link to these pages when enabled. Comment-linked files: ["../indexer/indexer.rq".index_code_files]. | 0.151 | |
| html_export_file_pages | reqlan rq/core_analysis/html_export.rq | Html export should generate dedicated pages for reqlan source files that host ideas in the export scope. File pages should list hosted ideas, related clusters, and a local graph view when available. Emission defaults on and is controllable via includeFilePages so page families can be flagged in or out without changing the export pipeline shape. Graph nodes and idea source-file links for hosting files should resolve to these pages when enabled. | 0.119 | |
| html_export_graph_animation | reqlan rq/core_analysis/html_export.rq | Live physics in the HTML export should match Ideas Summary animatePhysics: continuous damped semi-implicit Euler using the defaults from ["../../packages/extension/webviews/shared/graph/physics-core.js"] ( same module as ["../../packages/extension/webviews/shared/graph/graph-physics.ts"] ), inlined in ["../../crates/reqlan-export/assets/app.js"]. A Live physics toggle pauses and resumes the same simulation state ( default off ); when off, the graph batch-settles then sleeps. Batch settle must remain responsive per [html_export_graph_background_load] — yield between chunks rather than freezing the page for large graphs. Simulation should converge and sleep when calm, waking on filter changes or when Live physics is turned back on, aligned with [layout_physics]. Large graphs use a spatial grid + repulsion cutoff in the shared core; all nodes and full labels remain visible. | 0.093 | |
| html_export_graph_interaction | reqlan rq/core_analysis/html_export.rq | The interactive export graph should support dragging nodes and panning or zooming the viewport, aligned with [view_controls] and [manual_reframe]. Click-through to idea pages must remain available after drag via click-versus-drag discrimination. A Fit control should reframe the viewport to the current node set without restarting layout or clearing live physics state. Zoom and Fit must continuously drive [graph_label_auto] / [html_export_graph_label_auto] opacity when Labels is in auto mode. When ["../extension/workspace-summary/ideas_summary/graphical_graph.rq".file_treatment_toggle] is compound: file bounding boxes are hittable — drag moves member nodes together; clicking the underlined title navigates to the hosting file page ( when `hostFilePageUrl` / `pageUrl` is present ). When linked: synthetic file ideaset nodes are dragged and clicked like other leaves. Related: ["../extension/workspace-summary/ideas_summary/graphical_graph.rq".file_treatment_toggle], ["../extension/workspace-summary/ideas_summary/graphical_graph.rq".webview_export_graph_parity]. | 0.085 | |
| html_export_graph_labels | reqlan rq/core_analysis/html_export.rq | HTML export canvas graphs implement shared [graph_labels] ( full names, no ellipsis truncation ). [html_export_graph_label_modes] [html_export_graph_label_auto] | 0.062 | |
| html_export_graph_layout | reqlan rq/core_analysis/html_export.rq | The interactive export graph should lay out nodes so labels and circles do not heavily overlap. Initial placement should settle with the same Obsidian-style force model as [layout_physics] ( central gravity, edge springs, inverse-square repulsion ). Rendering uses canvas 2 d ( not SVG DOM ) with shared physics from ["../../packages/extension/webviews/shared/graph/physics-core.js"], inlined into the export asset ["../../crates/reqlan-export/assets/app.js"]. | 0.121 | |
| html_export_graph_links | reqlan rq/core_analysis/html_export.rq | Graph node hrefs must resolve to idea pages from every export page depth, including nested idea, file, and cluster pages. Node urls should be export-root-relative so path segments such as ideas / are not dropped when resolving from nested pages. When [html_export_url_base] is set, runtime resolution of those urls must honour the mount prefix ( same contract as page and asset hrefs ). External file nodes should resolve to [html_export_file_pages] or [html_export_code_reference_pages] when those page families are enabled. Hosting-file linked nodes ( ["../extension/workspace-summary/ideas_summary/graphical_graph.rq".file_treatment_toggle] linked mode ) prefer `hostFilePageUrl` stamped during graph URL enrichment ( file / code-file page for the idea's `fileUri` ), falling back to a member idea `pageUrl` when file pages are disabled. | 0.117 | |
| html_export_graph_metadata | reqlan rq/core_analysis/html_export.rq | Graph nodes in the HTML export should surface tags, status, and attribute keys on or beside the node, not only as filter inputs. Attribute values declared on the idea should be reachable from the graph via the idea page and on-node attribute key summary. | 0.062 | |
| html_export_graph_page | reqlan rq/core_analysis/html_export.rq | Html export should provide an interactive graph page with search, filters, and links back into idea and cluster pages. The graph should support scoped views for workspace, file, cluster, and idea contexts. The workspace graph page must include every idea in the export scope — blocks, oneliners, and ideasets — and must not apply the interactive Ideas Summary GRAPH_MAX_NODES budget. Ideasets are visible by default with a Hide ideasets / Show ideasets toggle, matching the external-file visibility control ( explicit AST ideasets only — distinct from hosting-file treatment ). Hosting `.rq` files ( implicit ideasets ) use a Files `<select>` — hidden / compound / linked — with option tooltips, per ["../extension/workspace-summary/ideas_summary/graphical_graph.rq".file_treatment_toggle] ( parity with Ideas Summary ). Compound mode draws hittable / draggable bounding boxes with clickable titles; linked mode adds synthetic ideaset nodes that navigate via `hostFilePageUrl` / `pageUrl`. Wildcard fan-out edges ( `wildcard_reference` ) are visible by default with a " Wildcard refs " chip ( same label / default as Ideas Summary ); turning it off client-filters those edges and draws them dotted when on — see ["../extension/workspace-summary/ideas_summary/graphical_graph.rq".wildcard_refs_toggle] and ["../extension/workspace-summary/ideas_summary/graphical_graph.rq".webview_export_graph_parity]. Status and tag filters are multi-select and distinguish [graph_status_tag_filters]. Per-idea, per-file, and per-cluster neighbourhood graphs may still use a capped budget for focused pages. [html_export_graph_links] [html_export_graph_layout] [html_export_graph_animation] [html_export_graph_background_load] [html_export_graph_subject] [html_export_graph_labels] [html_export_graph_label_modes] [html_export_graph_label_auto] [html_export_graph_interaction] [html_export_graph_metadata] | 0.165 | |
| html_export_graph_subject | reqlan rq/core_analysis/html_export.rq | When a graph view has a subject or center idea, that node should be visually distinct from peers and externals. Subject styling should use the brand rust accent against cyan peer nodes. | 0.062 | |
| html_export_idea_pages | reqlan rq/core_analysis/html_export.rq | Html export should generate a dedicated page per idea. Idea pages should include summary, attributes, inbound references, outbound references, nearby context, and links to related ideas, files, clusters, graph views, and printable forms. Status and tags are nullable attributes: render them only when present. | 0.081 | |
| html_export_internal_links | reqlan rq/core_analysis/html_export.rq | Every exported idea should have a stable html page path and stable in-page anchors. References, breadcrumbs, search results, graph nodes, cluster members, attribute listings, file listings, and code-file listings should link to html pages rather than only showing text labels. Overview status / tag rollups and list-table facet cells follow [html_export_overview_links]. On the printable report, same-page idea links use those in-page anchors per [html_export_print_in_page_anchors]. Graph node links must follow [html_export_graph_links]. When [html_export_url_base] is set, those same links must be root-relative under the mount prefix so static hosts resolve them with or without a trailing slash. A link `[idea.attribute]` opens that attribute on the idea page. See ["../language/syntax.rq".attribute_namespacing]. A link to an idea shows that idea's body in a tooltip per [html_export_idea_tooltips]. | 0.152 | |
| html_export_list_views | reqlan rq/core_analysis/html_export.rq | Html export should provide searchable list views for ideas, files, code files, references, clusters, and attributes. List views should preserve the usability of the current ideas summary tables with counts, sorting, filters, and quick navigation. Every interactive table column should be sortable by header click and filterable with a per-column filter, in addition to any page-level search bar. Navigable facet cells in those tables ( status, tags, paths, attribute values, cluster labels / kinds ) should be links to the matching detail page or to a list page with the matching column filter applied via [html_export_overview_links]. Long lists that sit above other page content follow [html_export_scrollable_lists]. The ideas index count columns follow [html_export_ideas_ref_columns]. Column hide, resize, and selector chrome follow [html_export_table_columns]. [html_export_ideas_ref_columns] [html_export_table_columns] [html_export_attributes_index] [html_export_file_pages] [html_export_code_reference_pages] [html_export_scrollable_lists] [html_export_overview_links] | 0.121 | |
| html_export_multi_file | reqlan rq/core_analysis/html_export.rq | Html export should generate a multi-file static site rather than a single document. The export should include page families for overview, ideas, files, code files, clusters, attributes, graph, data, and print-focused pages. | 0.067 | |
| html_export_printable_pages | reqlan rq/core_analysis/html_export.rq | Html export should provide static printable pages alongside the interactive site. Print pages should not depend on the interactive javascript bundle. Status and tags are nullable: when absent, printable sheets must omit those fields rather than inventing placeholders such as unspecified or empty dashes. When print pages are browsed in interactive runtime mode, long lists with content below them follow [html_export_scrollable_lists]. Idea cards on the printable report follow [html_export_print_idea_cards], [html_export_print_in_page_anchors], [html_export_print_all_attributes], and [html_export_print_button]. Stored idea body spaces on print pages follow [html_export_print_body_whitespace]. Ordering of cards on the printable report is tracked by [html_export_print_order_by]. | 0.174 | |
| html_export_runtime_modes | reqlan rq/core_analysis/html_export.rq | Html export should support a richer interactive site mode and a leaner document or print-oriented mode from the same export manifest. Template identifiers should select real rendering behavior rather than metadata only. Scrollable list viewports from [html_export_scrollable_lists] apply only in interactive mode; document and print modes keep full-length lists. | 0.079 | |
| html_export_scrollable_lists | reqlan rq/core_analysis/html_export.rq | In interactive runtime mode, long list and table sections that have additional content below them should render inside a scrollable viewport with a max height so lower sections remain reachable without endless page scrolling. Toolbar titles and filters for those sections should stay outside the scroll viewport. In document and print runtime modes, those same lists should expand to their full natural height so the export remains readable as a continuous document and suitable for printing. Browser print of interactive pages should also expand constrained lists to full height. | 0.117 | |
| html_export_search | reqlan rq/core_analysis/html_export.rq | The interactive html export should provide a global search bar and page-local search bars. Search should work offline from generated data bundled with the export. Attribute keys and values should be searchable alongside ideas, files, code files, and clusters. | 0.067 | |
| port_phases | reqlan rq/core_analysis/rust_port.rq | Ideaset (port_phases) | 0.040 | |
| search | reqlan rq/core_analysis/search.rq | Search over the requirement graph — find ideas by name, body, tags, and related signals. Surfaces: [fuzzy_search], [file_search], [contextual_search], [semantic_search], [katz_search]. Consumed by CLI `reqlan search`, MCP / chat tools, Ideas Summary, and the activity-bar search pane. Rust ranking engine: ["./rust_port.rq".search_rust]. | 0.046 | |
| semantic_search | reqlan rq/core_analysis/search.rq | Broader token / edge-label search over candidates through [native_analysis_api]. Prefer [fuzzy_search] for fast name-oriented lookup with separator-insensitive matching. | 0.092 | |
| build_prepare | reqlan rq/development/build.rq | Copy TextMate grammars from the language package into extension syntaxes. Sync Cursor agent skills from extension sources into `.cursor/skills`. The orchestrator caches `build:syntaxes` independently and always runs the external Cursor-skill sync before webview and host bundling. | 0.063 | |
| extension_build | reqlan rq/development/build.rq | Production builds for the VS Code extension are orchestrated by [extension_build_script]. Run from the extension package: `pnpm run build` or `node scripts/build.mjs`. Workspace-wide builds also run langium generation and sibling packages via the root `pnpm run build`. Local and F5 builds use [incremental_extension_build]; VSIX prepublish uses the forced path. | 0.040 | |
| extension_bundle | reqlan rq/development/build.rq | The extension host ( `src/extension/main.ts` ) and language server ( `src/language/main.ts` ) are bundled with esbuild per [extension_esbuild]. The host-matching core engine `.node` is staged under `native/` by [extension_host_native_stage] for F5 and for per-target VSIX packaging; it is not inlined into `main.cjs`. Output: CommonJS `.cjs` files under `packages/extension/out/`. `vscode` remains external; a small `Object.groupBy` polyfill is injected for older Node runtimes. | 0.046 | |
| extension_media_build | reqlan rq/development/build.rq | Extension logo assets are generated by ["../../packages/extension/scripts/generate-media.mjs"] from ["../../site/public/logo.svg"]. PNG ( `media/logo.png` ) is tracked in git and used as the packaged icon for marketplace, language file icon, and activity bar ( Azure Marketplace rejects SVG ). WebP and SVG copies remain build outputs ( gitignored ); regenerate via `build:media` when the source logo changes. Invoked as `pnpm run build:media` at the start of [extension_build_script]. | 0.040 | |
| extension_readme_build | reqlan rq/development/build.rq | Generate `packages/extension/README.md` from [extension_readme_script] and README. template. md before VSIX packaging. Marketplace links are resolved from ["../../scripts/phonebook.ts"]; changelog body comes from packages / extension / CHANGELOG. md ( Changesets output ). Invoked as `pnpm run build:readme` at the start of [extension_build_script]. Requirement: ["../distribution/distribution.rq".extension_readme]. | 0.048 | |
| extension_typecheck | reqlan rq/development/build.rq | Extension TypeScript sources are checked with `tsc -b tsconfig.json` before bundling. `noEmit: true` — compilation output comes from esbuild, not tsc. | 0.040 | |
| scope | reqlan rq/development/build.rq | extension build steps for local development and CI | 0.040 | |
| webview_build | reqlan rq/development/build.rq | Svelte webview UI is bundled with Vite per [development_core]. Configs: [ideas_summary_vite_config], [activity_bar_vite_config], [onboarding_vite_config] Output lands in `packages/extension/media/webviews/` for the extension host to load. The onboarding webview inlines ["../../packages/extension/templates/thanks-for-installing.template.rq"] via Vite `?raw` for the in-page language example; the template source stays excluded from the VSIX. Requirement: ["../extension/host/onboarding/page-thanks-for-installing.rq".installation_event]. Watch mode during development: `bash scripts/watch.sh` vite `--watch` alongside tsc and esbuild. | 0.046 | |
| code_comment_references | reqlan rq/development/core.rq | code comments should include reference to their respective rq references. | 0.054 | |
| current_link_icons | reqlan rq/development/core.rq | Slugs are defined on each link in ["../phonebook.json"]: - `site` → mdi / web - `vsc` → simple-icons / visualstudiocode - `openvsx` → simple-icons / vscodium ( proxy; no Open VSX slug in Simple Icons ) - `github` → simple-icons / github - `discord` → simple-icons / discord - `github-sponsors` → simple-icons / githubsponsors - `email` → mdi / email-outline - `sticker-form` → mdi / sticker-emoji Package entries under `packages` all use simple-icons / npm: - `language`, `analytical`, `cli` | 0.057 | |
| hierarchy_of_requirements | reqlan rq/development/core.rq | user request trumps the ["../../reqlan rq"] requirements, and ["../../reqlan rq"] trump the current implementation. | 0.045 | |
| iconify_stack | reqlan rq/development/core.rq | Icons use Iconify offline — bundled at build time, not fetched from a CDN at runtime. Icon data comes from npm packages listed under the `icons` key in ["../phonebook.json"] per [phonebook_reqs.phonebook_icons]. | 0.080 | |
| modulurisation | reqlan rq/development/core.rq | files should be small | 0.040 | |
| pnpm | reqlan rq/development/core.rq | Must use pnpm for all js package management across the monorepo ( packages, extension, site ). | 0.045 | |
| rust_mindset | reqlan rq/development/core.rq | - code should be complete - nulls should be safe and deliberate - fallbacks should be used sparingly - incomplete code should be marked as such - comments should describe final desired state of the code, not the current state; they should be timeless. - tests should be local | 0.100 | |
| scope | reqlan rq/development/core.rq | these requirements describe the actual development of the reqlan language and tooling itself | 0.040 | |
| stack | reqlan rq/development/core.rq | - Requirements are documented with reqlan in the ["../../reqlan rq"] folder. - Language grammar truth is ["../../reqlan rq/language/syntax.rq"]; the default editor LSP is Rust ( `reqlan-lsp` ). - Langium in `@reqlan/language` remains a dual-parser oracle and the transitional `node` engine fallback. - VS Code extension host is in ["../../packages/extension"]; open-buffer features run in `crates/reqlan-lsp`. - vscode webviews are implemented with svelte - Extension build pipeline is documented in ["./build.rq"] | 0.045 | |
| succinct | reqlan rq/development/core.rq | maximised meaning to character ratio. | 0.040 | |
| testing | reqlan rq/development/core.rq | tests should have comment references to the requirements they serve to test. per ["../extension/language/comment-references/functional-code-comment-references.rq"] | 0.061 | |
| deployment_flow | reqlan rq/distribution/distribution.rq | On push to main, the release workflow first completes ["./distribution.rq".ci_gate]. If pending changesets remain, it then applies them with `pnpm changeset version`. This bumps package. json for each affected package and writes changelogs. ["../../scripts/prepare-native-packages.mjs"] then copies the `@reqlan/analytical` version onto each platform package ( [version_management] ). The workflow commits the result, creates annotated tags for every bumped publishable package, and pushes the commit and tags back to main. Release tags use `site/v{version}`, `ext/v{version}`, `language/v{version}`, `analytical/v{version}`, `cli/v{version}`, and `mcp/v{version}` where `{version}` is the semver from that package's package. json. Deployment is tag-driven for every channel per ["./distribution.rq".release_tagging]; after ["./distribution.rq".ci_gate], the release workflow only versions and tags. GitHub Actions pushes with the default `GITHUB_TOKEN` do not trigger other workflows, so site and npm deploy are also invoked directly from the release workflow. Optional `RELEASE_PAT` allows tag pushes to trigger downstream workflows for manual reruns and external CI. Recursive runs are prevented by skipping the release workflow for release commits. Tag patterns and downstream deploy workflows follow ["./distribution.rq".release_tagging]. The implementation lives in ["../../.github/workflows/release.yml"]. | 0.224 | |
| extension_readme | reqlan rq/distribution/distribution.rq | The VSIX package must include a README for the Marketplace and Open VSX listings. Contact, Discord, sponsorship, and repository links come from [phonebook_reqs.phonebook] via ["../../scripts/phonebook.ts"] per [phonebook_reqs.extension_readme_links]. Release notes are appended from ["../../packages/extension/CHANGELOG.md"], which Changesets maintains per [version_management]. Generated during extension build from ["../../packages/extension/README.template.md"] by ["../../packages/extension/scripts/generate-readme.ts"] per ["../development/build.rq".extension_readme_build]. | 0.059 | |
| release_tagging | reqlan rq/distribution/distribution.rq | Deployment is tag-driven rather than commit-driven for every publishable channel. Tags are created automatically by ["./distribution.rq".deployment_flow], not manually. Site deployments are triggered by Git tags matching `site/v*` via ["./distribution.rq".site_distribution]. VS Code extension publishing is triggered by Azure DevOps tags matching `ext/v*` via ["./distribution.rq".extension_distribution] and ["./distribution.rq".openvsx_registry]. npm publishing is triggered by Git tags matching `language/v*`, `analytical/v*`, `cli/v*`, or `mcp/v*` via ["./distribution.rq".npm_distribution]. Platform native packages ride `analytical/v*` ( same version as `@reqlan/analytical` ); they are not a separate tag prefix. The tag suffix after the channel prefix ( `site/v`, `ext/v`, `language/v`, `analytical/v`, `cli/v`, `mcp/v` ) equals the package. json version at that tag. | 0.121 | |
| root_readme | reqlan rq/distribution/distribution.rq | The GitHub repository README is the primary repo lander per ["./landers.rq".landers]. Site, marketplace, repository, Discord, sponsorship, and contact links come from [phonebook_reqs.phonebook] via ["../../scripts/phonebook.ts"] per [phonebook_reqs.root_readme_links]. Generated from ["../../README.template.md"] by ["../../scripts/generate-root-readme.ts"]. | 0.046 | |
| site_distribution | reqlan rq/distribution/distribution.rq | GitHub Pages deployment runs only when an `site/v*` tag is pushed. Tags are created by ["./distribution.rq".deployment_flow]; the site workflow does not deploy on ordinary commits. The static build embeds `/spec` via ["../site/site.rq".spec_html_export], which needs the host `reqlan-napi` binary. The site workflow therefore builds and stages the host native engine ( `scripts/stage-host-native.mjs` with `REQLAN_FORCE_NATIVE_BUILD=1` ) before `pnpm run build`. The implementation lives in ["../../.github/workflows/deploy-site.yml"]. | 0.118 | |
| site_package | reqlan rq/distribution/distribution.rq | The static site lives in site / with npm package name `site`. Its package. json version identifies site releases for tagging. | 0.079 | |
| stopgap | reqlan rq/distribution/distribution.rq | Stopgap distribution is at https://marketplace.visualstudio.com/manage/publishers/reqlan | 0.040 | |
| workflow_deduplication | reqlan rq/distribution/distribution.rq | Extension publish automation should have a single authoritative workflow to avoid duplicate marketplace releases. Azure DevOps is the authoritative extension publishing workflow per ["./distribution.rq".extension_distribution] and ["./distribution.rq".openvsx_registry]. The site remains deployed by GitHub Actions per ["./distribution.rq".site_distribution]. npm packages are published by GitHub Actions per ["./distribution.rq".npm_distribution]. Versioning and tag creation are owned by GitHub Actions per ["./distribution.rq".deployment_flow]. | 0.040 | |
| landers | reqlan rq/distribution/landers.rq | The reqlan extension has the following entry points: - the vsc marketplace and open vsx marketplace via the ["../../packages/extension/README.template.md"] - npm packages via ["../../packages/language/README.template.md"], ["../../packages/analytical/README.template.md"], ["../../packages/cli/README.template.md"], and ["../../packages/mcp/README.template.md"] - the site. - the github repository via the ["../../README.template.md"] - the GitHub sponsor button via [github_funding] - landers must keep cross references up to date via the ["../../scripts/phonebook.ts"] [phonebook] | 0.046 | |
| docs_reqs | reqlan rq/docs/docs.rq | Project requirements should all be documented in the the reqlan rq folder of this repo. | 0.040 | |
| export_docs_tag | reqlan rq/docs/docs.rq | The " @ docs " tag should be used to mark files as included in the docs. | 0.040 | |
| chat_participant | reqlan rq/extension/agent/chat-participant.rq | the chat participant module should expose @ reqlan in vscode chat. it should consume analysis functions from the analytical submodule rather than duplicating graph logic. slash commands should use the rq- prefix only in chat, e. g. rq-search, rq-context, rq-graph, and rq-related for the active file. | 0.052 | |
| chat_participant_completion | reqlan rq/extension/agent/chat-participant.rq | file and requirement references should be code completed in the chat window via # file and # requirement language model tools. | 0.040 | |
| chat_participant_skills | reqlan rq/extension/agent/chat-participant.rq | the chat participant must not have duplicate skills. | 0.040 | |
| mcp | reqlan rq/extension/agent/chat-participant.rq | Cursor and other non-VS-Code clients use the MCP server ( `@reqlan/mcp` ). Search and retrieval on that server use ["./skills-and-mcp.rq".mcp_click_retrieval] only. Reference checks use ["./skills-and-mcp.rq".mcp_check]. The MCP tool set is not a 1: 1 wrap of every @ reqlan chat slash command. Published to npm per ["../../distribution/distribution.rq".npm_distribution]. Cursor project config lives in ["../../../.cursor/mcp.json"] and skills sync to ["../../../.cursor/skills"] via scripts / sync-cursor-ai. mjs. | 0.114 | |
| ai_add_to_context | reqlan rq/extension/agent/features-ai.rq | A command palette action ( e. g. ctrl + p: add to context ) should add selected requirements to the ai conversation context. | 0.066 | |
| ai_api | reqlan rq/extension/agent/features-ai.rq | should use the chat participant api. which should be in a module. that consumes analysis functions from other modules. https://code.visualstudio.com/api/extension-guides/ai/chat | 0.040 | |
| ai_build_requirement | reqlan rq/extension/agent/features-ai.rq | A command palette action ( e. g. ctrl + p: build new requirement ) should create a requirement from user or ai-provided intent. | 0.048 | |
| ai_integration | reqlan rq/extension/agent/features-ai.rq | The extension should integrate with ai workflows via command palette actions and mcp tools. Ai-facing features should prioritise token minimisation and focused context over full-graph dumps. Command palette actions use the Reqlan category; chat slash commands and skills use the rq- prefix. | 0.102 | |
| ai_write_plan | reqlan rq/extension/agent/features-ai.rq | A command palette action ( e. g. ctrl + p: write plan ) should draft or update an @ plan attribute for the selected idea. | 0.048 | |
| chat_skill_naming | reqlan rq/extension/agent/skills-and-mcp.rq | Cursor and Copilot chat skills and slash commands should use the rq- prefix, e. g. rq-search and rq-build-requirement. This prefix must not appear in command palette titles; palette entries use category Reqlan only. | 0.059 | |
| cursor_skills_install | reqlan rq/extension/agent/skills-and-mcp.rq | A command palette action ( e. g. ctrl + p: reqlan install cursor skills ) should copy rq-* skills from the extension into the workspace. cursor / skills folder and update. cursor / mcp. json. Prefer the workspace `packages/mcp/bin/mcp.js` when present; otherwise `npx -y @reqlan/mcp` from ["../../distribution/distribution.rq".npm_distribution]. Place in install sequencing ( workspace agent files, not `.reqlan` ): ["../host/installation.rq".workspace_agent_files]. | 0.063 | |
| skill_namespace_references | reqlan rq/extension/agent/skills-and-mcp.rq | backslash references to skills based on the namespace should be supported. | 0.040 | |
| extension_domains | reqlan rq/extension/extension.rq | Ideaset (extension_domains) | 0.072 | |
| activation | reqlan rq/extension/host/activation.rq | VS Code loads the extension host entry at ["../../../packages/extension/src/extension/main.ts"] when an activation event in ["../../../packages/extension/package.json"] matches. The exported `activate(context)` function is the single activation entry point for [scope.vscode_extension]. Install-time and first-run sequencing across extension vs base layers: ["./installation.rq".installation_sequencing]. Startup failure diagnosis, first-paint sequencing, bundle splitting, and development-host lessons: ["./startup-performance.rq"]. | 0.064 | |
| activation_events | reqlan rq/extension/host/activation.rq | Activation is declared in `contributes.activationEvents` in ["../../../packages/extension/package.json"]. - `onStartupFinished` — activate after the workbench finishes starting; ensures first-run onboarding can run without opening a `.rq` file first. - `onLanguage:reqlan` — activate when a reqlan document is opened. - `onLanguage:python`, `onLanguage:javascript`, `onLanguage:typescript`, `onLanguage:typescriptreact` — activate for comment-reference and glue-semantics support in those languages. - `onView:reqlan.activityBar` — activate when the reqlan activity bar view is opened. - `onChatParticipant:reqlan.reqlan-extension` — activate when the @ reqlan chat participant is used. - `onCommand:reqlan.*` — activate when listed reqlan palette commands run before the extension has loaded. There is no separate `onInstall` hook; install-time behaviour runs on the first activation after install. | 0.056 | |
| activation_sequence | reqlan rq/extension/host/activation.rq | `activate` is synchronous and non-blocking in ["../../../packages/extension/src/extension/main.ts"]; it never awaits startup work so the UI is available as soon as possible. It runs the following phases: 1. Register reference inlay-hint and CodeLens configuration / commands synchronously. 2. Call [analytical_submodule_activation] — registers commands, activity bar, chat, webviews, AI commands, and mutation hooks synchronously and returns without starting indexing. 3. Register import-error quick-fix commands when the analytical submodule registered. 4. Arm [first_paint_startup] so index startup cannot race the activity-bar shell. 5. Invoke [onboarding_check] without awaiting it, so onboarding cannot block activation. Submodule failures are logged and do not prevent later phases from running. | 0.077 | |
| analytical_submodule_activation | reqlan rq/extension/host/activation.rq | Analytical submodule registration is implemented in ["../../../packages/extension/src/analytical_submodule/index.ts"]. `activateAnalyticalSubmodule` is synchronous: VS Code contributions ( commands, activity bar provider, chat participant, webviews, AI commands, mutation hooks ) register synchronously and it returns the submodule immediately. It does not start indexing; it passes the activity-bar post-paint callback into the provider and the caller starts index activation through [first_paint_startup]. | 0.060 | |
| background_startup | reqlan rq/extension/host/activation.rq | Startup work that must not block activation is coordinated by `scheduleBackgroundStartup` in ["../../../packages/extension/src/extension/main.ts"]. - [first_paint_startup] gates index discovery and sync when the Context view opens; a three-second fallback preserves warm startup when the sidebar remains closed. - The language client starts after the same paint signal when the Context view opens, with a one-second fallback so language features still start when the sidebar remains closed. - Registers attribute and name catalog sync once the language client exists; the initial push covers an already-ready index and the catalog-update subscription covers indexes that become ready afterwards. Index and language-client failures are logged and do not affect the already-available UI. | 0.113 | |
| onboarding_check | reqlan rq/extension/host/activation.rq | Post-install onboarding is checked on every activation, not via a dedicated install event. ["./onboarding/page-thanks-for-installing.rq".installation_event_trigger] is satisfied because `activate` always schedules ["../../../packages/extension/src/extension/open-thanks-for-installing.ts"] after the activity-bar paint gate or 400 ms ( ["./startup-performance.rq".webview_claim_race] ). The check reads global state key `onboarding` via ["../../../packages/extension/src/extension/onboarding-state.ts"]: - `onboardingMessageShown` — when false, open the onboarding webview panel via ["../../../packages/extension/src/extension/onboarding-panel.ts"]. - `lastVersion` — updated each activation after the message has been shown so future releases can detect extension updates. The call is fire-and-forget; errors are logged and do not fail activation. Command-palette Show Onboarding remains immediate. | 0.087 | |
| event_driven | reqlan rq/extension/host/architecture.rq | the application should be event driven. | 0.085 | |
| state_machine_mindset | reqlan rq/extension/host/architecture.rq | The application should be designed as a collection of state machines. The core index lifecycle FSM lives in the Rust runtime ( ["../../core_analysis/rust_port.rq".native_bridge] ); Svelte webview UI follows [typescript_codestyle.ui_state_management] and [typescript_codestyle.zustand_boundary] ( runes AppState, no zustand ). No JS zustand stores remain. | 0.071 | |
| ai_naming | reqlan rq/extension/host/configuration.rq | Command palette entries use category " reqlan " with unprefixed titles ( the palette renders them as " reqlan:... " ). The rq- prefix is reserved for chat slash commands and agent skills only, e. g. / rq-search and / rq-build-requirement in Cursor or @ reqlan / rq-search in VS Code Copilot. Do not put rq- or " RQ: " in command palette titles; that duplicates the visible prefix. | 0.048 | |
| configuration_import_roots | reqlan rq/extension/host/configuration.rq | `importRoots` is an optional array of alias-to-directory mappings in `.reqlan/config.json`. Each mapping has: - `alias` ( required non-empty string ): prefix before `/` in aliased import paths. - `root` ( optional non-empty string ): directory for that alias. A relative `root` resolves against the base root ( the parent of `.reqlan` ), not against the `.reqlan` directory. An absolute path or `file://` URI is used as that alias' import-root directory directly. When `root` is omitted for a mapping, that alias uses the workspace folder that contains the `.rq` file. When `importRoots` is omitted, empty, or has no valid entries, the default is one mapping with alias `importRootAlias` from ["../../../packages/analytical/src/core/defaults.json"] and no explicit root. When several aliases could match a path, the longest alias wins. Invalid or unreadable JSON, and a non-array `importRoots` value, fall back to defaults ( or no loaded config for discovery, then defaults at resolve time ). Language path forms and `@/` shorthand: ["../../language/imports.rq".import_paths] and ["../../language/imports.rq".configuration_import_root_alias]. Comment references in source files use the same mappings: ["../language/comment-references/functional-code-comment-references.rq".comment_reference_import_root_alias]. Schema: [configuration_schema_file]. Applying file discovery: [configuration_location]. Editor completion of aliased import paths: ["../language/syntax/features-syntax.rq".code_completion]. | 0.167 | |
| configuration_location | reqlan rq/extension/host/configuration.rq | An optional `.reqlan/config.json` may appear under a base's `.reqlan` directory. For a given `.rq` file, the applying base is the nearest ancestor directory that owns a `.reqlan` folder. The applying config is that base's `.reqlan/config.json` when present. If the owning base has no `config.json`, or no owning base is found, defaults from [configuration_import_roots] apply. A child base does not inherit a parent base's config. | 0.190 | |
| decompose | reqlan rq/extension/host/features-commands.rq | A command pallete action for decomposition. Should replace an idea with a reference to a new file that holds the old contents. Should accept multiple inputs and put them in a list. | 0.090 | |
| divide_and_conquer | reqlan rq/extension/host/features-commands.rq | A command palette action should divide and conquer the current file or selected ideaset. ( an llm prompt that takes all the context and fires off subagents ) | 0.048 | |
| exports | reqlan rq/extension/host/features-commands.rq | graph should be exportable via the [export_functions.export_webview] and format entry ideas ( [export_functions.export_html], [export_functions.export_markdown], [export_functions.export_JSON], [export_functions.export_csv], [export_functions.export_pdf] ). | 0.040 | |
| file_based_code_actions | reqlan rq/extension/host/features-commands.rq | Code actions should be available for the whole file. The should include: ( regardless of cursor positions ) - barrel page — done via [barrel_page] ( `source.barrelPage` / `reqlan.barrelPage` ) - barrel idea - decompose idea - search for references. - create idea [code_actions] | 0.064 | |
| format_page | reqlan rq/extension/host/features-commands.rq | - set the whitespace etc appropriate for the page. | 0.040 | |
| get_local_graph | reqlan rq/extension/host/features-commands.rq | A command palette action should get the local graph for the current file or selected idea ( [local_graph_analysis] ). | 0.040 | |
| open_a_random_requirement | reqlan rq/extension/host/features-commands.rq | as it sounds | 0.040 | |
| pallete_function_create_todo | reqlan rq/extension/host/features-commands.rq | A function that opens up a modal webview form allowing the user to write a rq-idea, search for references etc, and writes it to a specified output file. default folder is next to current file, but should be selectable in form. This behaviour should be configurable via ["./configuration.rq"] | 0.060 | |
| toggle_indirect_references | reqlan rq/extension/host/features-commands.rq | A command palette action should toggle display of indirect references in complementary rendering and graph views. | 0.040 | |
| view_all_requirements | reqlan rq/extension/host/features-commands.rq | A command palette action should open a browsable view of all requirements in the workspace ( ["../workspace-summary/ideas_summary/webview.rq".ideas_summary] ). | 0.040 | |
| base_installation | reqlan rq/extension/host/installation.rq | Base-level install marks a directory as a [bases.base] and seeds shared application memory under `<base>/.reqlan/` ( [app_memory.application_memory] ). Entry points ( same helper [create_base_impl] ): - Editor: `reqlan.createBase` / empty-state CTAs ( [bases.create_base_onboarding] ) — only after discovery finds **zero** bases; never on extension install alone. - CLI: `reqlan init [directory]` ( [cli.init] ). Idempotent: existing `.reqlan` is left alone ( `created: false` ). On **new** base creation the sequence is: 1. Create `<base>/.reqlan/` marker directory ( presence = base ). 2. Seed [base_config_seed] ( `.reqlan/config.json` ). 3. Seed [base_rqignore_seed] ( `.reqlan/.rqignore` ). 4. Seed [bases.base_initialisation_ignore] ( `.reqlan/.gitignore` for SQLite artifacts ). 5. Editor rediscovers bases and activates indexing for that base; SQLite `ideas-index.sqlite` appears when the index opens ( not necessarily written at marker creation ). Child / nested bases follow [bases.base_nesting]; each base owns its own `.reqlan` seeds and index. | 0.109 | |
| base_rqignore_seed | reqlan rq/extension/host/installation.rq | New bases write `.reqlan/.rqignore` with gitignore-syntax defaults ( dependencies, venvs, build output, DBs such as `*.db3` and SQLite sidecars, binary globs, [app_memory.commentless_file_ignore], secrets, hidden entries, `.reqlan/` itself ). Comment text in the seed: [app_memory.rqignore_initialisation]. Built-in defaults always apply even if the file is missing; the seeded file is the editable surface ( [configuration.configuration_rqignore] / [app_memory.rqignore] / [app_memory.binary_ignore] ). Used by analytical discovery and indexing walks ( CLI and extension share `@reqlan/analytical` ). | 0.071 | |
| base_vs_extension_boundary | reqlan rq/extension/host/installation.rq | Clear ownership so install steps do not write to the wrong store: - Extension package / activate / welcome webview → [extension_installation] ( extension host + `globalState` onboarding key ). - Activity bar, LSP, chat participant, Ideas Summary → extension runtime after [activation.activation_sequence]. - `.reqlan/` marker, `config.json`, `.rqignore`, `.gitignore` ( SQLite artifacts ), ideas index, index diagnostics sqlite → [base_installation] under `<base>/.reqlan/`. - Cursor `rq-*` skills + MCP json → [workspace_agent_files] under `<workspace>/.cursor/`. Do not store agent skills or MCP config inside `.reqlan`. Do not treat welcome-webview globalState as base-local memory. | 0.040 | |
| extension_installation | reqlan rq/extension/host/installation.rq | Extension-level install covers packing, activation, and first-run host UX — not base filesystem state. There is **no** VS Code `onInstall` API; install-time behaviour runs on the **first** [activation.activation] after install ( [activation.activation_events] ). Sequencing inside `activate` is owned by [activation.activation_sequence]: - Sync register CodeLens / inlay config commands. - Synchronously register analytical submodule contributions ( commands, activity bar, chat, webviews, AI commands, mutation hooks ) without starting the index ( [activation.analytical_submodule_activation] ). - Register import quick-fixes, then schedule index and language-client startup through [activation.first_paint_startup] / [activation.background_startup]; sync catalogs once the language client exists. - Fire-and-forget [activation.onboarding_check] → [welcome_webview_install]. Failures in submodule or language client are logged and must not abort later phases or the welcome check. Related command surfaces: Show Onboarding ( [welcome.show_onboarding_command] ), Install Cursor Skills ( [skills_mcp.cursor_skills_install] ), Create Base ( [bases.create_base_onboarding] ). | 0.076 | |
| installation | reqlan rq/extension/host/installation.rq | reqlan installation has **two sequenced layers** that must not be conflated: 1. [extension_installation] — host product ( VS Code / Cursor extension ) install and first activation. 2. [base_installation] — marking a filesystem directory as a reqlan [bases.base] and seeding its `.reqlan` application memory. Extension install alone does **not** create a base. Base install alone does **not** open the welcome webview or install host agent skills. CLI `init` shares the base path with the editor ( [cli.init] / [bases.create_base_onboarding] ). | 0.046 | |
| installation_sequencing | reqlan rq/extension/host/installation.rq | End-to-end first-run story ( typical editor user ): 1. User installs the extension from Marketplace / Open VSX / VSIX ( [extension_installation] ). 2. Host fires an [activation.activation_events] match ( usually `onStartupFinished` ). 3. [activation.activation_sequence] synchronously registers contributions and schedules [activation.background_startup]; [activation.onboarding_check] may open [welcome.installation_event] ( Welcome to Reqlan webview ) without blocking activation. 4. If no `.reqlan` exists under workspace folders, surfaces offer create-base ( [bases.create_base_onboarding] ) — user-driven, never auto-created on extension install. 5. [base_installation] seeds config / ignore / marker; index activate / sync follows ( [app_memory.application_memory] ). 6. Optionally, user runs Install Cursor Skills ( [workspace_agent_files] ) — copies rq-* skills and writes `.cursor/mcp.json`; independent of `.reqlan` seeding. Ordering constraint: steps 1 – 3 are extension-scoped; steps 4 – 5 are base-scoped; step 6 is workspace agent tooling scoped to the open folder, not the `.reqlan` directory. | 0.048 | |
| workspace_agent_files | reqlan rq/extension/host/installation.rq | Agent / AI host files are **workspace** artefacts, not files under `.reqlan/`. Install Cursor Skills ( [skills_mcp.cursor_skills_install] ) copies bundled `rq-*` skills into `<workspace>/.cursor/skills/` and writes `<workspace>/.cursor/mcp.json` ( [install_cursor_skills_impl] ): local `packages/mcp/bin/mcp.js` when present, otherwise `npx -y @reqlan/mcp`. Requires an open workspace folder; does not create a base and does not write into `.reqlan`. Naming: skills / chat slash commands use `rq-` prefix ( [skills_mcp.chat_skill_naming] ); command palette stays category " reqlan " ( [configuration.ai_naming] ). AI command surfaces that depend on skills being present: [agents.ai_integration], [agents.ai_build_requirement], [agents.ai_add_to_context], [agents.ai_write_plan], [agents.ai_fix_stale_references]. Dev sync of the same skill sources into this repo's `.cursor/skills` is a build concern ( ["../../development/build.rq"] ), distinct from end-user install sequencing. | 0.060 | |
| onboarding_state | reqlan rq/extension/host/onboarding/page-thanks-for-installing.rq | Onboarding persistence uses VS Code `ExtensionContext.globalState` under key `onboarding` in ["../../../../packages/extension/src/extension/onboarding-state.ts"]. Fields: `onboardingMessageShown`, `lastVersion`. | 0.057 | |
| open_onboarding_page | reqlan rq/extension/host/onboarding/page-thanks-for-installing.rq | Opens the onboarding webview panel ( `reqlan.onboarding` ) via ["../../../../packages/extension/src/extension/open-thanks-for-installing.ts"] and ["../../../../packages/extension/src/extension/onboarding-panel.ts"]. | 0.048 | |
| lsp_support | reqlan rq/extension/host/scope.rq | the extension should provide an lsp server for. rq files, enabling navigation, validation, and computed views across the requirement graph | 0.083 | |
| scope | reqlan rq/extension/host/scope.rq | these requirements describe the vscode extension and lsp for reqlan | 0.045 | |
| vscode_extension | reqlan rq/extension/host/scope.rq | the extension should integrate with vscode as the primary developer-user environment | 0.069 | |
| activation_events_learning | reqlan rq/extension/host/startup-performance.rq | Modern VS Code derives activation for contributed views and commands. The incident log explicitly showed activation event `onView:reqlan.activityBar`, so the missing-command failure was not caused by a missing explicit `onView` entry. Activation-event changes should be justified from host logs and target-version behavior, not used to mask a module-load exception. | 0.040 | |
| extension_host_process_model | reqlan rq/extension/host/startup-performance.rq | One Node extension-host process for the development window is normal; multiple workers are not required for a healthy Reqlan activation. The language server is a separate child process launched only after extension activation reaches `LanguageClient.start()`. Therefore an idle extension host with no Reqlan language-server child is consistent with an earlier module-load / activation failure, not evidence that a worker is missing. | 0.040 | |
| observed_failure | reqlan rq/extension/host/startup-performance.rq | Failure signature: - Reqlan contributes its activity-bar container and header buttons from `package.json`, but the Context view remains on VS Code's built-in spinner before the extension-owned " Loading Reqlan … " shell. - Contributed commands may be visible as menu items yet fail with `command 'reqlan.*' not found`. - The extension-host CPU profile can be mostly idle after the failure. This combination means static manifest contributions loaded but the extension module failed before `activate()` registered command handlers and the webview provider. | 0.040 | |
| startup_diagnostics | reqlan rq/extension/host/startup-performance.rq | Diagnosis order: 1. Read the development extension host's `remoteexthost.log`; find `ExtensionService#_doActivateExtension reqlan.reqlan-extension`. 2. Distinguish code-loading time, activate-call time, and activate-resolved time. 3. If activation failed, use the first Reqlan stack frame rather than inferring a CPU hang. 4. If manifest UI exists but every command is missing, investigate module load / activation before indexing or webview data. 5. If the extension-owned " Loading Reqlan … " shell appears, provider resolution succeeded; subsequent delays belong to webview bootstrap or index readiness. 6. Confirm `out/extension/main.cjs` is newer than changed source and includes a lazy vendor sql-asm import. CPU-idle profiles do not disprove activation failure: once `require()` throws, the host can remain healthy and mostly idle while Reqlan stays unregistered. | 0.046 | |
| git_based_history | reqlan rq/extension/index-host/git-codelens.rq | there should be a code lens button for viewing an idea history through git. Should accept close matches and likeley file moves should consume the same state as the [context_scope] Dates come from indexed [git_idea_timeline_analysis] state filled by [git_dates_background_indexing]. | 0.045 | |
| git_date_inlayhints | reqlan rq/extension/index-host/git-codelens.rq | Should show references and date created per [git_based_history]. Creation dates must come from already-indexed git dates via [git_dates_background_indexing], not a synchronous git walk on inlay render. | 0.040 | |
| file_related_requirements | reqlan rq/extension/index-host/graph-analysers.rq | The extension should provide a view or command to get requirements relating to the currently open file. File-related lookup should follow both explicit file references and comment rq: links in that file. Comment links are read from indexed `comment_link` edges ( [indexer.index_code_files] ), not only the open buffer. ["../../cli/click.rq".click_code_file] uses the same indexed backlinks and comment links when the click target is a code file. | 0.124 | |
| host_index_capabilities | reqlan rq/extension/index-host/graph-analysers.rq | Host-facing analysers and commands over the shared index: [list_all_ideas], [file_related_requirements], [indexer.index_ideas], [indexer.index_technology], [indexer.local_graph_analysis], [indexer.semantic_analysis], [indexer.git_dates], [indexer.completion_tracking], [indexer.deprecation_impact_analysis]. Application memory: [application_memory]. | 0.040 | |
| indexing_trigger_filesave | reqlan rq/extension/index-host/graph-analysers.rq | indexing should be triggered by. rq file create / change / delete via watchers, and by allowlisted source files that may contain comment references. | 0.106 | |
| indexing_trigger_manual | reqlan rq/extension/index-host/graph-analysers.rq | Indexing should be triggered by manual indexing commands ( Refresh / Clear & rebuild ). Refresh and Clear & rebuild always rediscover bases first via ["../../bases/base.rq".refresh_rediscovers_bases] / ["../../../packages/analytical/src/index-store/base-registry.ts"] `refresh`, then soft-sync or rebuild the active base. | 0.092 | |
| indexing_trigger_open | reqlan rq/extension/index-host/graph-analysers.rq | After the activity bar's first painted frame / base activate, run one soft sync ( mtime-skipped ) so the index is warm without delaying the sidebar shell. This is a startup pass — not the idle checker ( [indexing_trigger_auto] ). | 0.102 | |
| list_all_ideas | reqlan rq/extension/index-host/graph-analysers.rq | The extension should provide a command to list all ideas in the workspace with file location and summary. | 0.045 | |
| git_information_capture | reqlan rq/extension/index-host/index.rq | Capture and surface git development history for requirements and files — not only working-tree staging status. On-demand / index-accessible: - ownership and top authors ( name; email when available ) - creator ( first introduction ) and last meaningful modification - edit frequency / commit count for the focus path or idea line range - recent commit trail ( subject, author, authoredAt, short hash ) for the ["../local-context/context-scope.rq".git_context] lens Idea dates and change counts come from [indexer.git_dates] / ["./git-codelens.rq".git_dates_background_indexing], not from a git walk on every save ( ["./git-codelens.rq".git_dates_rate_cap] ). Activity Bar git CLI calls stay hidden on Windows ( ["../../core_analysis/core.rq".consumption_silence] ). Future: adjacency score from edit state and frequency of neighbours. Feeds ["../local-context/context-scope-v2.rq".development_history_signals] and ["../local-context/activitybar-panels/current_context_scope.rq".git_history_lens]. | 0.103 | |
| idea_index_triggers | reqlan rq/extension/index-host/index.rq | Refresh automatically on `.rq` file change via watchers ( [graph_analysers.indexing_trigger_filesave] ). Idle: cheap background staleness check — [graph_analysers.indexing_trigger_auto]. Git-dates fill is not an index trigger; it is a later analyser with ["./git-codelens.rq".git_dates_rate_cap]. | 0.136 | |
| anonymous_reference_code_completion | reqlan rq/extension/language/support/features-imports.rq | Anonymous imports should share the same code completion e. g. ["@/reqlan rq/extension/language/syntax/features-syntax.rq"] should complete the same as `import "@/reqlan rq/extension/language/syntax/features-syntax.rq" as code_completion`. they should share the same code and logic | 0.053 | |
| from_import_syntax | reqlan rq/extension/language/support/features-imports.rq | Multiple symbols should be allowd to be be imported with `from "path" import symbol1, symbol2, symbol3` syntax. Each imported name is its own link ( ["../../../language/imports.rq".import_from] ). | 0.040 | |
| implicit_file_extension | reqlan rq/extension/language/support/features-imports.rq | The import statements should not require an extension, i. e. it should assume ". rq " unless otherwise specified. An extensionless path resolves to the ". rq " file first, then to a literal extensionless file or folder. A path that already carries any extension is resolved exactly as written. Folder targets: [import_folder_targets]. | 0.195 | |
| import_code_completion | reqlan rq/extension/language/support/features-imports.rq | Import path code completion for `import` / `from` strings ( and shared anonymous paths ). [code_completion] [import_code_completion_explicit_extension] [import_code_completion_path_segments] [import_code_completion_substring_match] [import_code_completion_ranking] [anonymous_reference_code_completion] [import_code_completion_auto_file_import] [import_code_completion_rendering] | 0.057 | |
| import_code_completion_explicit_extension | reqlan rq/extension/language/support/features-imports.rq | Completions insert paths with an explicit `.rq` extension. [implicit_file_extension] Hand-written imports may still omit the extension; completion prefers the written form with `.rq`. | 0.047 | |
| import_code_completion_path_segments | reqlan rq/extension/language/support/features-imports.rq | In a folder context, show next path segments ( directories with a trailing `/` ). After `../`, offer `../path/` before nested `../path/file.rq`. | 0.047 | |
| import_code_completion_ranking | reqlan rq/extension/language/support/features-imports.rq | Rank import path completions by directory proximity ( hop count from the completing file's directory to the candidate's directory ), then directories before files, then path alphabetically. Example: typing `../` ranks `../close.rq` before `../../../path.rq`. Emit sortText for that order, and set filterText so the editor does not re-rank by label fuzzy score over proximity. | 0.053 | |
| import_code_completion_substring_match | reqlan rq/extension/language/support/features-imports.rq | Filter path candidates by search within the path, not only a starts-with prefix. Typing `path` should match `../../parent/path.rq`. Typing `hellopath` should match `../../hello/inbetween/path/file.rq` ( characters matched in order across path segments ). | 0.047 | |
| import_does_not_exist_error | reqlan rq/extension/language/support/features-imports.rq | Imports show an underline error when the target file or folder does not exist. Imports also show an underline error when a named imported idea does not exist in the target file. An existing folder is not an error: [import_folder_targets]. CI: ["../../../core_analysis/check.rq".check_unresolved_imports]. [general_errors] | 0.151 | |
| remote_imports | reqlan rq/extension/language/support/features-imports.rq | Reqlan files should support importing requirements from remote urls. Remote import syntax should follow import " https://company.com/reqs/style.rq" as styleguide. The extension should resolve, cache, and validate remote imports. Barrel imports should be recommended for token efficiency when many symbols are needed from one remote file. | 0.040 | |
| general_errors | reqlan rq/extension/language/support/language-server-errors.rq | error messages should be deliberate and developer friendly. recommendations should be offerred where appropriate. | 0.083 | |
| open_file_sequence_diagram | reqlan rq/extension/language/support/open-file-sequencing.rq | [open_file_algorithm] Actors: VS Code editor, TextMate grammar, extension host, `reqlan-lsp`, file system. | 0.117 | |
| activity_bar_module | reqlan rq/extension/language/syntax/features-syntax-highlighting.rq | the extension should provide a activity bar module for the ide. the activity bar module should display the following information: - the current file - the current idea - ideas referencing the current idea / selection - a local graph see ["../../local-context/activitybar.rq"] for more details. | 0.040 | |
| attribute_code_completion_attribute_key | reqlan rq/extension/language/syntax/features-syntax-highlighting.rq | the attribute key should complete based on endorsed keys and what is present in the index i. e. after the @ symbol at the start of a line, the used attributes should be completed. subsquently, values of the attribute key should be completed based on the values in that attribute key. | 0.040 | |
| attribute_code_completion_main_descriptiption | reqlan rq/extension/language/syntax/features-syntax-highlighting.rq | the main description attribute is expected to be prose, so, the dropdown shouldn't be rendered in this context. | 0.040 | |
| complementary_information_rendering | reqlan rq/extension/language/syntax/features-syntax-highlighting.rq | 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 | |
| reference_code_completion | reqlan rq/extension/language/syntax/features-syntax-highlighting.rq | references should code complete the available namespace of ideas this includes both ideas using hte standards idea namespace syntax, and ideas using file paths, and relative file paths. Cross-file candidates show import paths and may auto-insert imports: ["../support/features-imports.rq".import_code_completion_rendering] ["../support/features-imports.rq".import_code_completion_auto_file_import] Implemented by ["../../../../packages/language/src/reqlan-completion-provider.ts"]. ["./features-syntax.rq".code_completion] | 0.077 | |
| reference_code_completion_sequencing | reqlan rq/extension/language/syntax/features-syntax-highlighting.rq | [reference_code_completion] should be offered, not alphabetically, but by distance, then alphabetically. Implemented by ["../../../../packages/language/src/reqlan-completion-provider.ts"]. ["./features-syntax.rq".code_completion] | 0.045 | |
| reference_rendering | reqlan rq/extension/language/syntax/features-syntax-highlighting.rq | Resolved references should be visually distinguishable from unresolved or broken references. Indirect references inferred by graph traversal should be showable via a user toggle. Reference kinds ( dependency, incompatible with, applies to, related to ) should be surfaced where declared or inferred. Unresolved idea and file references must keep a linking / missing-file diagnostic ( error underline ). They must not receive a document-link underline that makes them look like happy, navigable references. See [import_statement_highlighting], [non_web_reference_navigation], [unresolved_reference_diagnostics]. | 0.092 | |
| reference_resolution_folder | reqlan rq/extension/language/syntax/features-syntax-highlighting.rq | If the reference path is a folder, the extension should render a popup with a list of files in that folder. The link should not try to resolve to a file if it doesn't exist. The popup is the command document link. Go-to-definition does not open the popup. Related: [editor_reference_activation], [reference_goto_definition_speed]. | 0.040 | |
| at_sign_in_idea_text_block | reqlan rq/extension/language/syntax/features-syntax.rq | the @ symbol should only indicate an attribute if at the start of a line. it should be escapeable with a backslash ( although any character would work as the @ would no longer be at the start of the line ) so @ this_is_not_an_attribute | 0.040 | |
| code_completion | reqlan rq/extension/language/syntax/features-syntax.rq | The extension should complete ideas, imports, and paths from the current file path and resolved import config. - support for references - support for imports, including import-root alias paths such as `@/` from ["../../../language/imports.rq".configuration_import_root_alias] and ["../../host/configuration.rq".configuration_import_roots] - support for semantic search - support for graph-proximity based ranking String and namespace completion should follow the current file path and import roots. | 0.150 | |
| code_completion_import_file_paths | reqlan rq/extension/language/syntax/features-syntax.rq | import files should code complete nicely based on the current file's path; and the resolved import config. it should support normal relative folder paths; and if import-root aliases are configured. ["../../host/configuration.rq"] ["../../../language/imports.rq"] ["./features-syntax.rq".code_completion] | 0.040 | |
| comment_support | reqlan rq/extension/language/syntax/features-syntax.rq | The extension should recognise reqlan references embedded in comments of arbitrary source files. Comment reference syntax should follow the form rq, then a quoted path, then a dotted idea name in line comments. Qualified comment paths must resolve import-root aliases such as `@/` the same way imports do — ["../../../language/imports.rq".configuration_import_root_alias], ["../comment-references/functional-code-comment-references.rq".comment_reference_import_root_alias]. Comment references in non-. rq files should support syntax highlighting ( resting underline: ["../comment-references/functional-code-comment-references.rq".comment_reference_resting_underline] ), hover, and go-to-definition. Arbitrary file references should be supported from both. rq files and comment references. | 0.059 | |
| file_references | reqlan rq/extension/language/syntax/features-syntax.rq | A file reference should act as a link in the editor. If the target file is empty or has a parse error, the link should remain available and clickable, but should show a warning underline. If the target file is missing, show an error underline and do not create a document link — see ["../support/language-server-errors.rq".file_reference_errors]. Same-file and imported idea bracket references use the same editor activation as file targets. See ["./features-syntax-highlighting.rq".editor_reference_activation]. Implemented by ["../../../../packages/language/src/reqlan-file-link-resolver.ts"], ["../../../../packages/language/src/reqlan-document-link-provider.ts"], ["../../../../packages/language/src/reqlan-definition-provider.ts"], and ["../../../../packages/language/src/reqlan-validator.ts"]. | 0.118 | |
| refactor_support | reqlan rq/extension/language/syntax/features-syntax.rq | syntactic symbols should be available for renaming, moving, and deleting. the extension should watch for the change. Detailed behaviour lives in ["../../mutation/refactor_support.rq"]. Implemented by ["../../../../packages/language/src/reqlan-rename-provider.ts"], ["../../../../packages/language/src/reqlan-idea-refactor.ts"], and ["../../../../packages/extension/src/mutation_module/refactor/index.ts"]. | 0.079 | |
| sensible_alias_support | reqlan rq/extension/language/syntax/features-syntax.rq | if an imported idea shares a name with an idea in the current file: When the import uses an alias, the base name may be reused locally — see ["../../../language/imports.rq".import_tokenisation]. | 0.047 | |
| syntax_features | reqlan rq/extension/language/syntax/features-syntax.rq | The extension should provide language support for. rq files via the lsp. Syntax features should cover ideas, ideasets, imports, references, attributes, comments, and lists. Broken imports and references should be validated and reported in the editor. Go-to-definition and find-references should work for ideas, imports, and cross-file links. Find-references is served by ["../support/language-server-rust.rq".language_server_rust] ( `textDocument/references` ). Autoformatting should be supported for. rq files. | 0.046 | |
| syntax_hovering | reqlan rq/extension/language/syntax/features-syntax.rq | Hovering on an idea, ideaset, import, or reference should show a text summary of its content and resolved target. Hovering on a reference should show where it resolves and any declared reference kind. The styled body hover is [idea_content_tooltip]. | 0.060 | |
| syntax_welcome_demonstration | reqlan rq/extension/language/syntax/features-syntax.rq | the ["@/packages/extension/templates/thanks-for-installing.template.rq"] should feature some of the core syntax features as reference. | 0.040 | |
| code_completion | reqlan rq/extension/language/vsc-primitives.rq | Editor completion for ideas, imports, and paths. Canonical requirements: ["./syntax/features-syntax.rq".code_completion]. | 0.047 | |
| codelens | reqlan rq/extension/language/vsc-primitives.rq | Outbound classification CodeLens on references: ["./syntax/features-syntax-highlighting.rq".code_lens_reference_types]. File-top inbound file-reference CodeLens: ["./syntax/features-syntax-highlighting.rq".file_inbound_code_lens]. Idea inbound `@referenced-by` remains an inlay: ["./syntax/features-syntax-highlighting.rq".view_references_as_inlay_hints]. | 0.103 | |
| inlay_hints | reqlan rq/extension/language/vsc-primitives.rq | Inbound-reference inlay hints. They appear when the inbound snapshot is ready ( ["./support/open-file-sequencing.rq".lazy_features_after_outbound] ) and stay on last-good until the next ready-state incremental push ( ["../../indexer/cache-reuse.rq".inbound_snapshot_events] ). | 0.078 | |
| quick_fixes | reqlan rq/extension/language/vsc-primitives.rq | Quick-fix subset of [code_actions] ( import errors, ignore-error, create-below ). | 0.050 | |
| context_panes_loading | reqlan rq/extension/local-context/activitybar-panels/current_context_scope.rq | Ready panes: [scope_pane], [reference_lists_pane], and [parent_nodes_pane] show per-request loading and error, distinct from empty. | 0.048 | |
| context_tray | reqlan rq/extension/local-context/activitybar-panels/current_context_scope.rq | A small pinned set of ideas carried across panes for AI context — the ["../context-scope.rq".manual_context] dimension. - Chips for pinned ideas with remove control. - " Clear tray " and " Copy tray as markdown " actions. - Tray contents are included when invoking @ reqlan context or divide-and-conquer flows per [commands.divide_and_conquer]. | 0.066 | |
| current_file_pane | reqlan rq/extension/local-context/activitybar-panels/current_context_scope.rq | Primary contextual pane when a. rq file is active. Sub-sections may collapse independently. [scope_pane] [reference_lists_pane] [parent_nodes_pane] | 0.046 | |
| parent_nodes_pane | reqlan rq/extension/local-context/activitybar-panels/current_context_scope.rq | Upstream context for the focused idea. - Ancestor chain as a breadcrumb with a configurable depth limit ( not only immediate parents ). - Status rollup for ancestors ( e. g. counts by @ status ). - " What blocks completion? " surfaces upstream ideas whose @ status is not done or in-progress. | 0.058 | |
| reference_lists_pane | reqlan rq/extension/local-context/activitybar-panels/current_context_scope.rq | Actionable inbound and outbound reference lists for the focused idea. - Inbound: ideas that reference the focus ( edges to the focus ). - Outbound: ideas and files the focus references ( edges from the focus ). - Live same-file inbound / outbound from ["../../../indexer/indexer.rq".local_symbolic_analysis] merged with indexed refs per ["../../../indexer/indexer.rq".local_symbolic_sidebar]. - Group entries by edge kind ( dependency, related to, file ref, incompatible, etc. ) in collapsible sections. - Show a short snippet or source line explaining why each edge exists where available. - Text filter scoped to this pane only ( not the full ui-sql layer ). - " Add to context " pins an idea into [context_tray] for Copilot / @ reqlan workflows. - [reference_resolution_parity]: panel resolution must match the editor file view. - [unresolved_reference_create]: unresolved idea targets get a create affordance, not a dead file link. Implemented by [ReferenceListsPane]. | 0.126 | |
| scope_pane | reqlan rq/extension/local-context/activitybar-panels/current_context_scope.rq | Composed context inspector per ["../context-scope.rq".scope_pane_design]. Built from ["../context-scope.rq".reqlan_context_model]; not a flat file list. See ["../context-scope.rq".context_dimensions] for workspace, current file, open files, file history, edit history, manual, and git lenses. Git lens: [git_history_lens] ( history-first, not staging mirror ). Legacy file-only fields live in ["../context-scope.rq".current_file_context] / currentFile slice when the current-file lens is expanded. Implemented by [ScopePane]. | 0.092 | |
| selection_pane | reqlan rq/extension/local-context/activitybar-panels/current_context_scope.rq | When the user selects text spanning one or more `.rq` ideas ( ["../context-scope.rq".context_selection] ). - List selected ideas with Focus and Pin actions. - Contributes selection idea ids to ["../context-scope.rq".context_footprint] and may pair with ["../graph-path.rq".graph_path_walk] as path endpoints. - Hidden when there is no non-empty multi-line selection overlapping ideas. | 0.053 | |
| miniature_graph_pane | reqlan rq/extension/local-context/activitybar-panels/minigraph.rq | A small interactive graph centred on the cursor idea ( or the file's first idea when the caret is outside any block ). Consumes [graph_lib.graph_library] with sidebar-appropriate defaults; slices from [indexer.local_graph_analysis]. - Default depth 1; + / - controls expand or collapse neighbourhood depth without opening Ideas Summary. - Pan, zoom, and drag per [graph_lib.view_controls]. - Labels default to [graph_lib.graph_label_auto] via shared GraphCyController ( no separate Labels control here; full control lives on [graphical_graph_doc.graphical_graph] ). - [graph_lib.manual_reframe] — " Fit to view " in [MiniGraphCanvas]; same API as the full graph tab. - [graph_lib.auto_reframe] and [graph_lib.reframe_animation] when the neighbourhood node set changes ( instant first fit, animated afterward ). - No full layout / physics menus here ( defer to [graphical_graph_doc.graphical_graph] ). - Single-click a node opens its source; double-click or " Focus " recentres the slice on that idea. - Edge kinds styled like the full graph ( including dashed file-reference edges ). - When nodes are truncated per [graphical_graph_doc.node_truncation], show " + N more " with a control to open the centred slice in Ideas Summary. - " Open in Graph tab " hands off centerId and query state to [ideas_summary_panel]. Mount cytoscape only while this sub-pane is visible per [graph_lib.graph_cy_controller]. | 0.055 | |
| minigraph_loading | reqlan rq/extension/local-context/activitybar-panels/minigraph.rq | Graph slice waits stay in [miniature_graph_pane], not a second global overlay. Show per-request loading and error, distinct from empty. | 0.048 | |
| workspace_loading | reqlan rq/extension/local-context/activitybar-panels/workspace.rq | Index sync progress belongs in [workspace_pane]; do not treat " index not ready " as a hard global error during cold start. Host posts index health on view resolve and on `ready`; soft-waits when the index is not ready instead of erroring the whole bar. Waiting for index: use [workspace_pane] sync progress affordance. When the status line *is* in error, show it prominently per ["../activitybar.rq".error_status_bar]. | 0.108 | |
| workspace_pane | reqlan rq/extension/local-context/activitybar-panels/workspace.rq | Multi-base index health, errors, and activity — without duplicating the full Index tab in [ideas_summary_doc.index_panel]. - [workspace_base_picker]: choose the active base; do not render a full always-visible base list. - For the selected base: state badge, sync progress ( processed / total + current file ), idea / edge counts, global and per-file errors, recent activity. - Clickable file issue list opens the source location in the editor. - Refresh / cancel in-flight sync / clear & rebuild for the selected base ( or all ); " Open index tab " hands off to [ideas_summary_panel] with that base selected. - When no bases exist: empty state with Create Base CTA ( [bases.create_base_onboarding] ). Non-blocking sync UX: ["../../../indexer/indexer.rq".nonblocking_index]. Implemented by [WorkspacePane]. | 0.146 | |
| activity_bar | reqlan rq/extension/local-context/activitybar.rq | The extension should provide an activity bar sidebar for editor-adjacent requirement context per [local_graph_view]. UI is implemented as Svelte webview panes per [development_core], not as a long-lived tree of static rows. The host loads slices from the index via [indexer.local_graph_analysis] and forwards editor focus through [activity_bar_webview] and [activity_bar_data]. Panes should be performance conscious: capped neighbourhoods, lazy cytoscape mount, debounced cursor updates — same discipline as [webview_doc.webview]. Workspace-wide tables, full layout controls, and unconstrained graph dumps belong in Ideas Summary per [ideas_summary_doc.ideas_summary]; panes link out with prefilled state instead of duplicating those views. | 0.115 | |
| component_list | reqlan rq/extension/local-context/activitybar.rq | Priority release ( shipped ): - Shell: [ActivityBarApp], HeaderBar ( includes [info_site_link] ), CollapsiblePane in ["../../../packages/extension/webviews/activity-bar/"] - Panes: WorkspacePane, [SearchPane], [TodoPane], ScopePane, SelectionPane, ReferenceListsPane, MiniatureGraphPane, ParentNodesPane, ContextTray - Graph: [MiniGraphCanvas] consuming shared graph lib per [graph_lib] - Host: [activity_bar_webview], [activity_bar_data], wire types in [activity_bar_messages] - HTML: [get_activity_bar_html] - Build: ["../../../packages/extension/webviews/activity-bar/vite.config.ts"] → media / webviews / activity-bar / Deferred ( not in priority release ): - IdeasetPane, FileReferencesPane, RecentPane - [graph_path_doc.graph_path_walk] UI pane - ExportSliceButton - Full workspace export via ["../export/export.rq".export_JSON] and ["../export/export.rq".export_csv] | 0.040 | |
| context_tray | reqlan rq/extension/local-context/activitybar.rq | Pinned ideas for AI context — details in [current_context_scope.context_tray]. | 0.072 | |
| file_references_pane | reqlan rq/extension/local-context/activitybar.rq | File-scoped edges only — inbound and outbound file references for the focused idea. Useful for tracing which source files implement or mention a requirement. - Group shared file targets per [graphical_graph_doc.referenced_files_grouping] when multiple ideas reference the same path. - Line-qualified references should navigate to the specific line when present. | 0.051 | |
| git_history_lens | reqlan rq/extension/local-context/activitybar.rq | Focus-centric git history in the git lens — details in [current_context_scope.git_history_lens]. | 0.070 | |
| header_buttons | reqlan rq/extension/local-context/activitybar.rq | Cross-pane controls live in a compact header above the pane stack. - " Sync with editor " toggle: panes follow the active editor and cursor by default; when off, stay pinned on the last focused idea. - [hop_depth_control]: global graph hop depth for context search, graph slice, references, and ancestors — not a boolean toggle. - " Open in Ideas Summary ": reveal [ideas_summary_panel] with the ideas table filtered to the current file, or the graph tab centred on the current idea. - " Export slice ": JSON or CSV of the current neighbourhood only. This slice is lighter than workspace ["../export/export.rq".export_JSON] and ["../export/export.rq".export_csv]. - " Copy as markdown ": copy the focused idea plus parents and reference lists for pasting into chat or PRs. - Refresh control tied to index readiness. - [info_site_link] - Status / error line under the toolbar: [error_status_bar] | 0.056 | |
| hop_depth_control | reqlan rq/extension/local-context/activitybar.rq | A **- / value / + ** button pair ( not a 1 - hop / 2 - hop toggle ) sets [context_scope_doc.global_hop_depth]. - Minimum hop depth is 1 ( direct neighbours only ); **-** is disabled at minimum. - Maximum hop depth is capped ( default 4 for the activity bar ); ** + ** is disabled at maximum. - Changing global depth rebuilds [context_scope_doc.reqlan_context_model], refreshes graph / refs / ancestors panes, and updates [context_scope_doc.context_footprint]. - When [context_scope_doc.context_footprint] has no centre, depth still updates session state. Panes refresh when a centre appears. - Legacy `setIncludeIndirect` maps to depth 2 / 1 for backward compatibility during migration. | 0.064 | |
| icon | reqlan rq/extension/local-context/activitybar.rq | the activity bar icon should use the reqlan logo. [brand] | 0.040 | |
| ideaset_pane | reqlan rq/extension/local-context/activitybar.rq | When the focused idea belongs to one or more ideasets. - List ideaset names with a dropdown of member chips ( same interaction model as [ideas_summary_doc.idea_sets_tab] ). - Path column links to the ideaset source file. - Hidden when the focus idea is not a member of any ideaset. | 0.051 | |
| implementation_priority | reqlan rq/extension/local-context/activitybar.rq | Suggested build order: 1. [scope_pane] and [reference_lists_pane] ( index data only, no cytoscape ). 2. [miniature_graph_pane] with expand / collapse and handoff to Ideas Summary. 3. [parent_nodes_pane] with status rollup. 4. [context_tray] and create-stub integration with [commands.pallete_function_create_todo]. 5. [selection_pane], [ideaset_pane], [file_references_pane], [recent_pane]. | 0.040 | |
| info_site_link | reqlan rq/extension/local-context/activitybar.rq | The header shows an info control that opens the project site in the system browser. Link id `site` from [phonebook_reqs.phonebook] per [phonebook_reqs.activity_bar_site_link]. Resolved in the extension host via ["../../../packages/extension/src/shared/phonebook.ts"] ( canonical data in ["../../phonebook.json"] ), not hardcoded in the webview. The webview receives the resolved label and href from [activity_bar_webview] and posts `openPhonebookLink` when the user activates the control. | 0.059 | |
| local_graph_view | reqlan rq/extension/local-context/activitybar.rq | The activity bar provides a local graph view scoped to the current file or selected idea. The local graph should show direct and optionally indirect references with a configurable depth. | 0.055 | |
| miniature_graph_pane | reqlan rq/extension/local-context/activitybar.rq | Small interactive neighbourhood graph — details in [minigraph.miniature_graph_pane]. | 0.069 | |
| panes | reqlan rq/extension/local-context/activitybar.rq | - [header_buttons] - [workspace_panel.workspace_pane] - [search_panel.search_pane] - [todo_panel.todo_pane] - [current_context_scope.current_file_pane] - [selection_pane] - [ideaset_pane] - [file_references_pane] - [recent_pane] | 0.047 | |
| parent_nodes_pane | reqlan rq/extension/local-context/activitybar.rq | Upstream ancestor chain — details in [current_context_scope.parent_nodes_pane]. | 0.045 | |
| recent_pane | reqlan rq/extension/local-context/activitybar.rq | Recently touched ideas in the session ( configurable count and truncation basis per [graphical_graph_doc.node_truncation] ). - Click opens the idea; optional pin to [context_tray]. | 0.051 | |
| reference_lists_pane | reqlan rq/extension/local-context/activitybar.rq | Inbound / outbound reference lists — details in [current_context_scope.reference_lists_pane]. Shared editor / panel resolution: [current_context_scope.reference_resolution_parity]. Unresolved idea create affordance: [current_context_scope.unresolved_reference_create]. | 0.057 | |
| refernce_lists_pane_reference_tiering | reqlan rq/extension/local-context/activitybar.rq | Inbound refernces may be direct, or via ideaset references. The [reference_lists_pane] should tier the references based on the reference type. Design must keep in mind that that the ideaset refernces are likely more numerous and lower signal. | 0.040 | |
| scope_pane | reqlan rq/extension/local-context/activitybar.rq | Composed context inspector — details in [current_context_scope.scope_pane]. | 0.065 | |
| selection_pane | reqlan rq/extension/local-context/activitybar.rq | Multi-idea selection list — details in [current_context_scope.selection_pane]. | 0.097 | |
| architecture_signals | reqlan rq/extension/local-context/context-scope-v2.rq | 0.055 | ||
| development_history_signals | reqlan rq/extension/local-context/context-scope-v2.rq | Prefer actionable history over staged / unstaged alone. development_context ( git reimagined ): current branch, active issue, release version, commits, authors, change frequency / velocity, historical and semantic hotspots, last meaningful modification, first introduction, ownership concentration, refactor / merge likelihood, stability score. First UI consumer beyond create / modify dates: [context_scope_v1.git_context] / ["./activitybar-panels/current_context_scope.rq".git_history_lens] — focus commit trail and authors; working-tree staging demoted to secondary. | 0.122 | |
| file_signals | reqlan rq/extension/local-context/context-scope-v2.rq | active file, related files, recently viewed, recently edited, high churn, frequently opened, ownership, generated / test / implementation / specification / documentation classification. | 0.048 | |
| project_activity_signals | reqlan rq/extension/local-context/context-scope-v2.rq | currently changing subsystem, hot / cold modules, high activity area, merge conflicts nearby, active branch, recent issue cluster, recent requirement churn, release / milestone affected. | 0.080 | |
| quality_signals | reqlan rq/extension/local-context/context-scope-v2.rq | missing documentation, large files / requirements, broken references, failing diagnostics, lint / parse / test / build failures, coverage gaps. | 0.069 | |
| relationship_signals | reqlan rq/extension/local-context/context-scope-v2.rq | 0.090 | ||
| requirement_lifecycle_signals | reqlan rq/extension/local-context/context-scope-v2.rq | 0.073 | ||
| requirement_signals | reqlan rq/extension/local-context/context-scope-v2.rq | related_requirements, parents, children, incoming / outgoing references, linked implementation files, coverage status, requirement age, stability, priority, verification state, orphaned, cycles, missing references. | 0.063 | |
| risk_signals | reqlan rq/extension/local-context/context-scope-v2.rq | 0.083 | ||
| semantic_signals | reqlan rq/extension/local-context/context-scope-v2.rq | concept clusters, shared vocabulary, duplicate / near-duplicate / similar requirements, contradictions, implicit dependencies, missing abstraction, large / isolated concepts. | 0.068 | |
| temporal_signals | reqlan rq/extension/local-context/context-scope-v2.rq | Enables queries: what changed this week, why this requirement changed, newly introduced risks, recent architectural evolution. | 0.062 | |
| user_signals | reqlan rq/extension/local-context/context-scope-v2.rq | manual pins, recent focus, navigation history, editing intent, copied context, AI conversation history, last searched, last graph traversal, frequently revisited. | 0.055 | |
| ai_context_export | reqlan rq/extension/local-context/context-scope.rq | [activitybar.header_buttons] **Context** copies the composed [reqlan_context_model] as markdown: effective-centre requirement, non-. rq link sections, selection, pinned tray, and footprint summary. [features_ai.ai_add_to_context] should prefer the same composed context when the activity bar index is ready. | 0.078 | |
| any_file_scope | reqlan rq/extension/local-context/context-scope.rq | The active editor may be a requirement file or implementation file ( Python, TypeScript, etc. ). [current_file_context] must surface requirement links even when the file contains no block ideas. Signals for non-. rq files ( and. rq files without a caret idea ): - [file_reference_links]: `.rq` ideas whose outbound `file_reference` edges target this file path ( for example `./apythonfile.py` ). - [folder_reference_links]: `.rq` ideas whose `file_reference` targets a parent folder of this file. - [comment_reference_links]: ideas resolved from `rq:[…]` tokens in this file's comments per [code_comment_refs.references_in_functional_code_comments]. - [git_context]: focus-centric git history ( recent commits, authors, branch ); working-tree dirty badge secondary. Focus behaviour: - `.rq` file with caret in a block → idea focus ( unchanged ). - Any file with linked requirements → file focus; `effectiveCenterId` defaults to the first linked requirement. - No links → file focus with empty related lists; graph / refs panes stay idle until a requirement is focused. Implementation: [context_model] uses [file_path_match] and `file_related_requirements` analyser; comment links are also resolved from live buffer text when indexed edges are absent. | 0.066 | |
| comment_reference_links | reqlan rq/extension/local-context/context-scope.rq | Matched from `comment_link` index edges and / or `rq:[target]` spans parsed from the active buffer. | 0.048 | |
| context_contribution | reqlan rq/extension/local-context/context-scope.rq | Per dimension: id, label, enabled, pinned, weight, ideaCount, fileCount, summary, hopDepth, supportsHopControl. Disabled dimensions do not add to [context_footprint] but may still show a muted chip with zero count. Pinned dimensions stay expanded in [scope_pane_design] until collapsed by the user. Graph-searchable dimensions expose per-lens hop overrides via [dimension_hop_control]. | 0.052 | |
| context_dimensions | reqlan rq/extension/local-context/context-scope.rq | Seven dimensions contribute ideas and files to the effective context footprint. Each dimension has a stable id, human label, default weight, and a one-line summary for collapsed UI. - workspace [workspace_context] Ambient VS Code workspace chrome and multi-base index glance: discovered bases, active base readiness / idea / edge counts — not a full graph dump. Distinct from the active ["../../bases/base.rq".base] source in v2. - current_file [current_file_context] Active editor file. For `.rq`: caret idea, in-file outline, unresolved refs. For any file: [any_file_scope] links and git badge. - open_files [open_files_context] Other workspace editor tabs currently open ( any language ). - file_history [file_history_context] Session recency of visited workspace files ( navigation history ), distinct from edit history. - edit_history [edit_history_context] Session recency of edited workspace files and caret positions ( typing history ). - manual [manual_context] User-pinned ideas from [activitybar.context_tray] and explicit " add to context " actions. - git [git_context] Focus-centric development history ( branch, recent commits, authors ) per [index_reqs.git_information_capture]; working-tree changes demoted. | 0.085 | |
| context_focus | reqlan rq/extension/local-context/context-scope.rq | kind: idea | file | selection | none. When sync-with-editor is on, focus follows the caret idea in an active `.rq` editor, or file / selection context otherwise. When pinned, focus stays on the pinned idea until cleared. Selection focus applies when the user highlights text spanning one or more ideas ( [activitybar.selection_pane] ). | 0.058 | |
| context_footprint | reqlan rq/extension/local-context/context-scope.rq | Merged view across enabled dimensions. - deduped idea ids and file uris with provenance ( which dimensions contributed each entry ). - `summaryLine`: compact human text, e. g. " this file · 3 open · 2 git · 1 pinned ". - `effectiveCenterId`: graph / refs / ancestors panes use this; defaults to focus idea, selection's first idea, first linked requirement for non-. rq files, else first idea in current file. | 0.108 | |
| context_scope | reqlan rq/extension/local-context/context-scope.rq | Reqlan sidebar and AI workflows reason about a composed [reqlan_context_model], not a single " current file " blob. Context applies to **any workspace file**, not only `.rq` sources — see [any_file_scope]. Context is built from orthogonal [context_dimensions] that the user can enable, pin, or collapse. The activity bar [activitybar.scope_pane] is the primary surface for inspecting and steering context; [activitybar.context_tray] holds the [manual_context] dimension. Token discipline per [features_ai.ai_integration]: show summaries and counts by default; expand a dimension only on intent. Parses per ["../../../reqlan rq/language/syntax.rq".reference_wikilink]. Decision-oriented v2 ( sources → signals → synthesis → views → consumers ) and show-don ' t-tell widgets: [context_scope_v2.context_scope_v2]. | 0.064 | |
| context_selection | reqlan rq/extension/local-context/context-scope.rq | Union of ideas whose line ranges overlap the editor selection in a `.rq` file. Drives [activitybar.selection_pane] and contributes idea ids to [context_footprint]. | 0.065 | |
| current_file_context | reqlan rq/extension/local-context/context-scope.rq | weight: 1. 0 Default enabled and expanded lens when a workspace file is active. | 0.087 | |
| dimension_hop_control | reqlan rq/extension/local-context/context-scope.rq | When a graph-searchable dimension lens is expanded in [scope_pane_design], show a local ** − / value / + ** pair. Applies to [current_file_context], [open_files_context], [file_history_context], [edit_history_context], and [manual_context] — not [workspace_context] or [git_context]. Per-dimension override inherits [global_hop_depth] until the user adjusts it; stored in dimensionHopDepth on the session and model. Edge cases match [activitybar.hop_depth_control]: disable − at min, + at max, clamp on apply. | 0.059 | |
| edit_history_context | reqlan rq/extension/local-context/context-scope.rq | weight: 0. 5 Default enabled; capped list ( default 12 ); entries include last line touched. | 0.066 | |
| file_history_context | reqlan rq/extension/local-context/context-scope.rq | weight: 0. 4 Default enabled; capped list ( configurable, default 12 ). | 0.066 | |
| file_reference_links | reqlan rq/extension/local-context/context-scope.rq | Matched when an indexed `file_reference` edge target resolves to the active file path ( exact or suffix match ). | 0.048 | |
| folder_reference_links | reqlan rq/extension/local-context/context-scope.rq | Matched when an indexed `file_reference` edge target is a folder prefix of the active file per [file_path_match.match_file_reference_target]. | 0.048 | |
| git_context | reqlan rq/extension/local-context/context-scope.rq | weight: 0. 7 Should detect symbol lifecycle using symbol identity rather than line history for creation: who introduced the symbol, when it was introduced, who last meaningfully changed it, the total number of changes, and the relative change rate versus peer symbols. Default enabled when repository detected. Primary: focus-centric git history — branch, HEAD short hash, recent commits touching the focus file / idea, top authors. Summary prefers history richness ( e. g. " main · 3 commits · 2 authors " ), not staged / unstaged counts. Working-tree dirty files remain available as a demoted nested section and optional footprint contributors. Focus hero shows a history cue ( last commit age / branch ) instead of a staged / unstaged chip. Consumes [index_reqs.git_information_capture] and ["./context-scope-v2.rq".development_history_signals]. Windows `git` spawns stay hidden per ["../../core_analysis/core.rq".consumption_silence]. UI: [activitybar.git_history_lens]. | 0.137 | |
| global_hop_depth | reqlan rq/extension/local-context/context-scope.rq | Session default hop depth ( 1 - 4 ) stored in [context_session]. Drives graph slice expansion, reference list breadth, ancestor chain depth, and composed context export. Surfaced in [activitybar.hop_depth_control] and echoed on [reqlan_context_model]. globalHopDepth. | 0.069 | |
| implementation_priority | reqlan rq/extension/local-context/context-scope.rq | 1. [any_file_scope] types and [context_model] builder. 2. Host refresh for any workspace file; git / all-tab collection. 3. [scope_pane_design] non-. rq focus hero and grouped link panels. 4. [context_selection] + [activitybar.selection_pane]. 5. Lazy `loadFileLens` for file-list dimensions. 6. [ai_context_export]. 7. [graph_path_doc.graph_path_walk] ( future pane / Ideas Summary handoff ). | 0.045 | |
| manual_context | reqlan rq/extension/local-context/context-scope.rq | weight: 0. 9 Enabled when tray non-empty; pins override sync focus for `effectiveCenterId` when user chooses " focus pinned ". | 0.101 | |
| open_files_context | reqlan rq/extension/local-context/context-scope.rq | weight: 0. 6 Default enabled; summary lists tab count. | 0.066 | |
| reqlan_context_model | reqlan rq/extension/local-context/context-scope.rq | Canonical composed context per [analytical_context_model]. Implementation: [context_model]. - [context_focus] is the single anchor ( idea, file, selection, or none ). - [context_dimensions] each contribute [context_contribution] records with counts and summary lines. - [context_footprint] merges enabled dimensions into deduped idea / file sets and an `effectiveCenterId` for graph / refs panes. - `currentFileSlice` is the projection used when the current-file lens is expanded. Includes `isRqFile`, `referencingIdeas`, `commentLinkedIdeas`, `folderReferencingIdeas`, and optional `gitChange`. - [context_selection] when the user highlights a non-empty range spanning one or more `.rq` ideas ( [activitybar.selection_pane] ). - [global_hop_depth] and [dimension_hop_control] overrides on the model. Host increments `revision` when any dimension or hop depth changes; webview ignores stale posts by revision. | 0.095 | |
| scope_pane_design | reqlan rq/extension/local-context/context-scope.rq | The scope pane uses a **focus + lens** layout — not seven stacked lists. The experience should feel more like a wiki than a table: surfaced ideas, files, folders, commits, authors, and related context should prefer rich cross-links and drill-in navigation over flat tabular presentation. Grouping should adapt to available context rather than staying fixed: file-heavy views may group by folder / path, development-history views may group by git recency / authorship / churn, and mixed views should choose the most explanatory structure for the current focus. | 0.092 | |
| workspace_context | reqlan rq/extension/local-context/context-scope.rq | weight: 0. 1 Always on; contributes multi-base readiness and counts ( active base + sibling summary ) unless user opens workspace pane. " Workspace " here means the VS Code workspace surface and ambient index health — not a single ontology base. Active-base routing for focus / graph / refs follows ["../../bases/base.rq".implied_context]; see [context_scope_v2.context_sources] `base`. | 0.066 | |
| graph_path | reqlan rq/extension/local-context/graph-path.rq | Ordered nodes and edges from source to target. Each step records idea id, name, status, edge kind, and optional snippet / line for the traversed edge. Paths with unresolved hops are marked broken; UI offers jump-to-source like [activitybar.reference_lists_pane]. | 0.047 | |
| graph_path_walk | reqlan rq/extension/local-context/graph-path.rq | Future capability: walk the requirement graph **point-to-point** between two chosen ideas. Complements the activity bar's single-centre neighbourhood ( [activitybar.miniature_graph_pane] ) and Ideas Summary's unconstrained graph tab ( [graphical_graph.graphical_graph] ). | 0.058 | |
| implementation_notes | reqlan rq/extension/local-context/graph-path.rq | Analytical: add `findPathsBetween(store, fromId, toId, options)` returning [path_result]. Wire: new `loadGraphPath` message alongside existing `loadGraph` / `loadAncestors`. UI: defer dedicated pane until [activitybar.selection_pane] and composed context are stable; prototype in Ideas Summary graph tab first. | 0.040 | |
| path_query | reqlan rq/extension/local-context/graph-path.rq | Inputs: - `fromIdeaId` ( source node ) - `toIdeaId` ( target node ) - optional `maxDepth` ( `graphHopDepth` in ["../../../packages/analytical/src/core/defaults.json"] ) - optional `edgeKinds` filter ( references, file_reference, incompatible, … ) - optional `direction` ( undirected default, or outbound-only / inbound-only for directed traces ) Output: [path_result] — zero or more shortest paths through the indexed graph, capped for token and UI limits. | 0.040 | |
| path_result | reqlan rq/extension/local-context/graph-path.rq | - `found`: boolean - `paths`: ordered list of [graph_path] ( typically top 1 – 3 shortest ) - `truncated`: true when search hit depth or branch limits - `summaryLine`: e. g. " A → implements → B → depends on → C " for collapsed UI | 0.056 | |
| path_ui_design | reqlan rq/extension/local-context/graph-path.rq | Entry points: - Activity bar: " Path to … " on focus hero when a second idea is pinned or selected ( [context_scope.manual_context] + [activitybar.selection_pane] ). - Ideas Summary graph tab: shift-click two nodes to set endpoints. - Command palette: `Reqlan: Find path between requirements`. Presentation ( sidebar-first ): - Collapsed: [path_result] `summaryLine` under the scope footprint line. - Expanded: vertical stepper ( breadcrumb ) with edge kind labels; optional overlay on [graph_lib.graph_library] highlighting only path edges / nodes. - When no path: show closest partial path or " no connection within N hops " with expand-in-Summary action. Performance: - BFS / bidirectional BFS on sqlite edge tables via [indexer.local_graph_analysis] — never materialise full workspace graph. - Debounce endpoint changes; cache last path per `(from,to,depth)` revision tied to index catalog generation. | 0.040 | |
| problem | reqlan rq/extension/local-context/graph-path.rq | Users often need to answer: " How does requirement A relate to requirement B? " — not the full ego-graph around A, and not an unbounded workspace dump. Today they manually expand hops or search references. A dedicated path walk would make dependency chains, impact routes, and gap analysis inspectable in the sidebar or graph tab. | 0.040 | |
| relationship_to_context | reqlan rq/extension/local-context/graph-path.rq | Path endpoints should default from [context_scope.context_focus] and [context_scope.context_footprint]. A successful walk contributes traversed idea ids to a transient " path context " slice suitable for [context_scope.ai_context_export] without pinning every intermediate node. | 0.040 | |
| copy_requirement | reqlan rq/extension/mutation/mutation-hooks.rq | The extension should provide a command to copy an idea or requirement to another file or ideaset. Copy should optionally rewrite local references to match the destination context. | 0.040 | |
| create_requirement | reqlan rq/extension/mutation/mutation-hooks.rq | The extension should provide a command to create a new requirement idea in an appropriate. rq file. New requirement creation should offer sensible defaults for name, body, and file placement. | 0.040 | |
| merge_requirements | reqlan rq/extension/mutation/mutation-hooks.rq | should combine requirement attributes, and any references through the codebase. | 0.040 | |
| move_file | reqlan rq/extension/mutation/mutation-hooks.rq | if a file is moved, a prompt should be shown to the user to update any references in the file to the new path. if multiple files are moved there should be only one prompt. the trigger should only happen if the reqlan file has inbound or outbound references, or the non-reqlan file has inbound reqlan references. " reqlan wants to make refactoring changes to your codebase. Do you approve? " " yes ", " no ", " view changes " See also ["./refactor_support.rq".refactor_file_moves]. Implemented by ["../../../packages/extension/src/mutation_module/register-file-mutation-hooks.ts"], ["../../../packages/extension/src/mutation_module/show-mutation-approval.ts"], and ["../../../packages/extension/src/mutation_module/file-mutation-gate.ts"]. | 0.083 | |
| rename_file | reqlan rq/extension/mutation/mutation-hooks.rq | this should update any referencess in rq files ( imports, inline references, etc ) it should also update any inline references in functional code files - per ["../language/comment-references/functional-code-comment-references.rq"] and ["./refactor_support.rq".comment_reference_refactor_support] Renaming a folder updates references to that folder and to every file inside it. The index watcher must not drop the pre-move file before inbound import planning ( ["./refactor_support.rq".refactor_file_moves] ). See also ["./refactor_support.rq".refactor_file_moves] and ["./refactor_support.rq".refactor_changes]. Implemented by ["../../../packages/extension/src/mutation_module/file-move-plan.ts"], ["../../../packages/extension/src/mutation_module/expand-renamed-paths.ts"], ["../../../packages/extension/src/mutation_module/register-file-mutation-hooks.ts"], ["../../../packages/extension/src/analytical_submodule/index-store/pending-rename-paths.ts"], ["../../../packages/language/src/file-path-rewrite.ts"], and ["../../../packages/extension/src/mutation_module/collect-inbound-referencers.ts"]. | 0.083 | |
| split_requirement | reqlan rq/extension/mutation/mutation-hooks.rq | The extension should provide a command to split one requirement into two or more separate ideas. Splitting should preserve references and attributes according to user selection. | 0.040 | |
| refactor_changes | reqlan rq/extension/mutation/refactor_support.rq | On rename, move, or delete of files or symbols, the extension should update the idea index, import statements, embedded file references, comment references, and other idea references that are affected. The index should be resilient to duplication, particularly when ideas move between files: the old hosting file URI must be cleared before or when the destination is reindexed. [refactor_file_moves] [refactor_symbol_rename] [refactor_symbol_move] [refactor_symbol_delete] [comment_reference_refactor_support] Implemented by ["../../../packages/analytical/src/index-store/workspace-index.ts"], ["../../../packages/extension/src/analytical_submodule/index-store/index-service.ts"], ["../../../packages/language/src/reqlan-idea-refactor.ts"], and ["../../../packages/extension/src/mutation_module/register-file-mutation-hooks.ts"]. | 0.114 | |
| refactor_file_moves | reqlan rq/extension/mutation/refactor_support.rq | The extension should watch for file moves and renames, including a renamed folder. A folder rename is expanded to every file inside it, then the index is migrated for moved . rq files, and imports and path references are updated both inside the moved file ( outbound ) and in other files that pointed at it or at the folder ( inbound ), including comment paths in code files ( [comment_reference_refactor_support] ). Import-root aliases such as `@/old/file.rq` are rewritten when that target moves ( `@/new/file.rq` ). There should be a single prompt per batch asking whether to apply path updates, aligned with [move_file] and [rename_file]. While a rename is in flight, the index file watcher must not delete the pre-move URI before inbound import planning runs — `onWillRenameFiles` marks pending paths and `migrateRenamedFile` clears the old URI after path edits are planned. Implemented by ["../../../packages/extension/src/mutation_module/register-file-mutation-hooks.ts"], ["../../../packages/extension/src/mutation_module/expand-renamed-paths.ts"], ["../../../packages/extension/src/mutation_module/file-move-plan.ts"], ["../../../packages/extension/src/mutation_module/file-mutation-gate.ts"], ["../../../packages/extension/src/mutation_module/collect-inbound-referencers-core.ts"], ["../../../packages/extension/src/analytical_submodule/index-store/pending-rename-paths.ts"], ["../../../packages/extension/src/analytical_submodule/index-store/index-service.ts"], ["../../../packages/language/src/file-path-rewrite.ts"], and ["../../../packages/language/src/reqlan-path-references.ts"]. | 0.106 | |
| refactor_symbol_delete | reqlan rq/extension/mutation/refactor_support.rq | An idea declaration should offer a code action to delete it and update references. Deleting should remove the declaration, clear or rewrite AST and comment references that targeted it ( [comment_reference_refactor_support] ), and reindex affected files. [refactor_support] [refactor_changes] Implemented by ["../../../packages/language/src/reqlan-idea-refactor.ts"], ["../../../packages/language/src/reqlan-code-action-provider.ts"], ["../../../crates/reqlan-lsp/src/code_actions.rs"], and ["../../../packages/extension/src/mutation_module/refactor/register-idea-refactor-commands.ts"]. | 0.106 | |
| auto_reframe | reqlan rq/extension/presentation/graph.rq | The graph should automatically fit to the viewport when the loaded node set changes — without requiring the user to click " Fit to view ". After each successful syncSlice, GraphCyController compares the sorted node-id set of the incoming slice with fittedNodeSetKey ( the set the viewport was last fitted to ). When they differ, finishRender triggers an automatic reframe via reframeToViewport. Triggers when any node is added or removed from the slice ( new neighbourhood, focus change, filter change that changes membership ). Does not trigger for metadata-only updates on the same node ids ( label, colour, isCenter flag, etc. ) — those keep the user's current pan / zoom. Does not trigger on requestLayout relayout when the node-id set is unchanged. | 0.149 | |
| compound_graph | reqlan rq/extension/presentation/graph.rq | folder hierarchy is to be supported with compound layouts. Hosting `.rq` files can also act as compound parents via ["../workspace-summary/ideas_summary/graphical_graph.rq".file_treatment_toggle] ( mode `compound` ). File compounds are styled distinctly ( ideaset accent, underlined title ), remain draggable with members, and open the hosting file on title click / double-click ( see [graph_cy_controller] ). | 0.067 | |
| graph_cy_controller | reqlan rq/extension/presentation/graph.rq | the cytoscape object should use event driven patterns; lifecycle is documented here. GraphCyController in ["../../../packages/extension/webviews/shared/graph/graph-cy-controller.ts"] owns the cytoscape instance with inline lifecycle state ( idle, syncing, layouting, physics ). syncGeneration cancels stale layout callbacks when the slice changes mid-layout. Selection and drag-pinned positions are tracked in userPositionedNodes on the controller. syncSlice diffs elements ( add / remove / update the delta ) via ["../../../packages/extension/webviews/shared/graph/graph-cy-elements.ts"] so surviving nodes keep positions; requestLayout restarts the active algorithm and clears user pins. Pointer / selection wiring lives in ["../../../packages/extension/webviews/shared/graph/graph-cy-interactions.ts"]; compound hover / selection / title-hit in ["../../../packages/extension/webviews/shared/graph/graph-cy-highlight.ts"]. Compound grab / drag / free pins and unpins all childless descendants so live physics does not snap members back while the container moves; released child positions are stored in userPositionedNodes. File compounds ( `isFileCompound` ): title-band tap or double-tap opens the hosting `.rq` via onOpen ( compoundId ); GraphView resolves `compound:rq-file:…` to a file URI. Live physics is the custom simulation in ["../../../packages/extension/webviews/shared/graph/graph-physics.ts"]; one instance persists with the cytoscape instance and is paused / resumed, never rebuilt. Grabbing a node pins it in the running sim ( its live position keeps exerting forces ); release unpins with no restart and no snap. ResizeObserver debounces cy. resize ( ) and re-triggers a pending sync when the container gains size. Mount only while the graph container is visible and non-zero — do not keep cytoscape alive under display: none; WebGL init on a zero-size hidden container can break the host webview before messaging is attached. Viewport fitting per [reframe_view]; tracks lastSyncedNodeSetKey vs fittedNodeSetKey to drive [auto_reframe]. Label visibility per [graph_label_modes] / [graph_label_auto]: setLabelMode updates text-opacity from zoom ( and hover / drag force-opaque in auto ). | 0.103 | |
| graph_cy_elements | reqlan rq/extension/presentation/graph.rq | syncGraphElements diffs the live cytoscape graph against the desired slice rather than remove-all / add-all on every sync. Surviving nodes keep positions; only added / removed / updated elements move. Mutable data fields ( label, color, flags ) can update without a structural relayout. per ["../../../packages/extension/webviews/shared/graph/graph-cy-elements.ts"]. | 0.040 | |
| graph_cytoscape | reqlan rq/extension/presentation/graph.rq | builds cytoscape elements and stylesheet from a generic node / edge slice. registers batch layout options ( fcose, cola, breadthfirst, circle, concentric, grid, random ) and seeds positions for new nodes. exposes CompoundBasis ( single-membership folder tree ) and GroupBasis ( flat multi-membership ) as grouping inputs. per ["../../../packages/extension/webviews/shared/graph/graph-cytoscape.ts"] and ["../../../packages/extension/webviews/shared/graph/graph-theme.ts"]. getLayoutConfig sets fit: false for initial ( mode = = = ' initial' ) batch layouts so [auto_reframe] owns the first viewport fit; relayout modes may still fit via the layout algorithm. | 0.055 | |
| graph_design | reqlan rq/extension/presentation/graph.rq | The graph should show nodes for ideas and files and edges for references. Used by Ideas Summary, activity-bar minigraph, and export previews. | 0.040 | |
| graph_library | reqlan rq/extension/presentation/graph.rq | Reusable cytoscape-based graph visualization library for force-directed and compound graphs. Provides a mount → sync slice → layout → optional live physics → destroy lifecycle with a simplified API. Implementation lives in ["../../../packages/extension/webviews/shared/graph/graph-cytoscape.ts"], ["../../../packages/extension/webviews/shared/graph/graph-cy-controller.ts"], ["../../../packages/extension/webviews/shared/graph/graph-cy-elements.ts"], ["../../../packages/extension/webviews/shared/graph/graph-cy-interactions.ts"], ["../../../packages/extension/webviews/shared/graph/graph-cy-highlight.ts"], ["../../../packages/extension/webviews/shared/graph/graph-physics.ts"], ["../../../packages/extension/webviews/shared/graph/graph-groups.ts"], and ["../../../packages/extension/webviews/shared/graph/graph-theme.ts"]. Ideas Summary re-exports the shared modules from ["../../../packages/extension/webviews/ideas-summary/lib/"] for backward-compatible import paths. Consumers pass a node / edge slice and sync options; the library owns the cytoscape instance, diffing, layout runs, and optional continuous physics. | 0.064 | |
| layout_options | reqlan rq/extension/presentation/graph.rq | - user can select from a dropdown of layout options offered by cytoscape. js - user can select whether to use compound layouts ( where compound basis is based on the folder structure ) - compound basis should be flexible and expected as an input | 0.067 | |
| layout_physics | reqlan rq/extension/presentation/graph.rq | defaults to force-directed layout ( fcose ) with animation on, but callers can select other options offered by cytoscape. js. a toggle leaves layout animation and live physics on for force-directed layouts instead of settling immediately. live physics is the custom obsidian-style simulation in ["../../../packages/extension/webviews/shared/graph/graph-physics.ts"] ( force core: ["../../../packages/extension/webviews/shared/graph/physics-core.js"] ), regardless of which force-directed batch layout produced the initial settle. forces are central gravity toward the centroid, linear edge springs, and inverse-square node repulsion; every childless node participates, including disconnected orphans. group container constraints live in ["../../../packages/extension/webviews/shared/graph/graph-groups.ts"]: each leaf carries data ( ' groupIds' ); disjoint groups are pushed apart after batch cola / fcose and during Animate; groups that share a member ( multi-membership, e. g. tags ) may overlap around the shared node. the simulation is deterministic ( no randomness ) and converges slowly over tens of seconds, then sleeps; interactions wake it instead of restarting it. dragging pins the held node while the sim keeps running around it; release rejoins the node at rest with no snap; clicks never disturb the sim. Dragging a compound container pins every childless descendant for the same reason ( see [graph_cy_controller] ). cycling the Animate toggle pauses and resumes the same simulation state, so it converges to the same attractor as leaving it on. | 0.096 | |
| manual_reframe | reqlan rq/extension/presentation/graph.rq | Users can explicitly reframe the viewport when pan / zoom has moved the graph off-screen or they want to see the whole neighbourhood again. - " Fit to view " control in ["../../../packages/extension/webviews/ideas-summary/components/GraphControls.svelte"] dispatches to GraphView → GraphCyController. reframeToViewport ( ). - " Fit to view " control in ["../../../packages/extension/webviews/activity-bar/components/MiniGraphCanvas.svelte"] calls the same API on the mini-graph controller. Every graph surface that mounts GraphCyController should expose this control. | 0.150 | |
| physics_options | reqlan rq/extension/presentation/graph.rq | - user can select from a dropdown of physics options offered by cytoscape. js - the options for the physics should be exposed to the user in a menu too. - user can select whether to use live physics / animation - live physics uses the custom graph-physics simulation; cola remains selectable as a batch layout in the layout dropdown - Ideas Summary exposes layout, live-physics, and force sliders in ["../../../packages/extension/webviews/ideas-summary/components/GraphControlPanel.svelte"] | 0.067 | |
| reframe_animation | reqlan rq/extension/presentation/graph.rq | The first reframe on a controller mount is instant ( synchronous cy. fit + cy. center ) so the graph appears immediately on first paint. Every subsequent reframe — automatic ( [auto_reframe] ) or manual ( [manual_reframe] ) — animates pan and zoom smoothly over GRAPH_REFRAME_ANIMATION_MS using cytoscape. animate ( { fit, easing: ' ease-out-cubic ' } ). Callers may pass `reframeToViewport({ animate: false })` to force an instant reframe. Initial batch layouts use fit: false ( see [graph_cytoscape] ) so the controller owns the first fit and later animated handoffs are not double-applied. | 0.113 | |
| reframe_view | reqlan rq/extension/presentation/graph.rq | Shared viewport behaviour for every surface that mounts GraphCyController ( Ideas Summary graph tab, activity bar mini graph, and future consumers ). Implementation: reframeGraphToViewport and GraphCyController. reframeToViewport in ["../../../packages/extension/webviews/shared/graph/graph-cy-controller.ts"]. [manual_reframe] [auto_reframe] [reframe_animation] Constants: GRAPH_VIEWPORT_PADDING ( 36 px padding around the element bounding box ), GRAPH_REFRAME_ANIMATION_MS ( 400 ms animated transition ). Reframes resize the cytoscape container first, then fit all elements and centre the camera. Does not clear selection, centreId, user-pinned drag positions, or live physics state — viewport only. | 0.118 | |
| technology | reqlan rq/extension/presentation/graph.rq | uses cytoscape. js for the graph layout and canvas. cytoscape-fcose provides the batch force-directed settle; cytoscape-cola is available as a batch layout option. continuous ( " live " ) physics is a custom simulation in ["../../../packages/extension/webviews/shared/graph/graph-physics.ts"]. the controller initialises cytoscape with Canvas 2 D only ( pixelRatio 1, no WebGL ) so webviews do not break on unresolved CSS variables. Body prose with inline parentheses must parse per ["../../../reqlan rq/language/syntax.rq".lists] and ["../../../reqlan rq/language/syntax.rq".round_brackets]. | 0.040 | |
| view_controls | reqlan rq/extension/presentation/graph.rq | pan, zoom, and drag repositioning are supported on the canvas. Leaf nodes and compound containers are both draggable; compound drag moves members with the parent. zoom range is wide rather than tightly capped so users can inspect fine detail or see the whole neighbourhood. [reframe_view] fits and centres the camera on the graph bounding box without changing node positions or restarting layout / physics. Zoom and Fit must continuously drive [graph_label_auto] opacity when Labels is in auto mode. | 0.131 | |
| webview_threading | reqlan rq/extension/presentation/graph.rq | VS Code webviews run JavaScript on a single main thread, like a browser tab. Heavy synchronous work — cytoscape layout iterations, large element builds, unbounded loops — blocks UI updates until it finishes. Layout iteration count scales with node count ( capped ) rather than running unbounded defaults. Do not restart layout synchronously on layoutstop; hand off to the graph-physics simulation, which integrates one step per requestAnimationFrame instead of blocking. | 0.078 | |
| webview | reqlan rq/extension/presentation/webview.rq | Extension webviews are Svelte UIs hosted by the VS Code extension per [development_core]. They should be performance conscious: prefer capped, paginated, or scoped slices and avoid full-graph dumps unless the user explicitly requests one. The extension host loads compiled assets from `packages/extension/media/webviews/`. UI state conventions: [typescript_codestyle.ui_state_management] / [typescript_codestyle.webview_app_state]. Webview modules in the extension: - Ideas Summary — overview, ontology tables ( bases / ideas / ideasets / attributes / references ), graph, and index ( last ): [ideas_summary] / ["../workspace-summary/ideas_summary/webview.rq".ideas_summary] / ["../workspace-summary/ideas_summary/webview.rq".ontology_aligned_tabs] - Activity bar — editor-adjacent sidebar panes: ["../local-context/activitybar.rq".activity_bar] - Export form — multi-format graph export: ["../export/export.rq".export_webview] - Onboarding — first-install / welcome webview: ["../host/onboarding/page-thanks-for-installing.rq".installation_event] | 0.100 | |
| cola_vs_phyics | reqlan rq/extension/workspace-summary/ideas_summary/graphical_graph.rq | the user should have a constraint based layout; and a physics based layout; and some other options. | 0.040 | |
| control_panel | reqlan rq/extension/workspace-summary/ideas_summary/graphical_graph.rq | Floating panel in ["../../../../packages/extension/webviews/ideas-summary/components/GraphControlPanel.svelte"], toggled from [ui_controls]. Provides layout algorithm selection, live-physics toggle, compound grouping, physics force sliders, max node count, and truncation basis. Physics tunables call GraphCyController. setPhysicsSettings; node budget changes re-request the graph slice via loadGraph. Mounted as a sibling of the cytoscape container ( not inside it ) so range sliders and selects work with native browser events. When positioned, a ResizeObserver on the surface wrap reclamps panelX / panelY so the panel stays fully inside after the webview is resized; Key panel uses the same reclamp. Open / closed state and all control values persist per [graph_ui_persistence]. | 0.102 | |
| graph_loading | reqlan rq/extension/workspace-summary/ideas_summary/graphical_graph.rq | the extension pushes graphSlice when the index is ready — no empty waitingForIndex wedge. ["../../../../packages/extension/src/ideas_summary_module/ideas-summary-panel.ts"] sets graphSlicePending on loadGraph and delivers the slice when the index becomes ready ( including via index status updates ). Index status posts must not await graph slice builds, so sync progress keeps updating the Index tab. webview state in ["../../../../packages/extension/webviews/ideas-summary/state/app.svelte.ts"] is query, slice, loading, rendering, and error only. App. init attaches the window message listener during App. svelte script setup ( before child onMount ) so loadGraph replies are never dropped. GraphView marks a slice as synced only in onRendered ( after cytoscape flush + layout ), not before syncSlice is queued. Webview → extension posts go through ["../../../../packages/extension/webviews/ideas-summary/lib/vscode.ts"] which JSON-clones payloads so Svelte $ state proxies are structured-clone safe. GraphView remount reuses app. graph. slice when present; it only loadGraphs when there is no slice and nothing in flight, or force-retries after an error. GraphView mounts only while the graph tab is active ( see TabPanels ); per [graph_cy_controller] do not keep cytoscape alive under display: none. | 0.045 | |
| graph_ui_persistence | reqlan rq/extension/workspace-summary/ideas_summary/graphical_graph.rq | Key and Controls state is stored in VS Code ExtensionContext. workspaceState under key GRAPH_UI_WORKSPACE_STATE_KEY ( reqlan. ideasSummary. graphUi ). Shape and normalisation live in ["../../../../packages/extension/src/ideas_summary_module/shared/graph-ui-state.ts"]; the host reads / writes it from ["../../../../packages/extension/src/ideas_summary_module/ideas-summary-panel.ts"]. On webview ready the extension posts graphUiState; the webview posts persistGraphUiState ( debounced ) whenever AppState. patchGraphUi runs in ["../../../../packages/extension/webviews/ideas-summary/state/app.svelte.ts"]. Persisted fields: showKey, showControls, hiddenNodeTypes, layoutId, useCompound, compoundBasisId, animatePhysics, labelMode, fileTreatment, maxNodes, truncationBasis, and the five physics sliders ( gravity, repulsion, linkStrength, linkDistance, damping ). GraphView in ["../../../../packages/extension/webviews/ideas-summary/components/GraphView.svelte"] treats app. graph. ui as the source of truth and applies layout / physics / hidden types / label mode / fileTreatment to GraphCyController when those fields change. The first graph load waits for graphUiState so restored node budget is included in loadGraph. | 0.165 | |
| graphical_graph | reqlan rq/extension/workspace-summary/ideas_summary/graphical_graph.rq | There should be a tab that renders requirement ideas and references as a force-directed web. The graph tab lives in the Ideas Summary webview per [ideas_summary]. UI is implemented in ["../../../../packages/extension/webviews/ideas-summary/components/GraphView.svelte"]. Graph slices are built in ["../../../../packages/analytical/src/index-store/webview-graph-queries.ts"] and served by ["../../../../packages/extension/src/ideas_summary_module/ideas-summary-panel.ts"]. By default the view focuses on the active editor file's first idea; without a focus it shows a capped slice of matching ideas rather than dumping the full graph. Users can filter by search text, path, multi-select @ status, and multi-select tags per [graph_status_tag_filters]. An " Indirect references " toggle expands neighbourhood depth from 1 to 2 hops. A " Wildcard refs " toggle includes or hides edges expanded from path + idea wildcards per [wildcard_refs_toggle] ["@/reqlan rq/language/imports.rq".wildcard_references] A " Files " dropdown selects hosting- `.rq` treatment per [file_treatment_toggle] ( hidden / compound containers / linked ideaset nodes ), with per-option info tooltips. Interactive graph controls that also exist on HTML export must stay aligned per [webview_export_graph_parity]. Clicking a node opens its source; double-click or " Focus graph " recenters the slice on that idea. Linked file ideaset nodes and file-compound titles open the hosting `.rq` file per [file_treatment_toggle]. External file references render as dashed edges to file nodes; wildcard-fan-out edges render dotted. A toggleable key explains node colours and edge styles and toggles node-type visibility per [key_panel_toggle]; a toggleable [control_panel] exposes layout, physics, and node-budget settings. Key and Controls state persist per workspace via [graph_ui_persistence]. Pan, zoom, and drag repositioning per [view_controls]. [manual_reframe] via " Fit to view " in [ui_controls]; [auto_reframe] when the loaded node set changes; [reframe_animation] for smooth transitions after the first paint. Node text labels per [graph_labels], [graph_label_modes], and [graph_label_auto]. Layout, compound grouping, and live physics behaviour per [layout_physics], [layout_options], [physics_options], and [compound_graph]. Cytoscape lifecycle and threading constraints per [graph_cy_controller] and [webview_threading]. | 0.207 | |
| key_and_controls | reqlan rq/extension/workspace-summary/ideas_summary/graphical_graph.rq | there is a toggle that open a key; and a toggle that opens a [control_panel]. | 0.040 | |
| key_panel_toggle | reqlan rq/extension/workspace-summary/ideas_summary/graphical_graph.rq | the key panel should be able to toggle inclusion / visibility of the different node types. Node-type rows in ["../../../../packages/extension/webviews/ideas-summary/components/GraphKeyPanel.svelte"] are toggle buttons; hidden types render dimmed with a struck-through label. Toggleable types are block, one-liner, ideaset, focused idea, and external file — GraphNodeTypeId in ["../../../../packages/extension/webviews/shared/graph/graph-theme.ts"], classified per node by graphNodeTypeId ( same priority as node fill colour ). Linked file ideaset nodes ( `isFileIdeaset` ) classify as ideaset for Key toggles; file compound containers are legend-only ( " File group " ) and follow member visibility like other compounds. GraphView tracks hidden types and calls GraphCyController. setHiddenNodeTypes in ["../../../../packages/extension/webviews/shared/graph/graph-cy-controller.ts"], which flags matching nodes with data typeHidden; a display: none stylesheet rule in ["../../../../packages/extension/webviews/shared/graph/graph-cytoscape.ts"] hides them, and cytoscape hides edges whose endpoint is hidden. Compound containers whose members are all hidden are hidden too. Hiding is client-side visibility only: the slice still contains the nodes, node / edge counts are unchanged, and flags reapply after every slice sync. Key open state and hidden node types persist per [graph_ui_persistence]. | 0.067 | |
| library | reqlan rq/extension/workspace-summary/ideas_summary/graphical_graph.rq | should consume the [graph_library] | 0.040 | |
| node_truncation | reqlan rq/extension/workspace-summary/ideas_summary/graphical_graph.rq | nodes are truncated if there are too many. the count should be configurable; as should the truncation basis ( last changed.., last accessed.., owned by etc. ) Max nodes and keep-by basis are edited in [control_panel]; query fields are maxNodes and truncationBasis on GraphViewQuery. Default budget is GRAPH_MAX_NODES ( 120 ); hard ceiling is GRAPH_NODES_HARD_CAP ( 1000 ) in ["../../../../packages/analytical/src/index-store/webview-graph-queries.ts"] — raise that constant to lift the cap. Supported bases today: path, git-modified, git-created ( git timestamps from the index ). Last-accessed / owned-by need index fields before UI can offer them. | 0.054 | |
| referenced_files_grouping | reqlan rq/extension/workspace-summary/ideas_summary/graphical_graph.rq | [referenced_files] should be grouped into a common node if they're referenced by multiple ideas. Line numbers should be treated like ideas if specified, such that the reference points to items in rendered graph. | 0.046 | |
| root | reqlan rq/extension/workspace-summary/ideas_summary/graphical_graph.rq | ["../../../../packages/extension/webviews/ideas-summary/components/GraphView.svelte"] | 0.040 | |
| ui_controls | reqlan rq/extension/workspace-summary/ideas_summary/graphical_graph.rq | Controls live in ["../../../../packages/extension/webviews/ideas-summary/components/GraphControls.svelte"] and dispatch events to GraphView. [manual_reframe] — " Fit to view " calls GraphCyController. reframeToViewport per [reframe_view]. [auto_reframe] and [reframe_animation] are handled by the shared controller; no extra UI beyond pan / zoom / drag. Labels control cycles [graph_label_modes] ( auto / on / off ) and applies [graph_label_auto] via GraphCyController. setLabelMode. Files dropdown ( [file_treatment_toggle] ) uses ["../../../../packages/extension/webviews/ideas-summary/components/FileTreatmentSelect.svelte"] with Hidden / Compound / Linked options and info tooltips; selection patches `fileTreatment` in [graph_ui_persistence]. Status and tag filters are multi-select dropdowns per [graph_status_tag_filters]. The Key button toggles a draggable legend panel in ["../../../../packages/extension/webviews/ideas-summary/components/GraphKeyPanel.svelte"] over the graph canvas. The Controls button toggles [control_panel]. Overlay panels ( Key and Controls ) are siblings of the cytoscape mount inside a graph-surface-wrap — never children of the cy container — so native form controls receive pointer events. | 0.167 | |
| attributes_tab | reqlan rq/extension/workspace-summary/ideas_summary/webview.rq | Attributes index for the active base, aligned with [html_export.html_export_attributes_index]: attribute key, idea count, distinct value count, sample values. Searchable and filterable; clicking a key opens Ideas with that attribute column enabled. Aggregated in [webview_table_queries] / sqlite store. | 0.045 | |
| graph_view | reqlan rq/extension/workspace-summary/ideas_summary/webview.rq | Ideas Summary provides a requirements graph view showing ideas and their references as nodes and edges. The graph view should support navigation from a node to its source definition in the editor. Users should be able to filter or focus the graph by file, ideaset, tag, or status. | 0.040 | |
| graphical_graph_tab | reqlan rq/extension/workspace-summary/ideas_summary/webview.rq | see [graphical_graph_doc.graphical_graph] | 0.040 | |
| group_by_type | reqlan rq/extension/workspace-summary/ideas_summary/webview.rq | Ideas table can group by idea kind ( block / oneliner ). References table can group by reference type ( file / comment / sub-idea ). Grouping is a toolbar toggle; rows are ordered by group then the active sort; UI shows collapsible group headers. | 0.061 | |
| ide_page_reports | reqlan rq/extension/workspace-summary/ideas_summary/webview.rq | Ideas Summary provides dedicated report pages inside the IDE ( graph page and status table at minimum ). Report pages may render computed information that is not present as literal text in source files. | 0.040 | |
| idea_sets_tab | reqlan rq/extension/workspace-summary/ideas_summary/webview.rq | The idea sets page should list the ideasets unlike the ideas page, it should not directly to the ideaset, but should have a dropdown to it's items. the path column should link to the ideaset source. members should appear as chips with a … control to expand and show all member chips when needed. per [IdeasetsTable] | 0.052 | |
| ideas_summary | reqlan rq/extension/workspace-summary/ideas_summary/webview.rq | The Ideas Summary webview is a workspace-wide page for tables ( and graph ) summarising ideas per [simple_views] and [webview_doc.webview]. Tabs align with salient [ontology] data and HTML export list views ( [html_export.html_export_list_views] ): [ontology_aligned_tabs]. It should be performance conscious and avoid full-graph dumps unless requested by the user. It should be paginated. It should be filterable and sortable via a ui-sql layer per [table_column_filters] and [table_column_options]. Webview UI is implemented with Svelte per [development_core] the extension host loads compiled assets from `packages/extension/media/webviews/ideas-summary` ( Vite output of [ideas_summary_webview] ) table queries are built in [webview_table_queries] the extension host forwards query state through [ideas_summary_panel] Ideas Summary chrome should include a link that opens [features_export.export_webview]. Multi-base scope and switcher: [ideas_summary_base.ideas_summary_base_scope]. | 0.134 | |
| index_panel | reqlan rq/extension/workspace-summary/ideas_summary/webview.rq | Last tab: workspace index health — readiness, summary stats, sync progress, errors, refresh / cancel / clear-and-rebuild. per [index_reqs.idea_index_triggers] and ["../../../indexer/indexer.rq".nonblocking_index] Implemented by [IndexPanel]. | 0.120 | |
| ontology_aligned_tabs | reqlan rq/extension/workspace-summary/ideas_summary/webview.rq | Tab order: Overview, Bases, Ideas, Ideasets, Attributes, References, Graph, Timeline, Index. Index is last — workspace index health and maintenance, not the primary browsing surface. Covers [ontology.base], [ontology.idea], [ontology.ideaset], [ontology.attribute], [ontology.reference], the graph cartography tab, and [timeline_page]; Overview mirrors HTML export home metrics lightly. Files / clusters / print families stay export-only for now. | 0.086 | |
| overview_page | reqlan rq/extension/workspace-summary/ideas_summary/webview.rq | First tab: a workspace overview for the active base — product-facing copy ( not index / debug jargon ). - At a glance: idea count, reference count, issues, bases, and a friendly readiness status. - Coverage: collapsible [overview_coverage_scores] ( lazy, non-blocking ). - Search: live cross-surface search over ideas, ideasets, attributes, and references for the active base; results group by surface with sample hits and actions to open the matching tab with the query applied ( [overview_search] ). - Export: buttons that open [features_export.export_webview] with HTML, Markdown, JSON, CSV, or PDF pre-selected ( or the form without a format override ). - Links: project site, support / email, GitHub. - Recent index / analyse activity preview ( idea names when available ) with a link to [timeline_page] for idea git history — this preview is not a git surface. | 0.057 | |
| overview_search | reqlan rq/extension/workspace-summary/ideas_summary/webview.rq | Overview search fans out across Ideas, Ideasets, Attributes, and References using the same ui-sql filters as those tabs. Debounced; returns counts plus a short sample of hits per surface; clicking a hit opens the idea ( or the attribute → Ideas handoff ); " Open in … " applies the search string on that tab. | 0.047 | |
| pages | reqlan rq/extension/workspace-summary/ideas_summary/webview.rq | - ideas summary [ideas_summary_panel] - header / status chrome with base switcher and link to [features_export.export_webview]; error state of the status chrome per ["../../local-context/activitybar.rq".error_status_bar] - [overview_page] [OverviewPanel] - [bases_tab] [BasesTable] - [ideas_list] - ideasets [IdeasetsTable] / [idea_sets_tab] - filterable and sortable via ui-sql layer; column filters and options - [attributes_tab] [AttributesTable] - references [ReferencesTable] - filterable and sortable via ui-sql layer; groupable by reference type per [group_by_type] - Graph view: see [graphical_graph_doc.graphical_graph] - [timeline_page] [TimelinePanel] - [index_panel] [IndexPanel] ( last tab — index health ) | 0.040 | |
| simple_views | reqlan rq/extension/workspace-summary/ideas_summary/webview.rq | Ideas Summary tables cover ideas ( title, path / namespace, main and other attributes, reference counts ) and references ( source and target path / namespace, whether in `.rq`, reference type ). | 0.058 | |
| status_table | reqlan rq/extension/workspace-summary/ideas_summary/webview.rq | Ideas Summary should render a status table summarising ideas by lifecycle state, priority, and completion. The status table should support sorting and filtering by tags and attributes. | 0.040 | |
| table_column_options | reqlan rq/extension/workspace-summary/ideas_summary/webview.rq | Each table has an Options control ( [TableOptionsMenu] ) to show or hide columns. Visibility persists per tab in workspaceState via [table_ui_state]. | 0.073 | |
| already_cached | reqlan rq/indexer/cache-reuse.rq | 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 | |
| diagnostics_consumers | reqlan rq/indexer/consumers.rq | Readers of [diagnostics_schema.diagnostics_sqlite] / [index_diagnostics_store]: - Index diagnostics webview ( [diagnostics_panel] / [index_diagnostics_webview] ) - Soft / hard sync writers that append sync_runs and file_timings - Ideas Summary timeline / problem list for activity rings and file issues ( Rust schema v2 ) [index_consumers] | 0.068 | |
| extension_ui_consumers | reqlan rq/indexer/consumers.rq | VS Code surfaces that query the live ideas store through [editor_index_adapter]: - Activity bar workspace / search / minigraph / todo ( [activity_bar_host] ) - Ideas Summary panel ( [ideas_summary_panel] ) — prefer paged SQL and capped graph queries - Reference-search and wildcard-match panels ( may call `listAllIdeas`; see [cache_reuse.avoid_full_list_all_ideas] ) - Chat / AI commands that call `getFileContext`, `getLocalGraph`, or semantic search - Refactor and mutation hooks that read inbound edges from the store - Name and attribute catalog sync that pushes index rows into the language server The Rust language server may open the ideas index read-only for rename, find-references, and fallback completion. Open-file inbound inlays and file CodeLens use the host-pushed snapshot first ( no SQLite in those handlers ). [index_consumers] | 0.086 | |
| headless_consumers | reqlan rq/indexer/consumers.rq | CLI and MCP open the same per-base application memory via [analysis_runtime] / `openAnalysisApi`. They sync on activate or command ( ["./sequencing.rq".headless_sync_on_ready] ). They have no file watchers and no idle stale loop. Shared path rules: [application_memory], `REQLAN_INDEX_PATH` when set. [index_consumers] [cli_package] [mcp_server] | 0.054 | |
| activity_ring_tables | reqlan rq/indexer/diagnostics-schema.rq | Rust diagnostics schema v2 also keeps activity rings: - `document_updates` — Ideas Summary timeline “ index ” events ( `file_uri`, `idea_count`, `ideas`, `at` ) - `workspace_changes` — watcher create / change / delete activity ( `file_uri`, `change`, `at` ) Cap: 50 rows each ( [diagnostics_rust] `MAX_ACTIVITY` ). [diagnostics_sqlite] | 0.040 | |
| diagnostics_meta_table | reqlan rq/indexer/diagnostics-schema.rq | Table `meta` — `key TEXT PRIMARY KEY`, `value TEXT NOT NULL`. Stores `schema_version` for [diagnostics_sqlite]. | 0.040 | |
| file_index_issues_table | reqlan rq/indexer/diagnostics-schema.rq | Table `file_index_issues` ( Rust diagnostics schema v2 ) persists parse / extract / persist problems. Columns: `file_uri`, `line`, `column`, `message`, `phase`, `idea_names`, `cause`, `at`. Cap: 500 rows. Survives editor restart for Ideas Summary problem lists. [diagnostics_sqlite] | 0.040 | |
| file_timings_table | reqlan rq/indexer/diagnostics-schema.rq | Table `file_timings` stores per-file duration rows for a sync run. Columns: `id`, `run_id` ( FK → `sync_runs` ), `file_uri`, `duration_ms`, `outcome`, `path_depth`. Indexes: `idx_file_timings_run`, `idx_file_timings_duration`. [diagnostics_sqlite] [index_diagnostics_timing] | 0.040 | |
| sync_runs_table | reqlan rq/indexer/diagnostics-schema.rq | Table `sync_runs` records one soft / hard / idle indexing pass. Columns include: `id`, `started_at`, `finished_at`, `duration_ms`, `trigger`, `total_files`, `skipped_mtime`, `indexed_files`, `error_files`, `cancelled`, `sum_file_duration_ms`, `avg_path_depth`. Retention keeps the latest 50 runs ( [diagnostics_rust] `MAX_RETAINED_RUNS` ). Feeds [index_diagnostics_metrics] and [index_diagnostics_webview]. [diagnostics_sqlite] ["./sequencing.rq".index_triggers] | 0.070 | |
| capabilities | reqlan rq/indexer/indexer.rq | Product capabilities over the [index]: [index_ideas], [index_technology], [local_graph_analysis], [semantic_analysis], [git_dates], [completion_tracking], [deprecation_impact_analysis], [index_comment_reference_inclusion], and host triggers in [graph_analysers]. Indexing performance timing and diagnostic UI: ["../extension/index-host/index-diagnostics.rq".index_diagnostics]. | 0.040 | |
| completion_tracking | reqlan rq/indexer/indexer.rq | Track and surface completion, outstanding work, and open issues across the requirement graph. Completion tracking should derive from @ status, @ tags, and other lifecycle attributes where present. | 0.050 | |
| consumption | reqlan rq/indexer/indexer.rq | Consumers of the analytical [index]: - [extension] — thin VS Code adapter [editor_index_adapter] ( file watchers, Uri conversion, UI status ) - CLI ( `["../cli/cli_package.rq".cli_package]` ) and MCP — headless [analysis_runtime] The extension does not own the indexing engine; it only hosts the adapter. Module map: [consumers.index_consumers]. | 0.146 | |
| definition | reqlan rq/indexer/indexer.rq | The indexer should live in the [core_analysis] module. On-disk schema: [sqlite_schema.ideas_index_sqlite] and [diagnostics_schema.diagnostics_sqlite]. Layout and WAL sidecars: [sidecars.reqlan_directory_layout]. Consumers: [consumers.index_consumers] ( extends [consumption] ). Sequencing and triggers: [sequencing.index_sequencing] ( extends [triggers] ). Cache reuse opportunities: [cache_reuse.index_cache_reuse]. | 0.040 | |
| deprecation_impact_analysis | reqlan rq/indexer/indexer.rq | Analyse the impact of deprecated ideas on dependent requirements. Deprecation analysis should report downstream ideas that reference or depend on deprecated items. | 0.050 | |
| index | reqlan rq/indexer/indexer.rq | The ideas graph indexer: parse `.rq` with the native engine, extract ideas / edges, persist to rusqlite SQLite. Same-file `[ideaset.member]` edges target the member leaf ( ["../language/syntax.rq".references_to_subidea] ). Wildcard path + idea fan-out: [wildcard_reference_edges] ( ["../language/imports.rq".wildcard_references] ). Ideas Summary graph can hide those edges via [ideas_summary_doc] / ["../extension/workspace-summary/ideas_summary/graphical_graph.rq".wildcard_refs_toggle]. Soft mtime sync skips unchanged files. `extract_version` in the ideas index meta is the extract-rule generation. When that number does not match the engine, sync rebuilds so stale edges do not remain ( ["../language/syntax.rq".inline_code] ). Owned by [ownership]; consumed per [consumption]. | 0.587 | |
| index_diagnostics_timing | reqlan rq/indexer/indexer.rq | Soft sync and per-file index paths record durations into the diagnostic index under [app_memory_doc.index_diagnostics_store]. See ["../extension/index-host/index-diagnostics.rq".index_diagnostics_metrics]. Must not block [nonblocking_index]; recording failures are swallowed / logged by the store and must not fail the sync. | 0.096 | |
| index_ideas | reqlan rq/indexer/indexer.rq | Each ["../bases/base.rq".base] maintains an index of its ideas for fast lookup and navigation ( [index] ). The index should update incrementally as. rq files change within that base ( nested child bases excluded ). Persistence lives in [app_memory_doc.application_memory] per base, shared with CLI and MCP — not VS Code extension storage. Engine ownership: [workspace_index] in `@reqlan/analytical`; multi-base via BaseRegistry; editor watches via [editor_index_adapter]. | 0.173 | |
| index_technology | reqlan rq/indexer/indexer.rq | The [index_ideas] graph database is rusqlite via the core native engine. On-disk location is [app_memory_doc.application_memory] ( `<base>/.reqlan/ideas-index.sqlite` ), not `context.globalStorageUri`. Implementation: [application_memory_impl], [workspace_index], headless [analysis_runtime] for CLI / MCP, and [editor_index_adapter] for the VS Code host. | 0.152 | |
| indexing_incrementality | reqlan rq/indexer/indexer.rq | Indexing should be incremental: watcher-driven single-file updates, and soft full syncs that skip unchanged files by stored mtime. Hard rebuilds reparse everything. Detail and UX ( progress, cancel, non-blocking UI ): [nonblocking_index]. | 0.161 | |
| local_graph_analysis | reqlan rq/indexer/indexer.rq | Provide a function to access a small slice of the graph around a given idea. | 0.118 | |
| ownership | reqlan rq/indexer/indexer.rq | The [index] / indexer lives in `packages/analytical` ( `@reqlan/analytical` ). Canonical single-base engine: [workspace_index] ( `WorkspaceIndex` facade ). Sync / idle impl: [workspace_index_sync]; one-file parse + persist: [workspace_index_file]; mtime stale diff: [workspace_mtime]. Multi-base registry: one `WorkspaceIndex` per discovered ["../bases/base.rq".base] under [app_memory_doc.application_memory] ( `<base>/.reqlan/` ). Headless entry: [analysis_runtime] via native-only `openAnalysisApi` ( CLI / MCP ). On-disk store path: [application_memory_impl] under `<base>/.reqlan/` — see [app_memory_doc.application_memory]. | 0.237 | |
| semantic_analysis | reqlan rq/indexer/indexer.rq | Search the graph for ideas related to a given idea or ideaset. | 0.050 | |
| triggers | reqlan rq/indexer/indexer.rq | Index refresh behaviour: - [indexing_incrementality] / [nonblocking_index] — incremental where possible - [graph_analysers.indexing_trigger_filesave] / [app_memory_doc.idea_index_triggers] — on `.rq` or indexed code-file change - [graph_analysers.indexing_trigger_manual] — manual reindex commands - [graph_analysers.indexing_trigger_open] — one soft sync after the activity-bar first-paint gate - [graph_analysers.indexing_trigger_auto] — idle background mtime staleness check ( cheap; not a full reindex ) Editor watches + idle scheduler: [editor_index_adapter]; headless syncs on runtime activate. Full sequence: [sequencing.index_sequencing]. | 0.148 | |
| base_catch_up | reqlan rq/indexer/sequencing.rq | Activating or pinning a base schedules an open + soft sync when that base is not ready. Nested child bases stay excluded from the parent walk ( [index] ). [index_sequencing] [indexing_trigger_open] | 0.040 | |
| extension_startup_sequence | reqlan rq/indexer/sequencing.rq | Extension host order ( [first_paint_startup], [background_startup] ): 1. `activate` registers UI only; it must not await index sync. 2. Activity bar paints → startup gate; language client may start on a short fallback. 3. Index adapter activates after paint ( or a short fallback timer ). 4. One native scan ( [cache_reuse.single_sync_walk], [scan_limits] ) records bases and file paths. Soft [soft_sync] then runs for the **active** base only ( [indexing_trigger_open] ); other bases stay closed until pin / focus / file events ( ["../extension/index-host/sqlite-artifact-lifecycle.rq".event_driven_base_access] ). 5. Install watchers for `.rq` and code globs; watch `.reqlan` marker create / delete for rediscovery ( not SQLite child writes ). 6. Idle timer runs [idle_stale_check] on already-open bases, then releases unused SQLite artifacts ( ["../extension/index-host/sqlite-artifact-lifecycle.rq".release_when_idle] ). [index_sequencing] [editor_index_adapter] Open-file editor links follow ["../extension/language/support/open-file-sequencing.rq".open_file_algorithm] and must not wait for this crawl. | 0.054 | |
| hard_rebuild | reqlan rq/indexer/sequencing.rq | Hard rebuild ( `clearAndRebuildIndex` / Clear & rebuild ) wipes ideas-index rows and reindexes every file. It must not delete [diagnostics_schema.diagnostics_sqlite]. Trigger: [indexing_trigger_manual]. [index_sequencing] [nonblocking_index] | 0.040 | |
| headless_sync_on_ready | reqlan rq/indexer/sequencing.rq | CLI and MCP call [analysis_runtime] `ensure_ready`, which runs a soft [soft_sync] from [cache_reuse.single_sync_walk] once before serving commands. No watchers and no idle loop ( [consumers.headless_consumers] ). [index_sequencing] | 0.054 | |
| idle_stale_check | reqlan rq/indexer/sequencing.rq | When the editor is idle, use document paths already stored in SQLite ( do not scan the tree ), load mtimes in one SQLite read, compare FS mtimes in memory, and index only mismatched or new files; drop deleted docs in one batch. If nothing is stale: no state transition, no progress UI, no parse. Prefer unfocused windows; cancel if the user becomes active again. Only bases that are already open participate — idle must not reopen every discovered base ( ["../extension/index-host/sqlite-artifact-lifecycle.rq".release_when_idle] ). After the check, release unused SQLite artifacts ( inactive bases always; all bases when unfocused ). Extension host only — see [indexing_trigger_auto]. [index_sequencing] | 0.075 | |
| index_triggers | reqlan rq/indexer/sequencing.rq | Trigger map for [index_sequencing]: - [indexing_trigger_open] — one soft sync after activity-bar first paint / base activate - [indexing_trigger_filesave] — watcher create / change / delete on `.rq` and allowlisted code files - [indexing_trigger_manual] — Refresh ( soft ) or Clear & rebuild ( hard ) - [indexing_trigger_auto] — idle mtime stale check; index only dirty paths Git-dates fill is not an index trigger ( [idea_index_triggers] ). Each sync run may record a `trigger` string in [diagnostics_schema.sync_runs_table]. | 0.049 | |
| soft_sync | reqlan rq/indexer/sequencing.rq | Soft full sync ( `syncWorkspace` / Refresh ) indexes the path list from [cache_reuse.single_sync_walk]. It skips files whose FS mtime matches [ideas_schema.documents_table]. `mtime_ms`, and upserts changed files only. Progress and cancel follow [nonblocking_index]. Prefer a single walk ( [cache_reuse.single_sync_walk] ). Triggers: [indexing_trigger_open], [indexing_trigger_manual] ( Refresh ). [index_sequencing] | 0.081 | |
| watcher_incremental | reqlan rq/indexer/sequencing.rq | File create / change / delete indexes or deletes that one path only — never a full base walk. Covers `.rq` sources and allowlisted code files for [index_code_files]. Trigger: [indexing_trigger_filesave]. [index_sequencing] [indexing_incrementality] | 0.040 | |
| json_siblings | reqlan rq/indexer/sidecars.rq | JSON files under `.reqlan/` are application-memory siblings, not SQLite sidecars: - `config.json` — base import roots and settings ( [base_configuration] ) - `export_settings.json` — export form defaults for [export_webview] They do not hold idea graph rows. Tools must not treat them as index cache. [reqlan_directory_layout] | 0.063 | |
| vcs_ignore_for_stores | reqlan rq/indexer/sidecars.rq | New bases seed `.reqlan/.gitignore` so SQLite databases and their WAL / SHM / journal sidecars stay out of version control ( [base_initialisation_ignore] ). `.rqignore` is separate: it filters discovery / index walks, not VCS ( [rqignore] ). [sqlite_wal_sidecars] [reqlan_directory_layout] | 0.063 | |
| documents_table | reqlan rq/indexer/sqlite-schema.rq | Table `documents` tracks which files the indexer has seen. Columns: - `file_uri` TEXT PRIMARY KEY — base-relative path - `content_hash` TEXT NOT NULL - `indexed_at` TEXT NOT NULL - `mtime_ms` REAL ( schema v3 ) — soft sync skip when FS mtime matches Soft sync and idle stale checks use this table ( ["./sequencing.rq".soft_sync], ["./sequencing.rq".idle_stale_check] ). [ideas_index_sqlite] | 0.080 | |
| edge_kinds | reqlan rq/indexer/sqlite-schema.rq | Persisted edge `kind` values ( [index_types] / analytical `EdgeKind` ): - `references` — idea → idea bracket or wiki reference - `wildcard_reference` — one row per wildcard match ( or one unresolved row ) - `file_reference` — idea → file path reference - `ideaset_member` — ideaset → member idea - `import` — import relationship - `comment_link` — idea ← code-file `rq:` comment ( ["./indexer.rq".index_code_files] ) [edges_table] | 0.051 | |
| edges_table | reqlan rq/indexer/sqlite-schema.rq | Table `edges` stores directed links in the ideas graph. Columns: - `id` TEXT PRIMARY KEY - `source_id` TEXT NOT NULL — FOREIGN KEY → `ideas(id)` ON DELETE CASCADE - `target_id` TEXT nullable — idea target when resolved - `target_file` TEXT nullable — file target ( for example comment links ) - `kind` TEXT NOT NULL — see [edge_kinds] - `label` TEXT nullable - `source_line` INTEGER ( schema v2 ) - `snippet` TEXT ( schema v2 ) - `is_resolved` INTEGER NOT NULL DEFAULT 1 ( schema v2 ) Indexes: `idx_edges_source`, `idx_edges_target`, `idx_edges_target_file`. [ideas_index_sqlite] ["./indexer.rq".wildcard_reference_edges] ["./indexer.rq".index_code_files] | 0.082 | |
| ideas_table | reqlan rq/indexer/sqlite-schema.rq | Table `ideas` stores one row per idea, one-liner, or ideaset. Columns: - `id` TEXT PRIMARY KEY - `name` TEXT NOT NULL - `kind` TEXT NOT NULL — `block` | `oneliner` | `ideaset` ( [index_types] ) - `file_uri` TEXT NOT NULL — path relative to the owning base root - `line_start` / `line_end` INTEGER NOT NULL - `summary` TEXT NOT NULL - `attributes_json` TEXT NOT NULL DEFAULT `'{}'` - `content_hash` TEXT NOT NULL - `git_created_at` / `git_modified_at` TEXT nullable - `git_change_count` INTEGER nullable ( schema v4 ) Indexes: `idx_ideas_file(file_uri)`, `idx_ideas_name(name)`. [ideas_index_sqlite] ["../extension/index-host/git-codelens.rq".git_dates_background_indexing] | 0.045 | |
| meta_table | reqlan rq/indexer/sqlite-schema.rq | Table `meta` holds key / value rows ( `key TEXT PRIMARY KEY`, `value TEXT NOT NULL` ). Known keys: - `schema_version` — string form of [ideas_index_sqlite] version ( `"4"` ). - `extract_version` — extract-rule generation from the native engine. When it does not match the running engine, soft sync rebuilds so stale edges do not remain ( ["./indexer.rq".index], ["../language/syntax.rq".inline_code] ). [ideas_index_sqlite] | 0.040 | |
| schema_migrations | reqlan rq/indexer/sqlite-schema.rq | Base tables use `CREATE … IF NOT EXISTS` ( [schema_ts] `BASE_MIGRATIONS` / [schema_rust] ). Versioned upgrades run `(current+1)..=SCHEMA_VERSION`: - v2 — edge `source_line`, `snippet`, `is_resolved` - v3 — document `mtime_ms` - v4 — idea `git_change_count` Duplicate-column errors on ALTER are ignored so re-open is safe. Fresh databases create full v4 columns, then set `schema_version` to 4. Open pragmas: `foreign_keys=ON`, `journal_mode=WAL` ( [sidecars.sqlite_wal_sidecars] ). [ideas_index_sqlite] | 0.058 | |
| _file | reqlan rq/ingest/ingest.rq | - This file is used for preingestion of ideas into the graph - It is for ideas that are being drafted, haven't been placed, haven't been linked or represent a significant superseding descructive change to the graph - i. e. requiring careful integration to leave no trace of deprecated ideas, leave no duplication and leave no conflicts - ingestion must pass validation via `pnpm run val` ( ["../development/core.rq".pnpm_val]: check, test, build ) - ingestion requires reqiurement integration into the graph, followed by actual implementation if requested. | 0.046 | |
| attribute_namespaceing | reqlan rq/ingest/ingest.rq | an idea's attributes should be referenceable in links. an idea should be able to access `[attribute_namespacing.example]` Links should link appropriately the parser, lexer,... extension, html... | 0.040 | |
| code-action-duplication | reqlan rq/ingest/ingest.rq | I don't know why, but sometimes, the code action drop down duplicates options until there are many. Without just truncating or deduplicating, resolve the explosion. | 0.040 | |
| code-comment-syntax-errors | reqlan rq/ingest/ingest.rq | any time a comment line contains `rq:[*]`, or common patterns it should be parsed, and be considered in `reqlan check`... | 0.040 | |
| empty-attributes | reqlan rq/ingest/ingest.rq | it should be perfectly acceptable to have empty attributes e. g.: This should not break the parsing of the file. ( Including in extension errors as well as parser / lexer / tokenizer errors ) | 0.040 | |
| html-export-changes | reqlan rq/ingest/ingest.rq | The print page should be aware of the [idea-leading-whitespace] | 0.040 | |
| idea-leading-whitespace | reqlan rq/ingest/ingest.rq | Block ideas often have leading whitespace The base level should be decided by the first line, subsequent lines should not be fully trimmed THis line has 4 spaces ( same as first line ). It should parse with no leading whitespace This line has 8 spaces ( 4 more than first line ) it should parse with 4 spaces as part of the content. | 0.045 | |
| reqlan-check-glob-patterns | reqlan rq/ingest/ingest.rq | When running `reqlan check` it should be possible to specify - - glob patterns to check specific files. It should be possible to specify multiple glob patterns. If the targets are outside of the glob, they should be checked, but, not recursively. | 0.040 | |
| attribute_configuration | reqlan rq/language/attributes.rq | The extension should be largely unopinionated about attributes, allowing users to extend as they see fit. attributes should be as slim as possible to allow for minimised bloat. | 0.049 | |
| configuration_import_root_alias | reqlan rq/language/imports.rq | An import path may start with an alias string, then `/`, then a relative path under that alias's import-root directory. Default alias string: `@`, written as `@/` plus a path relative to the import root. Default import-root directory: the workspace folder that contains the `.rq` file ( not the document directory ). The path after `/` is joined to that alias's import-root directory; the alias itself must be followed by `/` ( e. g. `@reqs` is not aliased ). Alias strings and import-root directories are configured as [configuration.configuration_import_roots] in the applying `.reqlan/config.json` from [configuration.configuration_location]. A configured relative `root` resolves against the base root ( parent of `.reqlan` ); an omitted `root` keeps the workspace-folder default. When several configured aliases could match a path, the longest alias wins. Related path forms: [import_paths], ["../extension/language/comment-references/functional-code-comment-references.rq".comment_reference_import_root_alias]. Completion: ["../extension/language/syntax/features-syntax.rq".code_completion]. File references and the language server use the same locate rule as ["../core_analysis/check.rq".check]: load `importRoots` from the applying `.reqlan/config.json` for the source file ( [configuration.configuration_location] ), then `resolve_rq_path` and join the workspace when the result is relative — including paths with spaces such as `["@/my file.ts"]`. | 0.296 | |
| import_error_recovery | reqlan rq/language/imports.rq | A malformed import must not invalidate the rest of the file. Recoverable invalid `from` shapes parse as local import nodes with a line-level diagnostic: - `from "path" as alias` ( mistaken namespace form ) — suggest `import "path" as alias` or `from "path" import <idea>` - bare `from "path"` — require the `import <idea>` clause - `from` without a quoted path — consume the remainder of the line as an invalid import Later imports and top-level ideas continue to parse and link normally. Same recovery posture for nameless top-level braces: ["./syntax.rq".no_name_idea_safe_warning]. If lex / parse never completes, see ["./parser_lexer.rq".parse_budget_timeout]. | 0.058 | |
| import_from | reqlan rq/language/imports.rq | From-import syntax uses from, a quoted path, import, and an idea name. From-import may list more than one idea. Separate the names with commas. From-import may include an alias using as. The parser records a span for the path, each idea name, and each alias. Each of those tokens is its own document link. The path links to the file. An idea name links to that declaration. An alias links to the same declaration. When the alias contains the imported idea name, Ctrl + click on a bracket reference still treats the whole alias as one link. See ["../extension/language/syntax/features-syntax-highlighting.rq".aliased_from_import_ctrl_click]. The language server uses the parser spans: ["../extension/language/support/language-server-rust.rq".language_server_rust]. | 0.220 | |
| import_keywords | reqlan rq/language/imports.rq | The keywords import, from, and as are reserved for import statements. Import keywords may also appear as ordinary words in idea body text when not at statement start. | 0.047 | |
| import_namespace | reqlan rq/language/imports.rq | Namespace import syntax uses import and a quoted path. Namespace import may include an alias using as. A bracket reference to the alias alone — for example `[context_model]` — opens the imported file and links only the alias name, like an ideaset namespace. Qualified references through the alias — for example `[context_model.builder]` — resolve ideas from the imported module. A qualified reference may also name an import alias bound in that module. Example: `[core_arch.analysis_runtime]` when `analysis_runtime` is an import alias in the imported file. That name is not an idea. Check does not report it as a missing idea ( ["../core_analysis/check.rq".check_qualified_missing_idea] ). A from-import of that alias is still a missing idea. | 0.179 | |
| import_paths | reqlan rq/language/imports.rq | Import path strings may use relative paths such as. / exampleimport. rq. Import path strings may use paths containing folders. The import target may be a file or a folder; see ["../extension/language/support/features-imports.rq".import_folder_targets]. Import path strings may use remote urls such as https://company.com/reqs/style.rq. Import path strings may use an import-root alias shorthand such as `@/path/relative/to/import/root`; see [configuration_import_root_alias]. Path forms apply to from-import, namespace import, qualified import, file references, and qualified comment references ( `rq:["@/path".idea]` ); see [import_from], [import_namespace], [import_qualified], ["./syntax.rq".reference_file], and ["../extension/language/comment-references/functional-code-comment-references.rq".comment_reference_import_root_alias]. Editor completion for path strings is covered by ["../extension/language/syntax/features-syntax.rq".code_completion]. | 0.155 | |
| import_qualified | reqlan rq/language/imports.rq | Qualified import syntax uses import, a quoted path, a dot, an ideaset name, a dot, and an idea name. Qualified import may include an alias using as. | 0.126 | |
| import_tokenisation | reqlan rq/language/imports.rq | if an import is given an alias, then the base name is still available as a variable name and should not cause a conflict. Only the alias binds in the importing file; the imported idea's base name may be reused for a local idea. e. g. The same rule applies to qualified imports with `as`. Unaliased imports still bind the idea name and conflict with a local idea of that name. Related: ["../extension/language/syntax/features-syntax.rq".sensible_alias_support]. | 0.053 | |
| lexer_bridge_to_syntax | reqlan rq/language/parser_lexer.rq | The context-sensitive token builder is what makes [block_idea] and prose braces coexist: structural `{` / `}` are only those that open or close ideas, while [nested_curly_braces] stay body text. [context_sensitive_lexer_scaling] is the performance contract for that bridge; [code_snippets] is the opacity contract so fence interiors never feed the brace timeline. Index-path Rust port: ["../core_analysis/rust_port.rq".lexer_rust] / ["../core_analysis/rust_port.rq".parser_rust]. | 0.077 | |
| recovery_vs_budget | reqlan rq/language/parser_lexer.rq | [no_name_idea_safe_warning] and [import_error_recovery] keep a *finished* parse usable after local mistakes. They do not help when lex / parse never returns — that failure mode is [parse_budget_timeout]. Workspace load still isolates per-document throws so one bad file cannot abort LSP init; the budget turns non-termination into the same “ leave this file unloaded ” outcome, with diagnostics. | 0.069 | |
| closing_nested_curly_braces | reqlan rq/language/syntax-edge-cases.rq | if, for some reason, there is a prose block containing only closing curly braces, they should be escaped and allowed \ } like this. | 0.040 | |
| nested_curly_braces | reqlan rq/language/syntax-edge-cases.rq | if there is a prose block containing curly braces, { such as this one } they should be treated as part of the prose. Matching braces that end a line — including adjacent pairs like { { SITE_URL } } — stay in the body; they must not close the enclosing idea. A lone `}` on its own line still closes the structural block so an unbalanced prose `{` cannot swallow the idea closer. | 0.108 | |
| one_liner_curly_brace_context | reqlan rq/language/syntax-edge-cases.rq | this should { be acceptable } as well | 0.050 | |
| attribute_forms | reqlan rq/language/syntax.rq | A bare attribute name after @ denotes a true flag or render keyword. A negated flag uses a trailing bang after the attribute name. A valued attribute uses a space after the attribute name followed by a value. A colon after the attribute name is optional legacy syntax and is not part of the value. Common attributes include plan, status, priority, criticality, confirmation, owner, log, tags, and references with the @ prefix. Any custom attribute name is allowed. | 0.049 | |
| attribute_location | reqlan rq/language/syntax.rq | Marked attributes must be at the start of a line. @ this_is_not_an_attribute | 0.049 | |
| attribute_marker | reqlan rq/language/syntax.rq | Attributes are introduced with the @ prefix. Attribute names follow identifier rules. | 0.066 | |
| attribute_values | reqlan rq/language/syntax.rq | Attribute values may be unstructured scalar text on the same line. Attribute values may be block values in curly braces. Attribute values may be list values in parentheses. | 0.049 | |
| block_idea | reqlan rq/language/syntax.rq | A block idea is a name followed by curly braces that contain a body and optional attributes. The opening `{` may share the line with the closing `}` ( `name {}`, `name {hello}` ). The opening `{` may also sit at the end of the name line, with the closer on a later line. `{` starts a block only when it is immediately after the name ( optional spaces ). If other text is between the name and `{`, the line is a [simple_idea] and the braces are body text. The first unstructured text in an idea body is the main description when no other body attribute is marked. | 0.099 | |
| code_snippets | reqlan rq/language/syntax.rq | Idea bodies and block attribute values may embed fenced code blocks delimited by triple backticks. An opening fence is three backticks as the first non-whitespace characters on a line, optionally followed by a language tag such as python or rq. A closing fence is three backticks as the first non-whitespace characters on a line. Three backticks in the middle of a line are prose. They do not open a fence. Everything between the fences is literal opaque text — it is not parsed as reqlan syntax. Keywords, imports, attributes, braces, and quotes inside a fence are inert for the parser and may be shown as examples without parse errors. Fenced blocks may span multiple lines and preserve their inner content verbatim. Brace-depth tracking must skip fence interiors so example braces cannot desync surrounding structure ( [no_name_idea_safe_warning] ). Related: ["../core_analysis/rust_port.rq".comment_span_align]. | 0.113 | |
| dash-or_undersore_delimited-idea | reqlan rq/language/syntax.rq | it should be possible to use dash or underscore delimited idea names. | 0.040 | |
| empty_attribute | reqlan rq/language/syntax.rq | A line that contains only @ is insignificant whitespace. Spaces or tabs may precede that @. Spaces or tabs may follow that @. The lexer consumes that @ as hidden whitespace. The parser does not build an attribute for that line. That line does not cause a parser error. That line does not cause a lexer error. That line does not cause a tokenizer error. That line does not cause an extension error. A flag keeps the form @ name. A negated flag keeps the form @ name!. A valued attribute keeps its value after the name. A syntax error on a different line is still reported. | 0.040 | |
| example_ideaset | reqlan rq/language/syntax.rq | Ideaset (example_ideaset) | 0.062 | |
| file_suffix | reqlan rq/language/syntax.rq | Reqlan requirement documents use the. rq file suffix. | 0.052 | |
| idea_name | reqlan rq/language/syntax.rq | Idea names are identifiers or double-quoted strings. Unquoted names follow identifier rules and may use letters, digits, underscores, and dashes, for example myidea, my_idea, or dash-or_underscore_delimited-idea. Quoted names allow spaces and other characters when wrapped in double quotes. Idea names must be unique within their ideaset or file. An idea, one-liner, and ideaset must not share a name in the same file. Idea names should not use reserved keywords. | 0.063 | |
| ideaset | reqlan rq/language/syntax.rq | An ideaset is a parenthesized, comma-separated list of idea names. Ideaset members may be unquoted identifiers or quoted strings. Ideasets act as namespace containers for ideas, nested ideasets, and references. A bare bracket reference `[ideaset_name]` targets the ideaset declaration in the same file per [same_file_reference]. A bracket reference `[ideaset.member]` targets the member leaf per [references_to_subidea]. | 0.108 | |
| lists | reqlan rq/language/syntax.rq | Parenthesized lists contain newline-separated items. Each list item is either a one-liner or a nameless block idea in curly braces. Lists may appear as attribute values and inside block bodies. Named lists use a label followed by a parenthesized item list; the opening parenthesis must be followed by a newline before the first item. Nested lists may appear inside block values or as list items; the opening parenthesis must be followed by a newline before the first item. Inline parentheses in body prose — for example continuous ( " live " ) physics or ( pixelRatio 1, no WebGL ) — are plain text, not lists. | 0.055 | |
| main_desription_lists_allowed | reqlan rq/language/syntax.rq | - lists are valid in. - so this should not raise any error. s | 0.040 | |
| naked_strings_in_body | reqlan rq/language/syntax.rq | Quoted text in idea bodies, attribute values, and list items is plain prose, not a string literal. Quote characters are preserved in the body text. For example, " Fit to view " in a bullet line is body text. String literals are reserved for import paths, top-level quoted idea names, and quoted paths inside bracket references. Quoted path-like body text is not a ["../reference_types.rq".file_reference]: ["../reference_types.rq".reference_edgecase]. | 0.065 | |
| name_only_ideas_it_should_be_possible_to_use_name_only_ideas_without_a_body | reqlan rq/language/syntax.rq | 0.040 | ||
| reference_brackets | reqlan rq/language/syntax.rq | Single-bracket references use square brackets around a target. Forms include ideaset-only, idea-only, ideaset dot idea, and idea dot attribute targets. An idea dot attribute target follows [attribute_namespacing]. | 0.263 | |
| reference_embedding | reqlan rq/language/syntax.rq | References may appear inline in description, plan, or other attribute values. References may be declared explicitly in @ references or implied by mention elsewhere. Reference kinds include dependency, incompatible with, applies to, and related to. References may use wildcards and apply to namespaces or ideasets — see ["./imports.rq".wildcard_references] for the qualified path + idea-pattern form. | 0.209 | |
| reference_file | reqlan rq/language/syntax.rq | References may target arbitrary files, not only. rq files. File reference syntax uses a bracketed quoted path. A relative path resolves from the document directory. When that path climbs with `..` and the file is not there, the same path is tried from each ancestor directory up to the workspace folder. The document-directory file wins when it exists. Line or line-range references append `L#n` or `L#n-m` after the path inside the brackets. Test-name references append `:` and the test title after the path ( for example `./app.test.ts:lists items` ). The first `:` after the path starts the title; later `:` characters stay in the title ( `e2e: …` ). `://` and a Windows drive `C:` / `C:/` are part of the path, not a test suffix. Symbol references append a dot-separated symbol path after the quoted file path. Quoted body text is not a file reference: ["../reference_types.rq".reference_edgecase]. | 0.266 | |
| reference_qualified | reqlan rq/language/syntax.rq | Cross-file references may qualify an import path or alias with an idea name. Qualified wikilinks may combine a quoted import path with a dot and idea name. A quoted path opens the target file as an ideaset ( ["./imports.rq".anonymous_imports_allowed] ). Partial from-import of that path does not restrict which ideas the quoted path can name. | 0.247 | |
| reference_wikilink | reqlan rq/language/syntax.rq | Double-bracket wikilinks use doubled square brackets around a target. Wikilinks may include an obsidian-style alias pipe with a display label after the target. A bare pipe character in body prose — for example kind: idea | file | selection — is plain text, not wikilink syntax. | 0.230 | |
| round_brackets | reqlan rq/language/syntax.rq | Round brackets indicate a list of ideas or attributes. Items may be separated by commas or newlines. Attribute list values may use commas or newlines; see @ example_list_attribute_using_commas and @ example_list_attribute_using_newlines. Parentheses in body prose — including API call shapes like cytoscape. animate ( { fit, easing: ' ease-out-cubic ' } ) — are plain text, not list syntax. | 0.045 | |
| same_file_reference | reqlan rq/language/syntax.rq | [reference_brackets] and [reference_wikilink] may target an idea, one-liner, or [ideaset] in the same file. The target may be declared before or after the reference. Forward references are valid. Circular references between declarations in the same file are valid. Resolution order: [reference_resolution_order]. | 0.100 | |
| simple_idea | reqlan rq/language/syntax.rq | A one-liner idea is written as a name followed by unstructured body text on the same line. A name-only idea is a one-liner with just the name and no body text. One-liner ideas do not continue onto subsequent lines. A `{` that is not immediately after the name is body text, not a block opener — see ["./syntax-edge-cases.rq".one_liner_curly_brace_context]. `name {}` and `name {hello}` are [block_idea] forms, not one-liners. | 0.075 | |
| string_and_reference_apostrophes | reqlan rq/language/syntax.rq | strings should use double or single apostrophes interchangeably and support backslash escapes. | 0.040 | |
| string_literals | reqlan rq/language/syntax.rq | String literals in import paths and quoted idea names may use double or single quotes. Escaped characters inside strings follow standard backslash escaping. | 0.064 | |
| subidea1 | reqlan rq/language/syntax.rq | hello | 0.062 | |
| subidea2 | reqlan rq/language/syntax.rq | hi, i'm a subidea | 0.040 | |
| idea-leading-whitespace | reqlan rq/language/syntax_whitespace.rq | A block body can have spaces or tabs before the text. The lexer counts a space and a tab as whitespace. A tab is one whitespace character. The parser does not replace a tab with spaces. The base indent is the whitespace at the start of the first body line. The first body line is the first line of body text in the block. The first body line can start after column 0. The base indent is still the whitespace on that line. A body line with the same whitespace as the base indent has no leading whitespace in the parsed text. A body line keeps the whitespace that remains after the base indent. The parser removes the base indent only when the line starts with that same whitespace. An attribute on its own line stays an attribute. Example: the first body line has four spaces. A later line with four spaces has no leading whitespace. A later line with eight spaces has four spaces in the parsed text. This line has the same four spaces as the first body line. This line has eight spaces. | 0.040 | |
| syntax_whitespace | reqlan rq/language/syntax_whitespace.rq | whitespace is not significant in attributes. this line is not an idea, it is part of the main content attribute ["../ontology.rq".attribute] | 0.040 | |
| centroid_search | reqlan rq/modelling/advanced_analysis.rq | allow user or agent to specify multiple nodes, and then to rank matches by lowest distance. | 0.040 | |
| markov_chain | reqlan rq/modelling/advanced_analysis.rq | graph traveral should be tracked to inform a markov chain model of the graph. | 0.040 | |
| pagerank | reqlan rq/modelling/advanced_analysis.rq | Search algorithm from google based on the graph structure? | 0.067 | |
| click | reqlan rq/ontology.rq | A CLI / MCP function that returns compact local context for a given idea, file, or path. No match uses search. More than one match is ranked by distance from the session. One match returns idea content plus outbound, backlink, and sibling counts ( no edges ). Indexed code files are click targets. Uses a SQLite ["./cli/click.rq".click_session]. Count caps and session cache size are configurable. see ["./cli/click.rq".click] | 0.066 | |
| reference_types | reqlan rq/ontology.rq | [reference] Kinds of [reference]. Details in ["./reference_types.rq"]. Index edge kinds live on [analytical_types] / [rust_index_types]. [idea_reference] [ideaset_reference] [comment_reference] [file_reference] [link_reference] [url_reference] [wildcard_reference] | 0.127 | |
| activity_bar_site_link | reqlan rq/phonebook.rq | The activity bar Context webview header info control opens phonebook link id `site` per ["./extension/local-context/activitybar.rq".info_site_link]. | 0.047 | |
| extension_readme_links | reqlan rq/phonebook.rq | The extension VSIX README uses phonebook link ids `site`, `github`, `vsc`, `openvsx`, `discord`, `github-sponsors`, and `email` for site, repository, marketplace, Open VSX, Discord, sponsorship, and contact URLs. Generation is defined in ["./distribution/distribution.rq".extension_readme]. | 0.054 | |
| npm_package_readme_links | reqlan rq/phonebook.rq | Publishable npm package READMEs ( `@reqlan/language`, `@reqlan/analytical`, `@reqlan/cli`, `@reqlan/mcp` ) use the same phonebook link ids as [extension_readme_links]. Generation is defined in ["./distribution/distribution.rq".npm_package_readme]. | 0.046 | |
| npm_packages | reqlan rq/phonebook.rq | Publishable npm packages ( `@reqlan/language`, `@reqlan/analytical`, `@reqlan/cli`, `@reqlan/mcp` ) live under the `packages` key in ["./phonebook.json"]. Package ids are `language`, `analytical`, `cli`, and `mcp`. The site Links section renders them under Packages per ["./site/site.rq".links] / ["./site/site.rq".package_icons]. Typed helpers: `phonebookPackages`, `getPhonebookPackage` in ["../scripts/phonebook.ts"]. | 0.095 | |
| phonebook | reqlan rq/phonebook.rq | Canonical project links and publishable npm package URLs live in ["./phonebook.json"]. Modules that need contact, repo, marketplace, Discord, sponsorship, or npm package URLs should read from there instead of hardcoding values. Typed access is shared via ["../scripts/phonebook.ts"] for the site and extension README generator. | 0.176 | |
| phonebook_icons | reqlan rq/phonebook.rq | Icon sets and lookup URLs live under the `icons` key in ["./phonebook.json"]. A link or package can omit `icon`. If `icon` is present, it references a set id ( `simple-icons`, `mdi`, … ) and slug `name` from that set's catalog. Search a set at its `search` URL when renaming or replacing icons. Surfaces render icons with Iconify via the packages listed in each set's `package` field per ["./development/core.rq".iconify_stack]. Site registry: ["../site/src/lib/phonebook-icons.ts"] per ["./site/site.rq".icon_registry]. | 0.057 | |
| root_readme_links | reqlan rq/phonebook.rq | The repository README uses phonebook link ids `site`, `github`, `vsc`, `openvsx`, `discord`, `github-sponsors`, and `email` for site, repository, marketplace, Open VSX, Discord, sponsorship, and contact URLs. Generation is defined in ["./distribution/distribution.rq".root_readme]. | 0.046 | |
| absorbed_and_dropped | reqlan rq/site/site.rq | Absorbed into the eleven: glue-semantics splits into [firmware_cloud_contract_showcase] and [module_surface_showcase]. agentic-planning and feature-tracking fold into [agent_context_showcase]. compliance becomes [audit_trail_showcase]. scattered-docs becomes [legacy_archaeology_showcase]. test-explanation upgrades into [test_proves_showcase]. arbitrary-attributes upgrades into [attribute_dialect_showcase]. static-connection upgrades into [firmware_cloud_contract_showcase]. data-not-ideas expands into [antipatterns_showcase]. graph-traversal upgrades into [graph_view_showcase]. control-system-sequencing upgrades into [interlock_showcase]. module-interface upgrades into [module_surface_showcase]. Dropped: todo-triage — too thin; triage is a byproduct of [agent_context_showcase], not a page. docs-attribute — sells tooling that does not exist; file refs to markdown belong inside other pages. | 0.040 | |
| assets | reqlan rq/site/site.rq | this site is published in in gh pages at the `/reqlan` path. Any assets in the / public folder should be referenced as `/reqlan/assets/...`. Embedded spec export hrefs follow the same base via [spec_html_export] / [html_export.html_export_url_base]. | 0.046 | |
| bidirectional_comment_links | reqlan rq/site/site.rq | rq-comment refs in TS, Python, C, ST, etc. Code points back, with working document links. A product story bound this way is [story_codebase_showcase]. | 0.051 | |
| brand | reqlan rq/site/site.rq | must be aligned with ["../brand.rq"] | 0.059 | |
| code_block_styling | reqlan rq/site/site.rq | Code blocks should be styled per language as a function of a classname; or by using an appropriate lightweight external dependency. Language ids live in ["../../site/src/content/types.ts"]. CodeLanguage —. rq,. ts,. md,. py, plus st / c / json / yaml for showcases. If using a dependency, it should parse at build, not in the browser. | 0.052 | |
| components | reqlan rq/site/site.rq | - sidebar per [sidebar_nav] - footer per [footer] - hero per [hero_section] - sticky page nav graph per [nav_graph] - links / contact per [links] - showcases - tutorials per [tutorials_section] - certification per [certs_reqs.certs] - FAQ per [faq_page] - support per [support_page_reqs.support_page] - content per [copy] - elevator pitch per [elevator_pitch_section] - featured-in social proof per [featured_in_section] - motivation per [motivation_section] - syntax per [syntax_section] - example per [example_section] - roadmap per [roadmap_section] - CTA: - install the extension and the CLI per [cta_icon] per [install_cli_menu] - GitHub star on the hero action row per [hero_github_star] - sticky draggable action buttons per [sticky_cta_node] - home-only quiz sticker edge tab per [quiz_sticker_tab] - 404 page ( just something silly / a redirect ) | 0.050 | |
| diagrams_are_never_dressed_as_code | reqlan rq/site/site.rq | ASCII arrow diagrams must not sit inside language- " rq " blocks. They get their own visually distinct block kind. aligns with [showcase_module] | 0.052 | |
| every_rq_block_must_parse | reqlan rq/site/site.rq | Every language- " rq " block in showcase content files must parse against the langium grammar. Prefer enforcement via a build step that runs the real parser over content. Site-wide ( landing + showcases ): [accurate_rq_snippets_must_parse]. aligns with [phase_1_parse_gate] | 0.057 | |
| every_showcase_ends_in_a_payoff | reqlan rq/site/site.rq | A diagnostic, a query response, a coverage report, or a graph. If there is no tooling output, it is not a showcase. | 0.051 | |
| features_not_demonstrated | reqlan rq/site/site.rq | Deliberately not demonstrated — they do not exist yet. Typed relation kinds, hover cards, autoformatting, JSON / CSV export palette commands, PDF binary, vector-embedding search. Keyword-scored search must not be marketed as semantic search / embeddings. | 0.040 | |
| features_tier_1 | reqlan rq/site/site.rq | The reasons to adopt. All verified as shipping today. | 0.040 | |
| features_tier_2 | reqlan rq/site/site.rq | The depth. Also shipping. | 0.040 | |
| images | reqlan rq/site/site.rq | The source logo is in the / public folder. A sharp dev script is used to generate pngs and favicons etc which should be executed if the svg source logo changes. The script also writes the Open Graph image `/og.png` ( 1200 × 630 ) per [meta_tags]. | 0.046 | |
| link_icons | reqlan rq/site/site.rq | The contact link row in [contact_component] renders an icon beside each phonebook link label that has an icon. Footer links that have an icon render through [phonebook_icon_component] per [footer]. per [links] per [development_core.current_link_icons] | 0.057 | |
| links | reqlan rq/site/site.rq | per [phonebook_reqs.phonebook] per [phonebook_reqs.npm_packages] per [phonebook_reqs.show_in_footer] Contact copy lives in ["../../site/src/content/contact.ts"] per [copy]. Contact shows phonebook `links` that are not opted out of the footer, then a Packages subsection for phonebook `packages`. per [link_icons] per [package_icons] | 0.131 | |
| logo | reqlan rq/site/site.rq | - there is a logo in the sidebar. | 0.040 | |
| one_worked_example_per_page | reqlan rq/site/site.rq | Consistent identifiers across every block on a page. The reader should trace one name from requirement to source to test to search result without re-orienting. | 0.051 | |
| package_icons | reqlan rq/site/site.rq | The contact Packages row in [contact_component] renders an icon beside each phonebook package label that has an icon. Package entries come from ["../phonebook.json"]. packages per [phonebook_reqs.npm_packages]. per [links] per [development_core.current_link_icons] | 0.070 | |
| phonebook_icon_component | reqlan rq/site/site.rq | [phonebook_icon_tsx_component] is the site's single render entry point for phonebook icons ( `@iconify/react` ). It accepts an optional phonebook `icon` ref. If the ref is absent, it renders nothing. If the ref is present, it renders an inline SVG with `aria-hidden`. Default sizing uses the `.phonebook-icon` class in ["../../site/src/styles/globals.css"]. Must remain compatible with static export per [simple_lightweight_and_static]. per [development_core.iconify_stack] | 0.102 | |
| routes | reqlan rq/site/site.rq | Marketing routes are statically generated App Router pages under ["../../site/src/app"]. Home `/` hosts landing sections; other top-level pages include quickstart per [quickstart_page], tutorials, showcase, FAQ per [faq_page], support per [support_page_reqs.support_page], certification per [certs_reqs.certs], and the embedded `/spec` export. per [sidebar_nav] per [faq_page] per [quickstart_page] per [support_page_reqs.support_page] per [certs_reqs.certs] | 0.056 | |
| showcase_languages | reqlan rq/site/site.rq | . rq blocks use the custom site tokenizer. Non-. rq blocks need Shiki coverage beyond today's ts / md / py — add st, c, json, yaml for the flagship domains. aligns with [phase_1_parse_gate] | 0.049 | |
| showcase_plan | reqlan rq/site/site.rq | Ideaset (showcase_plan) | 0.040 | |
| showcase_problems | reqlan rq/site/site.rq | Three concrete failures of the current set: Invalid reqlan. Samples use illegal attribute forms ( colon-list tags, pipe-scalar plans, nested reference objects ) that do not parse against the langium grammar. For a language project, shipping invalid samples on the marketing site is an own-goal. Prose dressed as semantics. A file ref followed by the word " implements " and an idea ref reads like a typed relation, but " implements " is body text. Reqlan has five edge kinds ( references, wildcard_reference, file_reference, ideaset_member, import, comment_link ) and none are user-declared. We imply a feature that does not exist while hiding the ones that do. Vapor features. Graph showcase tells people to run Reqlan: Export JSON, which is not registered. The docs-attribute page is built around an attribute with no special tooling. | 0.040 | |
| showcase_rules | reqlan rq/site/site.rq | Four editorial rules. Enforced in content and, where possible, at build time. See [every_rq_block_must_parse], [every_showcase_ends_in_a_payoff], [one_worked_example_per_page], [diagrams_are_never_dressed_as_code]. | 0.040 | |
| showcase_rules_set | reqlan rq/site/site.rq | Ideaset (showcase_rules_set) | 0.040 | |
| showcase_set | reqlan rq/site/site.rq | Ideaset (showcase_set) | 0.053 | |
| showcase_thesis | reqlan rq/site/site.rq | Current showcases demonstrate the syntax, not the toolset. A reader who finishes them thinks: you can write sentences in curly brackets. Nothing shows what you get back — no query and answer, no diagnostic, no graph, no round trip. The upgrade thesis: every showcase demonstrates one mechanism against a real domain problem. Code in, artifact out. No showcase ships without a payoff block. | 0.040 | |
| simple_lightweight_and_static | reqlan rq/site/site.rq | must be fully statically exported for GitHub Pages. All routes, including showcase detail pages, are generated at build time. The deploy workflow must upload only static HTML, JS, and assets from site / out. Build also embeds the workspace requirement graph under `/spec` per [spec_html_export]. | 0.116 | |
| site | reqlan rq/site/site.rq | the / site folder contains a static Next. js App Router landing page for reqlan. should align with [brand] Copy modules: [copy] Document head: [meta_tags] | 0.040 | |
| styling_architecture | reqlan rq/site/site.rq | styling should be handled primarily at the compoenent level with co-located css module files that are imported in the react components. | 0.094 | |
| sub_file_binding | reqlan rq/site/site.rq | Symbol refs `["auth.ts".login]`, line ranges ["adc.cL#41-58"], and test-name anchors ["x.test.ts:rejects expired token"]. Requirements attach to code at symbol granularity, in any language. | 0.051 | |
| workflow | reqlan rq/site/site.rq | Site deployment runs when an `site/v*` tag is pushed. Tags are created automatically on main by the release workflow per [distribution_reqs.deployment_flow]. The site workflow does not deploy on ordinary commits. per [distribution_reqs.site_distribution] | 0.040 | |
| show_dont_tell | reqlan rq/ui.rq | copy should be minimal and user facing. no long lists, no avoidable labels. | 0.052 |
Cluster graph
Initialising graph…