diff --git a/tier2/gen-worker/worker/gate_judge.py b/tier2/gen-worker/worker/gate_judge.py index 50110334..f7a9ddf1 100644 --- a/tier2/gen-worker/worker/gate_judge.py +++ b/tier2/gen-worker/worker/gate_judge.py @@ -321,7 +321,10 @@ def judge_cheap_verdict(play_result: dict, *, game_id=None, staged_dir=None) -> # 放行必须「顶层 pass 且有逐门 guards」:空 guards 无从证明九门真跑过,不放行(防空 verdict 假绿)。 passed = bool(v.get("pass")) and bool(guards) failed_gates = [k for k, g in guards.items() if isinstance(g, dict) and g.get("pass") is False] - obj = build_cheap_feedback_obj(v, game_id=game_id, staged_dir=staged_dir) if not passed else None + if passed: + # 全绿:feedback 只作日志/trace 用(GateJudgment 契约:passed=True 时不回喂),给准确描述。 + return GateJudgment(passed=True, failed_gates=failed_gates, feedback="九门全绿,放行。") + obj = build_cheap_feedback_obj(v, game_id=game_id, staged_dir=staged_dir) if obj is not None: feedback = _render_cheap_feedback(obj) if staged_dir is not None: