Register headless browser reuse guidance and consumer examples
Some checks failed
CI Smoke / host-smoke (push) Successful in 0s
ci / validate-registry (push) Failing after 2m14s
CI Smoke / container-smoke (push) Successful in 2s

Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a13502-3de4-7af3-a6ae-3ef26de4adec
This commit is contained in:
tegwick 2026-10-13 13:56:33 +02:00
parent 309432778b
commit 64e167433d
13 changed files with 365 additions and 22 deletions

View file

@ -2,7 +2,7 @@
# Custodian Brief — reuse-surface
**Domain:** infotech
**Last synced:** 2026-09-30 18:32 UTC
**Last synced:** 2026-10-13 11:35 UTC
**State Hub:** http://127.0.0.1:8000 *(adjust if running on a remote machine)*
## Active Workstreams
@ -11,7 +11,8 @@
## Inbox Hygiene
**Missing thread_id:** 1 unread message(s) lack supersession chains.
**Stale unread:** 2 message(s) older than 3 day(s) — triage at session start.
**Missing thread_id:** 2 unread message(s) lack supersession chains.
---
## MCP Orientation (when available)

View file

@ -8,6 +8,8 @@
| Kind | ID | Status | Lane | Source |
| --- | --- | --- | --- | --- |
| workplan | ADHOC-2026-10-13 | finished | — | workplans/ADHOC-2026-10-13.md |
| workplan | REUSE-WP-0023 | finished | — | workplans/REUSE-WP-0023-access-engine-source-rename.md |
| task | ADHOC-2026-10-13-T01 | done | — | workplans/ADHOC-2026-10-13.md |
| task | REUSE-WP-0023-T01 | done | — | workplans/REUSE-WP-0023-access-engine-source-rename.md |
| task | REUSE-WP-0023-T02 | done | — | workplans/REUSE-WP-0023-access-engine-source-rename.md |

View file

@ -1,8 +1,8 @@
# Capability Catalog
**Domain:** helix_forge
**Updated:** 2026-06-16
**Entries:** 2
**Updated:** 2026-10-13
**Entries:** 3
Generated by `reuse-surface catalog`. Do not edit manually.
@ -30,3 +30,18 @@ Generated by `reuse-surface catalog`. Do not edit manually.
**Known limitations:**
- warnings do not fail CI unless --fail-on-warnings is set
## infotech
### Headless Browser Automation
- **ID:** `capability.infotech.headless-browser`
- **Vector:** D3 / A2 / C2 / R2
- **Owner:** reuse-surface
- **Path:** `registry/capabilities/capability.infotech.headless-browser.md`
- **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.
**Known limitations:**
- 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.

View file

@ -15,7 +15,7 @@
</head>
<body>
<h1>Capability Catalog</h1>
<p class="subtitle">Updated 2026-06-16 · 2 entries</p>
<p class="subtitle">Updated 2026-10-13 · 3 entries</p>
<section><h2>helix_forge</h2>
<article class="card">
<h3>Capability Registration</h3>
@ -29,5 +29,12 @@
<p>Validate capability registry entries against schema, index consistency, and relation integrity.</p>
<p class="path">registry/capabilities/capability.registry.validate.md</p>
</article></section>
<section><h2>infotech</h2>
<article class="card">
<h3>Headless Browser Automation</h3>
<p class="meta"><code>capability.infotech.headless-browser</code> · D3 / A2 / C2 / R2</p>
<p>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.</p>
<p class="path">registry/capabilities/capability.infotech.headless-browser.md</p>
</article></section>
</body>
</html>

View file

