# Browser instance queue (overnight parallel reconcile, 2026-06-17)

Three single-instance Chromium engines exist on this box; each can serve ONE agent at a
time. To run up to 3 agents in parallel without stomping each other's page state, every
agent that needs to render/measure MUST acquire a slot first and release it when done.

| Slot | Engine | How the agent drives it |
|---|---|---|
| `browse` | gstack `/browse` | `B="$HOME/.claude/skills/gstack/browse/dist/browse"`; `$B viewport WxH`, `$B goto URL`, `$B js "expr"`, `$B hover sel`, `$B screenshot path` |
| `playwright` | Playwright MCP | `browser_navigate`, `browser_resize`, `browser_evaluate` (run JS, return value), `browser_hover` |
| `chrome` | Chrome DevTools MCP | `navigate_page`, **set viewport via `emulate({viewport:"1440x2000x1"})` — NOT `resize_page` (errors on the maximized window); mobile: `emulate({viewport:"393x852x1,mobile,touch"})`**, `evaluate_script`, `hover` |

## Protocol (race-free — lock is an atomic `mkdir`)
```bash
Q=/home/mrwick/coding/fs/cfs/tools/browser-queue
SLOT=$(bash $Q/acquire.sh "<agent-name>")     # blocks until a slot frees; prints slot
trap 'bash '"$Q"'/release.sh "$SLOT" "<agent-name>"' EXIT   # always release
# ... drive the engine named by $SLOT for the whole measurement run ...
bash $Q/release.sh "$SLOT" "<agent-name>"     # (or rely on the trap)
```
- One slot per agent for its whole run (simplest; gives 3-way parallelism in waves).
- Stale locks (crashed holder) auto-reclaim after 30 min.
- `bash $Q/status.sh` shows live state.

NOTE: the CFS project rule normally mandates `/browse` only. For THIS overnight parallel
run, Arjun explicitly authorized using all three engines behind this queue. All three are
Chromium, so `getBoundingClientRect`/`getComputedStyle` measurements are equivalent.

