Conversation
Deploys have failed since effection started publishing under its real home. thefrontside/effection#1248 moved its production `--base` to `https://frontside.com/effection`, so every `<loc>` in the sitemap it serves now carries the mount point rather than a site-relative path. `parseSitemapUrls` added `/effection` to all of them regardless, asking staticalize for 519 urls under `/effection/effection` that are nowhere. The crawl reported 519 errors and exited non-zero, which is the whole deploy. A path already under the mount is left alone. One that is not still gets it, so Interactors and Graphgen — which advertise their own origin — are unchanged, and so is an Effection preview, whose base is its own alias url. Deciding on the path rather than the origin covers all three, and a sibling such as `/effectionx` is not mistaken for the mount.
|
🚀 Deploy Preview Ready!
|
|
Closing: the cause is fixed at the source, so there is nothing left for this to Effection's sitemap started naming thefrontside/staticalize#22 split that into So the mount works the way it always did, and this change would never run. For the record, in case this comes back: the idempotent mount is still correct |
Motivation
Production has not deployed since 2026-09-18. Every run since 2026-09-27
21:57 UTC fails at the
Staticalizestep with 519 download errors, all of them404s on a doubled path:
The cause is upstream and intentional. thefrontside/effection#1248 merged at
21:53 and moved Effection's production
--basetohttps://frontside.com/effection— the url it actually lives at. Its sitemapnow says so:
Where it used to say
https://effection.netlify.app/docs.parseSitemapUrlstakesurl.pathnameand prepends/${prefix}to everyentry. That was right while upstream advertised a site-relative path. Now the
path already carries the mount point, so the prefix lands on it twice and
staticalize is asked for 519 urls that are nowhere.
Interactors and Graphgen still advertise their own origin, which is why only
Effection's 519 entries break — but that is a bug in those sites, not a
property to design around.
frontside.com/interactors/docs/quick-startcurrently serves
<link rel="canonical" href="https://interactors.netlify.app/docs/quick-start">,so this site disclaims its own content in favour of a Netlify subdomain, and
Graphgen emits no canonical at all. Both should move their
--basethe wayEffection just did; this change is what lets them, since it accepts a sitemap
whether or not it carries the mount.
Approach
A path already under the mount is left alone; one that is not still gets it:
Deciding on the path rather than the origin is what makes this cover every
case. An Effection preview is staticalized with its own alias url as the base,
so its sitemap has no prefix and still needs one — an origin comparison would
get that wrong, since the alias origin is neither
frontside.comnoreffection.netlify.app.The
startsWithtest includes the trailing slash so a sibling like/effectionxis not mistaken for the mount.Tests
This repo has no test setup, so I exercised the real
sitemapExtensionagainstall three live upstream sitemaps.
Before, on
production:After, on this branch:
519 is exactly the number of failures in the deploy log, and exactly the number
of entries in Effection's sitemap.
I also checked the mounting rule directly, including an Effection preview's
unprefixed paths and the
/effectionxsibling:I could not generate the full local
/sitemap.xmlend to end — that route alsocalls the Simplecast API, which 401s without a real token — so I drove the proxy
extension directly instead. That is the code this changes.
deno check routes/proxy-route.tsreports 6 errors on this branch. It reportsthe same 6 on
production: pre-existinghasttype mismatches, untouched here.Note
#508 (staticalize 0.3.0) is failing on this same error and is unrelated to it —
its own change is a version bump, and the sitemap-reading code is byte-identical
between 0.2.7 and 0.3.0. It should go green once this lands.