Thanks for the detailed explanation.
The issue here is that you try to access an attribute sampler during the particle's lifetime (evolve), which is not supported yet. If you move the shape attribute sampler inside your layer, making it become a classic shape sampler, it will work.
Basically if you override the default attribute sampler in engine, it will fallback to the default shape description defined within the editor.
What was the script doing ? kill(RoachCollision.contains(Position)); ?
Or using a collision/physics evolver ?
What you can do is use an attribute to define the shape's position + radius and you can easily detect that in script.
Or you can just move the attribute sampler in the samplers list of the layer.
Another option might be a mistmatch with the attribute samplers transforms, make sure everything is fine here too.