affaan-m/ECC · error
checked goal text
Error message
checked goal text
What it means
Same invariant pattern as the Standard branch but for computer-use dispatch: body_text.expect("checked goal text") asserts the goal text was validated earlier. If None reaches this point, the binary panics, indicating the pre-validation of the computer-use goal was skipped.
Solutions
- Ensure the goal text is validated/non-empty before entering the match, replacing expect with an explicit bail.
- Trace why the earlier check was skipped for this command path.
- If hit as a user, confirm a non-empty goal was supplied to the computer-use dispatch command.
Example fix
// before
session::manager::create_computer_use_remote_dispatch_request(
db, cfg, body_text.expect("checked goal text"), /* ... */)
// after
let goal = body_text.ok_or_else(|| anyhow::anyhow!("goal text is required for computer-use dispatch"))?;
session::manager::create_computer_use_remote_dispatch_request(db, cfg, goal, /* ... */) Defensive patterns
Strategy: validation
Validate before calling
let goal = draft.goal_text.as_deref().map(str::trim).filter(|t| !t.is_empty()); anyhow::ensure!(goal.is_some(), "goal text required for computer-use dispatch");
Try / catch
// any occurrence of this panic indicates a skipped validation:
std::panic::catch_unwind(|| dispatch_computer_use(...)).unwrap_or_else(|_| {
eprintln!("internal error: goal text validation skipped — please report");
}); Prevention
- Require a non-empty goal before entering the ComputerUse branch
- Replace expect() on Option with explicit error returns
- Test computer-use dispatch with empty/whitespace goals
- Centralize body_text validation for all dispatch kinds
When it happens
Trigger: A computer-use remote dispatch where the goal-text validation step did not populate body_text before create_computer_use_remote_dispatch_request is called.
Common situations: New or modified dispatch flows missing the goal check, or a command variant that reaches ComputerUse dispatch with an empty goal (e.g. empty --goal or empty stdin).
Understand the failure class
Background: "This is a bug, please report it": internal invariant violations, unreachable panics, and SNH errors explained — this error's family across 47 libraries.
Related errors
- checked task text
- candidate alias collision with physical candidate id
- candidate alias integrity verification failed
- Harness capability catalog contains duplicate install…
- Harness capability catalog is out of sync with install…
AI-assisted analysis of affaan-m/ECC@8321021c54 (2026-09-16).
Data as JSON: /api/errors/7225f3edbfde67aa.
Report an issue: GitHub.
Appendix: source
Thrown at ecc2/src/main.rs:7242
target_session_id.as_deref(),
draft.priority.unwrap_or(TaskPriorityArg::Normal).into(),
draft.agent.as_deref().unwrap_or(&cfg.default_agent),
draft.profile.as_deref(),
draft.use_worktree.unwrap_or(cfg.auto_create_worktrees),
session::SessionGrouping {
project: draft.project.clone(),
task_group: draft.task_group.clone(),
},
"migrate_remote",
None,
)?
}
session::RemoteDispatchKind::ComputerUse => {
let defaults = cfg.computer_use_dispatch_defaults();
session::manager::create_computer_use_remote_dispatch_request(
db,
cfg,
body_text.expect("checked goal text"),
draft.target_url.as_deref(),
draft.context.as_deref(),
target_session_id.as_deref(),
draft.priority.unwrap_or(TaskPriorityArg::Normal).into(),
draft.agent.as_deref(),
draft.profile.as_deref(),
Some(draft.use_worktree.unwrap_or(defaults.use_worktree)),
session::SessionGrouping {
project: draft.project.clone(),
task_group: draft.task_group.clone(),
},
"migrate_remote_computer_use",
None,
)?
}
};
item.status = LegacyRemoteImportRequestStatus::Imported;View on GitHub (pinned to 8321021c54)