Make WorkflowPersistenceLayer._redact generic (_redact[T]) so it mirrors WorkflowResponseConverter._redact and returns the input type, removing the 12 cast() wrappers at its call sites. Hoist the redaction out of the loop in _fail_running_node_executions (same redacted string for every running node). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>