Как работает ночная оркестрация
Проблема: «оркестрация» приглашает к оверинжинирингу. Честный ответ этой платформы сегодня — намеренно скучный: батч-скрипт по таймеру с явными пинами и слоями страховочных сеток — плюс задокументированный целевой дизайн (долговечный интент + реконсиляция), в который он может вырасти. Эта страница описывает оба и прямо говорит, где что.
Слой 1 — настоящее: ночной батч
Заголовок раздела «Слой 1 — настоящее: ночной батч»Плановый таймер запускает обычный батч-скрипт, который обходит активные контракты: Collect (явно запиненная версия) → генерация под гейтом backpressure по глубине очереди → публикация → деплой хаба → верификация живого URL → штамп. Ни демона, ни workflow-движка — аудируемый скрипт, каждая фаза которого оставляет записи.
Слой 2 — страховочные сетки и есть архитектура
Заголовок раздела «Слой 2 — страховочные сетки и есть архитектура»Интересный дизайн не в счастливом пути, а в сетках под ним:
- Publish sweep — в конце того же прогона всё сгенерённое, но ещё не опубликованное получает второй шанс немедленно.
- Reconcile-таймеры — две независимые регулярные джобы (publish- и collect-сторона) перегоняют застрявшую работу каждые несколько часов; остатки упавшего прогона не ждут завтра.
- Outcome watchdog — поздним утром отдельный таймер проверяет, что ночь вообще произвела исход — доктрина «ноль — это провал» в применении к целой ночи.
- Самолечение уровня прогона — вачдог и рипер движка прогонов разбирают застрявшие прогоны и брошенные джобы слоем ниже.
Избыточность здесь намеренная: каждая сетка ловит класс отказов, который не видят остальные.
Слой 3 — целевой дизайн, честно помеченный
Заголовок раздела «Слой 3 — целевой дизайн, честно помеченный»Задокументированное следующее поколение — reconciler-first: день каждого контракта становится долговечной записью-циклом (интент), и единый цикл непрерывно сравнивает интент с наблюдаемыми фактами, делая по одному идемпотентному шагу за раз, — паттерн, который заменил бы рассыпанные сетки одним движком сходимости, добавил бы настоящий admission-гейт и provider-aware брейкер сабмита. Статус: спроектировано, не построено. Таблицы циклов ещё нет; текущий admission-контроль — это собственный backpressure батч-скрипта; универсальный крон-планировщик одиночных прогонов существует в коде, но выключен и в проде не используется. Страница изменится, когда изменится это.
Трейд-оффы, честно
Заголовок раздела «Трейд-оффы, честно»Батч-скрипт одноформен: контракты бегут фиксированным узором, а рулёжка на середине прогона ограничена (cancel бегущего пайплайна сегодня фактически no-op). Слоёные сетки означают, что логика восстановления живёт в нескольких местах — ровно та дисперсия, которую reconciler-дизайн хочет сколлапсировать. Платформа осознанно выкатила скучную версию первой и меряет, где реально болит; дизайн-док существует потому, что замеры теперь есть.
Пощупать за две минуты
Заголовок раздела «Пощупать за две минуты»API-домен cycles показывает воронку каждой ночи — dispatched,
completed, failed, recovered — вся эта страница в числах.
Спеки: SPEC-108 (reconciler-first — спроектирован), SPEC-021 (планировщик прогонов — построен, простаивает), SPEC-104 (FSM прогона — спроектирован), плюс живой daily-run тулинг.