efdfcac4c1
A backend now answers a contract, and each of its four points is there because the Events vertical ran into it: how its providers are configured (SHEX shape types here, resources+jsonContext for ActivityPods), what its records look like, which key Refine addresses a record by versus which id the app references, and whether its update replaces or patches. Nothing in it is anticipated. Switching happens at runtime, so nothing resolves at module scope: the current backend is React state held by RefineProvider, read through useBackend(), and <Refine> carries its name as key so switching remounts it and drops the cache of the backend being left. Leaving one loses access to its data, accepted. Not done, and not guessed: no activitypods backend. Its configuration is published, its record shape and update semantics are not, and it declares resources in ActivityStreams while Festipod persists fp: shapes -- as:Event exists, a meeting point does not. And AuthGate still gates on the NextGraph session, so a second backend needs its own barrier to be reachable at all. The @data budgets in connexion.steps.ts came from ng-eventually, which had already met this: the timeout was in waitForFunction's SECOND slot, where it is taken as the predicate's argument, so the wait silently ran on the 30s default.