Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions changelog.d/212-passive-self-echoes.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
- **Hosts using conversation forks:** Self-authored channel echoes continue updating an existing fork's context, but cannot create a fork, request inference, or refresh its idle clock (#47). Self identity comes from `chat:from-self` or a nonempty author ID matching the message's `botUserId`; other bots and unknown identities keep normal routing. The veto precedes trigger callbacks so echoes cannot schedule delayed gate wakes. Non-channel pushes and deployments without conversation routing keep their existing behavior.
- Recovery distinguishes a vanished recipient from temporary audience-resolution failure, retaining acknowledged work and retrying transient fork creation with backoff. Restored wakes require current server binding, grants, and channel registration before any fork or turn is created; work waiting for transport/policy/registration readiness resumes at those boundaries.
- Coalescer recovery retains interrupted frozen batches alongside newer pending work, including their fallback content, activity causes, and publication targets. Recovered frozen work materializes first, and already-published work is settled against its original fork namespace before any wake is restored. Receipt recovery also preserves resolved author identity. Stored fallback-only delivery policy is separate from frozen-batch role, so repeated crashes preserve survivor order. A mixed batch's retained counterpart activation permits delivery if its binding disappears during rendering. This closes the render-in-flight crash window where a later self update could discard an unconsumed counterpart cause.
- Deferred channel batches retain the latest counterpart activation separately from their latest content. A self update preserves a pending counterpart cause; a later counterpart update replaces the coalescer's cause, including a no-wake verdict. Consumption, retraction, and plain replacement clear the batch and cause together. Snapshots and receipt recovery preserve the cause, so fresh counterpart activity still counts in mixed batches while historical rendered text cannot renew a self-only batch. Legacy snapshots have only their recorded latest occurrence; an earlier overwritten cause cannot be reconstructed. Existing EventGate debounce causes are separate: self echoes neither create nor extend those timers, while general counterpart-to-counterpart replacement still has the pre-existing delayed-wake cancellation limitation.
Loading
Loading