docs(openspec): wiki-module — решения финальной волны, R-8 (#91)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Andrey Epifancev 2026-10-24 04:15:25 +04:00
parent 637307bffc
commit d71f208610

View File

@ -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` не добавлен (решение владельца).