Big refactor: Extensions now return a flat object ({ ...exports, whenReady?, destroy? }) instead of nested { exports, lifecycle }, with an internal normalizer ensuring whenReady is always a Promise and destroy is always callable—so you can await per-extension readiness via extensions.X.whenReady. This also fixes a real bug where sqlite’s top-level destroy hook was being dropped, improving cleanup reliability across workspaces. 🚀