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
|
||||
|
||||
### 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) ✅
|
||||
- ✅ Фикс критического дедлока в `create_queue.go` (deadlock после первого CreateQueue)
|
||||
- ✅ Фикс 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`.
|
||||
|
||||
---
|
||||
|
||||
## Сессия 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.
|
||||
- Собрал v0.1.16, задеплоил → **всё ещё 404**
|
||||
|
||||
|
||||
Reference in New Issue
Block a user