| 1 | # Project switch v1 |
| 2 | |
| 3 | Тела секции `project-switch-protocol-v1` из `agent-notes.md`. Длинный контур: `knowledge/worlds/workspace-context/playbook-multi-project-context-v1.md`. |
| 4 | |
| 5 | <!-- section:project-switch-protocol-v1 --> |
| 6 | ## Project Switch Protocol v1 |
| 7 | |
| 8 | **Назначение:** один **primary** `project-id` и один **scope** slice (L1) за раз в мультипроектном чате — без смешения репозиториев. Параллель **`mode-switch-protocol`** (WORK/HUMAN): не авто-угадывание, а **явные маркеры + дефолт из карты пути + переопределение**. |
| 9 | |
| 10 | ### Маркеры в сообщении пользователя (высший приоритет) |
| 11 | |
| 12 | - **`[PRIMARY:<project-id>]`** — какой трек сейчас главный. Полный перечень id без таблицы: `knowledge/work/projects/door-to-singularity/door-to-singularity/project-ids-quickref-v1.md`; **алиасы** (например `CIDE` → `cascade-ide`, `DTS` → `door-to-singularity`) — в том же файле, секция «Алиасы → канон»; в каноне и путях после резолва — только канонический id. Каталоги и детали — `knowledge/work/projects/README.md`, таблица — `knowledge/work/projects/door-to-singularity/door-to-singularity/README.md`. Примеры: `cascade-ide`, `equation-to-ca-cuda`, `ca-substrate-agent`, `agent-first-learn`, `agent-personhood-research`, `ainet`, `open-agent-registry`, `agent-audio`, `agents-and-humans`, `income-cascade`, `roslyn-mcp`, `door-to-singularity`, `edw-portal`, `imc-portal`, … |
| 13 | - **`[SCOPE:<slice>]`** — какой slice операционной памяти грузить: `door-to-singularity` | `portal` | `harvester` | `imc` | `mixed`. Соответствует резолву **`active_scope`** в MCP (`read_hot_context`, `route_context`, `memory_health`). **Алиасы scope:** `DTS` (и legacy `current-projects`) → `door-to-singularity`; `PTL` → `portal`; `HRV` / `EDWH` → `harvester` — см. `project-ids-quickref-v1.md`, секция «Алиасы scope → канон». |
| 14 | |
| 15 | Правило приоритета: **явный маркер в текущем сообщении** переопределяет состояние «primary/scope» для этого шага; при отсутствии маркеров — ниже. |
| 16 | |
| 17 | ### Дефолт без маркеров |
| 18 | |
| 19 | 1. **`workspace_path`** (корень workspace в Cursor) матчится по **`workspace-scope-map-v1`** → `door-to-singularity` / `portal` / `harvester` / `imc`. |
| 20 | 2. Если путь однозначен — **primary** можно вывести из контекста задачи и карточек в `knowledge/work/projects/door-to-singularity/` / `portal/` / `imc/` (хабы README), но при **риске смешения** двух продуктов в одном сообщении — **один** уточняющий вопрос или явное «считаю primary: …, ок?». |
| 21 | |
| 22 | ### Эвристики (не заменяют маркеры) |
| 23 | |
| 24 | - Путь к файлу в сообщении (`…/cascade-ide/…`, `…/EDW.Portal…`) → подсказка primary/scope; не менять primary «молча», если в том же треде недавно был другой явный PRIMARY. |
| 25 | - Полная автоматика без маркеров и без карты — **не** гарантируется; при сомнении — маркер или вопрос. |
| 26 | |
| 27 | ### Связь с инструментами и KB |
| 28 | |
| 29 | - Длинный контур: `knowledge/worlds/workspace-context/playbook-multi-project-context-v1.md`. |
| 30 | - Вызов MCP: параметр **`active_scope`**, если slice должен отличаться от резолва по пути. |
| 31 | - **route_context** индексирует только `agent-notes.md`; playbook и карточки проектов — **`read_knowledge_file`** по путям из `knowledge/work/projects/`. |
| 32 | <!-- /section:project-switch-protocol-v1 --> |
| 33 | |
| 34 | |