Production console browser proof
This drill runs only on randomized 127.0.0.1 ports. It builds the real
@sveltejs/adapter-node console, starts it against the committed mock Chorus stream,
and drives Chromium through the external agent-browser CLI. It does not contact or
change a deployed Chorus instance.
Prerequisites
Section titled “Prerequisites”Install agent-browser and Chromium separately; the repository does not vendor either
runtime. The runner discovers agent-browser, node, and Chrome/Chromium on PATH, or
accepts explicit paths:
S22_AGENT_BROWSER_BIN=/path/to/agent-browser \S22_AGENT_BROWSER_NODE_BIN=/path/to/node \S22_AGENT_BROWSER_DAEMON_JS=/path/to/agent-browser/dist/daemon.js \S22_CHROMIUM_EXECUTABLE=/path/to/google-chrome \bun run scripts/run-s22-console-browser-proof.tsS22_AGENT_BROWSER_DAEMON_JS is optional. When present, the runner owns that daemon
directly; otherwise the CLI starts its own daemon. The default cold-start allowance is
45 seconds, which covers a roughly 30-second first launch. Set
S22_AGENT_BROWSER_COLD_START_TIMEOUT_MS to 30000–300000 when the daemon lives on slow
storage.
Evidence
Section titled “Evidence”By default each run publishes a new owner-only artifact at:
.gsd/milestones/M001/slices/S22/S22-CONSOLE-BROWSER-EVIDENCE-<run_id>.jsonUse S22_CONSOLE_EVIDENCE_FILE or the optional positional argument to select an archival
path. Existing paths are never replaced. Publication is atomic, mode 0600, and occurs
only after cleanup, JSON Schema validation, cross-field semantic validation, source
revalidation, and a raw-credential scan all pass.
The record binds runtime and audit-source manifest hashes and records Node,
agent-browser, and Chromium versions. It proves:
- one shared live SSE connection and one visible event delivered once;
- checkpoint seeding, reload resume with
Last-Event-ID, and no duplicate card; - a visible expired-cursor reset followed by authoritative-snapshot recovery;
- visible authorization and terminal 4xx states, each followed by recovery;
- browser requests stay on the console origin, while bearer authorization stays on the server-to-fixture hop and no API key appears in URLs or JavaScript storage;
- zero browser-console errors and zero uncaught page errors; and
- browser close cancels the upstream stream, all recorded process-tree members exit, both randomized ports close, and the isolated daemon socket disappears.
Validate an archived record against unchanged source with:
bun run scripts/validate-s22-console-browser-evidence.ts \ schemas/audit/s22-console-browser-evidence.schema.json \ .gsd/milestones/M001/slices/S22/S22-CONSOLE-BROWSER-EVIDENCE-<run_id>.jsonA passing artifact is audit evidence, not deployment approval. It records
orchestrator_production_deployment_command_invoked: false, which narrowly attests that
the reviewed proof orchestrator did not invoke a production deployment command.