fix(todo-continuation-enforcer): gate stagnation on successful injections

Keep failed or skipped injections on the MAX_CONSECUTIVE_FAILURES path so unchanged todos do not trip stagnation first.
This commit is contained in:
YeonGyu-Kim
2026-03-11 18:39:54 +09:00
parent b590d8335f
commit 0c52d42f8b
5 changed files with 66 additions and 3 deletions
@@ -105,6 +105,7 @@ export function createSessionStateStore(): SessionStateStore {
currentTodoStatusSignature !== undefined
&& trackedSession.lastTodoStatusSignature !== undefined
&& currentTodoStatusSignature !== trackedSession.lastTodoStatusSignature
const hadSuccessfulInjectionAwaitingProgressCheck = state.awaitingPostInjectionProgressCheck === true
state.lastIncompleteCount = incompleteCount
if (currentCompletedCount !== undefined) {
@@ -125,6 +126,7 @@ export function createSessionStateStore(): SessionStateStore {
if (incompleteCount < previousIncompleteCount || hasCompletedMoreTodos || hasTodoStatusChanged) {
state.stagnationCount = 0
state.awaitingPostInjectionProgressCheck = false
return {
previousIncompleteCount,
stagnationCount: state.stagnationCount,
@@ -132,7 +134,7 @@ export function createSessionStateStore(): SessionStateStore {
}
}
if (state.lastInjectedAt === undefined) {
if (!hadSuccessfulInjectionAwaitingProgressCheck) {
return {
previousIncompleteCount,
stagnationCount: state.stagnationCount,
@@ -140,6 +142,7 @@ export function createSessionStateStore(): SessionStateStore {
}
}
state.awaitingPostInjectionProgressCheck = false
state.stagnationCount += 1
return {
previousIncompleteCount,
@@ -158,6 +161,7 @@ export function createSessionStateStore(): SessionStateStore {
state.lastIncompleteCount = undefined
state.stagnationCount = 0
state.awaitingPostInjectionProgressCheck = false
trackedSession.lastCompletedCount = undefined
trackedSession.lastTodoStatusSignature = undefined
}