summaryrefslogtreecommitdiff
path: root/Omni/Task.hs
diff options
context:
space:
mode:
authorBen Sima <ben@bensima.com>2025-11-27 22:21:02 -0500
committerBen Sima <ben@bensima.com>2025-11-27 22:21:02 -0500
commitbfe8be3a1a85aa2104bb8e9f2fb2c5147d9fbcaf (patch)
treefa40260c3d587846ea15f0996386d645882baa3f /Omni/Task.hs
parentfc84d75d38834417f8c9a27e7826a51a391644e5 (diff)
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 <amp@ampcode.com>
Diffstat (limited to 'Omni/Task.hs')
-rw-r--r--Omni/Task.hs15
1 files changed, 15 insertions, 0 deletions
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