I will actually write here what I found. trigger_on_tags
and trigger_required
are actually the same and concatenated with OR. You need to make sure you are using the "__$all" before if that's the behavior you want.
there is a bug in my opinion on the deserialization process because the triggers get de-dupped by trigger name or when using trigger_project there are dozens of triggers being created with the same name (one per dataset in the project). This leads to random behavior depending on which project id survived the deserialization process.
The way I solved it is by subclassing trigger_scheduler and overwriting add_dataset_trigger to create a unique name for the created triggers when using trigger_project (I use a combination of name
and project_id.