docs(openspec): wiki-module — решения Task 3, R-2 по спеке (#91)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Andrey Epifancev 2026-10-24 01:28:53 +04:00
parent c9688c036b
commit 04e67d5139

View File

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