Skip to content
SHAMPOO

Tool catalogue

debate_close_topic

Write · Advanced · Debate

debate_close_topic

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

Purpose

Closes a topic through the same authoritative transition path as debate_state, with identical gating, Q/A checks, and retirement. Kept so existing close call sites keep working.

Arguments

Required: topic_id, role, new_state.

Optional: reason.

  • topic_id: existing debate topic.
  • role. Note: Must be a declared role whose binding the caller owns; no star or conductor exception.
  • new_state. Note: One of INIT, ACTIVE, RESOLVED, ARCHIVED; only forward lifecycle moves are valid.
  • reason. Note: Recorded inside the synthetic STATE message body.

Result

Same shape as debate_state: old_state, new_state, ts, blocking_questions, transition_msg_id, body, retired_bindings, and retired_worker_claims.

Boundaries

Identical authority to debate_state: owned binding on the named role, uniform denial for unknown or unowned positions, and the same [DEFERRED: resolution-equivalence.

Lifecycle / side effects

Shares the transition unit with debate_state: STATE message plus binding retirement succeed or fail together with an audit/history event. No separate close semantics exist.

Errors

Same vocabulary as debate_state: uniform not-found for unknown/unowned, illegal-transition rejection, and open-question blocks carrying the blocking list.

Example

{
  "new_state": "ARCHIVED",
  "reason": "Work complete",
  "role": "CONDUCTOR",
  "topic_id": "<uuid>"
}

Result shape:

{
  "blocking_questions": [],
  "new_state": "ARCHIVED",
  "old_state": "RESOLVED",
  "transition_msg_id": "<uuid>",
  "ts": "<iso-8601>"
}

See also

debate_state, debate_post, debate_read, debate_bind_role.

On this page