From 64e167433d584e549cacd38923d884876d3742a6 Mon Sep 17 00:00:00 2001 From: tegwick Date: Tue, 13 Oct 2026 13:56:33 +0200 Subject: [PATCH] Register headless browser reuse guidance and consumer examples Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a13502-3de4-7af3-a6ae-3ef26de4adec --- .custodian-brief.md | 5 +- WORK-RECORDS.md | 2 + docs/CapabilityCatalog.md | 19 +- docs/catalog/index.html | 9 +- docs/catalog/registry.json | 32 ++- docs/graph/capability-graph.mmd | 1 + docs/graph/index.html | 2 +- registry/README.md | 13 +- .../capability.infotech.headless-browser.md | 182 ++++++++++++++++++ registry/federation/sources.yaml | 7 +- registry/indexes/capabilities.yaml | 18 +- registry/indexes/federated.yaml | 43 ++++- workplans/ADHOC-2026-10-13.md | 54 ++++++ 13 files changed, 365 insertions(+), 22 deletions(-) create mode 100644 registry/capabilities/capability.infotech.headless-browser.md create mode 100644 workplans/ADHOC-2026-10-13.md diff --git a/.custodian-brief.md b/.custodian-brief.md index c8d175c..6a1b056 100644 --- a/.custodian-brief.md +++ b/.custodian-brief.md @@ -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) diff --git a/WORK-RECORDS.md b/WORK-RECORDS.md index 996ba96..bcccc6d 100644 --- a/WORK-RECORDS.md +++ b/WORK-RECORDS.md @@ -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 | diff --git a/docs/CapabilityCatalog.md b/docs/CapabilityCatalog.md index 2715743..0927d54 100644 --- a/docs/CapabilityCatalog.md +++ b/docs/CapabilityCatalog.md @@ -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. diff --git a/docs/catalog/index.html b/docs/catalog/index.html index a7fe460..1e87c05 100644 --- a/docs/catalog/index.html +++ b/docs/catalog/index.html @@ -15,7 +15,7 @@

Capability Catalog

-

Updated 2026-06-16 · 2 entries

+

Updated 2026-10-13 · 3 entries

helix_forge

Capability Registration

@@ -29,5 +29,12 @@

Validate capability registry entries against schema, index consistency, and relation integrity.

registry/capabilities/capability.registry.validate.md

+

infotech

+
+

Headless Browser Automation

+

capability.infotech.headless-browser · D3 / A2 / C2 / R2

+

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.

+

registry/capabilities/capability.infotech.headless-browser.md

+
diff --git a/docs/catalog/registry.json b/docs/catalog/registry.json index be4ab35..457e86d 100644 --- a/docs/catalog/registry.json +++ b/docs/catalog/registry.json @@ -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", diff --git a/docs/graph/capability-graph.mmd b/docs/graph/capability-graph.mmd index 1f2f92f..907f454 100644 --- a/docs/graph/capability-graph.mmd +++ b/docs/graph/capability-graph.mmd @@ -1,4 +1,5 @@ graph LR + capability_infotech_headless_browser["capability.infotech.headless-browser
D3 / A2 / C2 / R2"] capability_registry_register["capability.registry.register
D3 / A4 / C2 / R3"] capability_registry_validate["capability.registry.validate
D4 / A3 / C3 / R3"] capability_registry_register -->|supports| capability_feature_control_evaluate diff --git a/docs/graph/index.html b/docs/graph/index.html index 1b47bfd..fbf84b7 100644 --- a/docs/graph/index.html +++ b/docs/graph/index.html @@ -17,7 +17,7 @@

Generated from entry relations fields. Regenerate with reuse-surface graph.


   
 
 
diff --git a/registry/README.md b/registry/README.md
index 0e4dd4b..48b1976 100644
--- a/registry/README.md
+++ b/registry/README.md
@@ -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.
\ No newline at end of file
+6. Set `status: reviewed` or `approved` when an assessor validates the entry.
diff --git a/registry/capabilities/capability.infotech.headless-browser.md b/registry/capabilities/capability.infotech.headless-browser.md
new file mode 100644
index 0000000..4ae030a
--- /dev/null
+++ b/registry/capabilities/capability.infotech.headless-browser.md
@@ -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.
diff --git a/registry/federation/sources.yaml b/registry/federation/sources.yaml
index 045eace..457f4e6 100644
--- a/registry/federation/sources.yaml
+++ b/registry/federation/sources.yaml
@@ -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
diff --git a/registry/indexes/capabilities.yaml b/registry/indexes/capabilities.yaml
index 0cbda4e..e793299 100644
--- a/registry/indexes/capabilities.yaml
+++ b/registry/indexes/capabilities.yaml
@@ -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]
\ No newline at end of file
+    consumption_modes: [cli]
diff --git a/registry/indexes/federated.yaml b/registry/indexes/federated.yaml
index 8aa4b52..ffa4d49 100644
--- a/registry/indexes/federated.yaml
+++ b/registry/indexes/federated.yaml
@@ -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,
diff --git a/workplans/ADHOC-2026-10-13.md b/workplans/ADHOC-2026-10-13.md
new file mode 100644
index 0000000..3584e08
--- /dev/null
+++ b/workplans/ADHOC-2026-10-13.md
@@ -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.