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>
Хаб дописывает board_id доски проекта задачи в ensure_fields со story_points — как в
ensure_sprint; свои тексты 422 для канбана и задачи вне проектов; повтор берёт доску заново.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Каркас модуля wiki: схема (wiki_project, wiki_page, wiki_attachment, wiki_sync_stage), настройки,
поле проекта wiki_root с хуками создания и правки, команды wiki_sync и wiki_fetch,
фоновая синхронизация. Зависимость markdownify>=1.2.3.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
tokens -> {client, agents: {модуль: токен}}, agent_status по агентам
(ключ agent, last_call_at), настройки агента и маршруты agent-scope по
модулю токена, min_agent_version переехал в модуль jira.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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>
R-3/T6.1 типы досок из результата refresh пишутся в любом статусе отчёта; T5.1, T3.1 (author), T3.2, T2.1, T2.2, T7.2,
T8.1, T8.2 (ошибка фонового рефетча проектов не сносит страницу), T8.4 (окно «Новый проект» не закрывается во время
создания). Решения 22, 27 переписаны, добавлено 36 в design.md.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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>
validate принимает task|epic|bug; queue._check_setup отвергает bug без issue_types.bug с name или id (422 «команда N: нет настройки issue_types.bug»); init берёт bug из issue_type_bug/issue_type_bug_id, только если ключи есть (решение 9). Спека hub-api: уборка файлов раз в сутки в пределах процесса (R-1).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PUT /settings отвечает всеми настройками (R-3); пропуск при cancelled-создателе — «создание задачи new:N отменено» (R-4); ensure_fields сравнивает строки без различия CRLF/LF; _cleaned по resolve(); _type_error по веткам (решения 9–12, 15).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Фикстура 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>
cancel_batch возвращает still_claimed — команды пакета в статусе claimed,
которые отмена не останавливает. MCP batch_cancel выводит строку на каждую
такую команду с подсказкой про POST /commands/N/cancel с force. Описание
batch_create предупреждает, что ensure_issue нужны labels с базовой меткой
AWPCA, иначе задача выпадет из базовой JQL и из зеркала.
M-11 (hub#12), T3.7 (agent#4).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>