Skip to content

Commit 475e94e

Browse files
committed
Claude Code review R2: fix dismissAlarm bucket reset, add test
1 parent 3622d44 commit 475e94e

2 files changed

Lines changed: 25 additions & 1 deletion

File tree

lib/src/lib/alarm-manager.test.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,30 @@ describe('AlarmManager in isolation', () => {
279279
expect(manager.getState(id).todo).toBe(TODO_SOFT_FULL);
280280
});
281281

282+
it('dismissing a ringing alarm resets a partially-drained soft-TODO bucket to full', () => {
283+
const id = 'bucket-reset-on-dismiss';
284+
createSoftTodo(id);
285+
286+
// Drain the bucket partially
287+
manager.drainTodoBucket(id);
288+
manager.drainTodoBucket(id);
289+
expect(manager.getState(id).todo).toBeCloseTo(0.6);
290+
291+
// Drive to ALARM_RINGING again
292+
manager.clearAttention(id);
293+
manager.onData(id);
294+
vi.advanceTimersByTime(1_600);
295+
manager.onData(id);
296+
manager.onData(id);
297+
vi.advanceTimersByTime(2_000);
298+
vi.advanceTimersByTime(3_000);
299+
expect(manager.getState(id).status).toBe('ALARM_RINGING');
300+
301+
// Dismiss should reset the bucket to full
302+
manager.dismissAlarm(id);
303+
expect(manager.getState(id).todo).toBe(TODO_SOFT_FULL);
304+
});
305+
282306
it('re-attending a ringing alarm does NOT override a hard TODO', () => {
283307
const id = 'bucket-no-reset-hard';
284308
createSoftTodo(id);

lib/src/lib/alarm-manager.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ export class AlarmManager {
190190
const entry = this.entries.get(id);
191191
if (!entry?.monitor) return;
192192
if (entry.monitor.getStatus() !== 'ALARM_RINGING') return;
193-
if (entry.todo === TODO_OFF) {
193+
if (!isHardTodo(entry.todo)) {
194194
entry.todo = TODO_SOFT_FULL;
195195
}
196196
entry.monitor.attend();

0 commit comments

Comments
 (0)