feat(doctor): диагностика в dry-run по умолчанию, ремонты по явному запросу
Доктор мутировал систему при каждом диагностическом запуске: отключал rebind protection dnsmasq, делал kill -9 процессу на портах 4534/9090, стирал syslog во время OOM-аудита и подменял resolv.conf на 1.1.1.1 как побочный эффект "проверки". - run_doctor_checks() теперь только диагностирует в dry-run: каждая мутация идёт через обёртки doc_set/doc_commit/doc_run/doc_unlink, которые записывают планируемое действие и сообщают "WILL FIX (doctor --fix)"; ремонты выполняются только через "tachyon doctor --fix" или repair=true - recovery-проверки (сервис остановлен) следуют тому же правилу - параллельные запуски доктора из LuCI, Telegram и cron сериализуются mkdir-локом со взятием устаревшего лока через 15 минут тишины - трекер применённых фиксов пишется атомарно (tmp+mv) - OOM-проверка больше не стирает logread (это форензика) и атрибутирует kill именно sing-box - ai_doctor прогонял весь набор проверок дважды (внутри local_rule_doctor и напрямую); результаты считаются один раз и переиспользуются - curl к LLM/Clash/подпискам получили connect + total таймауты, зависший эндпоинт больше не подвешивает доктора
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -17,7 +17,7 @@ fail() {
|
||||
}
|
||||
|
||||
# 1. Verify runtime.uc owns local_rule_doctor
|
||||
grep -Fq 'function local_rule_doctor()' "$TACHYON_LIB/diagnostics/runtime.uc" ||
|
||||
grep -Fq 'function local_rule_doctor(' "$TACHYON_LIB/diagnostics/runtime.uc" ||
|
||||
fail "runtime.uc must define local_rule_doctor heuristic engine"
|
||||
|
||||
# 2. Run ai-doctor without API key (local offline mode)
|
||||
@@ -64,8 +64,12 @@ grep -Fq 'function run_recovery_checks()' "$TACHYON_LIB/diagnostics/runtime.uc"
|
||||
fail "runtime.uc must define run_recovery_checks()"
|
||||
grep -Fq 'function verify_system()' "$TACHYON_LIB/diagnostics/runtime.uc" ||
|
||||
fail "runtime.uc must define verify_system()"
|
||||
grep -Fq 'let verify = verify_system();' "$TACHYON_LIB/diagnostics/runtime.uc" ||
|
||||
grep -Fq 'let verify = (pre_verify != null) ? pre_verify : verify_system();' "$TACHYON_LIB/diagnostics/runtime.uc" ||
|
||||
fail "local_rule_doctor no longer feeds live verification into its analysis"
|
||||
# ai_doctor must run the suite exactly once and share results with the
|
||||
# heuristic engine instead of executing every probe twice.
|
||||
grep -Fq 'let local_res = local_rule_doctor(res, verify);' "$TACHYON_LIB/diagnostics/runtime.uc" ||
|
||||
fail "ai_doctor must reuse doctor/verify results instead of re-running the suite"
|
||||
grep -Fq 'wan_fail_streak: int(st.wan_fail_streak || 0)' "$TACHYON_LIB/service/watchdog.uc" ||
|
||||
fail "watchdog status export no longer reports probe streaks to AI Doctor"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user