Herald - Review status is not considered when accepting a review

I have a Herald rule that is responsible for starting a pipeline in an IC.
This rule should be started when a review is accepted, but the status of the review is not considered.
Below is the Transcript of the time the review was accepted, but the rule was not considered due to the status of the review.


When I run it manually, the status is considered and the expected behavior happens.

This is my Herald rule.

Tell me if I’m doing something wrong.

“Run Build Plan” actions can only trigger when a revision is updated with a new diff.

The status is not being considered: Herald is immediately ignoring the rule because “the update which triggered Herald did not update the diff for this revision”. The transactions (visible in the “Transactions” table in the transcript) are an “accept” and a “state change”. Neither of these transactions are a “diff update”, so this set of actions can never trigger a build.

If Herald allowed your rule to run exactly as written, it would trigger a new build every time someone added a comment, subscribed, edited the title, etc., of an accepted revision.

See also some discussion in https://secure.phabricator.com/T13166.

There is currently no way to have Herald run builds in response to events other than diff updates (like a revision becoming “Accepted”, a particular comment, etc). There is no technical reason Herald can’t trigger builds in these cases, but use cases are rare and writing correct rules is difficult. In this case, you likely want something like “[ Transaction group includes a revision status change to ][ accepted ]”, which doesn’t currently exist, and wasn’t easy to implement at the time “Run build plans” was written, prior to https://secure.phabricator.com/T13283.

Herald may support uncommon triggers like this in the future, but there’s currently no customer interest in this and thus no plan to add support for a field like [ Transaction group includes a revision status change to ] or an action like [ Run build plans even if diff has not changed ].

There is a small amount of customer interest in an external API for triggering builds (see https://secure.phabricator.com/T13072), and you could accomplish your goal using Webhooks if this API existed, but the requesting install found a workaround for their use case so this is a low priority and I can’t guess when it will ship.