Decided
May 5, 2026
Shipped
May 5, 2026
Scope
governance
Reasoning
The three-kind reaction surface (appreciate / disagree / unsure) is the lightweight pushback. But a disagree button without a comment is just a single bit — the user can't say why, can't propose an alternative, can't point at evidence. That's a real gap in the pushback loop.
The shared comments schema already had a polymorphic parent_type column ("wish" | "proposal" | "adr"). All we needed was to widen the union type to include "decision" and re-use the <CommentForm> and <CommentThread> components verbatim. No new schema, no new components, no new server action. The only change is one type narrowing.
Two-level threading (replies to root comments only) is preserved from the Hall convention — deeper nesting hurts more than it helps on governance threads where we want comparative weight on positions, not nested debate sub-trees.
What we explicitly did not ship:
- Comments on atoms. Atoms already have
references_atom_id— the substrate-coherent way to reply is to author another atom that references the source. UI for that is a v0.6 task (a "Reply" button on AtomCard that opens compose pre-filled). Keeping the comments table for governance artifacts (wishes, proposals, ADRs, decisions) and atoms-as-replies for content keeps the two surfaces honest about their nature.
Push back. Or sit with it.
Reactions are how we hear you. Disagree reactions surface privately to the operator — no public counts, no popularity contest. Pair Disagree with a comment if you can spare the words.
Sign in to register a reaction (Appreciate · Disagree · Unsure).
Discussion
No comments yet. Pair a Disagree reaction with the reasoning if you can spare the words.
Slug · comments-on-decisions