f00332fca5
Stabilization pass — zero behavior changes. Dead code removed: - Unused containerRef in both SvgRenderer components (parent wrapper owns the DOM query boundary for eye hooks, not the renderer) - Unused containerRef in BlobbiCompanionVisual - Dead eyeOffset React state from useBlobbiCompanionGaze (only the ref is used now; the state was never updated after the ref-based fix) - Dead eyeOffset value from useBlobbiCompanion return and BlobbiCompanionLayer destructure - Deprecated AdultReactionState / BabyReactionState type aliases (no consumers) - Deprecated ExternalEyeOffset re-exports from visual wrappers (canonical export is lib/types.ts) - Stale JSDoc comment about containerRef forwarding in renderer Contract comments added: - SvgRenderer components: explicit MUST NOT list (no hooks, no modes, no reaction classes) - Visual wrapper containerRef: explains it is the DOM query boundary for eye hooks - MemoizedBlobbiVisual: stability contract listing what it must and must not depend on - useExternalEyeOffset: clarified page vs companion usage for each offset prop - BlobbiCompanionVisual direction prop: documented why it exists unused