I haven't actually made it error yet.
But had another occurrence, now triggered by the SPREAD COMPOSE hardening the bindings of what it spreads:
>> spec: load %some-file.r
== [field1: if prop1 [...] field2: 20] ; some list, mentions external props
>> insert spec spread compose [prop1: (...) prop2: (...)]
>> obj: make object! spec
** Error: prop1 is ~ isotope
So here we got our spec as:
[prop1: (...) prop2: (...) field1: if prop1 [...] field2: 20]
But when the prop1 assignment is done, it's to whatever context of assignment in the pre-spread block was... due to the SPREAD propagating bindings.
So you have to stop it from doing that, e.g.
insert spec spread bindable compose [prop1: (...) prop2: (...)]
This is sort of an epicycle of strangeness, where the bootstrap code has to run in a Ren-C that is many years old... so it's a workaround for a workaround. But worth noting patterns of "things that seem like they should work" that don't...
(UPDATE: I think the SPREAD of binding is not the right strategy...)