ID of the observation.
It's the opID prefixed with the phase (if the phase is not empty).
String get id => _id ??= phase.isNotEmpty ? '$phase.$opID' : opID;