diff --git a/platform/docs/PLATFORM_P8_REVIEW_SESSION_PROMPT.md b/platform/docs/PLATFORM_P8_REVIEW_SESSION_PROMPT.md index 94d7e1a4..d55cadff 100644 --- a/platform/docs/PLATFORM_P8_REVIEW_SESSION_PROMPT.md +++ b/platform/docs/PLATFORM_P8_REVIEW_SESSION_PROMPT.md @@ -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-задания и их повторы · идемпотентность обработчиков · крэш-окна между сигналом и записью · свипы (интейк, идемпотентность, материализация) и их взаимное голодание.