Commit Graph

12 Commits

Author SHA1 Message Date
Дмитрий f07ff7a9d6 работник больше не ждёт ответа вечно: сутки без ответа — гаснет
Задача 7 куска 5. 🔴 Зачем это нужно, хотя ждущий никому не мешает: ожидание ответа предел
часов НЕ ест (решение владельца 56) — и ровно поэтому вечное ожидание опасно. Спросивший
и не дождавшийся не гаснет ни по пределу часов, ни по молчанию (признаки жизни у него идут,
он исправно отчитывается о себе). Он висел бы, занимая место в потолке работников, пока
кто-нибудь не заметит его рукой.

· срок считается НЕЗАВИСИМО от того, ждёт работник или идёт дальше «в расчёте на ответ»
  (решение 53): вопрос без ответа сутки означает, что он всё это время работает вслепую;
· из нескольких просроченных берётся САМЫЙ РАННИЙ — он дольше держит работника, и с него
  началось ожидание. Возьми мы последний, причина в утренней бумаге назвала бы не тот вопрос;
· 🟢 ночной вопрос начинает отсчёт с ближайшего утра — это уже умело правило `deadlineHit`:
  спрашивать среди ночи и через сутки гасить за то, что владелец спал, значит наказывать
  его за сон;
· 🔴 СТАРШИНСТВО ДВУХ ПРИЧИН НАЗВАНО ВСЛУХ: приговор пределов старше просрочки — пределы
  про место, деньги и часы, а просрочка про то, что ответа всё нет. Совпади они в одну
  минуту, владелец прочитает ту причину, которая дороже;
· 🪤 своей ветки гашения НЕ заводится: приговор дописывается в тот же `verdict`, дальше
  одна дорога. Второй гаситель на то же дело разъехался бы с первым молча.

🔴 СВОЯ ОШИБКА, ПОЙМАННАЯ СВОЕЙ ЖЕ ПРОВЕРКОЙ НА СВЕЖЕМ ВОПРОСЕ: `deadlineHit` отдаёт
ОБЪЕКТ `{hit, from, reason}`, а не «да/нет». Я проверял его на истинность — а объект истинен
ВСЕГДА, и правило гасило бы каждого, кто задал хоть один вопрос, через мгновение после
вопроса. Красное поймало сразу; проверка «свежий вопрос срока не переступил» стоила ровно
трёх строк и окупилась в первый же прогон.

🟢 И чужой сторож потребовал своё: настройка `owner_answer_deadline_hours` добавлена
в образец `night.config.example.json` — правило «в образце есть каждая настройка, которую
код берёт из cfg». Умолчание 24 ч; о том, что срок взят умолчанием, владелец узнаёт
СТРОКОЙ в сводке (один раз за прогон), а не молчанием.

Прогон: 3015 проверок в 114 файлах, код 0 — ровно предсказанное (было 3009, +6 моих).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 10:40:19 +03:00
Дмитрий 8ed536c370 night: предел работнику — сутки владельца (решение 37), а не восемь часов 2026-08-05 12:25:04 +03:00
Дмитрий 8b0ae20ca1 сторож на молчаливую смерть врезки: подмешай отчёт о себе в «дело сдвинулось» — четырёхчасовая примета краснеет, прежде молчала 2026-08-05 08:25:23 +03:00
Дмитрий 1874b866cc сторож настроек: сверял поля, а решения владельца про смысл — три новых разряда, образец и ветка 2026-08-04 20:38:20 +03:00
Дмитрий 76a9dedd22 feat(ночь): кусок 7 — main приёмщика: настройки, review.json, две строки в сводку; сторож живого запуска получил право на node для П76 2026-08-03 04:56:31 +03:00
Дмитрий e63e8f6591 стена 1: денежные ворота стоят на светофоре системы, а не на доле, которой она не шлёт — решения Р1-Р6 2026-08-03 03:18:54 +03:00
Дмитрий 1d6062f0d6 feat(ночь): настоящий замок «пункт закрыт» — надзиратель сам гоняет проверки пункта и берёт коммит из угла 2026-08-02 20:22:45 +03:00
Дмитрий 29d32bd50c feat(ночь): предел платных замеров остатка — 30 за смену, счёт переживает перезапуск, сторож на класс 2026-08-02 12:56:33 +03:00
Дмитрий 9cd90b649c правка(ночь): три хвоста — disk_bad_probes в образец, причина ненайденного дня в сводку, один сравниватель пути вместо трёх 2026-08-02 02:50:13 +03:00
Дмитрий bf10b50071 fix(ночь): вернуть pause_wait_minutes в образец настроек — читает supervisor.mjs:377 2026-08-01 23:46:12 +03:00
Дмитрий b581b093d7 feat(ночь): замер свободного места — не замерили значит нельзя; пять настроек куска 2 в образец 2026-08-01 23:41:29 +03:00
Дмитрий 0df8ea9390 feat(затея): почва первой части — чиним невидимые проверки в подкаталогах, закрываем .night от хранилища 2026-08-01 20:56:41 +03:00