From 04e67d513987ff617908b107fc26cce0d48dc22c Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Sat, 24 Oct 2026 01:28:53 +0400 Subject: [PATCH] =?UTF-8?q?docs(openspec):=20wiki-module=20=E2=80=94=20?= =?UTF-8?q?=D1=80=D0=B5=D1=88=D0=B5=D0=BD=D0=B8=D1=8F=20Task=203,=20R-2=20?= =?UTF-8?q?=D0=BF=D0=BE=20=D1=81=D0=BF=D0=B5=D0=BA=D0=B5=20(#91)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- openspec/changes/wiki-module/design.md | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/openspec/changes/wiki-module/design.md b/openspec/changes/wiki-module/design.md index eac21c0..bba95c3 100644 --- a/openspec/changes/wiki-module/design.md +++ b/openspec/changes/wiki-module/design.md @@ -457,9 +457,9 @@ jira безвреден. 18. **R-1.** 2026-10-24. Строки `agent_status` для `registry.agent_modules()` вставляются `INSERT OR IGNORE` при каждом `db.migrate`, а не только в `MIGRATIONS[6]`. Обоснование: wiki-агент появляется после схемы 7 (Task 5), иначе у него нет строки статуса. Цена ошибки: падение `claim` wiki; правка одного места. -19. **R-2.** 2026-10-24. Ответ `POST /projects` несёт `batch_ids` (все пакеты `on_project_created`) и `batch_id` пакета - модуля jira для совместимости; при расхождении со спекой `hub-api` верна спека. Цена ошибки: правка формата ответа - и клиентов. +19. **R-2.** 2026-10-24. Ответ `POST /projects` — по спеке `hub-api`: `{project, batch_id}`, `batch_id` — пакет первого + модуля, вернувшего пакет; `batch_ids` в ответе POST не добавляем (исполнитель Task 3 добавил, ревью отклонило как + лишнее). Цена ошибки: клиент не видит второй пакет без `GET /batches`. 20. **R-3.** 2026-10-24. `test_core_has_no_module_terms` ищет `eva` по границе слова (`\beva\b`, `eva-agent`), а `wiki_`, `wiki/`, `DOC-` — подстрокой. Обоснование: подстрока `eva` даёт ложные срабатывания (`evaluate`, `level`). Цена ошибки: правка регулярки. @@ -495,3 +495,18 @@ jira безвреден. код успел записать в корень более новый agent.py после частичной миграции, он потеряется (риск низкий). 35. `registry.DEFAULT_AGENT = "jira"` — единственное место с умолчанием агента в ядре; `release.py` импортирует его оттуда. Цена ошибки: нет. + +Решения исполнителя Task 3 (2026-10-24): + +36. Миграция v7 убирает колонки досок `ALTER TABLE project DROP COLUMN`, а не пересозданием таблицы: при + `foreign_keys=ON` `DROP TABLE project` ломается из-за дочерней `jira_project`. Нужен SQLite не ниже 3.35 (в + окружении 3.51). Цена ошибки: на старом SQLite миграция падает; копия базы сделана до неё. +37. `jira_projects.create(conn, label, name, board_id)` — точка создания проекта с доской для init, миграции v3 и тестов; + доска проверяется раньше метки и названия. Цена ошибки: другое сообщение при одновременно плохих метке и доске. +38. `POST /projects`: проверка ядра (`label`, `name`), затем полей модулей (неизвестное — 422 `<поле>: неизвестное + поле`), затем 409 на дубль; модулям без своих полей в `on_project_created` передаётся пустой dict. +39. `PATCH /projects/{label}`: проект проверяется (404) раньше полей; пустое тело — 200 с `batch_ids: []`; `author` + необязателен (по умолчанию `api`). +40. `HubClient.patch` добавлен в ядро (нужен тестам и `root_set`). Метка в адресе PATCH раскодируется `unquote`. +41. `register_core_tools` создаёт инструмент `projects` внутри; функций `projects`/`project_create` в `core.mcp` больше + нет, тесты берут их из `mcp._tool_manager` и `jmcp.project_create`.