@perrygreenfield: I think I agree with you, except with a little caveat.  I think referencing blocks in other files is ok as long as there is only one block in an external file to you "control" (that's in fact what we had before this PR).  It's useful for good performance over HTTP, where you may want to read the entire tree, including information about the size of the arrays in it, while only reading some of the actual data.  (If you could only reference things through YAML in that scenario, you'd have to make another HTTP request just to see what the shape of the external array is).  It's also useful in the case of stream-writing a table where the size isn't known at the outset so you want to keep it in a separate file.  But in all of these cases, the external files are logically part of the whole, and updating any single one of them in isolation should not be expected to work.

There is a whole other set of use cases -- referring to reference files, for example -- where you want to refer to arrays that you *don't* control, and for that, I agree, we should reference those things by their yaml paths.  It's more powerful and safer.