# Browser discovery review — 2026-10-13 REUSE-WP-0024 resolves the registry-owned portion of REUSE-IN-0001 on the existing `capability.infotech.headless-browser` record. Provider implementation and managed lifecycle remain with rapp-playwright and railiance-platform; CONTENT-WP-0000-T04 remains the consumer's acceptance task. ## Published provider evidence Fetched the raw client, consumer contract, independent-consumer report and release manifest at provider commit `8831a05aeba5ce588f3b395ade676dde2a151c5d`. All four matched `git show` at that revision byte for byte. The single-file Python client SHA-256 is `9967a0831ed04e27fde419098af707722d5c81c993e4c294b3677ffb75729c12`. Pinned public links are retained in the [capability card](../../registry/capabilities/capability.infotech.headless-browser.md). The published image is `forgejo.coulomb.social/coulomb/rapp-playwright@sha256:8d6fd5a8172cf906bb503642ed620761945c5138b86f6396c36f65cbe6def441` for linux/amd64. Provider publication evidence includes immutable registry verification and railiance01 pull. This review did not redeploy the provider. ## Fresh client-only local trial Executed the downloaded client, without installing Playwright or Chromium: ```sh python3 /tmp/reuse-browser-review/rapp_playwright.py --url http://127.0.0.1:18083 preflight python3 /tmp/reuse-browser-review/rapp_playwright.py --url http://127.0.0.1:18083 trial --out /tmp/reuse-browser-review/trial-01 ``` Both exited 0. Run `6c710b36-319b-45b8-b062-ac2065f5e81b` completed at **18:42:58 UTC** with **14 passed steps**: visibility, counter checks, Tab, focused-button assertion, Enter and screenshot in two viewports. The provider reported service 0.1.0, Playwright 1.64.0, Chromium 156.0.8078.4, `workstation-release-check`, and the published digest above. Preflight permitted no external origins; only the synthetic fixture was exercised. Independently parsed all four PNG headers and recomputed hashes against the client receipt. Desktop screenshots are 1280×800 and narrow screenshots are 390×844. This validates dimensions and integrity, not visual-baseline quality. - [Preflight](2026-10-13-browser-discovery/preflight.json) - [Receipt](2026-10-13-browser-discovery/receipt.json) - [Independent artifact checks](2026-10-13-browser-discovery/artifact-checks.json) - [Desktop fixture](2026-10-13-browser-discovery/desktop-final.png) - [Narrow fixture](2026-10-13-browser-discovery/narrow-final.png) Private run handles are excluded. The endpoint is ephemeral and was available on this workstation at trial time; it is not a managed service or a promise of future availability. The source examples remain a fallback when a provider is unavailable. No consumer app, remote target or managed browser was tested. ## Assessment and matching Promoted availability **A2 → A5** under the standard's deployable-container definition. **A6 managed platform capability remains pending**. D3/C2/R2 stay conservative; fixture execution does not prove broader target compatibility or platform operation. Decision recorded in State Hub as `b8ef28c1-9164-4678-8a61-1652e0f07407`. Before this fix, `plan-check --intent "headless browser" --no-llm` returned `new`, with an unrelated context engine first at 0.0476 and the browser third. After scoring names independently from summaries/tags, the same query returns `reuse`, with the browser first at **0.6667** and unrelated matches at **0.2 or less**. Long command/evidence summaries no longer dilute direct name matches. The output includes the standalone client link, preflight/trial commands, ephemeral endpoint warning, managed-admission condition and availability-gap fallback. Reuse advice now describes relevance rather than asserting readiness. Regressions cover short-name relevance despite long summaries and higher-maturity unrelated services, summary-only matching, equal-relevance maturity ties, and hosted CLI output carrying conditional provider instructions. Stats tests now use a fixed temporary registry rather than assuming the live repo always has two capabilities. ## Validation - `.venv/bin/python -m pytest -q`: **212 passed**. One existing Starlette TestClient/httpx deprecation warning remains. - `validate --relations --fail-on-warnings`: **3 entries valid**. - `catalog`, `graph --check`, and `federation compose`: generated successfully; **66 federated capabilities**, preserving one browser capability. - Whitespace check passed apart from intentional Markdown hard breaks in the generated Custodian brief. ## Publication and hosted readback Implementation commit **`50077c9`** pushed to `origin/main`. Public raw capability and index documents matched the committed files byte for byte. Refreshed `https://reuse.coulomb.social/v1/federated?refresh=true` at **18:49:02 UTC**: `stale: false`, no federation warnings, **66 capabilities**, exactly one browser entry at **D3 / A5 / C2 / R2**. The updated local CLI queried this hosted snapshot with `--intent "headless browser" --no-llm`: browser first, score **0.6667**, verdict **reuse**, with the client and conditional availability guidance in the returned summary. Matching runs in the CLI against the hosted index; no server code deployment was needed. - [Hosted entry readback](2026-10-13-browser-discovery/hosted-readback.json) - [Hosted-snapshot plan-check](2026-10-13-browser-discovery/hosted-plan-check.json) REUSE-IN-0001 is closed for registry discovery/consumption concerns. Provider managed admission and consumer application acceptance remain outside this closure. `statehub fix-consistency --repo reuse-surface --json` synchronized the finished workplan and all three done tasks with zero failures or automation errors. Its generated brief/index are included with the closure commit; the automatic generated-only commit was refused by the existing Git hook. Four pre-existing repository-classification advisories remain. A plain intake status PATCH returned HTTP 500 because closure requires an outcome. Used the supported intake `/close` transition with `outcome: promoted`, `promoted_to: REUSE-WP-0024` after recording those fields in the canonical file. Inbox handoffs and standing notices were read/acknowledged. Progress receipt: `898a9638-09b8-44fa-8e04-5970c7cd2bbc`.