--- id: "44aada38-3048-4353-a594-890e78e84520" name: "browser-harness" micro_summary: "Skill hub for browser-harness agents: first-move tool choice, the entry gate, and domain hubs mapping sites to helpers and endpoints." status: "in_progress" see_also: [] scope: "Domain skills and agent helpers registry for browser-harness. Search this tree before navigating to any site — it maps hosts to their skills (selectors, traps, URL patterns) and callable helper functions. Agents must search this tree via tree_id before running browser-harness commands." warnings: "Before driving tabs by hand, read the child named Existing Tab Workflow and call `list_tabs()`. Reuse a suitable matching tab; protect the active tab by default, but honor explicit task-scoped human authorization under that child's procedure. Do not substitute a new tab when the human clearly authorized the existing target. Tier 2 still requires a hidden tab; follow the child named Decision-Model Fast Path and use manual tooling if its actual limits exclude the authorized target." --- ## First moves Pick the fastest tier that fits what you already know, before the first request. If a tier fails, move to the next one; do not retry the same tier with variations. 1. **HTTP (`curl` or `http_get`), fastest.** Use it when you already have the exact URL of a static document or API. Examples: arXiv, documentation pages, raw GitHub files, RFCs, public JSON APIs, old static HTML sites, direct file links a node or page gave you, and endpoints listed under a domain hub's `Curlable Endpoints` child. 2. **Decision-model fast path, fast.** For several page steps on public pages. The child named `Decision-Model Fast Path` owns when this tier applies and when it is unavailable. 3. **Your own browser-harness tooling, slowest but robust.** You drive CDP and the helpers yourself. Use it for signed-in pages, interaction the loop can't do, and anything the faster tiers returned to you. - Search in the browser with Google (`https://www.google.com/`). Never search over HTTP, and do not use DuckDuckGo, Brave, Bing or another engine unless the user asks for one. - One HTTP attempt per site. If it returns an error, a block or consent page, a captcha, or an empty JavaScript shell, use the browser for that site from then on. Change the tool, not the target. Do not retry with other headers, user agents or mirrors, and do not try other sites for the same information over HTTP. - After browser work on a public site (tier 2 or 3), follow the child named `Curlable Endpoint Discovery`. This is required. - The human may choose, forbid or ask to approve a tier for this flow. If they ask to approve, report the tier and wait for their answer before the first request. ## Skill entry gate Before the first browser-harness interaction in a flow: 1. Read this root and call `sifttext_get_outline` on `44aada38-3048-4353-a594-890e78e84520` with `max_depth=1`. 2. Find the matching domain hub and its immediate descendants: ```sql SELECT id, parent_id, name, scope, status FROM nodes WHERE tree_id = 'd65f901f-e4ec-4572-9cd9-ec8c544a984a' AND parent_id = '44aada38-3048-4353-a594-890e78e84520' ORDER BY position NULLS LAST, name; SELECT id, parent_id, name, scope, status FROM nodes WHERE parent_id = '' OR parent_id IN ( SELECT id FROM nodes WHERE parent_id = '' ) ORDER BY parent_id, position NULLS LAST, name; ``` 3. Read the relevant domain and mechanics nodes in full, including any `Curlable Endpoints` child of the domain hub. Also read in full every child that owns a tier's rules, currently the child named `Decision-Model Fast Path`. These tier reads are mandatory, not a relevance judgment. 4. Choose a tier under First moves. Before the first request, tell the human the chosen tier and, for each faster tier passed over, the rule that excludes it. Report a later tier change the same way. For tier 3, start unknown page interaction at the child named `CDP Probing`; invocation details live in `Runtime Invocation`. Complete this gate once per browser flow, not before every command. If the flow reaches an unrelated domain, read that domain hub once before interacting there. If discovery or the required nodes cannot be read, fail closed before the first browser command.