docs(smoke): stop describing the WebKit smoke failure as a Safari bug

#2132 was filed asserting that a Safari user opening an MCP App gets a
permanently 'loading' widget. That was never tested. A manual check in
real Safari renders the App normally, so the claim is unsupported and is
removed from all six places it reached.

The failure under Playwright's WebKit is real and still keeps that engine
out of the CI matrix. What is not established is that any shipping
browser behaves this way — and Playwright ships its own WebKit build
whose networking stack is not Safari's, which is exactly the layer the
failure lives in.

headless-browser.mjs already carried the caveat that a green WebKit run
is not a Safari guarantee. The same sentence forbids the inverse
inference, which is the one that was made; it now says so explicitly, and
AGENTS.md carries the rule: reproduce in the real browser before claiming
user impact in one.

No behavior change.

Signed-off-by: cliffhall <cliff@futurescale.com>
This commit is contained in:
cliffhall 2026-08-25 22:32:47 -04:00
commit 25eb2fb3bf
3 changed files with 26 additions and 14 deletions

View file

@ -27,6 +27,12 @@
* catch engine-level CSP and iframe divergence, and not close enough to certify
* Safari specifically — a green run here is not a Safari guarantee.
*
* **And that cuts both ways: a RED run here is not a Safari indictment.** #2132
* was written up as a Safari bug on the strength of a failure in this build
* alone; a manual check in Safari did not reproduce it. The divergence is widest
* in the networking layer, which is exactly where that failure lives. Reproduce
* in the real browser before describing a finding as one users hit.
*
* Playwright is resolved with a `createRequire` based at
* clients/web/package.json rather than a bare `import("playwright")`: a bare ESM
* specifier resolves relative to `scripts/`, not the cwd, so a `cd clients/web`

View file

@ -46,8 +46,10 @@
* `SMOKE_BROWSER` picks the engine (`chromium` — the default — `firefox`, or
* `webkit`). CI gates **Chromium** (in the `build` job's `npm run smoke`) and
* **Firefox** (in the `Sandbox smokes` matrix job); WebKit runs here but is not
* gated yet — it fails on #2132, a Safari incompatibility in the web client's
* SSE transport that this smoke is what found (#2086).
* gated yet — it fails on #2132, where the SSE stream's last message is not
* delivered under Playwright's WebKit. That has NOT been reproduced in real
* Safari (an MCP App opens there fine), so treat it as a property of that
* build, not as a browser bug, until someone shows otherwise (#2086).
*
* This smoke is one of the two places the
* MCP Apps sandbox is genuinely exercised, and the sandbox is built out of the

View file

@ -27,8 +27,10 @@
* `SMOKE_BROWSER` picks the engine (`chromium` — the default — `firefox`, or
* `webkit`). CI gates **Chromium** (in the `build` job's `npm run smoke`) and
* **Firefox** (in the `Sandbox smokes` matrix job); WebKit runs here but is not
* gated yet — it fails on #2132, a Safari incompatibility in the web client's
* SSE transport that this smoke is what found (#2086).
* gated yet — it fails on #2132, where the SSE stream's last message is not
* delivered under Playwright's WebKit. That has NOT been reproduced in real
* Safari (an MCP App opens there fine), so treat it as a property of that
* build, not as a browser bug, until someone shows otherwise (#2086).
*
* Along with `smoke:web:app` this is one
* of the two places the MCP Apps sandbox is actually loaded, and the two nested