reuse-surface/docs/evidence/2026-10-13-browser-discovery.md
tegwick 50077c9bea
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 2s
ci / validate-registry (push) Successful in 1m40s
Build and Publish Container Image / build-and-push (push) Successful in 40s
Fix short-intent discovery and publish verified browser provider guidance
Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a13690-1c84-77a2-aeee-7f517ec60f5d
2026-10-13 20:48:05 +02:00

4.4 KiB
Raw Blame History

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.

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:

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.

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.
  • git diff --check: clean.