{"record":{"id":"fba367c7105ad07a","repo":"Hmbown/CodeWhale","slug":"invalid-frozen-fleet-member-snapshot","errorCode":null,"errorMessage":"invalid frozen Fleet member snapshot","messagePattern":"invalid frozen Fleet member snapshot","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/tui/src/fleet/worker_runtime.rs","lineNumber":86,"sourceCode":"            display_name: profile.display_name.clone(),\n            description: profile.description.clone(),\n            requires: profile.requires.clone(),\n            slot: profile.profile.slot.as_str().to_string(),\n            role: canonical_public_role_name(&profile.profile.role.name),\n            role_description: profile.profile.role.description.clone(),\n            role_instructions: profile.profile.role.instructions.clone(),\n            loadout: profile.profile.loadout.as_str().to_string(),\n            provider: profile.profile.provider.clone(),\n            model: profile.profile.model.clone(),\n            reasoning_effort: profile.profile.reasoning_effort.clone(),\n            max_spawn_depth: profile.profile.delegation.max_spawn_depth,\n            origin: profile.origin,\n        }\n    }\n\n    fn into_profile(self) -> Result<AgentProfile> {\n        if self.schema_version != 1 || self.id.trim().is_empty() || self.role.trim().is_empty() {\n            bail!(\"invalid frozen Fleet member snapshot\");\n        }\n        Ok(AgentProfile {\n            id: self.id,\n            display_name: self.display_name,\n            description: self.description,\n            requires: self.requires,\n            profile: FleetProfile {\n                slot: FleetSlot::from_name(&self.slot),\n                role: FleetProfileRole {\n                    name: self.role,\n                    description: self.role_description,\n                    instructions: self.role_instructions,\n                },\n                loadout: FleetLoadout::from_name(&self.loadout),\n                model: self.model,\n                provider: self.provider,\n                reasoning_effort: self.reasoning_effort,\n                // Authority is always derived from live Runtime policy. A","sourceCodeStart":68,"sourceCodeEnd":104,"githubUrl":"https://github.com/Hmbown/CodeWhale/blob/73e0f67d83c59909b571efdfc88c4bc28c309cb1/crates/tui/src/fleet/worker_runtime.rs#L68-L104","documentation":"A frozen Fleet member snapshot failed deserialization validation: it must have schema_version 1 and non-empty id and role. This snapshot is persisted with the run and thawed to reconstruct the AgentProfile; an unrecognized schema or blank identity means the frozen data cannot be trusted to dispatch the worker.","triggerScenarios":"Calling into_profile (via resolve_task_agent_profile) on a frozen member snapshot whose schema_version is not 1, or whose id or role is empty/whitespace after a round-trip through storage.","commonSituations":"Run state written by an older/newer Codewhale version with a different snapshot schema; corrupted or hand-edited run state files; a member profile created without an id or role then frozen.","solutions":["Recreate the run or re-freeze the member from a valid AgentProfile.","Check the Codewhale version that wrote the frozen state; migrate or regenerate the snapshot.","Ensure the member profile has non-empty id and role before freezing."],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":"fn snapshot_thawable(s: &FrozenMember) -> bool { s.schema_version == 1 && !s.id.trim().is_empty() && !s.role.trim().is_empty() }","typeGuard":"fn is_valid_snapshot(s: &FrozenMember) -> bool { s.schema_version == 1 && !s.id.trim().is_empty() && !s.role.trim().is_empty() }","tryCatchPattern":"match resolve_task_agent_profile(...) { Ok(p) => p, Err(e) => { log::error(\"frozen snapshot invalid: {e}\"); re_freeze_or_fail_run() } }","preventionTips":["Version-check frozen state before thawing","Regenerate frozen snapshots after upgrades","Never hand-edit run state files"],"tags":["fleet","serialization","versioning"],"backgroundTag":"schema-validation-failed","analyzedSha":"73e0f67d83c59909b571efdfc88c4bc28c309cb1","analyzedAt":"2026-09-22T01:30:00.501Z","contentChangedAt":"2026-09-22T01:30:00.501Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}