A projection updated asynchronously is behind by some amount, usually milliseconds and occasionally minutes. Hiding that from the caller makes every consumer assume it is current, and one of them is wrong.
return new OrderSummary(
$rows,
$this->projection->lastAppliedAt() // the caller can decide
);
// or on the wire
{ "data": [ ... ], "as_of": "2017-09-14T11:22:41Z" }
Surfacing the timestamp costs one field and turns “is this up to date” from an assumption into something checkable. It also makes a stalled projection visible — a dashboard showing data from four hours ago is obvious, while the same dashboard with no timestamp looks fine. The screens that genuinely need current data can then read the write model deliberately.