---
## Log
2026-06-17 22:22:16 | ACQUIRE | browse | test-agent-1
2026-06-17 22:22:16 | ACQUIRE | playwright | test-agent-2
2026-06-17 22:22:16 | ACQUIRE | chrome | test-agent-3
2026-06-17 22:22:16 | RELEASE | browse | test-agent-1
2026-06-17 22:22:16 | RELEASE | playwright | test-agent-2
2026-06-17 22:22:16 | RELEASE | chrome | test-agent-3
2026-06-17 22:22:23 | ACQUIRE | browse | blog-individual-agent
2026-06-17 22:25:03 | ACQUIRE | playwright | doctor-agent
2026-06-17 22:25:21 | ACQUIRE | chrome | city-agent
2026-06-17 22:26:55 | RELEASE | browse | blog-individual-agent
2026-06-17 22:27:49 | ACQUIRE | browse | aboutus-agent
2026-06-17 22:36:33 | RELEASE | chrome | city-agent
2026-06-17 22:37:27 | ACQUIRE | chrome | contactus-agent
2026-06-17 22:37:28 | RELEASE | playwright | doctor-agent
2026-06-17 22:38:21 | ACQUIRE | playwright | newsmedia-agent
2026-06-17 22:41:50 | RELEASE | browse | aboutus-agent
2026-06-17 22:44:56 | ACQUIRE | browse | blog-r1
2026-06-17 22:49:17 | RELEASE | chrome | contactus-agent
2026-06-17 22:50:17 | ACQUIRE | chrome | doctor-r1
2026-06-17 22:50:20 | RELEASE | playwright | newsmedia-agent
2026-06-17 22:54:48 | RELEASE | browse | blog-r1
2026-06-17 22:55:53 | ACQUIRE | browse | city-r1
2026-06-17 22:55:57 | ACQUIRE | playwright | aboutus-r1
2026-06-17 23:03:47 | RELEASE | playwright | aboutus-r1
2026-06-17 23:04:28 | ACQUIRE | playwright | contact-r1
2026-06-17 23:11:22 | RELEASE | chrome | doctor-r1
2026-06-17 23:16:19 | RELEASE | playwright | contact-r1
2026-06-17 23:17:25 | ACQUIRE | playwright | news-r1
2026-06-17 23:17:41 | ACQUIRE | chrome | blog-r2
2026-06-17 23:20:24 | RELEASE | browse | city-r1
2026-06-17 23:21:31 | ACQUIRE | browse | doctor-r2
2026-06-17 23:26:12 | RELEASE | playwright | news-r1
2026-06-17 23:27:52 | ACQUIRE | playwright | city-r2
2026-06-17 23:32:28 | RELEASE | browse | doctor-r2
2026-06-17 23:33:17 | ACQUIRE | browse | aboutus-r2
2026-06-17 23:34:53 | RELEASE | playwright | city-r2
2026-06-17 23:41:45 | RELEASE | chrome | blog-r2
2026-06-17 23:43:53 | RELEASE | browse | aboutus-r2
2026-06-17 23:47:45 | ACQUIRE | browse | contact-r2b
2026-06-17 23:47:51 | ACQUIRE | playwright | news-r2
2026-06-17 23:48:03 | ACQUIRE | chrome | doctor-r3
2026-06-17 23:54:17 | RELEASE | browse | contact-r2b
2026-06-17 23:55:00 | ACQUIRE | browse | blog-r3
2026-06-17 23:56:30 | RELEASE | playwright | news-r2
2026-06-17 23:57:51 | ACQUIRE | playwright | city-r3
2026-06-18 00:03:09 | RELEASE | chrome | doctor-r3
2026-06-18 00:04:12 | ACQUIRE | chrome | aboutus-r3
2026-06-18 00:06:06 | RELEASE | browse | blog-r3
2026-06-18 00:07:55 | RELEASE | playwright | city-r3
2026-06-18 00:09:10 | ACQUIRE | browse | news-r3
2026-06-18 00:09:11 | ACQUIRE | playwright | contact-r3
2026-06-18 00:17:16 | RELEASE | playwright | contact-r3
2026-06-18 00:17:41 | RELEASE | browse | news-r3
2026-06-18 00:18:09 | RELEASE | chrome | aboutus-r3
2026-06-18 00:19:47 | ACQUIRE | browse | blog-qa
2026-06-18 00:19:50 | ACQUIRE | playwright | doctor-qa
2026-06-18 00:20:09 | ACQUIRE | chrome | city-qa
2026-06-18 00:24:08 | RELEASE | playwright | doctor-qa
2026-06-18 00:24:58 | ACQUIRE | playwright | aboutus-qa
2026-06-18 00:28:03 | RELEASE | chrome | city-qa
2026-06-18 00:28:54 | RELEASE | browse | blog-qa
2026-06-18 00:29:11 | ACQUIRE | browse | contact-qa
2026-06-18 00:31:21 | ACQUIRE | chrome | news-qa
2026-06-18 00:31:27 | RELEASE | playwright | aboutus-qa
2026-06-18 00:36:42 | RELEASE | browse | contact-qa
2026-06-18 00:37:43 | RELEASE | chrome | news-qa
2026-06-18 10:34:06 | ACQUIRE | browse | city-gate
2026-06-18 10:34:13 | ACQUIRE | playwright | blog-gate
2026-06-18 10:34:19 | ACQUIRE | chrome | doctor-gate
2026-06-18 10:59:21 | RELEASE | browse | city-gate
2026-06-18 11:00:13 | RELEASE | playwright | blog-gate
2026-06-18 11:12:52 | RELEASE | chrome | doctor-gate
2026-06-18 22:25:29 | ACQUIRE | browse | aboutus-desktop-gate
