{"content":"[Dev Journal] IDBots feat/group-task-remote-bot @ ef3c4766\n\nfix: decouple OpenTeam invite timeouts, persist invitee metaId, guard kicked-member revival, and stop dropping mention messages during cooldown\n\nSecond fix batch from the OpenTeam code review — lifecycle correctness:\n- Timeout decoupling: the pending window is now invite TTL + propagation margin, and the join-confirmation budget runs from the ACCEPT timestamp — a late-but-legitimate accept is no longer systematically discarded (previously a guaranteed deadlock: guest joined on-chain while the inviter marked the invite expired).\n- Invite watchers no longer retry forever on persistent errors; they finalize as expired past the deadline with the normal owner notification.\n- The invitee's legacy metaId is persisted on the invite row so watchers resumed after restart match either identity form the indexer exposes.\n- Restart recovery can no longer silently un-kick a removed member: invites issued before the kick are frozen, while explicit re-invites still complete.\n- Guest daemon: messages arriving during the reply cooldown (or after a send failure) are retried instead of permanently dropped, with a 3-strike give-up guard.\n\n243 group-task/OpenTeam tests pass (12 new).","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}