{"record":{"id":"b104c45c91f4a6f8","repo":"diem/diem","slug":"invalid-validator-config","errorCode":null,"errorMessage":"Invalid Validator Config","messagePattern":"Invalid Validator Config","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"config/management/genesis/src/builder.rs","lineNumber":211,"sourceCode":"        let txn = self\n            .with_namespace(operator)\n            .get::<Transaction>(VALIDATOR_CONFIG)\n            .map(|r| r.value)?;\n        if let Transaction::UserTransaction(txn) = txn {\n            Some(txn)\n        } else {\n            None\n        }\n        .and_then(|txn| {\n            if let TransactionPayload::ScriptFunction(txn) =\n                txn.into_raw_transaction().into_payload()\n            {\n                Some(txn)\n            } else {\n                None\n            }\n        })\n        .ok_or_else(|| anyhow::anyhow!(\"Invalid Validator Config\"))\n    }\n\n    pub fn build(\n        &self,\n        chain_id: ChainId,\n        publishing_option: Option<VMPublishingOption>,\n    ) -> Result<Transaction> {\n        let diem_root_key = self.root_key()?;\n        let treasury_compliance_key = self.treasury_compliance_key()?;\n        let validators = self.validators()?;\n        let move_modules = self.move_modules()?;\n\n        let genesis = vm_genesis::encode_genesis_transaction(\n            diem_root_key,\n            treasury_compliance_key,\n            &validators,\n            &move_modules,\n            publishing_option,","sourceCodeStart":193,"sourceCodeEnd":229,"githubUrl":"https://github.com/diem/diem/blob/fc4714a8ea273b6efe8b13dbce72ea60aad9a16c/config/management/genesis/src/builder.rs#L193-L229","documentation":"The create-release command derives the release name from the --output path's file stem and calls .expect(\"Empty output path provided\") on the Option<PathBuf>. It panics when the output path option was not supplied, because the tool cannot infer where to write or what to name the release.","triggerScenarios":"Running the writeset-transaction-generator's create-release subcommand without the --output (path) argument, so opt.output is None.","commonSituations":"Forgetting the --output flag; CLI argument renamed/reordered between versions; scripting the tool with a variable that expands to nothing.","solutions":["Pass the required output path, e.g. `--output ./diem-framework-release.mrb` (the file stem becomes the release name)","Check `writeset-transaction-generator create-release --help` for the exact flag name in your build","Fix the calling script so the output variable is non-empty before invoking the tool"],"exampleFix":"// before\nwriteset-transaction-generator create-release --chain-id 1 --url ...\n// after\nwriteset-transaction-generator create-release --chain-id 1 --url ... --output ./release.mrb","handlingStrategy":"validation","validationCode":"// bash guard before invoking create-release\nif [ -z \"$OUTPUT_PATH\" ]; then echo \"--output is required\" >&2; exit 1; fi","typeGuard":null,"tryCatchPattern":"let out = Command::new(\"writeset-transaction-generator\").args([\"create-release\", \"--output\", output_path, ...]).output()?;\nif !out.status.success() {\n    eprintln!(\"create-release failed: {}\", String::from_utf8_lossy(&out.stderr));\n}","preventionTips":["Always pass --output with create-release","Check --help for the flag name in your tool version","Fail fast in wrapper scripts when the output variable is empty"],"tags":["rust","panic","cli","missing-argument","configuration"],"backgroundTag":"missing-required-argument","analyzedSha":"fc4714a8ea273b6efe8b13dbce72ea60aad9a16c","analyzedAt":"2026-09-04T21:07:05.890Z","contentChangedAt":"2026-09-04T21:07:05.890Z","schemaVersion":2},"datasetVersion":"2026-09-12T02:17:10.037Z"}