{"record":{"id":"3d9a84c345cb38e1","repo":"unionlabs/union","slug":"no-ucs03-deployment-for-chain-id-3d9a84","errorCode":null,"errorMessage":"no ucs03 deployment for {chain_id}","messagePattern":"no ucs03 deployment for (.+?)","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"tools/u/src/zkgm/predict_wrapped_token.rs","lineNumber":211,"sourceCode":"            if address.is_some() {\n                bail!(\"--address can only be used with `custom`\");\n            }\n\n            match deployment {\n                Deployment::IbcSolidity { contracts, .. } => {\n                    predict_wrapped_token_ibc_solidity(\n                        rpc_url.unwrap_or_else(|| {\n                            format!(\n                                \"https://rpc.{}.{}.chain.kitchen\",\n                                chain_id.id(),\n                                chain_id.family(),\n                            )\n                        }),\n                        (*contracts\n                            .iter()\n                            .find(|(_, deployment)| deployment.name == \"protocols/ucs03\")\n                            .as_ref()\n                            .context(anyhow!(\"no ucs03 deployment for {chain_id}\"))?\n                            .0)\n                            .into(),\n                        args,\n                    )\n                    .await\n                }\n                Deployment::IbcCosmwasm { contracts, .. } => {\n                    predict_wrapped_token_ibc_cosmwasm(\n                        rpc_url.unwrap_or_else(|| {\n                            format!(\n                                \"https://rpc.{}.{}.chain.kitchen\",\n                                chain_id.id(),\n                                chain_id.family(),\n                            )\n                        }),\n                        contracts\n                            .iter()\n                            .find(|(_, deployment)| deployment.name == \"protocols/ucs03\")","sourceCodeStart":193,"sourceCodeEnd":229,"githubUrl":"https://github.com/unionlabs/union/blob/031785bb6dc6b957c624e62bc64c184409c97d7b/tools/u/src/zkgm/predict_wrapped_token.rs#L193-L229","documentation":"Thrown by `u zkgm predict-wrapped-token` on the Deployment::IbcSolidity arm: the chain's deployment entry exists but no contract named `protocols/ucs03` is listed, so the zkgm contract address required to predict the wrapped (ibeuro/UCS03) token address is missing.","triggerScenarios":"Calling `predict-wrapped-token <evm-chain-id> ...` where DEPLOYMENTS[chain_id] is IbcSolidity but its `contracts` vec lacks a `protocols/ucs03` entry. Note this path also defaults the RPC to `https://rpc.<id>.<family>.chain.kitchen`, which only matters after the deployment lookup succeeds.","commonSituations":"Old deployments snapshot; chain that never had zkgm deployed; typo'd chain id that happens to match another known chain; mixed-registry state after a partial upgrade.","solutions":["Run with custom endpoints/zkgm address instead of the registry-backed path, if the command's custom mode exposes them","Verify the exact ucs04 chain id string","Update the deployments data so the chain includes a `protocols/ucs03` contract entry","Confirm the zkgm contract exists on-chain for that chain before predicting"],"exampleFix":"# before\nu zkgm predict-wrapped-token <chain-id> --channel-id channel-0 ... \n# after\n# pass the zkgm address explicitly via the custom flow once deployed:\nu zkgm predict-wrapped-token custom --zkgm-address 0x1234...abcd --ibc-interface ibc-solidity ...","handlingStrategy":"validation","validationCode":"if !DEPLOYMENTS[&chain_id].contracts().iter().any(|(_, d)| d.name == \"protocols/ucs03\") {\n    anyhow::bail!(\"chain {chain_id} has no ucs03 deployment; pass the zkgm address via the custom flow\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Validate deployment metadata before running predict commands in CI","Record the zkgm contract address per chain in your own config so the custom flow is always available"],"tags":["rust","union","deployment","wrapped-token","cli"],"backgroundTag":null,"analyzedSha":"031785bb6dc6b957c624e62bc64c184409c97d7b","analyzedAt":"2026-08-16T06:24:09.996Z","schemaVersion":2},"datasetVersion":"2026-08-16T08:17:34.114Z"}