From 55accd0e65fadbc166d7d4b91b611301c5ae1176 Mon Sep 17 00:00:00 2001 From: ekklesia Date: Sat, 3 Oct 2026 11:21:46 -0500 Subject: [PATCH] docs: state exactly what ADR 0045's browser smoke proves Co-Authored-By: Claude Opus 5.5 --- .../decisions/0045-split-dashboard-and-api-origins.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/docs/architecture/decisions/0045-split-dashboard-and-api-origins.md b/docs/architecture/decisions/0045-split-dashboard-and-api-origins.md index 4314083..9a5eba9 100644 --- a/docs/architecture/decisions/0045-split-dashboard-and-api-origins.md +++ b/docs/architecture/decisions/0045-split-dashboard-and-api-origins.md @@ -181,10 +181,13 @@ host-only session cookie. Because those are browser behaviors, the split run also drives a **real browser**: a headless Chromium from an image pinned by digest, controlled over the Chrome DevTools Protocol by the smoke-test client with no added dependency. In it, a person signs in through the real form on the -Dashboard hostname, the Dashboard loads a module's UI and contribution from the API hostname, the -session cookie is present only for the API hostname, the module's display page mounts on the API -hostname, and sign-out ends the session. The split run installs the repository's module template as -a test-only module so these paths exist; installations' own smoke tests cover their real modules. +Dashboard hostname, the session cookie is present only for the API hostname, the Dashboard imports a +module's UI from the API hostname and the module's own credentialed requests succeed under CORS, no +request is refused, the module's display page mounts on the API hostname with its service worker, and +sign-out ends the session. The split run installs the repository's module template as a test-only +module so these paths exist; installations' own smoke tests cover their real modules. Contribution +artifacts are imported exactly as UI artifacts are, and the API's tests cover their CORS headers and +those of realtime streams. ## Consequences