docs/adr/0277-a-reply-to-his-post-goes-to-whoever-owns-the-work.md

ADR 0277: A reply to his post goes to whoever owns the work

Formerly ADR 0191; renumbered 2026-10-17 (VUH-2396) to end a number collision (renumbered records).

Status: proposed (VUH-1365; the intent is James's, stated on the issue). Amends ADR 0167, ADR 0168 and ADR 0189.

Routing amendment (2026-09-27): ADR 0168 replaces per-issue wake routes with the bot's actual notification inbox waking global-default. Stored issue bindings remain inert; reply provenance and untrusted context remain available in passive webhook history.

Amended 2026-10-04 by ADR 0214's VUH-1678 decision: signed rule-passing webhooks wake one configured ordinary chat, default global-default. The inbox protocol, notification polling and per-work wake routing described below are historical. Default rules select James's signed comments and mentions; own-write suppression remains.

Context

On 2026-09-26 James asked two questions in a comment on a Rivals Agent project update the clankie account had posted. The webhook stored it (inbox event 000000002807), but the wake headline read only Linear Comment create · James Volpe: headlines named an issue's identifier and title, and a comment on a project update has no issue. The inbox lane, briefed that routine updates can pass silently, passed without reading it. No write receipt existed for the update, and issue bindings cover issues only, so nothing named the owner either.

Decision

A headline names what the event is about. A comment names its parent: the issue identifier and title, the project and short update ID (Rivals Agent update 5087a961), or the document title. Other events name themselves as before.

A new comment is a reply to his post when its actor is not the post's author and the post was written by his account. Only signed IDs decide it: the embedded author ID (a project update's userId) equals his verified Linear account in that workspace, or a retained write receipt (ADR 0168) covers the parent comment, project update, document or issue. The receipt's worker provenance travels with the event as replyTo.worker. Unknown authorship is not a reply; the event stays ordinary inbox context.

A reply keeps its normal delivery: it wakes under Follow Linear like any other activity from another actor, and his own account's activity still never wakes him (ADR 0189). Its headline carries reply to your post, and a wake that lists one says so in one line. The quoted event tells him to get the comment, with its link, to whoever owns the work: the receipt's worker, the live Swarm or Herdr task owner, or the project's lead lane, so the owner answers on the Linear thread (ADR 0167). When nobody owns it he answers on the thread himself or tells the operator. A reply is never passed over silently. He still chooses the words and the route; routine activity and his own echoes stay silent.

Alternatives

Binding owners for project updates and documents, like issue bindings, would route without a model turn, but workers often post from their own Linear connection, so no binding would exist for the post James asked about. Live Swarm ownership is already the source of truth for who holds the work.

Waking on a reply even with Follow Linear off would make replies louder than the owner's opt-in. It is left to the switch.