From d71f208610569100be833ee87b7a8c602105d4e8 Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Sat, 24 Oct 2026 04:15:25 +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=20=D1=84=D0=B8=D0=BD?= =?UTF-8?q?=D0=B0=D0=BB=D1=8C=D0=BD=D0=BE=D0=B9=20=D0=B2=D0=BE=D0=BB=D0=BD?= =?UTF-8?q?=D1=8B,=20R-8=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 | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) 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` не добавлен (решение владельца).