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`.