Non-sendable value type can be mutated concurrently

this seems like a bug. it appears quite similar in structure to these existing reports (though uses a struct with an unavailable Sendable conformance rather than a class):

out of curiosity, does TSAN identify the race at runtime?