The stored row of a broadcasted array, as float32.
The writer repeats the row in encoding.value, which arrives with the
consolidated metadata, so it costs no request. That matters because the row
is a few bytes but its read is a whole request per array per node (per rung
of a ladder), and an all-fill row has no chunk at all — zarr skips writing a
chunk equal to the fill value — so the read is a 404. A store without value
reads the row. Both paths give the same float32 values: a float32 row is
exact through JSON, an integer row widens either way.
The stored row of a
broadcastedarray, as float32.The writer repeats the row in
encoding.value, which arrives with the consolidated metadata, so it costs no request. That matters because the row is a few bytes but its read is a whole request per array per node (per rung of a ladder), and an all-fill row has no chunk at all — zarr skips writing a chunk equal to the fill value — so the read is a 404. A store withoutvaluereads the row. Both paths give the same float32 values: a float32 row is exact through JSON, an integer row widens either way.