Idea detail
base_nesting
reqlan rq/bases/base.rq:84
Summary
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.ts 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 ).
Attributes
Ancestor context
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].
active_base_switchChanging the active base is a * * pointer swap * * onto a per-base `WorkspaceIndex` / store. - Do * * not * * await soft-sync, hard-rebuild, or a full `.rq` walk on the switch call itself. - Host surfaces rebind views to the newly active store ( status snapshot, tables, context panes ) immediately. - If the selected base is not yet ready, show its readiness / progress and * * schedule * * the normal activate catch-up ( open if needed, then one soft sync ) fire-and-forget — same path as ["../indexer/indexer.rq".triggers] / ["../extension/features-graph-analysers.rq".indexing_trigger_open], not a special switcher rebuild. - Idle staleness checks also heal unopened / never-synced bases ( they cannot mtime-diff without a store ). - `activateAll` isolates open failures so one bad base cannot leave siblings stranded in `uninitialized`. - Editor-follow must not overwrite a user pin on the same refresh that applies the selection. Surfaces: activity bar ["../extension/module/activitybar-panels/workspace.rq".workspace_base_picker], Ideas Summary ["../extension/module/ideas_summary/base-scope.rq".ideas_summary_base_scope]. Implemented by [editor_index_adapter] ( `setActiveBaseId` / `scheduleBaseCatchUp` ); engine: [base_registry] `ensureBaseReady`, [workspace_index] `ensureReady`.
| Kind | Idea | Path | Snippet |
|---|---|---|---|
| file_reference | base_discovery | packages/analytical/src/core/base-discovery.ts | base-discovery.ts |
| file_reference | base_registry | packages/analytical/src/index-store/base-registry.ts | base-registry.ts |
| file_reference | ../../packages/analytical/test/base-discovery.test.ts:baseForPath picks longest matching root | packages/analytical/test/base-discovery.test.ts:baseForPath picks longest matching root | base-discovery.test.ts:baseForPath picks longest matching root |
| file_reference | ../../packages/analytical/test/base-discovery.test.ts:discovers nested bases and excludes child files from parent ownership | packages/analytical/test/base-discovery.test.ts:discovers nested bases and excludes child files from parent ownership | ["../../packages/analytical/test/base-discovery.test.ts:discovers nested bases and excludes child files from parent owne |
| references | implied_context | reqlan rq/bases/base.rq | implied_context |
| Kind | Idea | Path | Snippet |
|---|---|---|---|
| None | |||
| Kind | Idea | Path | Snippet |
|---|---|---|---|
| None | |||
Initialising graph…