I think having the `pipeline` kwarg in these setters is a Good Thing™, but they aren't used when accessed through the `.state` property. Actually, I don't think it was good design (I'm fully to blame here!) to have implicit IO when setting a property, because both property access and assignment should have side effects.

I'm fine adding this `.set_state(..., pipeline=None)` change when we stop using it through the `.state` property, and I think we should remove it (via proper deprecation, that is, for those who rely on it now). Would you feel comfortable adding that, perhaps?

Same goes for the `job_id`, which I think is a fine addition. So thanks for that!