Since the finney spec 439/440 runtime upgrades (2026-07-27/28), nodes return
subscription ids from author_submitAndWatchExtrinsic (and sibling subscribe
calls) as plain strings. The unconditional .hex() then raises
AttributeError: 'str' object has no attribute 'hex' AFTER the extrinsic has
already been accepted into the pool — callers see a failure for a submission
that actually landed and retry-spam the chain (observed on SN46: 777
weight-commit attempts, 0 recorded successes in 5h, while every weight-set
was on chain).
Guard all RPC-sourced values: pass strings through, hex-encode bytes.