xai-org/grok-build · error · RepairHistoryBlocked
cannot repair history while a turn is in flight; stop the tu
Error message
cannot repair history while a turn is in flight; stop the turn first
What it means
Error "cannot repair history while a turn is in flight; stop the turn first" thrown in xai-org/grok-build.
Source
Thrown at crates/codegen/xai-grok-shell/src/session/acp_session_impl/rewind.rs:597
/// the chat-state actor, then flush persistence so `chat_history.jsonl`
/// is rewritten on disk before the caller sees success.
///
/// Refused while a turn is in flight (in-flight tool calls legitimately
/// await their results). The refusal is enforced inside the chat-state
/// actor's command handler — see `ChatStateCommand::RepairHistory` for
/// why a caller-side check alone would race turn start; the check below
/// is just a fast path.
pub(super) async fn handle_repair_history(
&self,
dry_run: bool,
) -> anyhow::Result<xai_chat_state::compaction_utils::HistoryRepairReport> {
// Per-session flag — NOT `tool_context.is_turn_active`, which is the
// agent-wide coordinator flag shared by all sessions (using it would
// refuse repair of an idle session while any other session runs a
// turn, and another session's turn end could clear it mid-turn).
let turn_flag = self.session_turn_active.clone();
if turn_flag.load(std::sync::atomic::Ordering::SeqCst) {
anyhow::bail!(xai_chat_state::commands::RepairHistoryBlocked);
}
let report = self
.chat_state_handle
.repair_history(dry_run, Some(turn_flag))
.await
.ok_or_else(|| anyhow::anyhow!("chat-state actor unavailable"))?
.map_err(anyhow::Error::new)?;
if report.changed() && !dry_run {
// Flush barrier: success must mean the rewrite is on disk.
let (flush_tx, flush_rx) = tokio::sync::oneshot::channel();
if self
.notifications
.persistence_tx
.send(PersistenceMsg::FlushAndAck {
respond_to: flush_tx,
})View on GitHub (pinned to bc7f02eddd)
When it happens
Trigger: Thrown at crates/codegen/xai-grok-shell/src/session/acp_session_impl/rewind.rs:597 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of xai-org/grok-build@bc7f02eddd (2026-08-31).
Data as JSON: /api/errors/8cf92b840ed2ae15.
Report an issue: GitHub.