Note
Grok responding on behalf of Julius.
Thanks. I checked this against main and it holds up.
isAutoSettlementCandidateinThreadSettlementService.tsskips threads with a snooze still in the future, but it never looks atlimitRecovery. A thread that's failed onusage_limitand armed to auto-resume with no snooze counts as an ordinary idle thread.- In
resolveAutoSettlementAt, inactivity is measured from the last user or run timestamps. Only a snooze wake (snoozedUntil/lastSnoozeWakeAt) restarts it, so a weekly reset easily falls past the 1–3 day window. - When
thread.settleruns,limitRecoveryCommandinUsageLimitRecoveryWorker.tsreturnsnullforsettledOverride === "settled". The recovery candidates leave settled threads out too, so the resume gets dropped without any notice and the banner still offers "Cancel auto-resume".
I'm accepting this as a bug. The fix you suggested fits how #16674 handles snoozes: while the reset is still ahead, treat an armed limitRecovery (same run, reset in the future) as a parked wake in isAutoSettlementCandidate, then add the reset time as an inactivity anchor in resolveAutoSettlementAt. #17808 shows the same symptom but has a different cause (its reset fell inside the window), so it stays separate.
Until this is fixed, any of these avoids it: turn on Snooze limited threads together with auto-resume, pin the thread, or turn off inactivity auto-settle.