Two Apps, One Page, One User
Decide what you would build from the brief alone. Everything below it is available, but the exercise stops working if you open it first.
Two independently deployed frontends share a page: a shell with navigation and auth, and a product app. They both need the current user, and the session can expire while the user is working. Design the boundary.
Sharing the user object through a global on window, with a custom event when it changes. It works immediately, needs no build coupling, and both teams find it obvious. It is also an untyped, unversioned interface that neither team can change safely: adding a field is fine, renaming one breaks the other app at runtime with no compile-time signal, and the failure appears only when the two deploys are out of step — which is the normal state of a micro-frontend architecture, not an exception. The global is not wrong as a transport; the absence of a version and a schema on it is what makes the next migration impossible.