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 куплено тегами, не входящими ни в один
|
# ⚠ ПОКРЫТИЕ ТЕГОВ КАССАМИ. Ревью 07.08: $2.62646 куплено тегами, не входящими ни в один
|
||||||
# глоб ни одной `Ledger` — класс дефекта, который шапка `buy.py` объявляет починенным.
|
# глоб ни одной `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=== ПОКРЫТИЕ ТРАТ КАССАМИ ===")
|
print("\n=== ПОКРЫТИЕ ТРАТ КАССАМИ ===")
|
||||||
covered = ("bo2-", "bo4-", "jv2-", "bo3-", "jf-", "jr-", "en2-", "jve-", "jc-", "dr-")
|
covered = ("bo2-", "bo4-", "jv2-", "bo3-", "jf-", "jr-", "en2-", "jve-", "jc-", "dr-")
|
||||||
unc = 0.0
|
unc = 0.0
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue