From bfe8be3a1a85aa2104bb8e9f2fb2c5147d9fbcaf Mon Sep 17 00:00:00 2001 From: Ben Sima Date: Thu, 27 Nov 2025 22:21:02 -0500 Subject: Exclude tasks with retry >= 3 from ready queue Tasks that have failed 3 or more times need human intervention and should not appear in the ready queue. This prevents infinite retry loops. Task-Id: t-164 Amp-Thread-ID: https://ampcode.com/threads/T-4c8bc88f-f8f9-4921-96e5-3b68552c0bc0 Co-authored-by: Amp --- Omni/Task.hs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'Omni/Task.hs') diff --git a/Omni/Task.hs b/Omni/Task.hs index b0dbe89..663cc02 100644 --- a/Omni/Task.hs +++ b/Omni/Task.hs @@ -483,6 +483,21 @@ unitTests = epic <- createTask "Epic task" Epic Nothing Nothing P2 [] Nothing ready <- getReadyTasks (taskId epic `notElem` map taskId ready) Test.@?= True, + Test.unit "ready tasks exclude tasks needing intervention (retry >= 3)" <| do + task <- createTask "Failing task" WorkTask Nothing Nothing P2 [] Nothing + ready1 <- getReadyTasks + (taskId task `elem` map taskId ready1) Test.@?= True + setRetryContext + RetryContext + { retryTaskId = taskId task, + retryOriginalCommit = "abc123", + retryConflictFiles = [], + retryAttempt = 3, + retryReason = "test_failure", + retryNotes = Nothing + } + ready2 <- getReadyTasks + (taskId task `notElem` map taskId ready2) Test.@?= True, Test.unit "child task gets sequential ID" <| do parent <- createTask "Parent" Epic Nothing Nothing P2 [] Nothing child1 <- createTask "Child 1" WorkTask (Just (taskId parent)) Nothing P2 [] Nothing -- cgit v1.2.3