Hmbown/CodeWhale · error
Fleet worker {} has an inconsistent persisted prompt
Error message
Fleet worker {} has an inconsistent persisted prompt What it means
The registered launch manifest's prompt must equal the registered objective, and the registered objective must equal the freshly expected objective optionally extended with the bounded 'Accepted coordination decisions' projection header. A mismatch means the persisted prompt no longer describes the task this lease is for, and relaunching from it could run the wrong instructions.
Source
Thrown at crates/tui/src/fleet/manager.rs:2312
manifest.profile.max_spawn_depth = 0;
}
spec
}
fn validate_registered_launch_spec(
registered: &AgentWorkerSpec,
expected: &AgentWorkerSpec,
) -> Result<()> {
let Some(registered_manifest) = registered.launch_manifest.as_ref() else {
bail!(
"Fleet worker {} has no persisted launch manifest",
registered.worker_id
);
};
if registered_manifest.prompt != registered.objective
|| !registered_prompt_matches_expected(®istered.objective, &expected.objective)
{
bail!(
"Fleet worker {} has an inconsistent persisted prompt",
registered.worker_id
);
}
// Coordination may append a bounded decision projection to the prompt.
// Every identity, route, permission, workspace, scope, and attempt field
// must otherwise match a fresh derivation from this exact leased task.
let mut registered_identity = registered.clone();
let mut expected_identity = expected.clone();
registered_identity.objective.clear();
expected_identity.objective.clear();
if let Some(manifest) = registered_identity.launch_manifest.as_mut() {
manifest.prompt.clear();
}
if let Some(manifest) = expected_identity.launch_manifest.as_mut() {
manifest.prompt.clear();
}View on GitHub (pinned to 0c42157ee5)
Solutions
- Do not edit task specs mid-run; cancel and create a new run with the edited objective
- Complete or cancel the drifted worker so a fresh, consistent launch record is created on retry
- Verify all fleet processes use the same Codewhale version so prompt derivation is stable
Defensive patterns
Strategy: fallback
Try / catch
match validate_registered_launch_spec(&record.spec, &expected) {
Ok(()) => Ok(()),
Err(err) if err.to_string().contains("inconsistent persisted prompt") => {
// objective drifted: cancel task and re-lease instead of relaunching stale instructions
Err(err)
}
Err(err) => Err(err),
} Prevention
- Freeze task objectives for the lifetime of a run; edit specs only in new runs
- Keep fleet binaries version-aligned so prompt derivation cannot drift
When it happens
Trigger: The task's objective was edited or re-derived differently from when the worker registered (spec change, migration, partial event replay), so manifest.prompt diverges from objective/expected prompt.
Common situations: Editing task specs between retries; resuming a run after a Codewhale upgrade that changed prompt derivation; ledger rebuilt from a subset of events.
Related errors
- Fleet worker {} has no persisted launch manifest
- Fleet worker {} persisted launch spec does not match the exa
- fleet run {} is already terminal ({lifecycle:?})
- fleet manager for run {} exited with open work; wait for sta
- worker {worker_id} no longer has that running fleet task
AI-assisted analysis of Hmbown/CodeWhale@0c42157ee5 (2026-08-20).
Data as JSON: /api/errors/c97f420a379a5b91.
Report an issue: GitHub.