vec3 array inside of ssbo is read with stride of 4

OpenSUSE Tumbleweed, Linux 5.1.10
GTX950M on driver 430.26

I’ve been working on a learning project, git here:
https://gitlab.com/kiroma/protogl

Inside of res/shader.vert is defined a buffer block with vec3 inside of it.
glslangValidator compiles the shader fine, even to SPIR-V, but for some reason the buffer is read as an array of vec4s, i.e. with a stride of 4.
If you pad out the vector to provide four floats for each vec3 (which you can do by uncommenting main.cpp:223) it behaves as intended.

I’ve just discovered memory layout qualifiers.
Whoops.