From 7384c57f1aab6f390be7de90b1e6dadedeaa34ef Mon Sep 17 00:00:00 2001 From: "Claude (backend session)" Date: Sat, 8 Aug 2026 20:58:50 +0300 Subject: [PATCH] Re-freeze the phase 2 floor stage so its two end-to-end runs and their units can be split across processes --- eval/tenant_panel/panel.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/eval/tenant_panel/panel.py b/eval/tenant_panel/panel.py index c602ba7b..494024e7 100644 --- a/eval/tenant_panel/panel.py +++ b/eval/tenant_panel/panel.py @@ -234,7 +234,7 @@ def cmd_edit(argv: list[str] | None = None) -> None: print(f"потрачено Ф2 ${led.spent():.6f}") -def cmd_floor() -> None: +def cmd_floor(argv: list[str] | None = None) -> None: """ШУМОВОЙ ПОЛ: ДВА независимых прогона якорного арма end-to-end на тех же zh-единицах. Истинная разница между `p1` и `p2` — ноль по построению, поэтому измеренный разброс и есть @@ -242,8 +242,15 @@ def cmd_floor() -> None: перевес ниже пола печатается вердиктом «ниже порога различимости». """ led = MONEY.Guarded("Ф2", default_expect=0.01) - for p in (1, 2): - for u in M.units_zh(): + argv = argv or [] + part = _part(argv) + passes = [int(a.split("=", 1)[1]) for a in argv if a.startswith("--pass=")] or [1, 2] + zh = M.units_zh() + if part: + i, n = (int(x) for x in part.split("/")) + zh = [u for k, u in enumerate(zh) if k % n == i] + for p in passes: + for u in zh: d = buy_draft(led, ANCHOR, u, False, floor=p) if d.get("skipped"): print("⛔ потолок Ф2 — стоп") @@ -323,5 +330,5 @@ def cmd_score() -> None: if __name__ == "__main__": a = sys.argv[1:] or ["--plan"] fn = {"--plan": cmd_plan, "--drafts": lambda: cmd_drafts(a), "--edit": lambda: cmd_edit(a), - "--floor": cmd_floor, "--score": cmd_score}.get(a[0]) + "--floor": lambda: cmd_floor(a), "--score": cmd_score}.get(a[0]) fn() if fn else print(__doc__)