@ -1,7 +1,37 @@
{
"domain": "helix_forge",
"updated": "2026-06-16",
"updated": "2026-10-13",
"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.",
"vector": "D3 / A2 / 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"
]
},
{
"id": "capability.registry.register",
"name": "Capability Registration",

View file

@ -1,4 +1,5 @@
graph LR
capability_infotech_headless_browser["capability.infotech.headless-browser<br/>D3 / A2 / C2 / R2"]
capability_registry_register["capability.registry.register<br/>D3 / A4 / C2 / R3"]
capability_registry_validate["capability.registry.validate<br/>D4 / A3 / C3 / R3"]
capability_registry_register -->|supports| capability_feature_control_evaluate

View file

@ -17,7 +17,7 @@
<p class="legend">Generated from entry <code>relations</code> fields. Regenerate with <code>reuse-surface graph</code>.</p>
<pre class="mermaid" id="graph"></pre>
<script>
document.getElementById('graph').textContent = "graph LR\n capability_registry_register[\"capability.registry.register<br/>D3 / A4 / C2 / R3\"]\n capability_registry_validate[\"capability.registry.validate<br/>D4 / A3 / C3 / R3\"]\n capability_registry_register -->|supports| capability_feature_control_evaluate\n capability_registry_register -->|supports| capability_identity_vocabulary_canonicalize\n capability_registry_register -->|related_to| capability_registry_validate\n capability_registry_validate -->|depends_on| capability_registry_register\n capability_registry_validate -->|related_to| capability_registry_register\n";
document.getElementById('graph').textContent = "graph LR\n capability_infotech_headless_browser[\"capability.infotech.headless-browser<br/>D3 / A2 / C2 / R2\"]\n capability_registry_register[\"capability.registry.register<br/>D3 / A4 / C2 / R3\"]\n capability_registry_validate[\"capability.registry.validate<br/>D4 / A3 / C3 / R3\"]\n capability_registry_register -->|supports| capability_feature_control_evaluate\n capability_registry_register -->|supports| capability_identity_vocabulary_canonicalize\n capability_registry_register -->|related_to| capability_registry_validate\n capability_registry_validate -->|depends_on| capability_registry_register\n capability_registry_validate -->|related_to| capability_registry_register\n";
</script>
</body>
</html>

View file

@ -114,6 +114,17 @@ Definitions live in `specs/CapabilityMaturityStandard.md`.
## Search and filter guidance
For a headless browser trial, run `python3 -m reuse_surface.cli query --keyword browser`
from this repository root and read
[Headless Browser Automation](capabilities/capability.infotech.headless-browser.md).
It records implemented consumers, the scoped Playwright/Chromium recommendation,
and a practical trial procedure. Local federation reads this checkout's own index
directly, so `federation compose` includes unpublished local entries. Other sources
remain remote; the hosted hub still requires publication before it sees new entries.
For this trial use the keyword query: the deterministic `plan-check` includes the
browser entry but still returns `new` for the short intent `headless browser` due
to its token-overlap thresholds and maturity tie-breaking.
### UC-RS-004 — Search by planning need
1. Run `reuse-surface query --discovery-min D4` or read the index and scan
@ -223,4 +234,4 @@ R4+ requires broader consumer evidence (incidents, adoption, SLO) per
4. Update `availability.current_artifacts` when a new consumption mode appears.
5. Refresh the index `vector` and run `reuse-surface validate --relations`.
6. Run `reuse-surface federation compose` and `reuse-surface graph`.
6. Set `status: reviewed` or `approved` when an assessor validates the entry.
6. Set `status: reviewed` or `approved` when an assessor validates the entry.

View file

@ -0,0 +1,182 @@
---
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.
owner: reuse-surface
status: reviewed
domain: infotech
tags: [headless, browser, automation, playwright, chromium, testing, screenshots, extraction, firefox, webkit, selenium, puppeteer]
maturity:
discovery:
current: D3
target: D4
confidence: medium
rationale: >
Inspected four implemented Playwright consumers and separated optional
dependencies and plans from usage. No comprehensive alternatives benchmark.
availability:
current: A2
target: A2
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.
external_evidence:
completeness:
level: C2
confidence: medium
basis: scope_vs_intent_and_consumer_expectations
satisfied_expectations:
- Identifies implemented consumers, browser engines and source entry points.
- Gives a scoped default recommendation and a practical trial procedure.
broken_expectations:
- No shared package, standard configuration or consumer-independent trial receipt.
out_of_scope_expectations:
- Exhaustive estate dependency inventory or comparative browser benchmark.
- Managed browser service or mandatory estate-wide technology policy.
reliability:
level: R2
confidence: medium
basis: consumer_quality_signals
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.
evidence:
satisfied_signals:
- frontend-patterns navigation-history records a completed Chromium/Firefox experiment.
discovery:
intent: >
Help a worker select and reuse existing headless browser tooling instead of
independently introducing another automation stack.
includes:
- 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.
excludes:
- Browser hosting, 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.
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_artifacts:
- ../whynot-design/playwright.config.mjs
- ../whynot-design/tests/visual/ui-kit.spec.mjs
- ../coulomb-social/scripts/test-usecase-browser.mjs
- ../core-hub/scripts/check_console_visual.py
- ../frontend-patterns/research/experiments/navigation-history/experiment.mjs
consumption_modes: [informational, source adaptation, JavaScript library, Python library]
relations:
depends_on: []
supports: []
related_to: []
evidence:
documentation:
- https://playwright.dev/docs/browsers
- ../frontend-patterns/research/experiments/navigation-history/README.md
- ../test-driver/SCOPE.md
- ../testdrive-jsui/pyproject.toml
tests:
- ../whynot-design/tests/visual/ui-kit.spec.mjs
- ../coulomb-social/scripts/test-usecase-browser.mjs
- ../core-hub/scripts/check_console_visual.py
- ../frontend-patterns/research/experiments/navigation-history/result.json
consumer_feedback: []
consumer_guidance:
recommended_for:
- Use Playwright with headless Chromium for a new repo's general UI automation trial.
- 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.
not_recommended_for:
- Treating this recommendation as an approved mandatory estate standard.
- Selecting test-driver as an implemented JavaScript-capable browser engine.
- Introducing Selenium or Puppeteer merely because their names match a discovery query.
known_limitations:
- 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.
promotion_history: []
---
# Headless Browser Automation
## Recommendation
Start with **Playwright controlling headless Chromium** for general browser
automation, UI tests, screenshots and JavaScript-rendered page extraction.
This follows implemented usage in four working repos. Playwright is the automation
library; Chromium is the browser engine. Use `@playwright/test` for a JavaScript
test suite, the `playwright` library for standalone JavaScript scripts, or Python
`playwright` when the consumer is Python.
This is a reuse recommendation reviewed against source on **2026-10-13**, not a
mandatory estate standard or a benchmark verdict against Selenium/Puppeteer.
reuse-surface maintains this discovery record; the example repos maintain their
implementations and the upstream Playwright project maintains the library.
## Existing implementations
Paths in frontmatter are relative to the reuse-surface repository root. The links
below work with sibling checkouts. The cited files were clean at these revisions.
| Repo and inspected revision | What is implemented | Reuse starting point |
| --- | --- | --- |
| whynot-design — `a79a4d803e9aed13f66d072bf409b6f86000f01f` | Playwright Test, explicitly headless Chromium, screenshot comparisons | [Configuration](../../../whynot-design/playwright.config.mjs), [visual tests](../../../whynot-design/tests/visual/ui-kit.spec.mjs), [dependency/scripts](../../../whynot-design/package.json) |
| coulomb-social — `5c32757b987ab1610cdb46a808d56c75f569f581` | JavaScript Playwright scripts launching headless Chromium for browser tests and extraction | [Use-case test](../../../coulomb-social/scripts/test-usecase-browser.mjs), [script dependency](../../../coulomb-social/scripts/package.json) |
| core-hub — `a69ad325271485afe284a6db85673dfa30d9d4ad` | Python synchronous Playwright visual checks launching Chromium with the default headless mode | [Visual-check script](../../../core-hub/scripts/check_console_visual.py), [development dependency](../../../core-hub/pyproject.toml) |
| frontend-patterns — `047a6a2d314ff5a9d2a87d5bc987d7d84835f682` | Playwright experiments using Chromium and Firefox, with retained execution receipts | [Runner](../../../frontend-patterns/research/experiments/navigation-history/experiment.mjs), [setup and limitations](../../../frontend-patterns/research/experiments/navigation-history/README.md), [result](../../../frontend-patterns/research/experiments/navigation-history/result.json) |
These are source/retained-receipt observations, not newly executed test results.
The frontend-patterns example uses an explicit Chromium binary override; do not
copy its workstation paths as a portable browser installation recipe.
## Alternatives and misleading matches
- **Selenium:** [testdrive-jsui's optional development dependencies](../../../testdrive-jsui/pyproject.toml)
declare it at `701341d7fa520f860245e28eb16d44b767fd116b`. A declaration alone
does not establish an implemented or passing browser workflow.
- **test-driver:** [SCOPE.md](../../../test-driver/SCOPE.md) at
`c3ad06e598057862cf500cbd46c7c8b6f83885ed` explicitly excludes a browser engine,
JavaScript execution, screenshots and DOM timing. Historical Playwright plans
are not an available implementation.
- **Puppeteer:** no verified implementation was found in this inspection. This
is not a claim that every working repo has been exhaustively searched.
- **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
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.
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
Playwright version and install its matching Chromium binary. For an installed
Node dependency, use `npx playwright install chromium`; for an installed Python
dependency, use `python -m playwright install chromium` in its environment.
Follow the upstream [browser/system-dependency instructions](https://playwright.dev/docs/browsers)
if system libraries are missing. No common estate version is established here.
4. Against a local fixture or the target repo's local development server, launch
headless Chromium, load one page, assert one meaningful rendered element or
interaction, save a screenshot if relevant, and close the browser. Exercise
a JavaScript-driven change if JavaScript rendering is the reason for adoption.
5. Report the consumer repo, reference example, package/browser versions, exact
command, assertion outcome, artifact paths and any setup failure. The trial
remains unverified until this evidence exists; installation alone is not success.
The hosted service reads published repository indexes. A local edit does not
by itself make this entry available at `reuse.coulomb.social`; use the local query
above for an unpublished trial and verify the hosted entry after publication.

View file

@ -360,13 +360,12 @@ sources:
cache_ttl_seconds: 86400
auth_header: Authorization
- repo: reuse-surface
url: https://forgejo.coulomb.social/coulomb/reuse-surface/raw/main/registry/indexes/capabilities.yaml
# Include this checkout's entries in local plan-check before publication.
index: registry/indexes/capabilities.yaml
enabled: true
required: false
required: true
domain: helix_forge
description: Capability registry for helix_forge
cache_ttl_seconds: 86400
auth_header: Authorization
- repo: shard-wiki
url: https://forgejo.coulomb.social/coulomb/shard-wiki/raw/main/registry/indexes/capabilities.yaml
enabled: true

View file

@ -1,8 +1,22 @@
# Manually maintained capability index for humans and agents.
version: 1
updated: "2026-06-16"
updated: "2026-10-13"
domain: helix_forge
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.
vector: D3 / A2 / 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]
- id: capability.registry.register
name: Capability Registration
summary: Register a new capability so it becomes visible for planning and implementation reuse.
@ -23,4 +37,4 @@ capabilities:
owner: reuse-surface
path: registry/capabilities/capability.registry.validate.md
tags: [registry, validation, cli]
consumption_modes: [cli]
consumption_modes: [cli]

View file

@ -1,7 +1,7 @@
# Composed federated capability index. Regenerate with:
# reuse-surface federation compose
version: 1
updated: '2026-09-30'
updated: '2026-10-13'
domain: helix_forge
collision_policy: warn
sources:
@ -210,9 +210,8 @@ sources:
url: https://forgejo.coulomb.social/coulomb/repo-seed/raw/main/registry/indexes/capabilities.yaml
cache: registry/federation/cache/repo-seed.yaml
- repo: reuse-surface
count: 2
url: https://forgejo.coulomb.social/coulomb/reuse-surface/raw/main/registry/indexes/capabilities.yaml
cache: registry/federation/cache/reuse-surface.yaml
count: 3
index: registry/indexes/capabilities.yaml
- repo: shard-wiki
count: 8
url: https://forgejo.coulomb.social/coulomb/shard-wiki/raw/main/registry/indexes/capabilities.yaml
@ -942,6 +941,36 @@ capabilities:
source_repo: email-connect
source_url: https://forgejo.coulomb.social/coulomb/email-connect/raw/main/registry/indexes/capabilities.yaml
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.
vector: D3 / A2 / 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
source_repo: reuse-surface
source_index: registry/indexes/capabilities.yaml
- id: capability.infotech.hub-core-library
name: Reusable FOS Hub Core Primitives
summary: Reusable FastAPI, SQLAlchemy, and MCP primitives extracted from the State
@ -1285,8 +1314,7 @@ capabilities:
- cli
- service API
source_repo: reuse-surface
source_url: https://forgejo.coulomb.social/coulomb/reuse-surface/raw/main/registry/indexes/capabilities.yaml
source_index: registry/federation/cache/reuse-surface.yaml
source_index: registry/indexes/capabilities.yaml
- id: capability.registry.validate
name: Registry Entry Validation
summary: Validate capability registry entries against schema, index consistency,
@ -1303,8 +1331,7 @@ capabilities:
consumption_modes:
- cli
source_repo: reuse-surface
source_url: https://forgejo.coulomb.social/coulomb/reuse-surface/raw/main/registry/indexes/capabilities.yaml
source_index: registry/federation/cache/reuse-surface.yaml
source_index: registry/indexes/capabilities.yaml
- id: capability.security.iam-tooling-suite
name: NetKingdom Security/IAM Tooling Suite
summary: Canonical security architecture and executable reference tooling for IAM,

View file

@ -0,0 +1,54 @@
---
id: ADHOC-2026-10-13
type: workplan
title: "Register existing headless browser tooling for a worker trial"
domain: infotech
repo: reuse-surface
status: active
owner: codex
created: "2026-10-13"
updated: "2026-10-13"
state_hub_workstream_id: "052a02f6-25ae-54cd-a61e-49f9e5dc1120"
---
## Register browser automation and verify discovery
```task
id: ADHOC-2026-10-13-T01
status: done
priority: medium
state_hub_task_id: "e35c0122-9afe-5007-b1f8-278d628b94ba"
```
User requested the evidence and recommendation from the browser-tooling assessment
be included in reuse-surface for a subsequent worker trial. Add a capability entry
and index metadata, distinguish implemented examples from optional dependencies
and plans, give scoped Playwright/Chromium guidance, and validate discovery.
The consuming worker performs the browser trial separately.
Completed 2026-10-13:
- Added `capability.infotech.headless-browser` at D3/A2/C2/R2, with four
revision-pinned implementation examples, scoped guidance and trial steps.
- Added local index metadata and regenerated the catalog, graph and federation
(66 capabilities). Local federation now reads this checkout's own index;
hosted registration remains unchanged and needs publication of the new content.
- `query --keyword browser` and `query --keyword playwright` each return the
browser entry. All cited local evidence paths and Markdown links resolve.
- `validate --relations --fail-on-warnings` and graph checks pass. Existing
registry, federation, plan-check and hosted-plan-check suites: **76 passed**.
- Documented the existing matcher limitation: short-intent `plan-check` includes
this candidate but still returns `new`; use the explicit keyword query for the
worker trial. No matcher behavior or browser execution was changed or claimed.
## Publish and synchronize browser discovery
```task
id: ADHOC-2026-10-13-T02
status: progress
priority: medium
```
User explicitly authorized publication, sync and commit on 2026-10-13. Commit and
push the registry content, refresh the hosted federation, verify that the hosted
entry and published source document are accessible, and synchronize work records.