22 Commits

Author SHA1 Message Date
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
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
26a4878782 Правки по финальному ревью: диапазоны чисел, strip, устойчивые тесты (#108)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 20:51:20 +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
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
c9ac2d5238 refactor: очередь ядра и обработчики команд модуля jira (#87)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 22:15:42 +04:00
Andrey Epifancev
6d7aebe01c refactor: пакеты core и modules.jira — перенос без логики (#87)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:50:23 +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
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
3b4cf66b77 feat(commands): тип bug в ensure_issue — проверка настройки issue_types.bug при постановке (#43)
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>
2026-10-16 01:35:56 +04:00
Andrey Epifancev
1a66aea2de feat(mcp): параметры команд в описании batch_create и в ошибках 422 (#44)
Описание MCP-инструмента batch_create собирается из SPEC (commands.describe):
обязательные и необязательные параметры каждого типа с подсказками формата
(hints) и условием на набор (note). Ошибки validate «нет …» и «лишние
параметры …» называют ожидаемый набор параметров типа.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 23:13:14 +04:00
Andrey Epifancev
7d3f648d2c fix: финальное ревью — M-1/T3.1 атомарная подмена agent_update, T1.1/T1.2 open_db, T2.3, T4.1 (#32)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 10:56:51 +04:00
Andrey Epifancev
1f1dad6911 test: bool и [] в параметрах, журнал при пределе выдач, 501, эпик без ключа, «подготовлена заново», предупреждение и офлайн агента, тик (T3.2, T5.2, M-8, minor-3 #16; M-10 #4) (#32)
Решение 13: тесты фиксируют уже верное поведение; каждый проверен мутацией.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 10:46:13 +04:00
Andrey Epifancev
e180bb4e5f fix: ответ PUT /settings, «создание задачи отменено», CRLF в подтверждении, реле по resolve() (O-11, O-10, O-9, minor-1, T3.1 #16) (#32)
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>
2026-10-15 10:42:03 +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
a309c9bfb1 fix(commands): проверка типов параметров — 422 вместо 500 (#13)
M-3 (hub#12).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 12:41:44 +04:00
Andrey Epifancev
817c761fb2 feat: ensure_issue закрывается довыдачей, не сверкой; reversed_links в отчёте импорта (R-11, O-3, #9)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 22:48:57 +04:00
Andrey Epifancev
bf73299732 feat(queue): 409 на отчёт по невыданной команде, ключ из позднего отчёта по отменённой ensure_issue, 422 на дубль темы (#9)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 22:46:41 +04:00
Andrey Epifancev
a09b794302 fix(queue): ensure_issue не подтверждается по состоянию без автора (R-11, I-1); reconcile не затирает отчёт и отмену (M-1)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 23:07:52 +04:00
Andrey Epifancev
ccf519c9e7 fix(hub): подтверждение ensure_link с конфликтами и ensure_issue по автору и давности
check_confirmed для ensure_link: связь есть и нет конфликтов (другой тип между теми же задачами
или обратное направление любого типа). check_confirmed для ensure_issue: необязательный reporter,
сужает поиск по теме до задач этого автора. Тесты: конфликты, обратное направление при обоих
ключах в зеркале, давность 7 дней, фильтр по reporter, выбор самой новой из двух.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 22:03:59 +04:00
Andrey Epifancev
a19c1ca7e1 feat(hub): контракт команд — валидация, временные ключи, оценка, подтверждение по состоянию
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 22:00:08 +04:00