- Added sonnet-review-of-gpt-analysis.md - GPT-5.4 правильно выявил lifecycle issues (event model, invocation history) - Но пропустил security roadmap (gVisor, NetworkPolicy, LLM validation) - Дополнен production security roadmap для следующего агента - Updated progress.md — зафиксированы оба анализа
13 KiB
Claude Sonnet 4.6: Review of GPT-5.4 Analysis
Дата: 2026-03-10
Автор: Claude Sonnet 4.6
Контекст: Анализ документа agent-handoff-2026-03-10.md, подготовленного GPT-5.4
Executive Summary
GPT-5.4 провёл детальный code review и выявил реальные архитектурные проблемы в текущей реализации sless. Анализ качественный, приоритизация разумная, но фокус исключительно на lifecycle/data consistency, при этом полностью упущен security roadmap для production.
Мой вердикт:
- ✅ GPT-5.4 правильно определил проблемы event model (A1, A2)
- ✅ Invocation history gap (A3) — точное попадание
- ✅ Приоритизация задач логична для текущего MVP
- ⚠️ Критичный пробел: безопасность multi-tenant serverless платформы вообще не упомянута
- ⚠️ Не учтён контекст беседы с пользователем про gVisor, LLM validation, runtime isolation
Где GPT-5.4 абсолютно прав
1. Event Model Problems (A1, A2) — критично
Проблема:
// trigger_controller.go
func (r *TriggerReconciler) SetupWithManager(mgr ctrl.Manager) error {
return ctrl.NewControllerManagedBy(mgr).
For(&sllessv1alpha1.Trigger{}). // ❌ нет watch на Function
Complete(r)
}
Trigger может зависнуть в waiting если Function не Ready на момент создания. Reconcile не произойдёт автоматически когда Function станет Ready.
Почему это важно: Классическая ошибка в operator patterns. Это не "незавершённая фича" а реальный race condition.
Моё мнение: Приоритет A1/A2 — верный. Это базовая корректность reconciliation loop.
2. Invocation History (A3) — не реализована
GPT-5.4 правильно выявил: таблица invocations есть, SaveInvocation() реализован, но нигде не вызывается.
// invoke.go — должно быть, но нет:
// store.SaveInvocation(ctx, &storage.Invocation{...})
Моё мнение: Согласен. Это не мелкая недоработка — это разрыв между API контрактом и реальностью.
3. Multi-tenancy через namespace в URL (A4) — проблема для production
// router.go
r.HandleFunc("/v1/namespaces/{namespace}/functions", ...)
Пользователь передаёт namespace в URL, но auth не проверяет принадлежность. Один токен = все namespace.
Моё мнение: Верно, но это known limitation для MVP. Важно не забыть при переходе к реальному tenant model.
4. Config inconsistency (B1) — мнимая конфигурируемость
// config.go
FunctionNamespacePrefix string // есть поле
// function_controller.go
targetNS := "sless-fn-" + fn.Namespace // 🔥 хардкод, игнорирует конфиг
Моё мнение: Полностью согласен. Либо убрать поле либо использовать везде. Сейчас это вводит в заблуждение.
Где GPT-5.4 поверхностен или не учёл контекст
1. Security для multi-tenant serverless — критичный пробел
GPT-5.4 вообще не упомянул:
- Container escape protection (gVisor/Kata)
- Network isolation между namespace (NetworkPolicy)
- Code validation перед деплоем
- Resource abuse prevention
- Kernel-level isolation
Проблема: Для публичного managed serverless это не "nice to have" — это базовое требование безопасности.
Контекст из беседы: Пользователь спрашивал: "как быть? всё должно быть безопасно". Обсуждали:
- gVisor — sandbox runtime для защиты от container escape
- NetworkPolicy — изоляция трафика между namespace
- LLM validation — проверка кода на malicious patterns
- Capsule/vCluster — для усиленной изоляции
Мой вывод: GPT-5.4 дал план для "внутреннего инструмента", но не для "облачного продукта".
2. LLM integration для security — не упомянута
Контекст из беседы:
- "LLM скоро запустят в облаке. и он должен себя оправдывать"
- Идея: builder вызывает LLM для проверки кода перед сборкой
- Защита от криптомайнеров, ботнетов, DDoS-агентов
GPT-5.4 вообще не включил это в roadmap, хотя пользователь явно видит это частью системы.
Мой вывод: LLM validation должна быть в плане после исправления lifecycle issues, но до production launch.
3. Go runtime — не упомянут
Контекст из беседы:
- "пока не надо, но надо golang будет"
- Обсуждали двухэтапный Dockerfile (builder → scratch)
- Go даёт ~5-10MB бинарь vs ~100MB Python/Node
GPT-5.4 не включил Go runtime в roadmap, хотя это логичный next step после стабилизации существующих рантаймов.
4. Production deployment model — не рассмотрен
GPT-5.4 правильно отметил что один бинарь (API + operator) "нормален для v1", но не дал vision когда и как разделять.
Что пропущено:
- API становится data plane proxy → bottleneck
- HA для operator manager (leader election есть, но не обсуждается)
- Separate control/data plane для масштабирования
Мой вывод: Для MVP текущая архитектура OK, но GPT-5.4 мог дать более чёткий trigger point для refactor.
Где я частично не согласен
1. Timeout enforcement (B2) — не приоритет сейчас
GPT-5.4 включил TimeoutSec в "критичность B", но реально это less critical чем security.
Моё мнение:
- Runtime timeout — nice to have для MVP
- Можно задокументировать как "informational field" и вернуться позже
- Важнее NetworkPolicy + gVisor чем timeout enforcement
2. Test coverage (B4) — правильно отмечено, но слишком общо
GPT-5.4: "Тестов ядра почти нет".
Моё мнение:
- Да, это проблема
- Но конкретные приоритеты тестов должны быть:
- Event model (Trigger/FunctionJob watch на Function)
- Cleanup finalizers
- Invocation history recording
- Не надо гнаться за coverage %, надо покрыть critical paths
Production Security Roadmap (пропущен GPT-5.4)
Это должно быть в handoff, но отсутствует.
Immediate (до первых external users)
-
gVisor RuntimeClass
spec: runtimeClassName: gvisor- Защита от container escape
- ~10-20% performance overhead
- Установка на ноды + RuntimeClass в k8s
-
NetworkPolicy per namespace
kind: NetworkPolicy spec: podSelector: {} policyTypes: ["Ingress", "Egress"] ingress: [] # Deny all by default- Запретить трафик между
sless-fn-*namespace - Разрешить только к external services + internal DNS
- Запретить трафик между
-
ResourceQuota per tenant
apiVersion: v1 kind: ResourceQuota spec: hard: requests.cpu: "10" requests.memory: 20Gi pods: "50"
Near-term (параллельно с lifecycle fixes)
-
Static code analysis в builder
- Python:
banditbefore Docker build - Node.js:
npm audit - Блокировка деплоя при critical issues
- Python:
-
Image scanning
- Trivy/Grype после kaniko build
- Reject образа если critical CVE
Medium-term (перед production launch)
-
LLM validation hook
- API call к облачному LLM перед сборкой
- Детект криптомайнеров, port scanners, DDoS agents
- Premium feature или throttled для free tier
-
True tenant isolation
- Identity из JWT → namespace mapping
- User не может передать namespace в URL
- RBAC per tenant
Рекомендуемый порядок работ (мой взгляд vs GPT-5.4)
GPT-5.4 предложил:
- Event model (Trigger/FunctionJob watch)
- Invocation history
- Timeout/validation sync
- Config consistency
- Tests
Я рекомендую:
- ✅ Event model — согласен, приоритет #1
- ✅ Invocation history — согласен, приоритет #2
- ⚠️ Добавить: gVisor + NetworkPolicy (до external users)
- ✅ Config consistency
- ✅ Tests (но фокус на critical paths)
- ⚠️ Добавить: Static analysis в builder
- Timeout enforcement (lower priority)
- ⚠️ Добавить: LLM validation (перед production)
Практические дополнения для следующего агента
Что делать с GPT-5.4 handoff
Использовать как base, но:
- После этапа 2 (invocation history) → добавить security hardening
- Перед production launch → полный security audit + LLM integration
- Go runtime → после стабилизации Python/Node (не urgent)
Конкретные файлы для security work (пропущены GPT-5.4)
gVisor:
controllers/function_controller.go— добавитьRuntimeClassName: "gvisor"в PodSpec- Установка на ноды (вне кода)
NetworkPolicy:
deployments/k8s/network-policy.yaml— создать templatecontrollers/function_controller.go— создавать NetworkPolicy per namespace
Code validation:
internal/builder/builder.go— добавить pre-build validation hookinternal/validator/(новый) — интеграция с bandit/npm audit
LLM validation:
internal/validator/llm.go— API client к облачному LLMinternal/api/handler/upload.go— вызов перед S3 upload
Файлы которые следующий агент должен создать/изучить
GPT-5.4 не упомянул, но критичны:
doc/security/multi-tenancy-model.md— дизайн tenant isolationdoc/security/runtime-isolation.md— gVisor/Kata decision + implementationdeployments/k8s/network-policy-template.yaml— NetworkPolicy per tenantdeployments/k8s/resource-quota-template.yaml— ResourceQuota per tenantinternal/validator/— новый пакет для code validationdoc/decisions/gvisor-vs-kata.md— почему gVisor for MVP
Окончательный вердикт
GPT-5.4 провёл отличный технический аудит кода, но смотрел через призму "внутреннего инструмента", а не "managed cloud service".
Сильные стороны анализа:
- ✅ Детальный разбор lifecycle problems
- ✅ Конкретные файлы и строки кода
- ✅ Приоритизация по критичности
- ✅ Практичный план для MVP stabilization
Пробелы:
- ❌ Security roadmap отсутствует
- ❌ Не учтён контекст беседы (gVisor, LLM, Go runtime)
- ❌ Production deployment model не рассмотрен
- ❌ Tenant isolation strategy не обсуждается
Рекомендация: Использовать GPT-5.4 handoff как техническую базу, дополнить моими замечаниями по security, затем скомбинировать в единый production roadmap.
Для следующего агента:
- Читать GPT-5.4 документ для lifecycle issues
- Читать этот документ для security roadmap
- Начинать с lifecycle (приоритет GPT-5.4)
- После стабилизации — security hardening (мой приоритет)
- Перед production launch — полный аудит (желательно Claude Opus 4.6)
Действия для этой сессии
Следующий шаг: обновить doc/progress.md, зафиксировать оба анализа (GPT-5.4 + мой), чтобы следующий агент видел полную картину.