53 Commits

Author SHA1 Message Date
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
65e0945476 fix(web): значки типов разных цветов, панель фильтров в одну строку, правки minor финального ревью (#112, I-1, I-2, T5.1, M-1..M-4, M-7, M-8, T7.2)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-25 21:38:46 +04:00
Andrey Epifancev
cf342448b8 docs: доработки экранов доски — рулинги и карта (#112)
ARCHITECTURE.md: новые файлы каталога agile/ (filters, agilePref, useAgileView,
AgileToolbar, EpicsPanel, SprintPicker, ColumnsMenu), ключ localStorage
sdlc-hub-agile и состав фильтров, свёртки, панели эпиков, выбора спринтов
и скрытия колонок на «Бэклог», «Спринт», «Kanban» (только просмотр).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-25 21:14:15 +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
fe1d5926a5 e2e спринтов и бэклога, тестовый хаб с досками, документация (#108)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 20:28:48 +04:00
Andrey Epifancev
8062dc7668 Веб: «Связи» на /app/jira/links, условные пункты меню (#108)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 19:41:32 +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
1f78d70a02 GET /agile: доска, спринты и бэклог проекта (#108)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 18:48:14 +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
e2c925bff2 docs(web-modules): ARCHITECTURE, CLAUDE.md, README, e2e под модули
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 15:38:46 +04:00
Andrey Epifancev
f5656b1336 docs(sdlc-rename): README, CLAUDE.md, ARCHITECTURE.md под sdlc-hub
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 12:18:50 +04:00
Andrey Epifancev
637307bffc Документация: порядок выкатки, откат, расхождения спеки и кода (I-2, M-11, M-13)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 04:02:50 +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
e03caa7349 Правки ARCHITECTURE.md по реальным импортам, метки долга проектов в HTTP-слое (M-1, M-2)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 23:33:17 +04:00
Andrey Epifancev
2673bac5d8 docs: ядро и модули хаба; тест границы ядра (#87)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-23 23:20:06 +04:00
Andrey Epifancev
62057606c0 Правки финального ревью: ссылки на вложения, размер, 413 в пакетах, имя копии, документация (#83)
I-1 I-2 M-1 M-2 M-3 M-5 M-6 M-7 T3.4 T4.3

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 15:14:40 +04:00
Andrey Epifancev
e5db848b6b Веб: вложения в карточке задачи и скачивание (#83)
Раздел «Вложения (N)», плашки под комментарием и ссылки !имя!, [^имя] в тексте;
хук useAttachmentDownload: fetch, опрос раз в 2 с, сохранение через Blob (api.blob).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 14:55:52 +04:00
Andrey Epifancev
3ad63886a7 MCP: вложения в issue и comment, инструмент attachment (#83)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 14:43:59 +04:00
Andrey Epifancev
722393daf9 API вложений: файл от агента, скачивание, уборка копий (#83)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 14:34:10 +04:00
Andrey Epifancev
90749012f0 Команда fetch_attachment: постановка, выдача, приём результата (#83)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 14:25:58 +04:00
Andrey Epifancev
b5adfdf9b5 Вложения в карточке задачи: ссылки из текста и состояние (#83)
Модуль attachments (fmt_size, ref_names, resolve, state, get); mirror.get_issue
отдаёт attachments, description_attachment_ids, attachment_ids комментариев
и скрывает fetch_attachment из commands.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 14:18:59 +04:00
Andrey Epifancev
5dfa673f8e Схема v6: уточнение ARCHITECTURE (#83)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 14:10:41 +04:00
Andrey Epifancev
4f78c27984 Схема v6: список вложений задач в зеркале (#83)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 14:10:35 +04:00
Andrey Epifancev
066cb79c4f История изменений в карточке задачи (#77)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 11:31:39 +04:00
Andrey Epifancev
a27ebc9586 MCP: лента изменений, история в issue, журнал в sync_log (#70)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 10:23:39 +04:00
Andrey Epifancev
1f74a27cb3 e2e и снимки боковой панели, ARCHITECTURE (#69)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 08:58:35 +04:00
Andrey Epifancev
2a472cacbf style(web): вход, новый проект, служебные экраны; старые стили убраны (#65)
Экраны входа, «Новый проект», ProjectGate, «не найдено» и ошибка отрисовки
переведены на компоненты системы. controls.css удалён, псевдонимы токенов
убраны, глобальные .row/.spacer/.hint/.warn/.login разобраны. Разделы в
верхней панели не активны вне доски и задач. Тонкая настройка дорожек доски,
тест на ошибку списка, стабилизирован тест проектов.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 01:19:09 +04:00
Andrey Epifancev
ec4fb8b1e7 Исправления финального ревью: тип доски нового проекта, нормализация labels_add, документация (#61)
I-1: boards() отдаёт type=null, если тип неизвестен у любого проекта доски.
M-2: labels_add ensure_fields нормализуется к метке проекта. M-3: light_list
вместо list_projects в _assign_boards. M-4/T5.4: пустой project — 422.
M-1, M-5, T10.1-T10.7: README, ARCHITECTURE, CLAUDE.md, design.md (49-51), e2e.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 22:06:41 +04:00
Andrey Epifancev
9c2c4d09e0 Проекты: e2e выбора и создания проекта, документация, решения плана в design.md (#61)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 21:47:46 +04:00
Andrey Epifancev
0abed70f44 Хаб: настройка closed_statuses и фильтр GET /issues?hide_closed (#57)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 11:31:55 +04:00
Andrey Epifancev
4e397b563d feat(mcp): batch_create принимает path у ensure_attachment и сам загружает файл (#43)
Все файлы пакета читаются до загрузки: «файл не найден: <path>», «у ensure_attachment либо path, либо file», больше 10 МБ — до POST /files; filename по умолчанию — имя файла; описание batch_create говорит про path (решение 19). design.md: решение 20 (R-2).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 01:51:44 +04:00
Andrey Epifancev
9b21060d60 feat(commands): команда ensure_attachment — проверка файла при постановке, size при выдаче (#43)
SPEC ensure_attachment {key, file, filename}, пауза 30 с, по состоянию не подтверждается; queue._check_setup: формат file, файл загружен («файл <sha> не загружен: POST /files»), filename без / и \, без кавычек и управляющих символов (R-2); claim, довыдача и GET /agent/commands/{id} дописывают size (null без файла), в базе params без size, retry проходит (решения 17–18).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 01:46:14 +04:00
Andrey Epifancev
e8707d4762 feat(api): POST /files и GET /agent/files/{sha256}, files/ 0700 при старте, уборка в tick раз в сутки (#43)
Не base64 — 400 bad_request, пустой — 422 empty_file, больше 10 МБ — 413 too_large; агенту — {file, size, content} в base64, нет файла — 404 no_file; уборка отдельно от автообновления (решения 14–16).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 01:41:54 +04:00
Andrey Epifancev
19bba60cac feat(files): хранилище файлов вложений files/<sha256> с уборкой (#43)
put — атомарно (mkstemp, fsync, os.replace), одна копия на содержимое, mtime при повторе, предел 10 485 760 байт, пустой — отказ; path/exists/size/read только для sha из 64 hex; sweep — старше 30 дней без ensure_attachment в queued/claimed (решения 10–13).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 01:38:31 +04:00
Andrey Epifancev
9655ca4847 Правки minor-находок ревью Task 6 (T6.1-T6.4)
- T6.1: e2e «описание свёрнуто» проверяет scrollHeight > clientHeight и рост высоты pre после «развернуть»
- T6.2: e2e заметки из окна сверяет scrollY после закрытия окна с исходным
- T6.3: тест переименован, добавлен маркер на DOM-узле карточки (узел не пересоздан)
- T6.4: исправлен разорванный абзац в ARCHITECTURE.md

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 13:29:57 +04:00
Andrey Epifancev
e475a8afc1 test(web): e2e окна карточки, тестовый хаб с комментариями и командами; README (#37)
Раскладка карточки: в одну колонку (уже 900 px) колонки растягиваются на всю
ширину (align-items: stretch), порог — 899.98px.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 13:25:44 +04:00
Andrey Epifancev
8a319ea595 fix(agent): agent_reported — до первого claim запускатель неизвестен, подсказки «без run.py» нет (M-2 #25) (#32)
GET /agent отдаёт agent_reported; release.hint(reported=); MCP agent_status: «запускатель: неизвестно (агент ещё не выходил на связь после перезапуска хаба)» (решения 7–8, R-1).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 10:36:19 +04:00
Andrey Epifancev
f977d9bd34 fix(release): публикация с fsync и откатом через agent.py.prev, проверка манифеста (M-1, M-3, M-5, M-6, M-7 #25) (#32)
Сбой записи — «не удалось записать публикацию: …», код 1, прежняя версия остаётся; манифест годен при целой version ≥ 1 и sha256 из 64 hex; предупреждение о негодном — одно на ошибку; не-UTF-8 agent.py — 404 (решения 1–6).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 10:31:22 +04:00
Andrey Epifancev
ea37d54946 test: соединения SQLite в тестах закрываются, утечка — ошибка набора (M-9/O-4 #4) (#32)
Фикстура open_db в tests/conftest.py, фикстуры conn вместо хелперов fresh()/_mirror(); filterwarnings: error::ResourceWarning и error::pytest.PytestUnraisableExceptionWarning (решение 14, R-5).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 10:26:38 +04:00
Andrey Epifancev
34c57ceeab Merge remote-tracking branch 'origin/main' into feat/21-web-app
# Conflicts:
#	ARCHITECTURE.md
#	CLAUDE.md
#	src/jira_hub/api.py
#	tests/test_api.py
2026-10-15 00:07:48 +04:00
Andrey Epifancev
51564854d6 feat(api): / и /links ведут в веб-приложение, links.html удалена; документация (#21)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 23:44:41 +04:00
Andrey Epifancev
7c922382e6 feat(hub): agent_status — публикация и самообновление агента; README, ARCHITECTURE (#22)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 22:13:21 +04:00
Andrey Epifancev
adab949783 docs: доска связей хаба — README, ARCHITECTURE, CLAUDE.md (#17)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 18:13:20 +04:00
Andrey Epifancev
8e82b31d48 fix: правки по финальному ревью bridge-hygiene — права backups/, cwd, чистка work/ по папкам, отмена завершённого пакета (#13)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 13:11:03 +04:00
Andrey Epifancev
2429d08a63 docs: реле и relay_dir в ARCHITECTURE, права каталога, текущий change, .wt/ в .gitignore (#13)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 12:59:32 +04:00
Andrey Epifancev
958dbe956f feat(queue): довыдача команды без отчёта, предел 3 выдачи; R-13 и «свежая claimed» удалены (#9)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 22:44:16 +04:00