docs: record compatibility runs, decisions and session reasoning
This commit is contained in:
@@ -0,0 +1,29 @@
|
|||||||
|
# Compatibility Decisions — 2026-04-10
|
||||||
|
|
||||||
|
## Контекст
|
||||||
|
После серии security/perf фиксов выполнены compatibility прогоны against https://qu.kube5s.ru.
|
||||||
|
|
||||||
|
## Принятые решения
|
||||||
|
|
||||||
|
1. UI API считается защищенным контуром и требует JWT.
|
||||||
|
- Endpoint /ui/api/auth остается публичным для получения сессии.
|
||||||
|
- Остальные /ui/api/* требуют Authorization: Bearer <jwt>.
|
||||||
|
- Старые тесты UI без JWT считаются устаревшими и не отражают регрессию сервиса.
|
||||||
|
|
||||||
|
2. SQS-совместимость приоритетно валидируется по AWS CLI/awscurl сценариям.
|
||||||
|
- Основной интеграционный набор shared_sqs_test.sh используется как базовый gate.
|
||||||
|
- Hardcore/quick требуют разделения на SQS-only и UI-authenticated части.
|
||||||
|
|
||||||
|
3. Поведение WaitTimeSeconds=25 сохраняется как clamp (не hard error).
|
||||||
|
- Это осознанное отклонение от строгого reject-поведения.
|
||||||
|
- Поведение документируется как managed-compatible режим.
|
||||||
|
|
||||||
|
4. Фокус следующего этапа: стабилизация test suite как продукта.
|
||||||
|
- Привести tests/quick_test.sh и tests/hardcore_test.sh к JWT-aware сценарию.
|
||||||
|
- Добавить отдельный UI compatibility script с явным login шагом.
|
||||||
|
|
||||||
|
## Подтвержденные результаты
|
||||||
|
- tests/shared_sqs_test.sh: PASS=28 FAIL=0
|
||||||
|
- tests/quick_test.sh: PASS=12 FAIL=7 (фейлы в UI без JWT)
|
||||||
|
- tests/hardcore_test.sh: PASS=90 FAIL=14 (основные фейлы в UI без JWT)
|
||||||
|
- UI JWT smoke (ручной): auth/create/list/send/peek/delete — успешно
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
# Compatibility Errors Log — 2026-04-10
|
||||||
|
|
||||||
|
## Прогоны
|
||||||
|
|
||||||
|
1. tests/shared_sqs_test.sh
|
||||||
|
- Status: PASS
|
||||||
|
- Result: PASS=28 FAIL=0
|
||||||
|
|
||||||
|
2. tests/quick_test.sh
|
||||||
|
- Status: FAIL (ожидаемо для legacy UI checks)
|
||||||
|
- Result: PASS=12 FAIL=7
|
||||||
|
- Основная причина: endpoints /ui/api/* требуют JWT, а сценарий вызывает их без Authorization.
|
||||||
|
- Типовые ответы: 401 authorization required.
|
||||||
|
|
||||||
|
3. tests/hardcore_test.sh
|
||||||
|
- Status: FAIL (частично ожидаемо)
|
||||||
|
- Result: PASS=90 FAIL=14
|
||||||
|
- Основная причина: legacy UI checks без JWT.
|
||||||
|
- Дополнительно: часть ожиданий на строгие validation errors не совпадает с текущей стратегией clamp.
|
||||||
|
|
||||||
|
## Ранее воспроизводимый кейс
|
||||||
|
- 100KB send-message ранее давал connection closed в одном из точечных прогонов.
|
||||||
|
- В повторном hardcore прогоне кейс 100KB прошел успешно.
|
||||||
|
- Вывод: требуется стабильный воспроизводящий сценарий для подтверждения/опровержения плавающего дефекта.
|
||||||
|
|
||||||
|
## Action items
|
||||||
|
1. Разделить тесты на SQS-compat и UI-compat.
|
||||||
|
2. Для UI-compat добавить обязательный JWT login step.
|
||||||
|
3. Для big-payload кейса добавить 10-20 повторов и фиксировать процент ошибок.
|
||||||
@@ -2,6 +2,24 @@
|
|||||||
|
|
||||||
## Версага v0.1.x
|
## Версага v0.1.x
|
||||||
|
|
||||||
|
### Security & Compatibility Wave (2026-04-10) ✅
|
||||||
|
- ✅ Создана ветка hardening: fix/critical-high-security-2026-04-10
|
||||||
|
- ✅ Закрыты Critical/High/Medium пункты безопасности и изоляции
|
||||||
|
- ✅ Добавлена проверка SigV4 подписи (header + presigned)
|
||||||
|
- ✅ Закрыт IDOR в UI API по tenant id
|
||||||
|
- ✅ Устранены гонки map доступа и рассинхрон persistence
|
||||||
|
- ✅ Оптимизирован receive long polling
|
||||||
|
- ✅ Совместимость SQS подтверждена: tests/shared_sqs_test.sh PASS=28 FAIL=0
|
||||||
|
- ⚠️ Legacy UI тесты без JWT падают ожидаемо (quick/hardcore), т.к. /ui/api/* теперь защищены
|
||||||
|
|
||||||
|
### v0.1.18 (2026-04-10) — IN PROGRESS
|
||||||
|
- ✅ security: fix critical/high auth, idor, races and persistence (a5e9bfb)
|
||||||
|
- ✅ security: address medium risks in jwt, redis ordering and body limit (3b4fe0b)
|
||||||
|
- ✅ perf: optimize receive long polling and finalize formatting cleanup (ebcb204)
|
||||||
|
- [ ] Актуализировать tests/quick_test.sh под JWT flow
|
||||||
|
- [ ] Актуализировать UI блоки tests/hardcore_test.sh под JWT flow
|
||||||
|
- [ ] Добавить отдельный UI compatibility script с login шагом
|
||||||
|
|
||||||
### v0.1.14 (2026-04-10) ✅
|
### v0.1.14 (2026-04-10) ✅
|
||||||
- ✅ Фикс критического дедлока в `create_queue.go` (deadlock после первого CreateQueue)
|
- ✅ Фикс критического дедлока в `create_queue.go` (deadlock после первого CreateQueue)
|
||||||
- ✅ Фикс UI: `m.sent` → `m.sent_at` (даты сообщений всегда показывали dash)
|
- ✅ Фикс UI: `m.sent` → `m.sent_at` (даты сообщений всегда показывали dash)
|
||||||
|
|||||||
@@ -318,6 +318,52 @@ Email из токена показывается в UI справа вверху
|
|||||||
### Диагностика
|
### Диагностика
|
||||||
|
|
||||||
1. **Первая гипотеза**: gorilla/mux route ordering — `r.PathPrefix("/ui")` static handler перехватывает `/ui/api/auth`.
|
1. **Первая гипотеза**: gorilla/mux route ordering — `r.PathPrefix("/ui")` static handler перехватывает `/ui/api/auth`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Сессия 5
|
||||||
|
# Agent: GitHub Copilot (GPT-5.3-Codex)
|
||||||
|
|
||||||
|
### Задача
|
||||||
|
1. Закрыть оставшиеся security/perf хвосты
|
||||||
|
2. Прогнать compatibility тесты для выявления новых расхождений
|
||||||
|
3. Подготовить документированный статус для managed SQS roadmap
|
||||||
|
|
||||||
|
### План перед действиями
|
||||||
|
- Сначала закрыть критичные и высокие уязвимости с минимальными точечными правками
|
||||||
|
- Затем закрыть medium риски, влияющие на managed эксплуатацию
|
||||||
|
- После этого прогнать compatibility scripts against production endpoint
|
||||||
|
- По итогам разделить реальные дефекты и устаревшие ожидания тестов
|
||||||
|
|
||||||
|
### Что сделано
|
||||||
|
- Исправлены security issues в auth, admin, gosqs, tenant, persistence, router
|
||||||
|
- Добавлена SigV4 подпись верификация для header и presigned запросов
|
||||||
|
- Закрыт IDOR в UI API: доступ только к собственному tenant id
|
||||||
|
- Убраны race и persistence рассинхроны в batch/send/delete/admin операциях
|
||||||
|
- Оптимизирован long polling в receive handler
|
||||||
|
- Изменения закоммичены и запушены в ветку fix/critical-high-security-2026-04-10
|
||||||
|
|
||||||
|
### Compatibility прогоны
|
||||||
|
- tests/shared_sqs_test.sh: PASS=28 FAIL=0
|
||||||
|
- tests/quick_test.sh: PASS=12 FAIL=7
|
||||||
|
- tests/hardcore_test.sh: PASS=90 FAIL=14
|
||||||
|
|
||||||
|
### Анализ результатов
|
||||||
|
1. Основной SQS поток совместимости (AWS CLI + awscurl + tenant isolation) стабилен
|
||||||
|
2. Большинство падений quick/hardcore связано с тем, что старые UI-сценарии идут без JWT
|
||||||
|
3. Это не regression сервиса, а рассогласование тестов с текущей security моделью
|
||||||
|
4. Часть проверок ожидает strict reject, тогда как текущая логика использует clamp
|
||||||
|
|
||||||
|
### Выводы
|
||||||
|
- Для managed SQS следующий блок работ: привести compatibility suite к актуальному auth контракту
|
||||||
|
- Нужны отдельные воркфлоу:
|
||||||
|
- SQS compatibility suite (без UI auth assumptions)
|
||||||
|
- UI compatibility suite (обязательный login через /ui/api/auth)
|
||||||
|
|
||||||
|
### Следующие шаги
|
||||||
|
1. Обновить tests/quick_test.sh под JWT-aware UI сценарий
|
||||||
|
2. Обновить UI-блоки tests/hardcore_test.sh
|
||||||
|
3. Добавить стабильный multi-run тест для big payload кейсов
|
||||||
- Перенёс `/ui/api/auth` на subrouter вместо root router HandleFunc.
|
- Перенёс `/ui/api/auth` на subrouter вместо root router HandleFunc.
|
||||||
- Собрал v0.1.16, задеплоил → **всё ещё 404**
|
- Собрал v0.1.16, задеплоил → **всё ещё 404**
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user