serving property

bool? serving
final

Whether this release is in front of any of the track's audience, or null when that cannot be said.

The question, rather than the vocabulary: true for a completed rollout and for one still in progress, false for a halted one and for an unsent draft. A caller asking this never has to learn Play's status strings.

Null rather than false for a status this version does not name, and for PlayReleaseStatus.statusUnspecified, which is Play declining to say. A bool cannot carry "I don't know", and both of the answers it would force are wrong: false reports a possibly-healthy rollout as reaching nobody, and true calls an unrecognized state healthy. That is the same three-valued honesty the raw status has one line up — a derived field that flattened it would be a worse answer than the field it is derived from.

A caller wanting the conservative reading writes serving != true; one that wants to say so writes serving == null.

It does not say how much. A staged rollout's fraction is not in this document, so inProgress means "some of the audience", not "all of it" — and serving == true cannot tell a 1% rollout from a finished one.

And it is not sufficient alone. PlayReleaseStatus.halted and PlayReleaseStatus.draft are both false and call for different advice: one was stopped by a person, the other never started. Read statusKnown when the next action differs.

Implementation

final bool? serving;