@@ -814,7 +814,12 @@ func (r *ContractWriteProcessor) executeRealUserOpTransaction(ctx context.Contex
814814 }
815815 }
816816
817- r .vm .logger .Error ("🚫 BUNDLER FAILED - UserOp transaction failed, workflow execution FAILED" ,
817+ // preset.LogBundlerError picks Error vs Warn based on the error: on-chain
818+ // reverts (expected user-workflow outcomes) log at Warn so they don't page
819+ // Sentry; real infra/AA failures (bundler down, AA21/AA23/AA25, paymaster
820+ // revert) stay at Error.
821+ preset .LogBundlerError (r .vm .logger , err ,
822+ "bundler: UserOp transaction failed, workflow execution FAILED" ,
818823 "bundler_error" , err ,
819824 "bundler_url" , r .smartWalletConfig .BundlerURL ,
820825 "method" , methodName ,
@@ -1209,43 +1214,35 @@ func (r *ContractWriteProcessor) convertTenderlyResultToFlexibleFormat(result *C
12091214
12101215 receipt , _ := structpb .NewValue (receiptMap )
12111216
1212- // Extract return value from Tenderly response
1217+ // Extract return value from Tenderly response.
1218+ // ReturnData is nil when the provider did not return output data (e.g. simulation
1219+ // reverted — tenderly_client.go clears ReturnData in that case). That path leaves
1220+ // Value as nil, which is the expected behavior.
12131221 var returnValue * structpb.Value
12141222 if result .ReturnData != nil {
1215- r .vm .logger .Info ("🔍 CRITICAL DEBUG - ReturnData found" ,
1216- "method" , result .MethodName ,
1217- "returnData_name" , result .ReturnData .Name ,
1218- "returnData_type" , result .ReturnData .Type ,
1219- "returnData_value" , result .ReturnData .Value )
1220-
12211223 // Parse the JSON value from ReturnData and convert to protobuf
12221224 var parsedValue interface {}
12231225 if err := json .Unmarshal ([]byte (result .ReturnData .Value ), & parsedValue ); err == nil {
12241226 // Successfully parsed JSON, convert to protobuf
12251227 if valueProto , err := structpb .NewValue (parsedValue ); err == nil {
12261228 returnValue = valueProto
1227- r .vm .logger .Info ("✅ CRITICAL DEBUG - Successfully created returnValue protobuf" ,
1228- "method" , result .MethodName ,
1229- "parsedValue" , parsedValue )
12301229 } else {
1231- r .vm .logger .Error ( "❌ CRITICAL DEBUG - Failed to create protobuf from parsedValue " ,
1230+ r .vm .logger .Debug ( "failed to create protobuf from parsed ReturnData " ,
12321231 "method" , result .MethodName ,
12331232 "error" , err )
12341233 }
12351234 } else {
1236- r .vm .logger .Error ("❌ CRITICAL DEBUG - Failed to unmarshal JSON from ReturnData.Value" ,
1235+ // Non-JSON return types (bytes32, address, etc.) are expected; fall through
1236+ // to raw-string handling below.
1237+ r .vm .logger .Debug ("ReturnData is not JSON, falling back to raw string" ,
12371238 "method" , result .MethodName ,
1238- "error" , err ,
1239- "raw_value" , result .ReturnData .Value )
1239+ "error" , err )
12401240
12411241 // Fallback: treat as raw string if JSON parsing fails
12421242 if valueProto , err := structpb .NewValue (result .ReturnData .Value ); err == nil {
12431243 returnValue = valueProto
12441244 }
12451245 }
1246- } else {
1247- r .vm .logger .Error ("❌ CRITICAL DEBUG - ReturnData is nil" ,
1248- "method" , result .MethodName )
12491246 }
12501247
12511248 // No fallback default value. If provider does not return output data, Value remains nil
@@ -1624,7 +1621,11 @@ func (r *ContractWriteProcessor) Execute(stepID string, node *avsproto.ContractW
16241621 }
16251622 }
16261623 } else {
1627- r .vm .logger .Error ("🚨 DEPLOYED WORKFLOW: Method execution failed" ,
1624+ // User-workflow failure: method returned success=false. The concrete
1625+ // cause is already logged by the upstream site (Tenderly simulation at
1626+ // tenderly_client.go, or bundler/AA at line ~817). Re-logging at Warn
1627+ // here keeps operator-visible context without paging Sentry.
1628+ r .vm .logger .Warn ("deployed workflow: method execution failed" ,
16281629 "method_name" , result .MethodName ,
16291630 "error_message" , result .Error ,
16301631 "error_length" , len (result .Error ),
0 commit comments