I think the category "Result" could instead be named "Players" and used to describe both the people who learn the results and those who are being targeted ("Targeting"). This category would contain various "selectors" that specify a person or a group of people, like:
There are different ways in which the results can be revealed so I would make a separate category "Disclosure" for that. Each component would be able to single-handedly block the revelation.
The basic component "Result" would then contain one component of type "Players" and an array of "Disclosure" components. A role could have multiple instances of a "Result" component, since different players may be getting results at different times and depending on different conditions.
A few examples:
It's a bit mouthful, but I think it covers most possibilities.
Also, it'd be nice to have some logical operators implemented as "Conditional" components so that there is a way to combine conditions: And(x, y), Or(x, y), Xor(x, y), Not(x), etc.