Referenced by12
Labels10

Referencing ideas

IdeaStatusTagsSummaryKatz
baseA 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_initialisation_ignoredoneNew bases seed `<base>/.reqlan/.gitignore` so Git does not track SQLite application-memory files. Patterns cover the ideas index ( [base_ownership] ), the diagnostics store ( [app_memory_doc.index_diagnostics_store] ), and SQLite sidecars ( `*.sqlite`, `*.sqlite-journal`, `*.sqlite-shm`, `*.sqlite-wal` ). This file is Git ignore for `.reqlan/`. Path filters for discovery stay in `.rqignore` ( [extension_configuration.configuration_rqignore] / [app_memory_doc.rqignore] ). Written by [create_base_impl] as part of [base_initialisation] / ["../extension/host/installation.rq".base_installation].0.182
create_base_onboardingWhen 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
cli_package`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
initdoneThe cli should be able to initialise a new [base]. Creates `<path>/.reqlan/` ( empty directory is a valid marker ), matching [create_base_onboarding]. Headless helper lives in `@reqlan/analytical` so CLI and extension share one create-base path.0.162
configuration_locationAn 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
configuration_rqignoredoneEach base may define path ignore rules in `.reqlan/.rqignore` using **gitignore syntax**. Patterns are relative to the base root ( parent of `.reqlan` ), not the `.reqlan` directory. Owned by `@reqlan/analytical` so the CLI, MCP, and extension share one filter for discovery and indexing walks. Built-in defaults always apply ( dependencies, venvs, build output, VCS / editor stores, `*.db3` / sqlite DBs and SQLite sidecars, binary globs per ["../index-host/index.rq".binary_ignore], files that have no comments per ["../index-host/index.rq".commentless_file_ignore], `*.secret.rq`, hidden entries, and `.reqlan/` itself ); the on-disk file adds or overrides via the same syntax, including `!` negation. New bases seed `.reqlan/.rqignore` with those defaults ( ["../index-host/index.rq".rqignore] ). Missing or unreadable `.rqignore` still uses built-in defaults. Location convention: [configuration_location]. Application memory: ["../index-host/index.rq".application_memory].0.223
base_config_seeddoneNew bases write `.reqlan/config.json` with `$schema` pointing at the public v1 schema URL via [create_base_impl]. Seed shape: `{"$schema":"https://reqlan.com/schemas/v1/config.schema.json"}`. Semantics and discovery of applying config: [configuration.configuration_location], [configuration.configuration_import_roots], [bases.base_configuration]. Schema / editor validation: [configuration.configuration_schema_file]. A child base does not inherit a parent base's config file. Existing bases are not rewritten ( idempotent create leaves them alone ).0.076
installationreqlan 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
application_memorydoneBase-local application memory for reqlan tools lives under `<base>/.reqlan/`. The presence of `.reqlan` **marks** a directory as a ["../../bases/base.rq".base]; each base owns its own store. Shared by the VS Code extension, ["../../cli/cli_package.rq".cli_package], and MCP ( [mcp_server] ) — not VS Code `globalStorageUri` / extension-private storage. The ideas graph index ( [indexer.index_ideas] and [indexer.index_technology] ) persists as `ideas-index.sqlite` inside that directory. Schema: ["../../indexer/sqlite-schema.rq".ideas_index_sqlite]. Index timing diagnostics persist separately as `index-diagnostics.sqlite` ( [index_diagnostics_store] / ["./index-diagnostics.rq".index_diagnostics] ) so rebuilds of the ideas index do not wipe history. Click session state persists as `click-sessions.sqlite` ( ["../../cli/click.rq".click_session] ) so agent / CLI click cursors survive ideas-index rebuilds. Diagnostics schema: ["../../indexer/diagnostics-schema.rq".diagnostics_sqlite]. WAL sidecars and JSON siblings: ["../../indexer/sidecars.rq".reqlan_directory_layout]. Export form defaults ( all formats via ["../export/export.rq".export_webview], including HTML options in ["../export/html-export.rq".html_export_form] ) persist as `export_settings.json` in the same directory ( active base ). Path ignore rules live as `.rqignore` in the same directory ( [rqignore] / [configuration.configuration_rqignore] ). Git ignore for SQLite stores lives as `.gitignore` in the same directory ( ["../../bases/base.rq".base_initialisation_ignore] ). Path resolution is owned by [application_memory_impl] ( `resolveApplicationMemoryPath` ); consumers must use it ( or `REQLAN_INDEX_PATH` override for a single store ) so tools read and write the same store for a given base. Multi-base discovery / registry: ["../../bases/base.rq".multi_base_environment]. Index engine ownership: ["../../indexer/indexer.rq".ownership]. Extension wiring: [analytical_submodule]. Aligns with ["../../cli/cli_package.rq".function_parity]: shared analytical memory, not host-only state.0.494
rqignoredone`.reqlan/.rqignore` filters which paths discovery and indexing crawl, using gitignore syntax relative to the base root. Owned by [rqignore_impl] in `@reqlan/analytical` so CLI and editor share behaviour. Defaults cover `node_modules/`, virtualenvs, build dirs ( `bin/`, `generated/`, `out/` ), VCS / editor stores, database files ( `*.db3`, sqlite ) and SQLite sidecars, binary globs ( [binary_ignore] ), `*.html`, secrets, and hidden entries. Walks also skip common files that have no comments ( [commentless_file_ignore] ). New bases seed the file via [rqignore_initialisation]. Product configuration statement: [configuration.configuration_rqignore].0.296
rqignore_initialisationdoneNew bases seed `.reqlan/.rqignore` with comments that explain every feature of [rqignore], [binary_ignore], and [commentless_file_ignore]. Written when a base is created: ["../host/installation.rq".base_rqignore_seed] / ["../../bases/base.rq".base_initialisation]. Comments cover purpose ( discovery and index walks ), base-root relative paths, gitignore syntax, last matching rule, `!` negation, built-in defaults that always apply, binary opt-in, hidden paths, `*.secret.rq`, SQLite sidecars, files that have no comments ( [commentless_file_ignore] ), and `.reqlan/` itself. The seeded file is the editable surface. Built-in rules still apply if a user deletes a line. Existing `.rqignore` files are not rewritten ( ["../host/installation.rq".base_installation] is idempotent ).0.125

Reference labels

"../../../packages/analytical/test/create-base.test.ts:seeds .reqlan/.rqignore when creating a new base", "../../../packages/analytical/test/create-base.test.ts:seeds .reqlan/config.json when creating a new base", "../../packages/analytical/test/create-base.test.ts:creates .reqlan marker and reports created", "../../packages/analytical/test/create-base.test.ts:is idempotent when marker already exists", "../../packages/analytical/test/create-base.test.ts:seeds .reqlan/.gitignore that excludes sqlite artifacts", ../../../packages/analytical/test/create-base.test.ts:seeds .reqlan/.rqignore when creating a new base, ../../../packages/analytical/test/create-base.test.ts:seeds .reqlan/config.json when creating a new base, ../../packages/analytical/test/create-base.test.ts:creates .reqlan marker and reports created, ../../packages/analytical/test/create-base.test.ts:is idempotent when marker already exists, ../../packages/analytical/test/create-base.test.ts:seeds .reqlan/.gitignore that excludes sqlite artifacts