I agree this exception should be more specific.
By the way one needs to update all the primitive mutating objects, such as at:put:, so that when it fails because it attempts to mutate a read-only object a proper error is raised instead of SubscriptOutOfBounds with an in-bound index.
Maybe an intern can create a specific error for your case, add an error for read-only object and write / update tests for everything.