#123 release/acquire-publishes the active ObjectColdState.rare kind, but the nullable Object.cold pointer that owns the sidecar is still installed with a plain store in ensureCold and read without backing_lock by hot generic probes (proxyHandler, boxedPrimitive, sparse-array checks, tracing helpers, and others).
Many exotic objects receive their sidecar before publication, but ordinary live objects can allocate it later—for example when dense deletion first creates sparse-array hole state. A peer property lookup can therefore race the null-to-pointer store before it even reaches #123's synchronized rare tag.
The pointer is one machine word. Publish it as std.atomic.Value(?*ObjectColdState) with release/acquire helpers; retain backing_lock for allocation uniqueness and payload mutation.
Acceptance
- Publish the lazy null-to-sidecar pointer with release ordering and acquire it on every unlocked read.
- Update tracing/finalization and direct test construction without changing ownership or teardown order.
- Keep
Objectin the 256-byte GC slab. - Pass focused semantic, GC/finalization, normal unit, and TSan gates.