...
If the use case doesn't really need multiple event outputs, then the policy author could go with either the above option - by adding only a single event's fields, or simple use the existing way - "executor.outfields.put(.......)"
Backward compatibility
With all these changes implemented, there will be 1 change required in all the existing policies to avoid breakage: For the upcoming release, the implementation will be backward compatible. But the inputfields and outputfields in the task definition will be deprecated simply ignored with a warning message.
In later releases, these fields will be competely removed. So to avoid breakage, cleanup the task definition as mentioned in step 1
Simply removing the inputfields and outputfields from the task definition should make everything else working as usual - even this change can be avoided if needed by simply logging a warning message and not actually use the fields definition at the task level.