{"record":{"id":"de79eadb865dd558","repo":"Hmbown/CodeWhale","slug":"127","errorCode":"127","errorMessage":"lane log proxy requires a command","messagePattern":"lane log proxy requires a command","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/lane/src/runtime.rs","lineNumber":451,"sourceCode":"/// hidden CLI should propagate to tmux.\npub fn run_lane_log_proxy(spec: LaneLogProxySpec) -> Result<i32> {\n    let LaneLogProxySpec {\n        command,\n        log_path,\n        receipt_path,\n        receipt_tmp_path,\n        environment_path,\n        lane_id,\n    } = spec;\n\n    let fail = |error: anyhow::Error, exit_code: i32| -> Result<i32> {\n        append_proxy_failure(&log_path, &lane_id, &error)?;\n        write_lane_exit_receipt(&receipt_path, &receipt_tmp_path, &lane_id, exit_code)?;\n        Ok(exit_code)\n    };\n\n    if command.is_empty() {\n        return fail(anyhow::anyhow!(\"lane log proxy requires a command\"), 127);\n    }\n\n    let environment = if let Some(path) = environment_path.as_deref() {\n        let loaded = read_lane_environment(path);\n        let removed = remove_file_if_present(path);\n        match (loaded, removed) {\n            (Ok(environment), Ok(())) => environment,\n            (Err(error), Ok(())) => return fail(error, LANE_PROXY_FAILURE_EXIT_CODE),\n            (Ok(_), Err(error)) | (Err(_), Err(error)) => return Err(error),\n        }\n    } else {\n        Vec::new()\n    };\n\n    let mut child_command = Command::new(&command[0]);\n    child_command.args(&command[1..]);\n    child_command.envs(environment);\n    child_command.stdout(Stdio::piped()).stderr(Stdio::piped());","sourceCodeStart":433,"sourceCodeEnd":469,"githubUrl":"https://github.com/Hmbown/CodeWhale/blob/0c42157ee52f9d55af2b506d71b46249910f77d3/crates/lane/src/runtime.rs#L433-L469","documentation":"Startup guard in run_lane_log_proxy: the spec's command vector is empty, so there is no child process to spawn and proxy logs for. The proxy records this failure (plus an exit receipt) into the lane's log and receipt paths before returning a failure exit code, so tmux and callers can observe why the lane died.","triggerScenarios":"Thrown at crates/lane/src/runtime.rs:451 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Fix the lane definition so its command is a non-empty argv (program plus arguments)","Check the lane config source for a missing or blank command field and re-save it","Restart the lane after correcting the command"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"0c42157ee52f9d55af2b506d71b46249910f77d3","analyzedAt":"2026-08-20T21:50:45.477Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}