Index: scripts/migrate-circles.mjs
===================================================================
--- scripts/migrate-circles.mjs	(revision 8ef8c3eac2476504a52ea0e74c93a6692330eecb)
+++ scripts/migrate-circles.mjs	(revision 429d3b0e97f3514be589f2982109dd369e53a631)
@@ -13,5 +13,5 @@
   try {
     const r = await fetch(siteUrl, { headers: { Accept: 'application/activity+json' }, redirect: 'manual' });
-    if (r.status >= 300 && r.status < 400) { const loc = r.headers.get('location'); if (loc) return loc; }
+    if (r.status >= 300 && r.status < 400) { const loc = r.headers.get('location'); if (loc) return new URL(loc, siteUrl).href; }
     if (r.ok) return siteUrl; // root already serves the actor
   } catch (e) { /* unreachable */ }
