Hmbown/CodeWhale · error · std::io::Error

goal snapshot has unsupported status '{other}'

Error message

goal snapshot has unsupported status '{other}'

What it means

Status enum guard in SessionGoalState::from_runtime: the snapshot's status string, after trimming, does not match any supported SessionGoalStatus value (e.g. not "active", "paused", "none"), so the durable state cannot represent it.

Source

Thrown at crates/tui/src/session_manager.rs:570

    pub fn from_runtime(snapshot: &GoalSnapshot) -> io::Result<Option<Self>> {
        if snapshot.objective.is_none() && snapshot.status.trim() == "none" {
            return Ok(None);
        }
        let objective = snapshot
            .objective
            .as_deref()
            .map(str::trim)
            .filter(|objective| !objective.is_empty())
            .ok_or_else(|| {
                io::Error::new(io::ErrorKind::InvalidData, "goal snapshot has no objective")
            })?;
        let status = match snapshot.status.trim() {
            "active" => SessionGoalStatus::Active,
            "paused" => SessionGoalStatus::Paused,
            "complete" => SessionGoalStatus::Complete,
            "blocked" => SessionGoalStatus::Blocked,
            other => {
                return Err(io::Error::new(
                    io::ErrorKind::InvalidData,
                    format!("goal snapshot has unsupported status '{other}'"),
                ));
            }
        };
        let state = Self {
            schema_version: CURRENT_SESSION_GOAL_SCHEMA_VERSION,
            objective: objective.to_string(),
            status,
            token_budget: snapshot.token_budget,
            tokens_used: snapshot.tokens_used,
            time_used_seconds: snapshot.time_used_seconds,
            continuation_count: snapshot.continuation_count,
            elapsed_seconds: snapshot.elapsed_seconds.unwrap_or_default(),
            pause_reason: snapshot.pause_reason,
        };
        state.validate()?;
        Ok(Some(state))

View on GitHub (pinned to 0c42157ee5)

Solutions

  1. Use one of the supported status strings understood by SessionGoalStatus.
  2. Add a mapping arm in from_runtime if a new status is intentionally introduced.
  3. Check the producer of GoalSnapshot for casing or spelling errors in the status.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/tui/src/session_manager.rs:570 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of Hmbown/CodeWhale@0c42157ee5 (2026-08-20). Data as JSON: /api/errors/e869e576e58e695f. Report an issue: GitHub.