diff --git a/docs/plan-workspace.md b/docs/archive/plan-workspace.md similarity index 98% rename from docs/plan-workspace.md rename to docs/archive/plan-workspace.md index 96eb777..bd78c4f 100644 --- a/docs/plan-workspace.md +++ b/docs/archive/plan-workspace.md @@ -1,6 +1,6 @@ # План: главная страница как рабочая область с цепочкой -> Статус: план к выполнению. Заменяет идею отдельной страницы рабочего пространства. +> **СТАТУС: ВЫПОЛНЕН 2026-08-23.** Заменяет идею отдельной страницы рабочего пространства. ## 1. Модель diff --git a/docs/roadmap.md b/docs/roadmap.md index b8f93c1..1079bd6 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -8,6 +8,10 @@ - **Пайплайн = JSON-список шагов** `{tool, params}`. Формат закладывается сейчас и потом станет общим для браузера, wasm и CLI. - **Реестр инструментов** (id, title, description, схема параметров, `run`) — источник истины: из него генерируются страницы, формы, пайплайны. Позже — общий формат для Rust-парсера. - Валидация будущего Rust-порта — эталонные файлы, сгенерированные из TS-реализации. Сравнение: **бит-в-бит** для чистых пиксельных операций, **perceptual diff** для canvas-зависимых. +- **Единая точка исполнения инструментов.** Страницы вызывают операции только через `web/src/lib/tools/executor.ts::executeStep` — нигде напрямую `tool.run`. Контракт уже асинхронный (`Promise`), поэтому: + - когда появятся тяжёлые MEDIUM-операции (свёртки, квантование), внутренности `executeStep` переезжают в Web Worker — воркер импортирует тот же чистый core как TS-фолбэк, алгоритмы не дублируются, вызывающий код не меняется; + - в WASM-фазе тот же воркер принимает wasm-модуль и диспетчеризует по `toolId` — свитч A/B из фазы 5 сводится к замене реализации внутри исполнителя; + - до появления MEDIUM-операций воркер не вводится: EASY-операции быстры и не блокируют UI. ## 1. Структура репозитория (этап TS)