166 Commits

Author SHA1 Message Date
Andrey Epifancev
68c7f23410 MCP вики: changes, diff, «изменено» в page, короткий sync (#140)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 12:35:22 +04:00
Andrey Epifancev
060270b854 Вики: поля at/author/offset в diff и code/title в versions (#140, ревью задачи 3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 12:27:09 +04:00
Andrey Epifancev
3a936f5eaa Вики: лента правок, версии и дифф в HTTP API (#140)
Маршруты GET /wiki/changes, /wiki/pages/{code}/versions, /wiki/pages/{code}/diff;
у страницы — modified_at, modified_by, versions; у состояния — history_at.
Дифф режется по 20 000 символов, фильтр автора без учёта регистра в Python.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-28 12:16:04 +04:00
Andrey Epifancev
a11d66f94e Вики: known_versions при выдаче и запись версий в синхронизации (#140)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-28 12:06:39 +04:00
Andrey Epifancev
7b18ae53ad Вики: таблицы версий и приём POST /agent/wiki/versions (#140)
- schema: wiki_version, wiki_version_stage, wiki_history (без миграций, IF NOT EXISTS)
- history.utc: время версии в UTC; без смещения или не строка — None
- convert.to_markdown(file_links=False): вложение текстом «📎 имя», список файлов пуст
- stage.accept_versions + POST /agent/wiki/versions (agent wiki): проверка формы, перевод вне транзакции
- эталоны baseline (routes, schema) и документы: design.md (П-1…П-12), ARCHITECTURE.md

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
2026-10-28 11:57:37 +04:00
Andrey Epifancev
90b03ed701 Вики: внешняя ссылка не теряет края текста и не выводится адресом без вложения (#135, ревью I-1, M-1)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 19:00:49 +04:00
Andrey Epifancev
829d4cbb4b MCP вики: значения из Eva одной строкой (#135, T9.3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 18:44:49 +04:00
Andrey Epifancev
52db644034 Вики: вложение без файла скачивается заново, признак картинки у вложений страницы (#135, T8.2)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 18:43:28 +04:00
Andrey Epifancev
39821b8ee6 Вики: одна синхронизация на корень — повтор не ставит вторую (#135, T8.3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 18:41:21 +04:00
Andrey Epifancev
6cc4b9a6b9 Вики: перевод HTML — миниатюра в обёртке, вложение в ссылке, кодирование адресов (#135, T6.1–T6.5)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 18:39:45 +04:00
Andrey Epifancev
e20977ef49 Финальное ревью: пробельные поля ensure_fields, версия агента, чтение файлов, форма issues (#129, I-1, I-2, I-3, M-2, T2.1)
I-1 (R-8): ensure_fields с полем из одних пробелов даёт 422, очистка только "" или null.
I-2: agent_view не падает на нецифровой версии агента (GET /agent, /agents).
I-3 (R-9): files.size через fstat у открытого файла, _intact ловит OSError, put переписывает нечитаемый файл.
M-2: /agent/state отвергает пустые не-списки в issues.
T2.1, T3.1, T4.1-T4.3, T5.2, T6.1, T1.5: тесты и мелкие правки.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 03:16:39 +04:00
Andrey Epifancev
fd13770427 Настройки: ключи v3 base_jql и board_id удаляются при открытии хаба (#129, #64)
OBSOLETE расширен ключами base_jql и board_id: ensure_defaults убирает их при каждом открытии, миграция v7 -> v8 тоже.
settings_version не растёт. PUT /settings для этих ключей по-прежнему отвечает 422 с пояснением. Тест миграции v3
обновлён: после миграции ключей в настройках нет (проекты уже созданы из них).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 03:02:11 +04:00
Andrey Epifancev
5dc96dd43c Публикация агента: прерванная прошлая публикация восстанавливается по манифесту (#129, #39 T2.2, M-6)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 02:48:21 +04:00
Andrey Epifancev
75b1559354 Хранилище: нечитаемый файл — «файла нет» с предупреждением; пустой SDLC_HUB_HOME — по умолчанию (#129, #49 M-3, #102 T3.2)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 02:41:20 +04:00
Andrey Epifancev
f1dae5a811 API: состояние агента и синхронизация вики неверной формы — 422, а не 500 (#129, #42 T2.1, #94 T8.1)
mirror.check_issues проверяет форму issues до записи; /wiki/sync отвергает project не строку.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 02:32:39 +04:00
Andrey Epifancev
4a6855d70b Цифровые id и версия агента — только ASCII 0-9, без 500 на «²» (#129, #86 F.1)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 02:27:47 +04:00
Andrey Epifancev
abbcf0cc1f Команды: параметры обрезаются при постановке, имя вложения — NFC (#129, #111 T-F1, #49 M-4)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 02:20:17 +04:00
Andrey Epifancev
01c41d5767 MCP: board_id в ensure_fields со story_points ставит хаб (#113)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 22:07:56 +04:00
Andrey Epifancev
fd26fb36e5 Доска проекта в ensure_fields со story_points (#113)
Хаб дописывает board_id доски проекта задачи в ensure_fields со story_points — как в
ensure_sprint; свои тексты 422 для канбана и задачи вне проектов; повтор берёт доску заново.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 22:07:56 +04:00
Andrey Epifancev
26a4878782 Правки по финальному ревью: диапазоны чисел, strip, устойчивые тесты (#108)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 20:51:20 +04:00
Andrey Epifancev
f709e9b893 MCP: спринты, спринт и бэклог проекта, колонка SP (#108)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 19:33:31 +04:00
Andrey Epifancev
07357732da Хвост пакета со спринтом — refresh по JQL проекта (#108)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 19:23:46 +04:00
Andrey Epifancev
c6221437b9 Команды спринта: доска проекта пакета, повтор с новой доской (#108)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 19:06:43 +04:00
Andrey Epifancev
212e9eae55 Команды спринта и ранга, оценка в ensure_fields (#108)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 18:54:46 +04:00
Andrey Epifancev
1f78d70a02 GET /agile: доска, спринты и бэклог проекта (#108)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 18:48:14 +04:00
Andrey Epifancev
4f9024d5c3 Приём досок, спринтов, ранга и оценок от агента v15 (#108)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 18:39:56 +04:00
Andrey Epifancev
ef48e62953 Схема v9: ранг, оценка, доски и спринты (#108)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 18:34:04 +04:00
Andrey Epifancev
9aaf3cee50 Устаревшие ключи настроек удаляет ensure_defaults; выкатка схемы v8 в документах (#104)
I-1, I-2 финального ревью: старые MCP-сессии возвращали status_labels/transitions_map
после миграции; окно до kickstart описано для v8.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 17:22:44 +04:00
Andrey Epifancev
8bab76e043 Схема v8: без статуса по факту и его настроек (#104)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 16:59:05 +04:00
Andrey Epifancev
5b01b91710 Модуль jira: заметки, API, MCP и импорт без статуса по факту (#104)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 16:47:12 +04:00
Andrey Epifancev
25973ff971 feat(web-modules): API — свежесть Jira в проекте, модуль пакета, пакеты нового проекта по модулям
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 15:38:46 +04:00
Andrey Epifancev
eb86563e2a fix(sdlc-rename): cutover сверяет HEAD с новым репозиторием — Gitea не перенаправляет SSH
После переименования в Gitea старый адрес по SSH отвечает «Cannot find
repository» (T6.2 подтвердилось): preflight сверяет main по адресу
aep/sdlc-hub, derive_remote принимает уже сменённый origin; README —
сменить origin сразу после переименования.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 14:09:56 +04:00
Andrey Epifancev
102bee83fe fix(sdlc-rename): cutover: потребители автообнаружением, origin по протоколу, предупреждения о сессиях, plist в .pre-sdlc
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 12:41:25 +04:00
Andrey Epifancev
1394f39763 fix(sdlc-rename): cutover: ожидание порта после bootout, честное состояние шага 2
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 12:13:24 +04:00
Andrey Epifancev
40cb66158f fix(sdlc-rename): cutover: откат при сбое, проверка инструментов, порядок add/remove
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 12:09:16 +04:00
Andrey Epifancev
7ac525699a feat(sdlc-rename): скрипт переключения живой установки scripts/cutover.sh
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 12:03:50 +04:00
Andrey Epifancev
d643007c0b feat(sdlc-rename): отказ CLI при каталоге данных под прежним именем
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 11:52:08 +04:00
Andrey Epifancev
08460dc281 feat(sdlc-rename): MCP-серверы sdlc-jira и sdlc-wiki, модуль в sdlc-hub mcp обязателен
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 11:45:40 +04:00
Andrey Epifancev
a88bb1e6e8 refactor(sdlc-rename): пакет sdlc_hub, CLI sdlc-hub, каталог данных sdlc-hub
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 11:27:17 +04:00
Andrey Epifancev
ccb1606056 Вики: убрать колонку управления строками таблиц редактора Eva из копии (#95)
Редактор Eva (TinyMCE) сохраняет в HTML страницы блок table-row-controls (номер
строки, «+», точка); markdownify превращал его в абзацы «№», «1», «2»… перед
таблицей. Блок удаляется целиком до конвертации; карточки вложений с тем же
классом mceNonEditable остаются.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 11:01:31 +04:00
Andrey Epifancev
c8af45ced8 Вики: безопасность и чистка (M-4, M-5, M-6, M-8, M-9, M-10, M-14, M-15 хаб)
- root_set кодирует метку; parse_root вынесен в wiki/roots.py; PATCH wiki_root "" -> 422
- суррогаты в пачке страниц заменяются; dir_name экранирует ведущую точку; error у вложений
- beautifulsoup4 и markdownify<2 объявлены; убраны неиспользуемые импорты и дубль _has_table

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 04:01:54 +04:00
Andrey Epifancev
82bbf0f5cd release: предупреждение по пути, имя модуля по умолчанию в mcp, миграция раскладки в agent publish (M-1, M-2, M-3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 03:58:14 +04:00
Andrey Epifancev
90d1af57f1 Сквозной тест совместимости с jira-agent v14 по HTTP (I-3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 03:56:13 +04:00
Andrey Epifancev
4600634a61 Агент не читает и не закрывает команды чужого модуля (I-1)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 03:55:43 +04:00
Andrey Epifancev
a5deee50fc Документация: release/<модуль>/, уточнения теста границы и потока вики (#91)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 03:39:39 +04:00
Andrey Epifancev
ede028346b Документация: модуль wiki и агенты модулей (#91)
Тест границы test_core_has_no_module_terms; ARCHITECTURE/CLAUDE/README; дельта-спека о хуках before_result/abort_result.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 03:37:17 +04:00
Andrey Epifancev
2a5a33f9c6 wiki: MCP-сервер jira-hub-wiki (#91)
fmt_agent, safe_name и store_copy вынесены в core/mcp.py; сервер jira их переэкспортирует, тексты вывода не менялись.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 02:49:23 +04:00
Andrey Epifancev
a95230dc33 wiki: маршруты и вложения по запросу (#91)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 02:40:33 +04:00
Andrey Epifancev
b074b51ec0 wiki: синхронизация — правки ревью Task 7 (#91)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 02:30:58 +04:00
Andrey Epifancev
bc69d5087a wiki: синхронизация — пачки страниц, копия, поиск (#91)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 02:22:15 +04:00