It's not quite as simple as that because strict values with sophisticated implementations require private references in the implementation. Strict value semantics are guaranteed by using CoW, etc in the implementation. It isn't clear to me what the best way to model this at the language level is.
Direct support for CoW in the language and / or standard library would go a long way but I still think we want the ability to drop all the way down to "unsafe" implementations with a programmer promise to maintain strict value semantics. So a hybrid approach of CoW support that handles the majority of cases combined with an escape hatch that's available when necessary is probably where we need to end up.
Something along these lines makes sense to me as long as we have a way to constrain types to be strictly pure in generic code, so
@pure types automatically conform to
AnyValue (or something like that).
Keep in mind that this annotation is only used in the context of an
@pure(access) type. I don't see it as implying a moral judgement as much as highlighting semantics that are out of the ordinary for members of this type. The goal is semantic clarity, not making people feel bad!