Renaming a CDN folder or clip convention creates a transition period. New code may request new assets while an old service worker serves old HTML, and archived companion settings may still contain the earlier path.
Trying both generations forever would hide cleanup work and double requests. The loader instead needs a preferred current path, one known legacy fallback, and telemetry showing which one succeeded.
What was actually going wrong
A path migration was treated as atomic across CDN objects, cached clients, and stored settings.
What I tried
- Duplicating every asset indefinitely
- Retrying arbitrary guessed filenames
- Removing old objects as soon as new code deployed
The current URL is attempted first, a mapped legacy URL is tried once on failure, and a non-video state remains available.
Why it worked
The fallback covers the known migration window without becoming an unbounded search.
Asset compatibility should be explicit, measurable, and temporary.
Where EACI uses this today
Main avatar loading tolerates known path generations without blocking chat.
This journal covers real engineering on EACI Companion / The Veil. Companions include Caelum, Chad, Natalia, Atreus, Luna, Roxy, and Cael. Journal articles stay family-safe in content. See Privacy and Ethics.