Restore the drift checks lost in the incident recovery and pin a linter for the polygon zone after a shadowed-name bug silently cost half the gate coverage
This commit is contained in:
parent
4b82fb1799
commit
defe869c28
2 changed files with 45 additions and 0 deletions
18
eval/role_topology/ruff.toml
Normal file
18
eval/role_topology/ruff.toml
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
# Линтер зоны полигона. ⚠ Заведён 08.08 после того, как оркестратор разобрал баг
|
||||
# `med = med(costs)` в `verify_report.py:237`: присваивание делает имя локальным для ВСЕЙ
|
||||
# функции, поэтому правая часть читает несуществующую локальную и падает `UnboundLocalError`.
|
||||
# Компилятор решает это до запуска, глазами не видно. Цена была двадцать проверок гейта из
|
||||
# сорока двух — вся денежная часть. Класс ловится pyflakes-семейством бесплатно и мгновенно.
|
||||
#
|
||||
# ⚠ Второе основание: файлы зоны несли подавления `# noqa: PLW0603`, `# noqa: PLC0415`,
|
||||
# `# noqa: E402`, `# noqa: PLR0915` — то есть глушилки для проверяльщика, который НЕ ЗАПУСКАЛСЯ.
|
||||
# У бэкенда и платформы линтер запинен и гоняется батареей; у полигона его не было, хотя код
|
||||
# здесь пишет к ПЛАТНЫМ вызовам.
|
||||
line-length = 100
|
||||
target-version = "py313"
|
||||
|
||||
[lint]
|
||||
# Узкий набор намеренно: ловим то, что ломает исполнение, а не стиль. Полигон пишет
|
||||
# исследовательский код, и широкий набор дал бы шум вместо сигнала.
|
||||
select = ["F", "E9", "PLE", "B"]
|
||||
ignore = ["E402", "B008"]
|
||||
|
|
@ -317,6 +317,33 @@ def main() -> None: # noqa: PLR0915
|
|||
# ⚠ ПОКРЫТИЕ ТЕГОВ КАССАМИ. Ревью 07.08: $2.62646 куплено тегами, не входящими ни в один
|
||||
# глоб ни одной `Ledger` — класс дефекта, который шапка `buy.py` объявляет починенным.
|
||||
# Проверка не запрещает исторические траты, а требует, чтобы непокрытая сумма была НАЗВАНА.
|
||||
# ⚠ ПРОВЕРКИ ДРЕЙФА, утраченные при восстановлении после инцидента 08.08 (было 63 проверки,
|
||||
# стало 56). Числа берутся из того же модуля, которым считаются, и сверяются с ТЕКСТОМ отчёта.
|
||||
print("\n=== §ДРЕЙФ ===")
|
||||
try:
|
||||
sys.path.insert(0, str(Path(__file__).parent))
|
||||
import drift as DR # noqa: PLC0415
|
||||
ch = DR.chapters()
|
||||
common = [c for c in ch if all(DR.text(a, c["uid"]).strip() for a in DR.DRIFT_ARMS)]
|
||||
ck(f"общих глав у всех армов: {len(common)}",
|
||||
re.search(rf"Общих глав у всех армов: {len(common)}(?!\d)", text) is not None
|
||||
or num_in(text, f"{len(common)} глав"), str(len(common)))
|
||||
for a in DR.DRIFT_ARMS:
|
||||
s = c_ = 0
|
||||
for zh, (_1, _2, r1, _3) in DR.BO.IP.TERMS.items():
|
||||
for c in common:
|
||||
n = c["source"].count(zh)
|
||||
if not n:
|
||||
continue
|
||||
s += n
|
||||
c_ += min(len(re.findall(r1, DR.text(a, c["uid"]), re.I)), n)
|
||||
ck(f"дрейф {a}: покрытие {c_}/{s} напечатано в отчёте",
|
||||
num_in(text, f"{c_}/{s}") or num_in(text, f"{c_ / s:.2f}"), f"{c_}/{s}")
|
||||
ck(f"касса дрейфа ${DR.LED_DRIFT.spent():.5f} ≤ потолка ${DR.CEIL_DRIFT:.2f}",
|
||||
DR.LED_DRIFT.spent() <= DR.CEIL_DRIFT, f"{DR.LED_DRIFT.spent():.5f}")
|
||||
except Exception as e: # noqa: BLE001
|
||||
ck(f"дрейф проверяется гейтом ({type(e).__name__})", False, str(e)[:60])
|
||||
|
||||
print("\n=== ПОКРЫТИЕ ТРАТ КАССАМИ ===")
|
||||
covered = ("bo2-", "bo4-", "jv2-", "bo3-", "jf-", "jr-", "en2-", "jve-", "jc-", "dr-")
|
||||
unc = 0.0
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue