diff --git a/openspec/changes/wiki-module/design.md b/openspec/changes/wiki-module/design.md index 2fde333..f887c49 100644 --- a/openspec/changes/wiki-module/design.md +++ b/openspec/changes/wiki-module/design.md @@ -530,8 +530,8 @@ jira безвреден. Решения исполнителя Task 5 и рулинг R-5 (2026-10-24): -47. **R-5.** Имя каталога копии проекта — `paths.dir_name(label)`: `%`, `/`, `\` экранируются (`%25`, `%2F`, `%5C`), `.` и - `..` — `%2E`, `%2E%2E`. Обычные метки не меняются. Обоснование: метки ядра допускают `/` и `..`, без экранирования +47. **R-5.** Имя каталога копии проекта — `paths.dir_name(label)`: `%`, `/`, `\` экранируются (`%25`, `%2F`, `%5C`), ведущая `.` — `%2E` + (`.` → `%2E`, `..` → `%2E.`; уточнено финальной волной, M-14). Обычные метки не меняются. Обоснование: метки ядра допускают `/` и `..`, без экранирования сборка и `rmtree` выходили бы за каталог вики. Раскладка копии (Task 7) идёт только через `paths.project_dir`. Цена ошибки: экзотические метки получают экранированное имя каталога. 48. `PATCH wiki_root` с тем же кодом — no-op (`batch_ids: []`): повторная синхронизация идёт через `POST /wiki/sync`. @@ -631,3 +631,17 @@ jira безвреден. Цена ошибки: дубль ~10 строк. 75. Сид e2e: копия вики AWPCA (корень DOC-9001, 2 страницы, одно вложение) собирается `sync.build_copy` в `JIRA_HUB_HOME` тестового хаба. Ответ 409 на «Обновить вики» ошибкой не показывается — статус перечитывается. + +Финальное ревью и волна правок (2026-10-24): + +76. **R-8.** Финальное ревью (opus) нашло три Important и 15 Minor; одна волна правок закрыла I-1, I-3 и M-1…M-6, + M-8…M-15; I-2 и M-13 — документация (порядок выкатки и откат, Migration Plan выше). Не сделаны: M-7 (замер FTS под + `BEGIN IMMEDIATE` на живой синхронизации) и T8.3 (отказ `check_batch` при активной `wiki_sync`) — follow-up. +77. Агент модуля не читает и не закрывает команды чужого модуля: тип вне `queue._own_types(агент)` → 404 `not_found`, + неотличимо от несуществующей команды (I-1). Цена ошибки: eva-agent с устаревшим журналом не затронет команды jira. +78. В ядро добавлено необязательное `ProjectField.validate_edit` — более строгая проверка при `PATCH` (`wiki_root: ""` → + 422, сброс корня только `null`; POST с `""` допустим) (M-6). Цена ошибки: нет, у остальных полей поведение прежнее. +79. Одиночный суррогат в строках страниц заменяется на «?» кодеком (M-8); `parse_root` вынесен в `wiki/roots.py`, MCP + вики не тянет `db`/`queue` (M-5); общий `db.has_table`; `release._warned` — словарь путь→текст; `agent publish` + вызывает `migrate_layout`; зависимости `beautifulsoup4>=4.12`, `markdownify>=1.2.3,<2`; в `pyproject.toml` + per-file-ignores F811 для `tests/test_wiki_api.py`; ruff в `make check` не добавлен (решение владельца).