# Browser Qualification

Browser qualification must use isolated profiles on buildboxes or another explicitly isolated environment. It must not use the active workstation ChatGPT browser session.

## Common gate

Run on an isolated buildbox:

```bash
pnpm install --frozen-lockfile
pnpm gate
```

The gate covers protocol validation, persistence/restart behavior, orchestration lifecycle, executor reconnect/replay, extension manifest/package checks, concurrency/backpressure, and synthetic ChatGPT DOM fixtures.

## Firefox

Use a current stock Firefox with a temporary extension installation (`web-ext run`) and a synthetic executor smoke server. The smoke must prove:

1. authenticated `executor.hello`;
2. command ACK;
3. unmanaged conversation rejection;
4. managed ChatGPT tab creation;
5. browser type reports `firefox`.

No ChatGPT account or private conversation content is required for this executor-shell smoke.

## Chromium

The Chromium distribution must build as MV3 with a service worker, the same ChatGPT content-script boundary, and Chromium-only loopback HTTP host permission for its LNA onboarding probe.

Chromium 142+ additionally gates loopback connections behind Local Network Access permission. A compatibility smoke may validate extension loading/service-worker startup in a clean isolated profile. A full executor-connection smoke must first grant Chromium's loopback-network permission through an active extension document/user permission flow; a service worker alone cannot generate that prompt.

This is a browser platform permission, not an orchestrator protocol failure. Production onboarding is handled by the extension options-page **Allow local executor access** control.

## Packaging lint

The Firefox package must pass:

```bash
pnpm dlx web-ext@latest lint --source-dir dist/firefox --warnings-as-errors
```

Do not weaken runtime security boundaries merely to make browser-test automation bypass a browser permission prompt.
