mirror of
https://github.com/dartdavros/chatballs.git
synced 2026-10-05 17:14:59 +03:00
SPEC-HUB-0027 §3.2/§12, этап 3. Инварианты включаются на изменении, а не только на создании: непродуктовый канал больше не может нести checkout, attribution или обязательную идентичность. Проверка идёт по итоговому состоянию, а не по переданным полям. Поэтому снять продукт и выключить коммерческие флаги можно одним запросом, а запрос, оставляющий канал в запрещённой комбинации, отклоняется целиком — имя из того же PATCH тоже не сохраняется. Данные приведены заранее, иначе первый же PATCH имени упёрся бы в ошибку политики. Отчёт нашёл один нарушитель — непродуктовый канал edevs с включёнными checkout и attribution. По решению владельца оба флага сняты, продукт не назначался. Та же миграция чинит дефолты модели, которые сами нарушали P1-P2: канал создаётся без продукта, а attribution и checkout были включены по умолчанию. Нарушения P3-P5 миграция не исправляет, а останавливает выкат с перечнем каналов: снятие обязательной идентичности меняет смысл канала. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>