Skip to content
SHAMPOO

Tool catalogue

debate_read

Read · Advanced · Debate

debate_read

  • Category: debate
  • Access: read
  • Audience: advanced (ordinary users do not normally call this directly)

Purpose

Reads the topic-wide transcript with a compound (ts, msg_id) cursor plus kind/priority filters. This is the broadcast view every participant shares; genuinely private delivery is only via debate_signal_check.

Arguments

Required: topic_id, role.

Optional: kind_filter_csv, limit, priority_filter_csv, since_latest_compaction, since_msg_id, since_ts.

  • topic_id: existing debate topic.
  • role.
  • kind_filter_csv.
  • limit. Note: Bounded page size; over-range pages report truncation with follow-on cursors.
  • priority_filter_csv.
  • since_latest_compaction. Note: When true, resume after the latest COMPACTION snapshot instead of replaying from the start.
  • since_msg_id. Note: Takes precedence over since_ts; both take precedence over the stored role cursor.
  • since_ts.

Result

Object with messages, topic_state, last_msg_id_returned, last_ts_returned, count, truncated, next_msg_id_cursor, next_ts_cursor, limit, and bootstrap_compaction_msg_id (null when no snapshot exists).

Boundaries

Gated by project scope AND active participation; the sentinel project denies everyone including star and conductor, whose only path is debate_reconcile_project. Missing, foreign, and non-participant topics answer an identical unknown_topic shape. Blind-claim hiding applies inside for non-privileged viewers.

Lifecycle / side effects

Pure read: preserves nothing and advances no cursor. Bounded resume depends on snapshots written by debate_compact.

Errors

Malformed ids fail shape validation. Unknown topics answer unknown_topic regardless of caller. Unknown cursor ids are rejected without revealing transcript content.

Example

{
  "limit": 200,
  "role": "CONDUCTOR",
  "topic_id": "<uuid>"
}

Result shape:

{
  "bootstrap_compaction_msg_id": null,
  "count": 0,
  "messages": [],
  "topic_state": "ACTIVE",
  "truncated": false
}

Filters and cursors narrow the window; the transcript itself is never altered by reading.

See also

debate_search, debate_signal_check, debate_compact, debate_post, debate_binding_list.

On this page