protected=True makes run() emit stored_text and ignore upstream with no pause;
IS_CHANGED caches on stored_text when protected (NaN otherwise). text input is
now optional so the node can run standalone.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>