Skip to content
SHAMPOO

Tool catalogue

debate_judge_verdict

Write · Advanced · Debate

debate_judge_verdict

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

Purpose

Records one immutable judge verdict on a projection. When AB and BA agree on winner plus decision the debate stops; disagreement leaves it stalemated.

Arguments

Required: projection_id, judge_role, verdict_json.

  • projection_id. Note: Target projection from debate_judge_prepare.
  • judge_role. Note: Must be active, declared, non-blind, and non-human; one judge role per pair.
  • verdict_json. Note: Object with non-empty winner_msg_id and decision; stringified JSON is re-parsed like the reference client.

Result

Object with projection_id, topic_id, complete, stable (null until both sides speak), and the current protocol_state.

Boundaries

Judge independence is enforced: the judge role must be an active declared participant outside the blind pair, and each pair admits a single judge role. Terminal phase moves compare-and-swap on ADJUDICATE, so concurrent verdicts cannot double-apply.

Lifecycle / side effects

Each verdict persists atomically with an audit/history event and is immutable. Full agreement moves the topic to STOPPED; split verdicts move it to STALEMATE with an order-swap disagreement reason.

Errors

Unknown projections, malformed verdicts, ineligible judges, duplicate judge roles, and lost phase races are rejected uniformly.

Example

{
  "judge_role": "CONDUCTOR",
  "projection_id": "<uuid>",
  "verdict_json": "{\"winner_msg_id\":\"<uuid>\",\"decision\":\"adopt\"}"
}

Result shape:

{
  "complete": false,
  "projection_id": "<uuid>",
  "stable": null,
  "topic_id": "<uuid>"
}

See also

debate_judge_prepare, debate_protocol_state, debate_protocol_maintain, debate_post, debate_state.

On this page