Skip to content

Bug hunt: one ledger read in tick(), failed turns re-arm, watermark monotonic - #129

Merged
Octember merged 1 commit into
mainfrom
claude/iterate
Sep 8, 2026
Merged

Bug hunt: one ledger read in tick(), failed turns re-arm, watermark monotonic#129
Octember merged 1 commit into
mainfrom
claude/iterate

Conversation

@Octember

@Octember Octember commented Sep 8, 2026

Copy link
Copy Markdown
Owner

Adversarial bug hunt on e1341fb. Seven of eleven findings taken.

  • tick() is the single place the ledger is read for wanted work; respond, triage and runWorker end in tick(); wakeDueTasks no longer returns a flag
  • a failed respond re-arms on the 60s beat instead of stranding the rows or spinning
  • Debounced logs a failed run under its label
  • caughtUp only moves since forward; a row recreated by a newer message is never rewound
  • triage limited to BATCH oldest unjudged rows
  • handlers registered before the first resolve; Roster loads before the Scheduler
  • park_after_ms read at call time; persona defaults to "" so a reload can clear it

Not taken: own-bot self-trigger (her posts carry user), setStatus rejections (none in the journal), void runWorker catch (the rejection logger covers it).

🤖 Generated with Claude Code

… failed turns re-arm on the beat; since only moves forward; triage batched; handlers before boot

- tick(): wakeDueTasks, then respond if any wanted conversation or unseen settled task, then dispatch; respond/triage/runWorker all end in tick()
- a failed respond no longer strands wanted rows: the beat re-arms within 60s instead of a hot loop
- Debounced logs its run's rejection under a label instead of leaking an unhandled rejection
- caughtUp's watermark update is guarded by since <= last so a recreated row is never rewound
- triage takes at most BATCH oldest unjudged rows
- signal and unhandledRejection handlers register before the first resolve; Roster loads before the scheduler
- park_after_ms read at call time; persona defaults to empty so a reload can clear it

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@Octember
Octember merged commit 8d2b078 into main Sep 8, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant