Printable idea sheet
active_base_switch
reqlan rq/bases/base.rq:139
Changing 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 triggers /
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 workspace_base_picker, Ideas Summary ideas_summary_base_scope.
Implemented by index-service.ts ( `setActiveBaseId` / `scheduleBaseCatchUp` ); engine: base-registry.ts `ensureBaseReady`, workspace-index.ts `ensureReady`.
Status: done
Interactive page: active_base_switch