ADR 0198: Toolchain ensure vs LSP¶
Статус: Accepted
Дата: 2026-07-27
Tags: #cdp #toolchain #lsp #dal #adr #cascade-ide
Связанные ADR¶
| ADR | Роль |
|---|---|
| 0040 | LSP presets |
| 0102 | DAL — добыча внешнего |
| 0190 | lsp_ensure (intelligence) |
| 0197 | Шов DAL; gap board |
| 0196 | Soft-organ pattern |
Резюме¶
- Toolchain ≠ LSP: runtime/compiler/SDK vs language server.
- Один ensure-контур для любого id (
python,gcc,javac,go, custom):probe|ensure|install|add|which. - Soft organ:
go=toolchain/ Metacdp_toolchain(не ListTools thrash). - Hang: DAL-adjacent (0197); не alias на
lsp_ensure.
Контекст¶
lsp_ensure id=python ставит basedpyright, не CPython. Оператору нужен gesture «сегодня python/gcc/go» → bins на PATH. Расширение = новая recipe-запись, не новый organ.
Решение¶
Оси¶
| Axis | Organ | Пример |
|---|---|---|
| Intelligence | lsp_* / Options languages |
pyright, gopls |
| Toolchain | toolchain_* |
python, gcc, javac, go |
Ops v0¶
| op | смысл |
|---|---|
scene |
каталог recipes + probe status |
probe id= |
bins на PATH |
ensure id= |
already_ok | install via recipe | no_recipe → browser/shell next[] |
install id= via= |
явный менеджер |
add |
user recipe (id, bins[], vias[], search_q, pairs_lsp?) |
which id= |
resolved paths |
Recipe¶
ToolchainRecipe {
id, bins[], vias[{via, argv[]}], search_q,
pairs_lsp?, roles[] // runtime|compiler|sdk
}
Built-ins v0: python, gcc, javac, go (равные граждане). Custom через add → LocalAppData user presets.
Инварианты¶
- Один код-путь; нет
if (python). - После ensure опционально
next[]→lsp_ensureеслиpairs_lsp. - Install через IDE shell (как LSP); PATH refresh может требовать remount.
Не делать¶
- Подменять
lsp_ensure. - UI магазина пакетов.
- Полный multi-language
cdp_buildrouter в v0 (только hint → ensure).
Последствия¶
- cdp-mcp:
IdeToolchainChannel+ GoMap + soft Meta. - Onboard/options могут давать next[]
toolchain_ensure.