Fix short-intent discovery and publish verified browser provider guidance
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

Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a13690-1c84-77a2-aeee-7f517ec60f5d
This commit is contained in:
tegwick 2026-10-13 20:48:05 +02:00
parent 9042dec5ed
commit 50077c9bea
22 changed files with 736 additions and 87 deletions

View file

@ -2,11 +2,18 @@
id: capability.infotech.headless-browser
name: Headless Browser Automation
summary: >-
Headless browser automation with Playwright and Chromium for UI testing,
screenshots and page extraction; recommended default based on existing
whynot-design, coulomb-social, core-hub and frontend-patterns implementations.
A rapp-playwright-provided service will be available shortly (announced
2026-10-13; planned, not yet verified available).
Headless browser automation, screenshots and keyboard trials through
rapp-playwright 0.1.0 (Playwright 1.64.0, Chromium 156.0.8078.4).
Published A5 local container; managed Railiance admission is pending.
Download the Python 3.10+ standalone client from
https://forgejo.coulomb.social/coulomb/rapp-playwright/raw/commit/8831a05aeba5ce588f3b395ade676dde2a151c5d/client/rapp_playwright.py
and run `python3 rapp_playwright.py --url http://127.0.0.1:18083 preflight`,
then `python3 rapp_playwright.py --url http://127.0.0.1:18083 trial --out trial-01`
with a fresh output directory. This endpoint was verified locally on 2026-10-13
and is ephemeral; it installs no browser for the caller. If unreachable,
follow the local container setup in the capability card or adapt its A2 source
examples; this is an availability gap on the existing capability.
Contract: https://forgejo.coulomb.social/coulomb/rapp-playwright/src/commit/8831a05aeba5ce588f3b395ade676dde2a151c5d/docs/consumer-contract.md.
owner: reuse-surface
status: reviewed
domain: infotech
@ -20,14 +27,15 @@ maturity:
Inspected four implemented Playwright consumers and separated optional
dependencies and plans from usage. No comprehensive alternatives benchmark.
availability:
current: A2
target: A2
current: A5
target: A6
confidence: medium
rationale: >
Existing JavaScript and Python source examples can be adapted in a consumer
repo. This entry does not deliver a shared wrapper or hosted browser service.
The founder announced a forthcoming rapp-playwright service on 2026-10-13;
that planned delivery does not change the evidenced current A2 level.
rapp-playwright 0.1.0 is a published immutable container with a versioned
HTTP contract and standalone Python client, independently trialled locally.
A5 describes deployable container availability, not managed operation (A6).
Railiance admission is pending. Existing A2 source adaptation remains usable;
no endpoint uptime or caller browser installation is implied.
external_evidence:
completeness:
level: C2
@ -36,8 +44,10 @@ external_evidence:
satisfied_expectations:
- Identifies implemented consumers, browser engines and source entry points.
- Gives a scoped default recommendation and a practical trial procedure.
- Published provider client and container have independent fixture screenshots and keyboard receipts.
broken_expectations:
- No shared package, standard configuration or consumer-independent trial receipt.
- Managed admission and persistent platform endpoint are still pending.
- Consumer application acceptance remains the consuming repo's responsibility.
out_of_scope_expectations:
- Exhaustive estate dependency inventory or comparative browser benchmark.
- Browser service implementation or operation by reuse-surface.
@ -49,10 +59,13 @@ external_evidence:
known_reliability_risks:
- Browser binaries and system libraries must match the selected Playwright version.
- Existing examples contain application-specific fixtures and assumptions.
- Browser launch and target-repo compatibility have not been tested by this registration.
- Local fixture receipts do not prove managed operation or arbitrary target compatibility.
- Local provider endpoints are ephemeral; check preflight for each trial.
evidence:
satisfied_signals:
- frontend-patterns navigation-history records a completed Chromium/Firefox experiment.
- rapp-playwright independent final-release trial passed 14 steps across desktop and narrow viewports.
- Independent provider evidence includes wrong-token, failed assertion and unavailable-service checks.
discovery:
intent: >
Help a worker select and reuse existing headless browser tooling instead of
@ -61,19 +74,24 @@ discovery:
- Playwright automation with headless Chromium as the default starting point.
- JavaScript UI tests, screenshots and page extraction examples.
- Python visual-check example and Firefox experiment evidence.
- Published rapp-playwright container, Python client and bounded HTTP fixture trials.
excludes:
- Browser hosting or workstation provisioning by reuse-surface.
- Credential provisioning and permission to automate external targets.
- Claims that a dependency declaration or a workplan proves executed browser usage.
assumptions:
- The consumer chooses a version compatible with its runtime and installs matching browsers.
- Source-adaptation consumers install matching browsers; provider clients need only Python 3.10+.
- Provider consumers establish an available endpoint and run preflight before a trial.
use_cases:
- Find which working repos already use a headless browser and where to start reusing it.
- Run a local UI assertion and screenshot in a target repo before adopting the tooling.
availability:
current_level: A2
target_level: A2
current_level: A5
target_level: A6
current_artifacts:
- forgejo.coulomb.social/coulomb/rapp-playwright@sha256:8d6fd5a8172cf906bb503642ed620761945c5138b86f6396c36f65cbe6def441
- https://forgejo.coulomb.social/coulomb/rapp-playwright/raw/commit/8831a05aeba5ce588f3b395ade676dde2a151c5d/client/rapp_playwright.py
- https://forgejo.coulomb.social/coulomb/rapp-playwright/src/commit/8831a05aeba5ce588f3b395ade676dde2a151c5d/releases/0.1.0.json
- ../whynot-design/playwright.config.mjs
- ../whynot-design/tests/visual/ui-kit.spec.mjs
- ../coulomb-social/scripts/test-usecase-browser.mjs
@ -81,10 +99,9 @@ availability:
- ../frontend-patterns/research/experiments/navigation-history/experiment.mjs
target_artifacts:
- >-
Planned rapp-playwright-provided service, announced by the founder on
2026-10-13 as available shortly; endpoint, consumption contract and readiness
evidence have not yet been verified by reuse-surface.
consumption_modes: [informational, source adaptation, JavaScript library, Python library]
Managed Railiance deployment after platform admission, with consumer
access and live recovery/rollback evidence; not currently available.
consumption_modes: [informational, source adaptation, JavaScript library, Python library, cli, service API, container]
relations:
depends_on: []
supports: []
@ -95,9 +112,12 @@ evidence:
- ../frontend-patterns/research/experiments/navigation-history/README.md
- ../test-driver/SCOPE.md
- ../testdrive-jsui/pyproject.toml
- ../rapp-playwright/README.md
- https://forgejo.coulomb.social/coulomb/rapp-playwright/src/commit/8831a05aeba5ce588f3b395ade676dde2a151c5d/docs/consumer-contract.md
- https://forgejo.coulomb.social/coulomb/rapp-playwright/src/commit/8831a05aeba5ce588f3b395ade676dde2a151c5d/docs/evidence/2026-10-13-publication.md
- intakes/REUSE-IN-0001-headless-browser-runnable-answer.md
tests:
- https://forgejo.coulomb.social/coulomb/rapp-playwright/src/commit/8831a05aeba5ce588f3b395ade676dde2a151c5d/docs/evidence/2026-10-13-independent-local-consumer.md
- docs/evidence/2026-10-13-browser-discovery.md
- ../whynot-design/tests/visual/ui-kit.spec.mjs
- ../coulomb-social/scripts/test-usecase-browser.mjs
- ../core-hub/scripts/check_console_visual.py
@ -114,9 +134,10 @@ consumer_guidance:
- Reuse whynot-design for JavaScript visual tests and core-hub for Python visual checks.
- Reuse coulomb-social for JavaScript browser scripts and frontend-patterns for multi-engine experiments.
- >-
For service consumption, rapp-playwright is the announced provider and its
service will be available shortly. Use its published contract and readiness
evidence when delivered; current availability remains source reuse only.
For bounded screenshot and keyboard jobs, use the published rapp-playwright
Python client against an available local provider and run preflight first.
Use the immutable container to reproduce the provider; managed Railiance
access requires admission and a working tunnel before consumption.
not_recommended_for:
- Treating this recommendation as an approved mandatory estate standard.
- Selecting test-driver as an implemented JavaScript-capable browser engine.
@ -125,8 +146,19 @@ consumer_guidance:
- This is a dated source inspection; run the target-repo trial before claiming adoption success.
- Firefox is evidenced in frontend-patterns; WebKit is supported upstream but unverified in this inspection.
- Selenium is an optional testdrive-jsui dependency, not verified execution; Puppeteer has no verified example here.
- The forthcoming rapp-playwright service has no verified endpoint or launch receipt in this record yet.
promotion_history: []
- Local provider availability is verified but ephemeral; managed admission and platform operation remain pending.
- Provider fixture success does not establish consumer target reachability or application acceptance.
promotion_history:
- date: "2026-10-13"
dimension: availability
from: A2
to: A5
rationale: >-
Published immutable rapp-playwright 0.1.0 container, versioned client/contract
and independent local release receipts satisfy deployable-container availability.
This is not an A6 managed-platform claim. D3, C2 and R2 remain conservative
assessments pending broader target and operational evidence.
author: codex
---
# Headless Browser Automation
@ -147,24 +179,101 @@ implementations and the upstream Playwright project maintains the library.
## Service provider and delivery status
**A `rapp-playwright`-provided service will be available shortly**, as announced by
the founder on 2026-10-13. Its [repository description](../../../rapp-playwright/README.md)
identifies a Railiance wrapper for a Playwright and headless Chromium environment
supporting use-case testing. Service availability is **planned**, not verified:
this record has no confirmed endpoint, consumption contract or launch receipt yet.
The current **D3 / A2 / C2 / R2** vector continues to describe evidenced source reuse.
**rapp-playwright 0.1.0 is published and verified as a local container provider.**
The current vector is **D3 / A5 / C2 / R2**. A5 means a deployable container under
[the maturity standard](../../specs/CapabilityMaturityStandard.md); managed
platform operation is A6 and remains **pending Railiance admission**. Source
examples remain available at A2. No browser is installed on the caller's machine
by discovery or by running the Python client.
`rapp-playwright` owns the forthcoming browser service. `reuse-surface` owns
discovery, consumption guidance, maturity assessment and evidence references; it
does not implement or operate the browser service or install browsers on behalf
of consumers. Its `owner` field here denotes the maintainer of this registry record.
`rapp-playwright` owns the browser service; `railiance-platform` owns managed
lifecycle admission. `reuse-surface` owns this record, discovery, consumption
guidance and evidence assessment. The
[content-explorer intake](../../intakes/REUSE-IN-0001-headless-browser-runnable-answer.md)
concerns registry relevance and availability clarity; CONTENT-WP-0000-T04
acceptance remains with the consumer.
The [content-explorer feedback](../../intakes/REUSE-IN-0001-headless-browser-runnable-answer.md)
is retained as consumer evidence. Browser delivery is assigned to the provider;
the reported relevance, false-`new` verdict and availability-clarity issues remain
reuse-surface concerns. A2 means source/library reuse, not proof of a locally
installed browser. The service announcement does not complete the consumer's
screenshot and keyboard-walkthrough task.
### Verified client path
Only Python 3.10+ is needed by the consumer. Download the single revision-pinned
client into a working directory; a sibling checkout is not required:
```sh
curl -fL --output rapp_playwright.py https://forgejo.coulomb.social/coulomb/rapp-playwright/raw/commit/8831a05aeba5ce588f3b395ade676dde2a151c5d/client/rapp_playwright.py
python3 rapp_playwright.py --url http://127.0.0.1:18083 preflight
python3 rapp_playwright.py --url http://127.0.0.1:18083 trial --out trial-01
```
Use a fresh output directory for each run. Port **18083** was verified on this
workstation on **2026-10-13**; it is an ephemeral local provider, not a permanent
or remotely reachable endpoint. Preflight must report `available: true`, API 1,
service 0.1.0, Playwright **1.64.0**, Chromium **156.0.8078.4**, and the expected
release/location. Connection failure means the provider or tunnel is unavailable,
not that another browser capability is needed. Use the local setup below or the
source-adaptation fallback. Repeat `--url` on later status/download commands.
The fixture trial checks Tab focus, Enter activation and the counter assertion
across **1280×800** and **390×844** viewports, then downloads screenshots and a
receipt. It does not inspect or accept the consumer's own UI. `run.json` is a
private run handle and must not be published. For `trial`/`run`, exit 0 means
passed, 2 means UI assertion failed, and 3 means infrastructure/setup or another
unsuccessful result; `status` exit 0 only means retrieval succeeded.
### Reproduce the local provider
The published release targets **linux/amd64**. With Docker and image pull access,
start the immutable container in one terminal, then point the client at port
**18081** in another:
```sh
docker run --rm --name rapp-playwright-local --read-only \
--tmpfs /tmp:rw,size=512m --shm-size=256m --memory=1g --cpus=1 \
--cap-drop ALL --security-opt no-new-privileges \
--mount type=volume,src=rapp-playwright-local-data,dst=/data \
-p 127.0.0.1:18081:8080 -e HOST=0.0.0.0 \
-e EXECUTION_LOCATION=workstation-container \
-e RELEASE_ID=sha256:8d6fd5a8172cf906bb503642ed620761945c5138b86f6396c36f65cbe6def441 \
forgejo.coulomb.social/coulomb/rapp-playwright@sha256:8d6fd5a8172cf906bb503642ed620761945c5138b86f6396c36f65cbe6def441
python3 rapp_playwright.py --url http://127.0.0.1:18081 preflight
python3 rapp_playwright.py --url http://127.0.0.1:18081 trial --out trial-local-01
```
This is the provider's documented local setup with the published digest pinned;
it was not redeployed by this registry review. Existing independent final-release
receipts and the fresh discovery trial use the same digest. The default fixture
requires no external target grant. The provider supports trusted/synthetic pages,
not hostile-page or mutually untrusted tenant execution.
### Conditional managed path
Only **after platform admission, deployment and caller access are confirmed**:
```sh
kubectl -n playwright port-forward deployment/playwright 18081:8080 --address 127.0.0.1
# In another terminal, while the tunnel remains running:
python3 rapp_playwright.py preflight
python3 rapp_playwright.py trial --out trial-managed-01
```
No managed deployment or successful managed invocation is claimed here. A remote
browser's localhost belongs to the provider. Consumer applications need a
provider-reachable, explicitly allowed origin; the browser API tunnel does not
forward a workstation app. See the provider contract before running a target
scenario.
### Pinned delivery evidence
All provider links below are pinned to published commit
`8831a05aeba5ce588f3b395ade676dde2a151c5d`:
- [Consumer contract](https://forgejo.coulomb.social/coulomb/rapp-playwright/src/commit/8831a05aeba5ce588f3b395ade676dde2a151c5d/docs/consumer-contract.md).
- [Release manifest](https://forgejo.coulomb.social/coulomb/rapp-playwright/src/commit/8831a05aeba5ce588f3b395ade676dde2a151c5d/releases/0.1.0.json)
and [publication/pull evidence](https://forgejo.coulomb.social/coulomb/rapp-playwright/src/commit/8831a05aeba5ce588f3b395ade676dde2a151c5d/docs/evidence/2026-10-13-publication.md).
- [Independent consumer evidence](https://forgejo.coulomb.social/coulomb/rapp-playwright/src/commit/8831a05aeba5ce588f3b395ade676dde2a151c5d/docs/evidence/2026-10-13-independent-local-consumer.md),
including final-release screenshots, keyboard assertions, wrong-token rejection,
UI failure and unavailable-service results. These are retained provider-side
reports; this review separately verified the fixture path.
- [Fresh registry review and trial](../../docs/evidence/2026-10-13-browser-discovery.md).
## Existing implementations
@ -196,15 +305,14 @@ copy its workstation paths as a portable browser installation recipe.
- **Firefox/WebKit:** Playwright supports both upstream. Firefox has retained
experiment evidence here; WebKit has no verified local example in this record.
## Practical trial for the consuming worker
## Source-adaptation fallback for the consuming worker
1. Query this checkout with `python3 -m reuse_surface.cli query --keyword browser`
from the reuse-surface root, then open this entry. If the CLI is installed,
`reuse-surface query --keyword browser` is equivalent.
`plan-check --intent "headless browser" --no-llm` also includes this candidate,
but its token-overlap thresholds and maturity tie-breaking currently return
`new` for this short query. That verdict does not establish absence of reuse;
use the explicit keyword query and read the evidence for this trial.
`plan-check --intent "headless browser" --no-llm` ranks this entry first.
Its reuse verdict describes relevance; provider preflight determines current
runtime availability. Use source adaptation when the provider path is unsuitable.
2. Pick the example matching the target repo's language and task. Inspect its
fixture/server assumptions before adapting the smallest useful test or script.
3. Use the target repo's package manager and lockfile. Select a compatible

View file

@ -6,18 +6,25 @@ capabilities:
- id: capability.infotech.headless-browser
name: Headless Browser Automation
summary: >-
Headless browser automation with Playwright and Chromium for UI testing,
screenshots and page extraction; recommended default based on existing
whynot-design, coulomb-social, core-hub and frontend-patterns implementations.
A rapp-playwright-provided service will be available shortly (announced
2026-10-13; planned, not yet verified available).
vector: D3 / A2 / C2 / R2
Headless browser automation, screenshots and keyboard trials through
rapp-playwright 0.1.0 (Playwright 1.64.0, Chromium 156.0.8078.4).
Published A5 local container; managed Railiance admission is pending.
Download the Python 3.10+ standalone client from
https://forgejo.coulomb.social/coulomb/rapp-playwright/raw/commit/8831a05aeba5ce588f3b395ade676dde2a151c5d/client/rapp_playwright.py
and run `python3 rapp_playwright.py --url http://127.0.0.1:18083 preflight`,
then `python3 rapp_playwright.py --url http://127.0.0.1:18083 trial --out trial-01`
with a fresh output directory. This endpoint was verified locally on 2026-10-13
and is ephemeral; it installs no browser for the caller. If unreachable,
follow the local container setup in the capability card or adapt its A2 source
examples; this is an availability gap on the existing capability.
Contract: https://forgejo.coulomb.social/coulomb/rapp-playwright/src/commit/8831a05aeba5ce588f3b395ade676dde2a151c5d/docs/consumer-contract.md.
vector: D3 / A5 / C2 / R2
domain: infotech
status: reviewed
owner: reuse-surface
path: registry/capabilities/capability.infotech.headless-browser.md
tags: [headless, browser, automation, playwright, chromium, testing, screenshots, extraction, firefox, webkit, selenium, puppeteer]
consumption_modes: [informational, source adaptation, JavaScript library, Python library]
consumption_modes: [informational, source adaptation, JavaScript library, Python library, cli, service API, container]
- id: capability.registry.register
name: Capability Registration

View file

@ -943,12 +943,17 @@ capabilities:
source_index: registry/federation/cache/email-connect.yaml
- id: capability.infotech.headless-browser
name: Headless Browser Automation
summary: Headless browser automation with Playwright and Chromium for UI testing,
screenshots and page extraction; recommended default based on existing whynot-design,
coulomb-social, core-hub and frontend-patterns implementations. A rapp-playwright-provided
service will be available shortly (announced 2026-10-13; planned, not yet verified
available).
vector: D3 / A2 / C2 / R2
summary: 'Headless browser automation, screenshots and keyboard trials through rapp-playwright
0.1.0 (Playwright 1.64.0, Chromium 156.0.8078.4). Published A5 local container;
managed Railiance admission is pending. Download the Python 3.10+ standalone client
from https://forgejo.coulomb.social/coulomb/rapp-playwright/raw/commit/8831a05aeba5ce588f3b395ade676dde2a151c5d/client/rapp_playwright.py
and run `python3 rapp_playwright.py --url http://127.0.0.1:18083 preflight`, then
`python3 rapp_playwright.py --url http://127.0.0.1:18083 trial --out trial-01`
with a fresh output directory. This endpoint was verified locally on 2026-10-13
and is ephemeral; it installs no browser for the caller. If unreachable, follow
the local container setup in the capability card or adapt its A2 source examples;
this is an availability gap on the existing capability. Contract: https://forgejo.coulomb.social/coulomb/rapp-playwright/src/commit/8831a05aeba5ce588f3b395ade676dde2a151c5d/docs/consumer-contract.md.'
vector: D3 / A5 / C2 / R2
domain: infotech
status: reviewed
owner: reuse-surface
@ -971,6 +976,9 @@ capabilities:
- source adaptation
- JavaScript library
- Python library
- cli
- service API
- container
source_repo: reuse-surface
source_index: registry/indexes/capabilities.yaml
- id: capability.infotech.hub-core-library