Teach user-defined object setattr, getattr, and delattr side-effect tracking to distinguish descriptor-aware mutations from direct instance dict writes so residual replay follows CPython descriptor precedence. Direct dict writes now replay through descriptor-bypassing helpers, while descriptor-backed and generic mutations keep the normal STORE_ATTR/DELETE_ATTR paths.
This also adds focused coverage for readonly properties, property deleters, non-data descriptor lookup after delattr, dict replacement, and descriptor versus instance-dict precedence.
Authored by Codex.
Pull Request resolved: #183088
Approved by: https://github.com/williamwen42
SOCIAL SHARE CARD GENERATOR