Files
portal/night.config.example.json
T
Дмитрий 25705df1f3 забытая пауза гаснет через сутки — решение владельца 78 наконец построено и ЗОВЁТСЯ
🔑 ЗАМЕР ПЕРЕД РАБОТОЙ ПЕРЕВЕРНУЛ ЗАДАНИЕ. Владелец направил смену на кусок 6, зная
по моей же бумаге, что куска нет. Перепись поимённо показала: кусок 6 построен ПОЧТИ
ЦЕЛИКОМ — `statePath`, `resumePoint`, `resumePlan`, `rabotaPosleZachtennogo`, `sledOtkata`,
`resumeChecks`, `vyborProdolzhaemogo`, `zavestiProdolzhenie` стоят и зовутся из живого кода
(`cli.mjs`, `run.mjs`, `supervisor.mjs`), кнопка `run --resume` разведена с обычным запуском.
Не построена была ровно ОДНА работа из одиннадцати — задача 9а. Её и построил.
🔴 Бумага смене 37 называла кусок 6 «главным кандидатом, которого нет в живом коде».
Так вышло оттого, что смена 36 читала ПЛАН, а не код. Правило 204 окупилось семнадцатый раз.

ЧТО ПОСТРОЕНО. Работник, простоявший на паузе сутки ОТ МИНУТЫ ПОСТАНОВКИ НА ПАУЗУ, гасится
сам, и владельцу уходит строка. Пауза — команда владельца, отменять её система не вправе,
но ЗАБЫТЫЙ работник держит рабочий угол, свою базу и одно место из семи вечно.

🔴 ОТСЧЁТ ОТ МИНУТЫ ПАУЗЫ, А НЕ ОТ НАЧАЛА ПРОГОНА — оговорено владельцем прямым словом
и закрыто отдельной проверкой: прогон, идущий вторые сутки, работника, поставленного
на паузу час назад, не трогает. Переведи отсчёт на начало прогона — краснеет.

🔴 СБОЙ НЕ ГАСИТ. Файл паузы порван, поля `since` нет или оно не число — работник остаётся
жив, а про сбой уходит строка. Молчаливое «наверное, сутки прошли» гасило бы работника
владельца по сломанному файлу.

🔴 РЕШЕНИЕ 115 ЦЕЛО: у забытой паузы СВОЙ срок в сутки, а не отсечка 8:00. Поставленный
в 23:00 доживает до утра и гаснет в 23:00 следующего дня. `morningCutoff` не тронут.

ПО ПРАВИЛАМ, СТОРОЖ ПЕРВЫМ. Правило: предсказано красных 6, вышло 6.
Зовущий: предсказано 3, вышло 3.

🪤 СТОЛКНОВЕНИЕ ИМЁН, ВТОРОЕ ПОДРЯД У ЭТОГО ПЛАНА. План звал свой блок «6б»; за время,
что план лежал, имя занял чужой блок «пустой расход» (решение владельца 29, построен 06.08).
До того имя «6а» из того же плана занял кусок 7. Взял следующую свободную букву — блок «6в»,
как велит договор о стыках: буквой к соседнему номеру, без перенумерации.
Порядок в круге: 6 (встал ли он) → 6б (пустой расход) → 6в (забытая пауза).

🟢 ВЫРЕЗАНИЕ ПОДСУНУЛО ИМЕННО ТОТ ОБМАН, НА КОТОРОМ ПОПАЛИСЬ ОБА В ПРОШЛУЮ СМЕНУ: живой зов
убран, слово `zabytayaPauzaHit(` оставлено ТОЛЬКО в примечании. Сторож не обманулся —
покраснел, все три. Он читает круг через `bezPrimechaniy`.

🪤 НАЗВАНО ЧЕСТНО, ЧЕГО НЕТ. Полного живого П-51 — круг с паузой суточной давности,
с часовой и со временем, подведённым к 08:01, — я не сделал: обвязка живого круга лежит
в чужом `supervisor.test.mjs`, а задача 9а чужих файлов проверок трогать не велит.
Вместо него — сторож класса 232 на зовущего, тем же приёмом, каким закрыт Э9. Полный П-51
остаётся долгом и назван в отчёте смены.

Полный прогон: 3047 проверок в 114 файлах, код 0 (на входе смены 3029).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 15:26:14 +03:00

44 lines
1.2 KiB
JSON

{
"worker_hours_limit": 24,
"service_wait_hours": 2,
"supervisor_tick_seconds": 30,
"stall_minutes": 30,
"minut_bez_dela": 240,
"odinakovyh_otchyotov_podryad": 5,
"pause_wait_minutes": 20,
"owner_answer_deadline_hours": 24,
"forgotten_pause_hours": 24,
"max_tasks_at_once": 1,
"max_workers_per_task": 7,
"workspace_max_age_days": 7,
"base_branch": "feat/noch-proba-1",
"worker_model": "opus",
"rate_limit_type": "seven_day",
"bez_doli_ne_zapuskat": false,
"run_share": 0.14285714285714285,
"start_floor_share": 0.99,
"probe_model": "haiku",
"probe_budget_per_shift": 30,
"probe_budget_window_hours": 24,
"spawn_budget_per_shift": 20,
"item_tests_timeout_minutes": 10,
"disk_free_min_gb": 5,
"disk_bad_probes": 2,
"reviewer_urls": [
"http://localhost:8000/deals",
"http://localhost:8000/clients"
],
"reviewer_limit_minutes": 60,
"reviewer_shot_run_timeout_ms": 120000,
"reviewer_shot_width": 1280,
"reviewer_shot_height": 900,
"mail": {
"host": "SMTP-хост",
"port": 587,
"user": "логин",
"pass": "пароль — сюда, файл вне хранилища кода",
"from": "robot@liderra.ru",
"to": "почта владельца"
}
}