Skip to content
SHAMPOO

Tool catalogue

debate_judge_prepare

Write · Conductor only · Debate

debate_judge_prepare

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

Purpose

Creates the immutable AB and BA order-swap projections for adjudication from two CLAIM or REBUT positions held by the two opposing blind roles. Agreement later stops the debate.

Arguments

Required: topic_id, left_msg_id, right_msg_id.

  • topic_id: existing debate topic.
  • left_msg_id. Note: First position; must sit in the topic and carry CLAIM or REBUT.
  • right_msg_id. Note: Second position; must be distinct from the left and come from the opposing blind role.

Result

Object with topic_id and projections: two entries (order AB and BA), each with projection_id, order_key, protocol_version, topic_id, round_no, and positions.

Boundaries

Conductor callers only; the call takes no judge role so it cannot be role-gated any other way. Both positions must come from the two opposing blind roles while the topic sits in ADJUDICATE. Rewrites conflict: identical repeats are idempotent, differing repeats are rejected.

Lifecycle / side effects

Projections persist atomically with an audit/history event and are immutable afterwards. Verdicts arrive separately via debate_judge_verdict.

Errors

Wrong kinds, non-opposing roles, wrong phases, unknown messages, and projection conflicts are rejected uniformly.

Example

{
  "left_msg_id": "<uuid>",
  "right_msg_id": "<uuid>",
  "topic_id": "<uuid>"
}

Result shape:

{
  "projections": [
    {
      "order_key": "AB",
      "positions": [],
      "projection_id": "<uuid>",
      "protocol_version": "debate/v1",
      "round_no": 1,
      "topic_id": "<uuid>"
    }
  ],
  "topic_id": "<uuid>"
}

See also

debate_judge_verdict, debate_protocol_state, debate_post, debate_protocol_maintain.

On this page