{"record":{"id":"1ff53587fd0774a7","repo":"datahaven-xyz/datahaven","slug":"unannounced","errorCode":null,"errorMessage":"Unannounced","messagePattern":"Unannounced","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"operator/precompiles/proxy/src/lib.rs","lineNumber":387,"sourceCode":"    ) -> EvmResult {\n        // Check that we only perform proxy calls on behalf of externally owned accounts\n        let AddressType::EOA = precompile_set::get_address_type::<Runtime>(handle, real.into())?\n        else {\n            return Err(revert(\"real address must be EOA\"));\n        };\n\n        // Read proxy\n        let real_account_id = Runtime::AddressMapping::into_account_id(real.into());\n        let who = Runtime::AddressMapping::into_account_id(handle.context().caller);\n        // Proxies:\n        // Twox64Concat(8) + AccountId(20) + BoundedVec(ProxyDefinition * MaxProxies) + Balance(16)\n        handle.record_db_read::<Runtime>(\n            28 + (29 * (<Runtime as pallet_proxy::Config>::MaxProxies::get() as usize)) + 16,\n        )?;\n        let def =\n            pallet_proxy::Pallet::<Runtime>::find_proxy(&real_account_id, &who, force_proxy_type)\n                .map_err(|_| RevertReason::custom(\"Not proxy\"))?;\n        frame_support::ensure!(def.delay.is_zero(), revert(\"Unannounced\"));\n\n        // Read subcall recipient code\n        // AccountCodesMetadata: 16 (hash) + 20 (key) + 40 (CodeMetadata).\n        handle.record_db_read::<Runtime>(ACCOUNT_CODES_METADATA_PROOF_SIZE.saturated_into())?;\n        let recipient_has_code =\n            pallet_evm::AccountCodesMetadata::<Runtime>::get(evm_subcall.to.0).is_some();\n\n        // Apply proxy type filter\n        frame_support::ensure!(\n            def.proxy_type.is_evm_proxy_call_allowed(\n                &evm_subcall,\n                recipient_has_code,\n                handle.remaining_gas()\n            )?,\n            revert(\"CallFiltered\")\n        );\n\n        let EvmSubCall {","sourceCodeStart":369,"sourceCodeEnd":405,"githubUrl":"https://github.com/datahaven-xyz/datahaven/blob/edcb13dbbcd3c29489eaa2480a6f60ee4cb1f3ec/operator/precompiles/proxy/src/lib.rs#L369-L405","documentation":"Reverts the proxy precompile call because a matching proxy definition was found but its delay is non-zero: the caller has announced but not yet waited out the announcement period, so the proxy relationship exists yet is not yet active for this call. The input at fault is the announcement delay configured on the proxy definition in pallet_proxy.","triggerScenarios":"Thrown at operator/precompiles/proxy/src/lib.rs:387 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Wait until the announcement delay elapses and the proxy relationship becomes active, then retry the call","Have the real (delegating) account announce the proxy earlier so the delay has expired by the time the proxy needs to act","Remove and re-add the proxy definition without a delay if the relationship is meant to be usable immediately"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"edcb13dbbcd3c29489eaa2480a6f60ee4cb1f3ec","analyzedAt":"2026-09-13T19:19:32.206Z","contentChangedAt":"2026-09-13T19:19:32.206Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}