- Add hard 22s Promise.race deadline in prefetchUrl() to guard against
TCP-level connection hangs that bypass unfurl.js's read-only timeout.
Fixes builds hanging indefinitely on unresponsive hosts.
- Add actions/cache step to deploy.yml persisting .cache/ between runs.
Prevents webmention (and all eleventy-fetch) data loss on transient
502s: a populated cache means failures return existing data, not [].
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>