Token the two constants the sweep blocker is built on, copied from the source lines

This commit is contained in:
Claude (backend session) 2026-08-21 22:33:06 +03:00
parent 503cf3459d
commit f799856e58

View file

@ -59,7 +59,7 @@
### Ось 3 — ОЧЕРЕДЬ И ДЖОБЫ
**Блокер здесь УЖЕ НАЙДЕН — не ищи его заново, ищи его СИБЛИНГОВ.** Найденное: бюджет прохода свипа 2 минуты против бюджета одного прогона 60 секунд (`cmd/tmplatformd/runner.go:189` и `internal/runs/reconcile.go:70`) ⇒ двух медленных прогонов хватает, чтобы проход кончился до `UnsettledRuns` — единственного ретрая отложенного расчёта; `ListLiveRuns` сортирует по `started_at`, поэтому заклиненный прогон стоит в голове и голодит хвост детерминированно; ручки нет — `runs.Config.RunBudget` объявлен и в проде не присваивается.
**Блокер здесь УЖЕ НАЙДЕН — не ищи его заново, ищи его СИБЛИНГОВ.** Найденное: бюджет прохода свипа 2 минуты против бюджета одного прогона 60 секунд (`cmd/tmplatformd/runner.go:189`=`sweepBudget = 2 * time.Minute` и `internal/runs/reconcile.go:70`=`defaultRunBudget = 60 * time.Second`) ⇒ двух медленных прогонов хватает, чтобы проход кончился до `UnsettledRuns` — единственного ретрая отложенного расчёта; `ListLiveRuns` сортирует по `started_at`, поэтому заклиненный прогон стоит в голове и голодит хвост детерминированно; ручки нет — `runs.Config.RunBudget` объявлен и в проде не присваивается.
Приор: это класс «арифметика двух констант в разных пакетах, ни одна не покрыта тестом». Ищи такие же: где ещё поведение задаётся парой чисел, живущих врозь, и где у функции нет ни одного теста. Предмет шире: River-задания и их повторы · идемпотентность обработчиков · крэш-окна между сигналом и записью · свипы (интейк, идемпотентность, материализация) и их взаимное голодание.