From 90b2ff2db3caae2c621a45688a2c93cefce0db6c Mon Sep 17 00:00:00 2001 From: Janine Lohse Date: Sun, 18 Oct 2026 15:21:49 +0200 Subject: [PATCH 1/2] fix issue #1732 --- cms/grading/tasktypes/interactive_keeper.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/cms/grading/tasktypes/interactive_keeper.py b/cms/grading/tasktypes/interactive_keeper.py index 30953904ff..be6922ca25 100644 --- a/cms/grading/tasktypes/interactive_keeper.py +++ b/cms/grading/tasktypes/interactive_keeper.py @@ -240,6 +240,9 @@ def do_merge(a, b): pass elif not (success_mgr and box_success_user): success = False + elif not evaluation_success_mgr: + success = False + text = ["Controller failed"] else: if not evaluation_success_user: outcome = 0.0 @@ -250,11 +253,11 @@ def do_merge(a, b): + controller_text[1:] + text[1:] ) - elif not evaluation_success_mgr: - outcome = 0.0 - text = ["Controller failed"] + (controller_text if controller_text else []) + elif score is None: + success = False + text = ["Controller did not report a score"] else: - outcome = score if score is not None else 0.0 + outcome = score text = controller_text result = { From 75f190ed042b1b5c92a13cab6918791c193d2ee0 Mon Sep 17 00:00:00 2001 From: Janine Lohse Date: Mon, 19 Oct 2026 10:58:23 +0200 Subject: [PATCH 2/2] prioritize contestant failure over controller failure --- cms/grading/tasktypes/interactive_keeper.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cms/grading/tasktypes/interactive_keeper.py b/cms/grading/tasktypes/interactive_keeper.py index be6922ca25..bf03a27979 100644 --- a/cms/grading/tasktypes/interactive_keeper.py +++ b/cms/grading/tasktypes/interactive_keeper.py @@ -240,9 +240,6 @@ def do_merge(a, b): pass elif not (success_mgr and box_success_user): success = False - elif not evaluation_success_mgr: - success = False - text = ["Controller failed"] else: if not evaluation_success_user: outcome = 0.0 @@ -253,6 +250,9 @@ def do_merge(a, b): + controller_text[1:] + text[1:] ) + elif not evaluation_success_mgr: + success = False + text = ["Controller failed"] elif score is None: success = False text = ["Controller did not report a score"]