Implement bounded browser service, consumer evidence and managed package

Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a13590-a16f-7f60-be60-fd71627bc99d
This commit is contained in:
tegwick 2026-10-13 19:23:29 +02:00
parent 386b0c0f04
commit ccf46d8c59
81 changed files with 3455 additions and 73 deletions

View file

@ -1,22 +1,48 @@
# rapp-playwright
Railiance package for a Playwright and headless Chromium service that coding
agents can use to arrange UI tests, responsive screenshots, and keyboard journeys.
A bounded Playwright/Chromium job service for responsive screenshots and keyboard
journeys, with a standalone Python client and a private Railiance workload package.
**Status: planning only.** No service endpoint, runnable client, browser image,
or launch receipt is available from this repo yet. State Hub registration tracks
the work; it does not establish browser availability.
**Implemented and verified locally. Managed activation awaits platform admission.**
The independent agent trial and pinned OnCo home-page pilot passed. The service
uses Playwright 1.64.0 and Chromium 156.0.8078.4; consumers need Python 3.10+ and
no browser installation.
For an available provider endpoint:
```sh
python3 client/rapp_playwright.py preflight
python3 client/rapp_playwright.py trial --out .local/trial-01
```
The default endpoint is a loopback tunnel at `http://127.0.0.1:18081`.
[Access and contract](docs/consumer-contract.md) explain tunnel setup, target
reachability, receipts, failures and limits. This address alone is not evidence
that a managed deployment exists. See [current scope](SCOPE.md).
For a reproducible local provider (Docker and npm required):
```sh
make install test test-integration build
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 \
forgejo.coulomb.social/coulomb/rapp-playwright:0.1.0
```
The local Docker listener is published only on host loopback; the managed pod
listens on pod loopback. The fixture works without external target grants.
Use an immutable published digest for managed installation.
- [Intent and ownership](INTENT.md)
- [Current scope](SCOPE.md)
- [Demand and sibling conventions](docs/demand-and-reuse.md)
- [Workplan sequence](workplans/README.md)
- [Verified registration and handoff](docs/evidence/2026-10-13-bootstrap.md)
- [Build, deployment and recovery](docs/operations.md)
- [Independent consumer evidence](docs/evidence/2026-10-13-independent-local-consumer.md)
- [Content-explorer pilot](docs/content-explorer-pilot.md)
- [Workplan status](workplans/README.md)
Registered in State Hub under `infotech / stack`. The completed bootstrap and
three proposed delivery plans are listed in [WORK-RECORDS.md](WORK-RECORDS.md).
The first consumer is content-explorer (`CONTENT-WP-0000-T04`). Discovery stays
with reuse-surface's existing `capability.infotech.headless-browser` record;
rapp-playwright owns service delivery. Implementation starts with the proposed
consumer contract workplan after the initial planning handoff.
Registered in State Hub under `infotech / stack`. `railiance-platform` owns the
platform lifecycle; this repo owns service implementation. Discovery stays with
reuse-surface's existing `capability.infotech.headless-browser` record.