What a comment is
- Points at a spine object or a card.
target_kindis one oftopic,record, orcard;target_id(or, for a topic, its slug) says which one. An optionalfield_keyscopes the comment to a single field (e.g.decisions). - Authored by a human or an agent. Agent-authored comments are what set this apart: an agent can flag a contradiction on a field and a human sees it on the next refresh, or the other way around. That is what makes the workspace genuinely collaborative between humans and agents.
- Has a small state machine.
open → resolved → wont_fix. When an edit addresses a comment, its author (human or agent) marks it resolved. There is no auto-regenerate. Comments resolve, they don’t rewrite the document. - Async, not realtime. Comments appear on pull/refresh. No live cursors.
The killer placement: the Note → Knowledge gate
Promoting a Note into Knowledge is normally a coarse, binary act: approve or reject. Comments turn that gate into fine-grained, field-level feedback at review time. A reviewer (or an agent) can pin a precise objection to thedecisions field of a note, the author addresses exactly that, and the merge happens faster and comes out better. Listing a topic’s open comments by slug is the reviewer’s view of the gate.
Using comments
From the CLI (the surface also exists in MCP asdriftless_context_comment):
