diff --git a/openspec/changes/wiki-module/design.md b/openspec/changes/wiki-module/design.md index b7bfd38..1c2c75d 100644 --- a/openspec/changes/wiki-module/design.md +++ b/openspec/changes/wiki-module/design.md @@ -539,3 +539,20 @@ jira безвреден. исполнителя (3, 5–9, 11–12 отчёта): `paths.root` на базе без файла бросает `RuntimeError`, `_drop_copy` его ловит; очистка FTS по rowid страницы; строгая валидация настроек и команд (bool не целое); `wiki_project.failed_at` пока не пишется. Цена ошибки: правка одной строки в соответствующем месте. + +Решения исполнителя Task 6 (2026-10-24; HTML Eva недоверенный): + +51. Вложения дедуплицируются по `url`: миниатюра и файл — одно вложение, если агент шлёт одинаковый `url`. Цена ошибки: + при разных `url` в eva-agent появятся две ссылки; проверяется по первой живой синхронизации. +52. Картинка внутри `` на вложение выдаёт только ссылку ``. Цена ошибки: при разных `ref` показана одна ссылка. +53. Небезопасные ссылки (`javascript:`, `data:`, `vbscript:` после удаления управляющих символов и пробелов) дают только + текст, у картинок пусто; ссылки и картинки автора со схемой `attachment:` — текст/пусто. Цена ошибки: видимый + текст без ссылки. +54. Ссылку вложения порождает только конвертер: приватный маркер U+E000/U+E001, авторские U+E000/U+E001 из HTML + удаляются; любое авторское `attachment:@` нейтрализуется вставкой U+200C между `:` и `@`; `fill_ids` заменяет + только `](attachment:@N)`, индекс вне списка — `ValueError` (вызывающий Task 7 превращает в `failed`). Цена + ошибки: невидимый символ в сыром `.md` при авторском «attachment:@»; лишние PUA-символы удаляются. +55. Текст `<` вне кода выводится `<` (сырых тегов нет); внутри ``/`
` не меняется. Имя вложения
+    экранирует `\ [ ] <` и `_`/`*` на границе слова. `@` не экранируется. Цена ошибки: сырой `.md` с `<`.
+56. Известные края (отложены): вложение в `` страницы/внешней ссылки, вложенный `` между `` и ``,
+    хвостовой `\` в тексте ссылки, пробелы/скобки во внешнем href, дубликаты `ref` (побеждает последний).