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.

A comment is scanned for credentials when it is posted or edited, and a detected value is stored as [REDACTED] (see Secret redaction).

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).