Skip to main content

Reactions & comments

One annotation subsystem serves every share type, with type-specific anchors (see ADR-0006 and SPEC-0006).

Reactions

Emoji reactions (🔥 🙏 🎉 👀 …) with a picker, anchorable to almost anything — a markdown block or bullet, a code line or selection, an image region, a webhook request, a trace turn / tool call / span, or the whole artifact.

Comments

Threaded comments, anchored to a text selection (they land in the right margin / panel), a code line, an image-region pin, or the whole artifact.

Anchors by type

Share typeReaction anchorsComment anchors
Markdownblock, bullet, wholetext selection, whole
Codeline, selection, wholeline, selection, whole
Imageregion pin, wholeregion pin, whole
Filewholewhole
Webhooksingle request, whole(reactions only)
Traceturn, tool call, span, wholespan, text selection, whole
The webhook exception

Webhook requests are reactable but not comment-threaded — a shared triage signal, by design. "Discussion happens on the artifacts they produce, not here."

How it's modeled

Anchors are polymorphic — {artifact_id, anchor_type, anchor_ref}, where anchor_ref is a type-specific locator (a line range, a block id, a region, a span id, a request id, or character offsets). Reactions are idempotent per identity + anchor; counts are aggregated and surfaced in the Bin (💬 2 · 👀 3) and in headers (6 comments · 16 reactions).