Files
autotest/polygon-docs/my-opinion-fable-vs-opus.md

35 lines
2.2 KiB
Markdown

# Моё мнение — сравнение аудитов Опуса и Fable 5
Дата: 2026-07-31
## Кто что нашёл
| Находка | Опус | Fable 5 |
|---------|------|---------|
| Auth на основном API | 🔴 | 🔴 |
| sleep блокирует /health → pod restart | — | 🔴 |
| setdefault не работает (gunicorn timing) | — | 🔴 |
| int(param_id) без try → 500 | — | 🟡 |
| modify на creating-инстансе | — | 🟡 |
| Публичный деплой vs single-user | 🔴 | — |
| _extract_subresource_name хрупкий | 🟡 | 🟡 |
| Память не чистится | 🟡 | 🟢 |
| Нет симуляции ошибок | 🟡 | 🟡 |
| Синхронный sleep vs ленивый dtFinish | 🟡 | — |
| stages: [] всегда пуст | — | 🟢 |
## Оценка
**Опус** — архитектор. Смотрит на систему сверху: «правильно ли спроектировано под задачу?». Нашёл структурный разрыв (публичный деплой vs однопользовательский дизайн), дал стратегические рекомендации (per-session модель).
**Fable 5** — инженер. Смотрит на код снизу: «что сломается при эксплуатации?». Нашёл три бага которые никто не заметил:
- `setdefault("WEB_CONCURRENCY", "1")` — не работает (gunicorn читает env ДО импорта app)
- `sleep(DELAY)` блокирует `/health` → если delay > healthcheck timeout → Nubes рестартит под
- `int(param_id)` без try → 500 на кривом JSON
## Что делать
Приоритет Fable прагматичнее: две строчки кода (cap DELAY + токен) спасут от краша пода. Приоритет Опуса стратегический: per-session модель нужна для параллельного CI, но это потом.
**Порядок:** Fable → Опус. Сначала закрыть риски эксплуатации, потом архитектурные улучшения.