Where the game stops
The core site does not know what a shard is, what a guild is, or that Ultima Online exists. Everything that does lives in an installable module on the other side of a declared interface — which is what makes "put your game on it" a shape rather than a slogan.
A module declares which versions of the interface it speaks. If that does not match what the site offers, it refuses to load and the site comes up without it.
Not just screens: its routes, its database tables, its navigation rows, its slice of the OpenAPI spec and its own prebuilt client bundle. Installing it is a paste in the admin panel or a line in your environment — never a build step, because production runs an image you pulled, and an operator who has to compile something has been handed a maintenance job rather than a feature.
A module that will not load is marked as failed and the site starts without it. Disabling one is a kill switch, not a visibility flag — its routes stop answering and its live connections close. Uninstalling keeps the data, and destroying the data is a separate, deliberate choice made in its own dialog.
Core owns the Teams primitive — the roster, the forum, the notifications, the voice channel — and does not own the word. A Team cannot be created in core at all; it arrives from the module, which is why the UO module calls them guilds and builds those pages itself. That is the pattern the whole interface is built on: core supplies the machinery, the module supplies the meaning.
One module exists and it is Ultima Online. A second, for a different game, is a written dry-run that was deliberately never implemented — it exists to test whether the contract generalises on paper. Until somebody builds the second one, the seam is a well-argued design rather than a demonstrated one, and this site says so wherever it comes up.