Check notified_at timestamp in check_task_completion() and mark tasks as error if they exceed TASK_TIMEOUT_HOURS (defaults to 1 hour). When timeout is detected: - Kill the task process (PID) if running - Stop the opencode session if exists - Mark queue item as error state Fixes #166