diff --git a/.custodian-brief.md b/.custodian-brief.md new file mode 100644 index 0000000..56f1c78 --- /dev/null +++ b/.custodian-brief.md @@ -0,0 +1,22 @@ + +# Custodian Brief — reuse-surface + +**Domain:** infotech +**Last synced:** 2026-09-05 23:35 UTC +**State Hub:** http://127.0.0.1:8000 *(adjust if running on a remote machine)* + +## Active Workstreams + +### Follow the CommerceCanon repository rename in federation sources +Progress: 1/2 done | workplan_id: `0d1beafd-e638-5bb9-b91d-13543ac42a04` + +**Open tasks:** +- ! Repair archived workplan bindings reported during handoff registration `ceba0cd4` + +--- +## MCP Orientation (when available) + +If the state-hub MCP server is reachable, call: +`get_domain_summary("infotech")` +This provides richer cross-domain context. +If the MCP call fails, use this file as your orientation source. diff --git a/.generated-work-records.json b/.generated-work-records.json deleted file mode 100644 index 4946f68..0000000 --- a/.generated-work-records.json +++ /dev/null @@ -1 +0,0 @@ -{"version":1,"repo_slug":"reuse-surface"} diff --git a/.generated-work-records.mk b/.generated-work-records.mk deleted file mode 100644 index 8996bf4..0000000 --- a/.generated-work-records.mk +++ /dev/null @@ -1,8 +0,0 @@ -# Explicit opt-in recipe; no environment files or external make includes. -CUSTODIAN_SOURCE ?= /home/worsch/the-custodian -GENERATED_REPO_SLUG ?= reuse-surface -.PHONY: generated-work-records generated-work-records-check -generated-work-records: - python3 "$(CUSTODIAN_SOURCE)/scripts/generate_staged_work_records.py" --repo . --repo-slug "$(GENERATED_REPO_SLUG)" -generated-work-records-check: - python3 "$(CUSTODIAN_SOURCE)/scripts/generate_staged_work_records.py" --repo . --repo-slug "$(GENERATED_REPO_SLUG)" --check diff --git a/.gitignore b/.gitignore index c701604..65b4862 100644 --- a/.gitignore +++ b/.gitignore @@ -182,6 +182,3 @@ cython_debug/ # PyPI configuration file .pypirc - -# Local State Hub orientation snapshot; authored work records remain tracked. -/.custodian-brief.md diff --git a/SCOPE.md b/SCOPE.md index 6c50b4b..f7b6f73 100644 --- a/SCOPE.md +++ b/SCOPE.md @@ -313,22 +313,4 @@ reuse-surface/ - Graph explorer: docs/graph/index.html - CLI reference: tools/README.md - Agent instructions: AGENTS.md -- Workplans: workplans/ - -## Generated work-record index - -This repository opts into staged-source WORK-RECORDS.md generation through -`.generated-work-records.json` and the isolated `.generated-work-records.mk` -recipe. `make generated-work-records` reuses the State Hub renderer through -the Custodian adapter; `make generated-work-records-check` verifies byte-exact -agreement with staged Markdown. The pre-commit hook uses the isolated recipe, -preserves unstaged index edits by refusing them, and retains the generated-only -commit guard. It does not contact the hub, alter workplan statuses, or grant -deployment authority. This consumes shared tooling; it does not make this -repository the provider of the generator capability. - -## Local orientation brief policy — 2026-10-21 - -`.custodian-brief.md` is a local, ignored State Hub orientation snapshot. Refreshing -it does not require a Git commit. Authored workplans and the generated -WORK-RECORDS index keep their existing source and staged-generation contracts. +- Workplans: workplans/ \ No newline at end of file diff --git a/WORK-RECORDS.md b/WORK-RECORDS.md index 523619f..4729120 100644 --- a/WORK-RECORDS.md +++ b/WORK-RECORDS.md @@ -8,22 +8,77 @@ | Kind | ID | Status | Lane | Source | | --- | --- | --- | --- | --- | -| workplan | ADHOC-2026-10-13 | finished | — | workplans/ADHOC-2026-10-13.md | -| workplan | REUSE-WP-ADHOC-2026-10-16 | finished | — | workplans/ADHOC-2026-10-16.md | -| workplan | REUSE-WP-0023 | finished | — | workplans/REUSE-WP-0023-access-engine-source-rename.md | -| workplan | REUSE-WP-0024 | finished | — | workplans/REUSE-WP-0024-browser-discovery-and-provider-evidence.md | -| workplan | REUSE-WP-0025 | blocked | — | workplans/REUSE-WP-0025-private-source-reader-boundary.md | -| workplan | REUSE-WP-0026 | finished | — | workplans/REUSE-WP-0026-wave2-resource-right-sizing.md | -| task | ADHOC-2026-10-13-T01 | done | — | workplans/ADHOC-2026-10-13.md | -| task | ADHOC-2026-10-13-T02 | done | — | workplans/ADHOC-2026-10-13.md | -| task | REUSE-WP-ADHOC-2026-10-16-T01 | done | — | workplans/ADHOC-2026-10-16.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 | -| task | REUSE-WP-0024-T01 | done | — | workplans/REUSE-WP-0024-browser-discovery-and-provider-evidence.md | -| task | REUSE-WP-0024-T02 | done | — | workplans/REUSE-WP-0024-browser-discovery-and-provider-evidence.md | -| task | REUSE-WP-0024-T03 | done | — | workplans/REUSE-WP-0024-browser-discovery-and-provider-evidence.md | -| task | REUSE-WP-0025-T01 | done | — | workplans/REUSE-WP-0025-private-source-reader-boundary.md | -| task | REUSE-WP-0025-T02 | done | — | workplans/REUSE-WP-0025-private-source-reader-boundary.md | -| task | REUSE-WP-0025-T03 | wait | — | workplans/REUSE-WP-0025-private-source-reader-boundary.md | -| task | REUSE-WP-0026-T01 | done | — | workplans/REUSE-WP-0026-wave2-resource-right-sizing.md | -| intake | REUSE-IN-0001 | closed | green | intakes/REUSE-IN-0001-headless-browser-runnable-answer.md | +| workplan | REUSE-WP-0001 | finished | — | workplans/REUSE-WP-0001-statehub-bootstrap.md | +| workplan | REUSE-WP-0002 | finished | — | workplans/REUSE-WP-0002-mvp-registry-foundation.md | +| workplan | REUSE-WP-0003 | finished | — | workplans/REUSE-WP-0003-intent-scope-gap-closure.md | +| workplan | REUSE-WP-0004 | finished | — | workplans/REUSE-WP-0004-registry-hardening.md | +| workplan | REUSE-WP-0005 | finished | — | workplans/REUSE-WP-0005-registry-federation.md | +| workplan | REUSE-WP-0006 | finished | — | workplans/REUSE-WP-0006-registry-hygiene-and-coverage.md | +| workplan | REUSE-WP-0007 | finished | — | workplans/REUSE-WP-0007-interactive-catalog.md | +| workplan | REUSE-WP-0008 | finished | — | workplans/REUSE-WP-0008-graph-explorer.md | +| workplan | REUSE-WP-0009 | finished | — | workplans/REUSE-WP-0009-cli-hardening.md | +| workplan | REUSE-WP-0010 | finished | — | workplans/REUSE-WP-0010-network-federation.md | +| workplan | REUSE-WP-0016 | finished | — | workplans/REUSE-WP-0016-interactive-registry-maintain.md | +| workplan | REUSE-WP-0020 | finished | — | workplans/REUSE-WP-0020-coulombcore-retirement-cutover.md | +| workplan | REUSE-WP-0021 | active | — | workplans/REUSE-WP-0021-commerce-canon-source-rename.md | +| task | REUSE-WP-0001-T01 | done | — | workplans/REUSE-WP-0001-statehub-bootstrap.md | +| task | REUSE-WP-0001-T02 | done | — | workplans/REUSE-WP-0001-statehub-bootstrap.md | +| task | REUSE-WP-0001-T03 | done | — | workplans/REUSE-WP-0001-statehub-bootstrap.md | +| task | REUSE-WP-0002-T01 | done | — | workplans/REUSE-WP-0002-mvp-registry-foundation.md | +| task | REUSE-WP-0002-T02 | done | — | workplans/REUSE-WP-0002-mvp-registry-foundation.md | +| task | REUSE-WP-0002-T03 | done | — | workplans/REUSE-WP-0002-mvp-registry-foundation.md | +| task | REUSE-WP-0002-T04 | done | — | workplans/REUSE-WP-0002-mvp-registry-foundation.md | +| task | REUSE-WP-0002-T05 | done | — | workplans/REUSE-WP-0002-mvp-registry-foundation.md | +| task | REUSE-WP-0002-T06 | done | — | workplans/REUSE-WP-0002-mvp-registry-foundation.md | +| task | REUSE-WP-0003-T01 | done | — | workplans/REUSE-WP-0003-intent-scope-gap-closure.md | +| task | REUSE-WP-0003-T02 | done | — | workplans/REUSE-WP-0003-intent-scope-gap-closure.md | +| task | REUSE-WP-0003-T03 | done | — | workplans/REUSE-WP-0003-intent-scope-gap-closure.md | +| task | REUSE-WP-0003-T04 | done | — | workplans/REUSE-WP-0003-intent-scope-gap-closure.md | +| task | REUSE-WP-0003-T05 | done | — | workplans/REUSE-WP-0003-intent-scope-gap-closure.md | +| task | REUSE-WP-0003-T06 | done | — | workplans/REUSE-WP-0003-intent-scope-gap-closure.md | +| task | REUSE-WP-0003-T07 | done | — | workplans/REUSE-WP-0003-intent-scope-gap-closure.md | +| task | REUSE-WP-0003-T08 | done | — | workplans/REUSE-WP-0003-intent-scope-gap-closure.md | +| task | REUSE-WP-0004-T01 | done | — | workplans/REUSE-WP-0004-registry-hardening.md | +| task | REUSE-WP-0004-T02 | done | — | workplans/REUSE-WP-0004-registry-hardening.md | +| task | REUSE-WP-0004-T03 | done | — | workplans/REUSE-WP-0004-registry-hardening.md | +| task | REUSE-WP-0004-T04 | done | — | workplans/REUSE-WP-0004-registry-hardening.md | +| task | REUSE-WP-0005-T01 | done | — | workplans/REUSE-WP-0005-registry-federation.md | +| task | REUSE-WP-0005-T02 | done | — | workplans/REUSE-WP-0005-registry-federation.md | +| task | REUSE-WP-0005-T03 | done | — | workplans/REUSE-WP-0005-registry-federation.md | +| task | REUSE-WP-0005-T04 | done | — | workplans/REUSE-WP-0005-registry-federation.md | +| task | REUSE-WP-0005-T05 | done | — | workplans/REUSE-WP-0005-registry-federation.md | +| task | REUSE-WP-0006-T01 | done | — | workplans/REUSE-WP-0006-registry-hygiene-and-coverage.md | +| task | REUSE-WP-0006-T02 | done | — | workplans/REUSE-WP-0006-registry-hygiene-and-coverage.md | +| task | REUSE-WP-0006-T03 | done | — | workplans/REUSE-WP-0006-registry-hygiene-and-coverage.md | +| task | REUSE-WP-0006-T04 | done | — | workplans/REUSE-WP-0006-registry-hygiene-and-coverage.md | +| task | REUSE-WP-0007-T01 | done | — | workplans/REUSE-WP-0007-interactive-catalog.md | +| task | REUSE-WP-0007-T02 | done | — | workplans/REUSE-WP-0007-interactive-catalog.md | +| task | REUSE-WP-0007-T03 | done | — | workplans/REUSE-WP-0007-interactive-catalog.md | +| task | REUSE-WP-0008-T01 | done | — | workplans/REUSE-WP-0008-graph-explorer.md | +| task | REUSE-WP-0008-T02 | done | — | workplans/REUSE-WP-0008-graph-explorer.md | +| task | REUSE-WP-0009-T01 | done | — | workplans/REUSE-WP-0009-cli-hardening.md | +| task | REUSE-WP-0009-T02 | done | — | workplans/REUSE-WP-0009-cli-hardening.md | +| task | REUSE-WP-0009-T03 | done | — | workplans/REUSE-WP-0009-cli-hardening.md | +| task | REUSE-WP-0010-T01 | done | — | workplans/REUSE-WP-0010-network-federation.md | +| task | REUSE-WP-0010-T02 | done | — | workplans/REUSE-WP-0010-network-federation.md | +| task | REUSE-WP-0010-T03 | done | — | workplans/REUSE-WP-0010-network-federation.md | +| task | REUSE-WP-0016-T01 | done | — | workplans/REUSE-WP-0016-interactive-registry-maintain.md | +| task | REUSE-WP-0016-T02 | done | — | workplans/REUSE-WP-0016-interactive-registry-maintain.md | +| task | REUSE-WP-0016-T03 | done | — | workplans/REUSE-WP-0016-interactive-registry-maintain.md | +| task | REUSE-WP-0016-T04 | done | — | workplans/REUSE-WP-0016-interactive-registry-maintain.md | +| task | REUSE-WP-0016-T05 | done | — | workplans/REUSE-WP-0016-interactive-registry-maintain.md | +| task | REUSE-WP-0016-T06 | done | — | workplans/REUSE-WP-0016-interactive-registry-maintain.md | +| task | REUSE-WP-0016-T07 | done | — | workplans/REUSE-WP-0016-interactive-registry-maintain.md | +| task | REUSE-WP-0016-T08 | done | — | workplans/REUSE-WP-0016-interactive-registry-maintain.md | +| task | REUSE-WP-0016-T09 | done | — | workplans/REUSE-WP-0016-interactive-registry-maintain.md | +| task | REUSE-WP-0020-T01 | done | — | workplans/REUSE-WP-0020-coulombcore-retirement-cutover.md | +| task | REUSE-WP-0020-T02 | done | — | workplans/REUSE-WP-0020-coulombcore-retirement-cutover.md | +| task | REUSE-WP-0020-T03 | done | — | workplans/REUSE-WP-0020-coulombcore-retirement-cutover.md | +| task | REUSE-WP-0020-T04 | done | — | workplans/REUSE-WP-0020-coulombcore-retirement-cutover.md | +| task | REUSE-WP-0020-T05 | done | — | workplans/REUSE-WP-0020-coulombcore-retirement-cutover.md | +| task | REUSE-WP-0020-T06 | done | — | workplans/REUSE-WP-0020-coulombcore-retirement-cutover.md | +| task | REUSE-WP-0020-T07 | done | — | workplans/REUSE-WP-0020-coulombcore-retirement-cutover.md | +| task | REUSE-WP-0020-T08 | done | — | workplans/REUSE-WP-0020-coulombcore-retirement-cutover.md | +| task | REUSE-WP-0020-T09 | done | — | workplans/REUSE-WP-0020-coulombcore-retirement-cutover.md | +| task | REUSE-WP-0021-T01 | done | — | workplans/REUSE-WP-0021-commerce-canon-source-rename.md | +| task | REUSE-WP-0021-T02 | wait | — | workplans/REUSE-WP-0021-commerce-canon-source-rename.md | diff --git a/docs/CapabilityCatalog.md b/docs/CapabilityCatalog.md index fbc72ee..2715743 100644 --- a/docs/CapabilityCatalog.md +++ b/docs/CapabilityCatalog.md @@ -1,8 +1,8 @@ # Capability Catalog **Domain:** helix_forge -**Updated:** 2026-10-13 -**Entries:** 3 +**Updated:** 2026-06-16 +**Entries:** 2 Generated by `reuse-surface catalog`. Do not edit manually. @@ -30,20 +30,3 @@ 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 / A5 / C2 / R2 -- **Owner:** reuse-surface -- **Path:** `registry/capabilities/capability.infotech.headless-browser.md` -- **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. - -**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. -- 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. diff --git a/docs/NetKingdomSecurityDiscovery.md b/docs/NetKingdomSecurityDiscovery.md deleted file mode 100644 index 5fe1446..0000000 --- a/docs/NetKingdomSecurityDiscovery.md +++ /dev/null @@ -1,27 +0,0 @@ -# NetKingdom security capability discovery - -The workstation federation includes 70 reviewed security and supporting capabilities from 60 sibling repositories. Two additional inspected repositories are nonproviders: rapp-secrets-engine is retired and rapp-forgejo is a placeholder without a package declaration. The owner capability entries are the reusable source; the architecture assessment is in the-custodian CUST-WP-0081. - -## Local discovery - -From a reuse-surface checkout beside those repositories: - -```sh -reuse-surface federation compose -reuse-surface plan-check --intent "bound approval consumption before credential delivery" --no-llm -reuse-surface plan-check --intent "deterministic posture feedback evidence expiry" --no-llm -``` - -The source manifest uses relative sibling paths for the reviewed cohort and requires their indexes to exist. Other federation sources are preserved. A missing sibling is a composition error rather than silent loss of a reviewed capability. The composed local index supports planning; it is not a runtime readiness or authorization grant. `reuse-surface query` searches this repository's own index, while `plan-check` uses the composed federation. - -## Hosted discovery - -```sh -reuse-surface plan-check --hub-url https://reuse.coulomb.social --intent "bound approval consumption" --no-llm -``` - -As checked on 2026-10-14, all 60 source registry commits are published, while the hosted hub contains 32 of the 70 reviewed capabilities. Thirty-eight new owner registrations remain pending scoped write access: the normal Warden lane was allowed by the PDP but OpenBao refused the current caller with HTTP 403. Seven of those indexes also require admitted private-source read access; anonymous retrieval returns 404. Do not change repository visibility or reuse another workload's credential to make discovery pass. - -The seven private sources are rapp-openbao, rapp-policy-nexus, rapp-postgres, rapp-telemetry, rapp-tenant-engine, rapp-user-engine and rapp-sbom-nexus. Hosted registration supports an `auth_env` reference to a credential already configured at the hub. Source-owner approval, scoped read provisioning and a successful native fetch must precede their registration. Thirty-one public-source registrations are otherwise ready. - -The exact registration plan, source commits, raw retrieval results and local/hosted verification receipts are retained in the-custodian at `docs/assessments/netkingdom-2026-10-14/`. Existing IDs were preserved where valid; the copied Secrets Engine repository-template entry was removed. Registry C/R values retained from older entries remain owner assessments, not renewed evidence. diff --git a/docs/assessments/cust81-private-reader/candidate-owner-review-r1.json b/docs/assessments/cust81-private-reader/candidate-owner-review-r1.json deleted file mode 100644 index 54d305f..0000000 --- a/docs/assessments/cust81-private-reader/candidate-owner-review-r1.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "id": "REUSE-WP-0025-CONSUMER-CANDIDATE-REVIEW-R1", - "reviewed_at": "2026-10-14T23:08:33.016513+00:00", - "review_scope": "Consumer code, receipt-only verification helper, exact metadata URL configuration and local image preparation integration only; not credential provisioning, production rollout, registry admission or runtime approval.", - "owner_review": { - "reviewer": "reuse-surface-owner (agent reuse-surface, codex)", - "decision": "approved", - "comment": "REUSE-WP-0025-T02. INTENT.md Registry First, Consumer Experience Matters, and Internal and External Evidence Must Stay Separate: the reviewed native patch makes source credentials usable only for operator-approved exact HTTPS URLs, before any caller-selected credential lookup; redirects are refused. The helper verifies native acquisition of the consented seven indexes and seven entries by exact hashes/schema without stale-cache fallback and returns bounded receipts. Exact candidate source/helper/config/test and preparation patch digests are bound below. 227 tests pass in explicit fixture environment and source hashes match the locally smoke-verified image. This approves consumer preparation integration only; baseline proposal unchanged-image reader delivery remains changes_requested. No credential execution, founder approval or production success is inferred." - }, - "workplan_id": "REUSE-WP-0025", - "task_id": "REUSE-WP-0025-T02", - "intent_sha256": "511d1029a7aefc67b68a6363ed3ce8f803f2516c00062ff805263dffe26c771b", - "candidate_artifacts": { - "reuse_surface/federation.py": "dbaa40f25cc0f090143578cd1c7068cb2cb00960fafd17d5239bf8a5bac514dd", - "reuse_surface/private_source_verify.py": "c67a284091cc4dd62dca56658a14b8ea1357e2b3df1518120da4c51e0ee8d85c", - "tests/test_private_source_verify.py": "5f0c0b30b98b4db96d695bdda952b25707916e297d566744fadb6dde7bea18b2", - "docs/assessments/cust81-private-reader/runtime-auth-source-allowlist-r1.json": "e1948c537e206b30fc72b9e4732a3f600d92e131813e6f7ecfd4bfbb18c27286", - "docs/assessments/cust81-private-reader/suite-environment-validation.json": "84f9c410f09e0dd5c0c90987744bc9f6e85292d2e28e4db88859ee0b24e68bd2", - "docs/assessments/cust81-private-reader/reuse-owner-preparation-r1.patch": "da9634481ce80658dfce815d3539ba023234938dc76163dfd93d7677be95ed51" - }, - "local_image": { - "manifest_digest": "sha256:2364b7e7859daccf9340a063654e2b09eed1bc27e0adf7b23cbb4b30135a7db0", - "receipt_path": "/home/worsch/the-custodian/docs/assessments/netkingdom-2026-10-14/hardened-reader-local-image-r1.json", - "receipt_sha256": "ed7c2516925d7f16b573a70b5e48d5656a4875e9eb94bcc8760a8bdcbe07f59c", - "published": false, - "deployed": false, - "credentials_provisioned": false - }, - "existing_auth_source_inventory": { - "receipt_path": "/home/worsch/the-custodian/docs/assessments/netkingdom-2026-10-14/live-authenticated-source-inventory-r1.json", - "receipt_sha256": "ba669d6231c8c611191c7ad28f5914d6c47332032b23b0ea40a13f753e883073", - "checked_at": "2026-10-14T23:01:13.254261+00:00", - "authenticated_source_count": 0, - "must_recheck_before_rollout": true - }, - "preserved_baseline_review": { - "path": "docs/assessments/cust81-private-reader/owner-review-r1.md", - "decision": "changes_requested", - "scope": "Original R1 same-image credential delivery proposal; preserved, not rewritten." - }, - "remaining_execution_gates": [ - "Platform/Forgejo/apps/mason owner reviews of exact current CCR and implementation.", - "Exact founder credential and live rollout decision remains separate.", - "Publish and independently verify registry image digest before rendering actual release values.", - "Recheck metadata-only authenticated source inventory and materialized exact14 reader allowlist before approved rollout.", - "Run receipt helper in actual hub environment with native authenticated fresh acquisition, then exact70 hosted audit." - ], - "does_not_approve": [ - "Credential provision or access grant", - "Live production mutation or rollout", - "Other owner roles", - "Registration/admission status change", - "Entire objective completion" - ] -} diff --git a/docs/assessments/cust81-private-reader/ccr0046-consumer-owner-review-r2.json b/docs/assessments/cust81-private-reader/ccr0046-consumer-owner-review-r2.json deleted file mode 100644 index 6c82bac..0000000 --- a/docs/assessments/cust81-private-reader/ccr0046-consumer-owner-review-r2.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "id": "REUSE-WP-0025-CCR0046-CONSUMER-REVIEW-R2", - "reviewed_at": "2026-10-14T23:19:37.233425+00:00", - "workplan_id": "REUSE-WP-0025", - "task_id": "REUSE-WP-0025-T01", - "ccr_id": "CCR-2026-0046", - "revision": 2, - "review": { - "reviewer": "reuse-surface-owner (agent reuse-surface, codex)", - "decision": "approved", - "comment": "REUSE-WP-0025-T01; INTENT.md Registry First, Consumer Experience Matters and Internal and External Evidence Must Stay Separate. Reviewed exact CCR-2026-0046 revision2, provisioner, exact-token recovery, bootstrap contract and ESO policy SHA256 listed below solely for consumer delivery boundary. The exact seven consented sources/commits/hash rows match original pinned disclosure preparation. Separate reader KV and env protect scoped writer callers; contract prohibits delivery to baseline/current image and requires full reviewed HTTPS/redirect/credential-before-use allowlist enforcement plus exact fourteen metadata URLs. Final actual hub helper must prove native index AND entry hashes without stale cache; 70-ID hosted audit remains independent. Recovery confines revocation to separately approved exact dedicated PAT, preserves shared runtime KV/Secret/public sources, and does not remint after ambiguity. Full native code/helper/config preparation integration review is separately approved and pinned below. This owner judgement approves preparation integration of this consumer boundary, not human credential/rollout go, provisioner execution, status/admission changes, other owners or deployment success." - }, - "artifacts": { - "credential-change-requests/CCR-2026-0046-reuse-surface-forgejo-source-read.yaml": "90522912fb78fed72e625382fb7114a0e9aafe76d59e36bffecab83c5bb7d643", - "scripts/provision-reuse-surface-forgejo-source.py": "abf60a754596baa1610d23b1fd367385b0222ac8aeaebba0f2cfb7ec4c62055b", - "scripts/revoke-reuse-surface-forgejo-source.py": "f78d1b26fbff93c6cc481a896d9fb9b9ce93049b8b3267fa41a64bc57dadb162", - "docs/proposals/2026-10-15-reuse-private-reader/bootstrap-contract.json": "2bb72671e0a5f230497ab8ef2967a20ee68d1f2cf081f07c84f6db3442e18d8b", - "openbao/policies/workload-kv-read-reuse-surface-runtime-eso.hcl": "6320f6c2d262d924ea16291d301d5f9eeb7efdb6ce7ea141c1a41d277d86b01b" - }, - "consumer_preparation_review": { - "path": "docs/assessments/cust81-private-reader/candidate-owner-review-r1.json", - "sha256": "853cb3b721d83ba5aeb0847111cc47f8094b733f870059cca9834b2c1a5a6219", - "decision": "approved" - }, - "preserved_baseline": "Original same-image reader delivery review remains changes_requested; this R2 consumer boundary resolves that design defect without altering earlier evidence.", - "execution_authorized": false, - "required_before_execution": [ - "Human exact credential and separately scoped rollout decisions, with all required independent owner reviews.", - "Published independently verified image digest and reviewed release config for the full security patch.", - "Recheck metadata-only live authenticated-source inventory (last snapshot0) and validate exact14 runtime reader URLs.", - "Post-rollout native authenticated helper receipt plus separate registration and exact70 hosted completion audit." - ], - "not_proven": [ - "Real Forgejo reader scope", - "Live OpenBao/ESO materialization", - "Production image/config rollout", - "Actual authenticated metadata fetch", - "Hosted private capability admission" - ] -} diff --git a/docs/assessments/cust81-private-reader/local-consented-metadata-validation.json b/docs/assessments/cust81-private-reader/local-consented-metadata-validation.json deleted file mode 100644 index cd4af82..0000000 --- a/docs/assessments/cust81-private-reader/local-consented-metadata-validation.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "id": "CUST81-PRIVATE-NATIVE-FETCH-RECEIPT-R1", - "checked_at": "2026-10-14T22:43:42.958330+00:00", - "proposal_sha256": "7819eb51d249f5c7aff4df9fb520afcfb76603b05a4104439499102b6c20af99", - "disclosure_sha256": "46ac4fe49a08054cc215aade2fbaf3b36ee334520997857ed84f530b52da9d35", - "consent_sha256": "4a4602ad926e3af855d6ddba4731430d33e4a7432c507ba0a5193b9f43056b52", - "cache_used": false, - "all_verified": true, - "sources": [ - { - "repo": "rapp-openbao", - "commit": "35672be138036c8433a5ac5de91e068c03c2b124", - "index_sha256": "044efa3d02b90e1872f2516c581159d388a8080a689f76fcd78bb4d048d6ee64", - "verified": true, - "entry_sha256": [ - "9de890da536c34ac2b50576e2c4a9c03792c8a07545d2a0566ace68ac10a293e" - ] - }, - { - "repo": "rapp-policy-nexus", - "commit": "088b78ac03b0cebeec34a69aae3569eb7ec2f9c3", - "index_sha256": "e68bdedf61eee9ca2026f46a2434ce384c26234616e74f7a5d08a06c75b3bb00", - "verified": true, - "entry_sha256": [ - "21415ed5e89dcf8bd2df0c8bc99b07d2c87173809c37fa2582de6d336918a126" - ] - }, - { - "repo": "rapp-postgres", - "commit": "a9f569c96d74aa384ac8d3ac4aa960e4061550b5", - "index_sha256": "d939333eed9d85172e006f526c445fbe2602a721d53f7c0d14bc68286ae08776", - "verified": true, - "entry_sha256": [ - "64503872abb24bb28f291264e860ab094c6abb721fbfe90b47258ad13b77af44" - ] - }, - { - "repo": "rapp-sbom-nexus", - "commit": "adbedd349e8df97be43a1f57db7095af45ff29d1", - "index_sha256": "d2ee0f193d2198bf8f16ce64c90ae7664e59a2bc307ad711426af3fd47deb057", - "verified": true, - "entry_sha256": [ - "1a15e37bd3d19c4c89ef25803667937f549ade1cd27bedfa85132ac48ffe3f48" - ] - }, - { - "repo": "rapp-telemetry", - "commit": "f158307e24b86bab88a1af4830ff6b4f85afdeb5", - "index_sha256": "ee8801f143ed5cf064205710a61c2bb24efc6ea8585d5786d6b679426ec4c1d4", - "verified": true, - "entry_sha256": [ - "a67dbf6905223c04b1c003d5f967841038743c8c1479812f5cf0bb55ad6cee77" - ] - }, - { - "repo": "rapp-tenant-engine", - "commit": "9bdc86572728783a5ed94266f04f7b12d414c557", - "index_sha256": "d8e9c1282350b5d2fd4f4d69712aa7a5fbcd2367bb1a7fad1b6eb16a97e5d732", - "verified": true, - "entry_sha256": [ - "e7cf0485cfdb6f497281638d81f908b5c2fe1053125c6ef28130504909d1d49e" - ] - }, - { - "repo": "rapp-user-engine", - "commit": "f35108f9e1b8702fb6c526fe42b2fec5ca032738", - "index_sha256": "95b4ed2d0b189f6847b1c0899f740d1da46933a8f40491e1a02f2d4e57c819fc", - "verified": true, - "entry_sha256": [ - "84ec4fdce99134c88c110104cac93bdea36cffb5ba34e046b9ad161fb860dce2" - ] - } - ], - "transport": "fake-only local committed metadata; no authenticated network fetch or runtime evidence" -} diff --git a/docs/assessments/cust81-private-reader/owner-review-r1.md b/docs/assessments/cust81-private-reader/owner-review-r1.md deleted file mode 100644 index d83f087..0000000 --- a/docs/assessments/cust81-private-reader/owner-review-r1.md +++ /dev/null @@ -1,102 +0,0 @@ -# Reuse-surface independent consumer preparation review - -Disposition: **changes_requested** for reader provisioning proposal -`CUST81-PRIVATE-READER-PROVISIONING-PREPARATION-R1`, SHA256 -`7819eb51d249f5c7aff4df9fb520afcfb76603b05a4104439499102b6c20af99`. -Reviewer: delegated reuse-surface owner preparation worker, supervised local scope. -This review does not authorize credentials, approve another owner's implementation, -claim deployment success, or grant permanent repo authority. - -INTENT requires inspectable registry membership and evidence-driven consumer -reliability. Acquisition must protect source custody while making the explicitly -consented metadata discoverable. The proposal's seven-repository reader, separate -KV path and exact commit pins fit that purpose, but its unchanged-image rollout -assumption fails consumer credential isolation. - -## Findings and prepared correction - -1. Native `fetch_remote_index_text` originally supplies Authorization to urllib's - default opener. Redirect handling copies headers to the redirect target. A - source redirect can disclose the PAT to another origin or unreviewed path. - Prepared patch rejects **all authenticated redirects**, even same-origin ones. - Anonymous federation keeps its previous behavior. -2. Hub registration accepts caller-selected `auth_env`, `auth_header` and `url`. - Composition passes these to `_auth_headers`, which reads the named runtime env - and sends its value to that URL. A holder of the writer token can therefore - induce credential exfiltration without a redirect. Prepared patch validates - operator-owned `REUSE_SURFACE_AUTH_SOURCE_ALLOWLIST` JSON before looking up the - credential. Exact allowed env name and URL are mandatory; missing/malformed - configuration fails closed. Authenticated HTTP is rejected. -3. `resolve_source_index_path(refresh=True)` may return stale cache after remote - failure. A fresh composition timestamp alone cannot prove private acquisition. - Prepared helper calls native fetch directly, never the resolver/cache path, - and verifies exact consented index **and Markdown entry** SHA256 plus capability - identity, owner and entry schema. Failed receipts contain bounded categories, - never raw exception text, bodies, headers, or secrets. - -## Exact prepared artifacts - -- `reuse_surface/federation.py` SHA256 - `dbaa40f25cc0f090143578cd1c7068cb2cb00960fafd17d5239bf8a5bac514dd` -- `reuse_surface/private_source_verify.py` SHA256 - `c67a284091cc4dd62dca56658a14b8ea1357e2b3df1518120da4c51e0ee8d85c` -- `tests/test_private_source_verify.py` SHA256 - `5f0c0b30b98b4db96d695bdda952b25707916e297d566744fadb6dde7bea18b2` -- `runtime-auth-source-allowlist-r1.json` SHA256 - `e1948c537e206b30fc72b9e4732a3f600d92e131813e6f7ecfd4bfbb18c27286` - is the exact fourteen commit-pinned index/entry URLs for reader env - `REUSE_SURFACE_FORGEJO_SOURCE_READ_TOKEN`. Serialize this object as the runtime - value of `REUSE_SURFACE_AUTH_SOURCE_ALLOWLIST`; do not use host wildcards. - -## Validation and limits - -Focused fake transport tests cover native Bearer header handling, all fourteen -fetches, no cache path, mismatched index/entry hashes, tampered consent packet, -missing authentication, sanitized errors, same/cross-origin redirects without -second requests, HTTP rejection, missing/malformed/unapproved allowlists, and -broadened reader URL scope. Focused tests: **30 passed**. Whole test suite initially -reported **226 passed, 1 failed**: existing `test_federation_compose` resolved a -required sibling index to missing `/tmp/access-engine/registry/indexes/capabilities.yaml`. -The first sibling fixture preparation also stopped at maturity-engine's untracked -registry index, and that partial fixture run reported **226 passed, 1 failed**. -Both outcomes remain in `suite-environment-validation.json`; no consumer test -failure or failed preparation is hidden. - -With the complete task-owned fixture environment, the unchanged source patch -passes the **entire suite: 227 passed, 1 existing dependency warning**. Command: -`/home/worsch/reuse-surface/.venv/bin/python -m pytest -q tests`, cwd -`/tmp/cust81-reuse-suite-fixtures-r1/reuse-surface`. That fixture contains sixty -required local registry indexes and thirty-nine seeded anonymous caches to avoid -live network dependencies. Fifty-nine local indexes are copied from committed -HEAD; maturity-engine's existing untracked index is copied read-only and labeled -as a test fixture, never publication evidence. Member indexes are only read; -composition writes its own copied registry/cache. No foreign checkout is written. -Tests rewrite generated catalog/graph files in their own fixture checkout; earlier -generated changes in the integration checkout were restored to its HEAD. - -`local-consented-metadata-validation.json` proves schema and exact hashes for all -seven repositories' consented committed metadata using a fake transport and a -fixture-only token. It is explicitly **not** a network, credential, rollout or -live federation verification receipt. - -Static `registry/federation/sources.yaml` contains no `auth_env`, but public hub -registration responses intentionally omit it and do not prove live SQLite dynamic -source inventory. This patch changes authenticated-source behavior: every existing -authenticated lane needs a reviewed exact-URL allowlist entry. Before rollout, -platform/apps must safely inventory only auth env names and registered URLs, -preserve approved existing lanes in runtime config, and prove no unrelated runtime -secret name can be routed. No raw env dump or Secret read is required for that -inventory. Until this migration and the reviewed new consumer image are complete, -do not deliver the new PAT to the existing hub image. - -After separate exact credential/rollout approval, invoke the helper from inside -the hub process environment with the pinned proposal/disclosure/consent files: - -```sh -python -m reuse_surface.private_source_verify --proposal /review/private-reader-provisioning-preparation-r1.json --disclosure /review/private-source-disclosure-proposal-r1.json --consent /review/private-source-owner-consent-r1.json -``` - -It accepts no credential argument and returns only bounded metadata receipts. -Exit zero means all seven native index/entry fetches matched pinned consent; it -does not prove registration/federation completion. Final admission still needs -separate live source registrations and exact 70-ID fresh hosted audit. diff --git a/docs/assessments/cust81-private-reader/runtime-auth-source-allowlist-r1.json b/docs/assessments/cust81-private-reader/runtime-auth-source-allowlist-r1.json deleted file mode 100644 index edb5f74..0000000 --- a/docs/assessments/cust81-private-reader/runtime-auth-source-allowlist-r1.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "REUSE_SURFACE_FORGEJO_SOURCE_READ_TOKEN": [ - "https://forgejo.coulomb.social/api/v1/repos/coulomb/rapp-openbao/raw/registry/capabilities/capability.railiance.openbao-package.md?ref=35672be138036c8433a5ac5de91e068c03c2b124", - "https://forgejo.coulomb.social/api/v1/repos/coulomb/rapp-openbao/raw/registry/indexes/capabilities.yaml?ref=35672be138036c8433a5ac5de91e068c03c2b124", - "https://forgejo.coulomb.social/api/v1/repos/coulomb/rapp-policy-nexus/raw/registry/capabilities/capability.railiance.policy-publication-package.md?ref=088b78ac03b0cebeec34a69aae3569eb7ec2f9c3", - "https://forgejo.coulomb.social/api/v1/repos/coulomb/rapp-policy-nexus/raw/registry/indexes/capabilities.yaml?ref=088b78ac03b0cebeec34a69aae3569eb7ec2f9c3", - "https://forgejo.coulomb.social/api/v1/repos/coulomb/rapp-postgres/raw/registry/capabilities/capability.railiance.postgres-isolation-recovery.md?ref=a9f569c96d74aa384ac8d3ac4aa960e4061550b5", - "https://forgejo.coulomb.social/api/v1/repos/coulomb/rapp-postgres/raw/registry/indexes/capabilities.yaml?ref=a9f569c96d74aa384ac8d3ac4aa960e4061550b5", - "https://forgejo.coulomb.social/api/v1/repos/coulomb/rapp-sbom-nexus/raw/registry/capabilities/capability.railiance.sbom-runtime-package.md?ref=adbedd349e8df97be43a1f57db7095af45ff29d1", - "https://forgejo.coulomb.social/api/v1/repos/coulomb/rapp-sbom-nexus/raw/registry/indexes/capabilities.yaml?ref=adbedd349e8df97be43a1f57db7095af45ff29d1", - "https://forgejo.coulomb.social/api/v1/repos/coulomb/rapp-telemetry/raw/registry/capabilities/capability.railiance.telemetry-package.md?ref=f158307e24b86bab88a1af4830ff6b4f85afdeb5", - "https://forgejo.coulomb.social/api/v1/repos/coulomb/rapp-telemetry/raw/registry/indexes/capabilities.yaml?ref=f158307e24b86bab88a1af4830ff6b4f85afdeb5", - "https://forgejo.coulomb.social/api/v1/repos/coulomb/rapp-tenant-engine/raw/registry/capabilities/capability.railiance.tenant-engine-package.md?ref=9bdc86572728783a5ed94266f04f7b12d414c557", - "https://forgejo.coulomb.social/api/v1/repos/coulomb/rapp-tenant-engine/raw/registry/indexes/capabilities.yaml?ref=9bdc86572728783a5ed94266f04f7b12d414c557", - "https://forgejo.coulomb.social/api/v1/repos/coulomb/rapp-user-engine/raw/registry/capabilities/capability.railiance.user-engine-package.md?ref=f35108f9e1b8702fb6c526fe42b2fec5ca032738", - "https://forgejo.coulomb.social/api/v1/repos/coulomb/rapp-user-engine/raw/registry/indexes/capabilities.yaml?ref=f35108f9e1b8702fb6c526fe42b2fec5ca032738" - ] -} diff --git a/docs/assessments/cust81-private-reader/suite-environment-validation.json b/docs/assessments/cust81-private-reader/suite-environment-validation.json deleted file mode 100644 index e062fbe..0000000 --- a/docs/assessments/cust81-private-reader/suite-environment-validation.json +++ /dev/null @@ -1,628 +0,0 @@ -{ - "id": "REUSE-WP-0025-SUITE-ENVIRONMENT-R1", - "fixture_checkout": "/tmp/cust81-reuse-suite-fixtures-r1/reuse-surface", - "fixture_only": true, - "sources": [ - { - "repo": "access-engine", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "7d59022dac9da4d8dcbecab936d3cea9b154c8c51478b378932fd9ebe5ec7e02" - }, - { - "repo": "activity-core", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "536d359366ccf3db3b2b0d390635bc2c5311bd37ac7ff89dae11d809ef15b848" - }, - { - "repo": "agentic-resources", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "42986b7a274ef510166e566a9756d594a6f88706189bc97ac889bab86b20240d" - }, - { - "repo": "approval-engine", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "b6812fd12dc530270fb66bae592c828f56f17f2fc86759cb04d750162fc619a4" - }, - { - "repo": "artifact-store", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "200802ac737195721a52d6d345104f2302fbdc35b4122b431bd2255f4e5552bc" - }, - { - "repo": "audit-core", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "6a1d7dbb442f0fd0e481d54fb0acbee37ef2e693198b6f2108e154d3c3795e0e" - }, - { - "repo": "can-you-assist", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "ce106e5c106453635075dd1b5906762d516e84601af4d5620c9a7faab444be46" - }, - { - "repo": "citation-engine", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "e02914ffe937c8342022d92b5bfa6906aef560edeb6e90f80826cbf8e0620ada" - }, - { - "repo": "citation-evidence", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "628e338df6da2f0966675e8facf91f52cc3ac4a0c81417b33e1284045db1dfad" - }, - { - "repo": "citation-work", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "c20b96c226bb9465d7154c127ee19a94396c7b03307e7581ff827eba42651d86" - }, - { - "repo": "commerce-canon", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "6e1186aad49634b9725bc2cfa051c42b2ac13e5c4abe4bade7b39c0483f4242d" - }, - { - "repo": "config-atlas", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "d0325d71a5de1e756c080dc9abc3162536b9700cc37942a028ad2f65bad9bfef" - }, - { - "repo": "coordination-engine", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "f7a2c140ac1a7628a2106b1047b59e208879257b23ffed6dceef8ecf6c3bd420" - }, - { - "repo": "core-hub", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "31cb09dd3b04a7891533387479ecb340b543445b64a849d9973ee857efa4cca1" - }, - { - "repo": "domain-tree", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "c20b96c226bb9465d7154c127ee19a94396c7b03307e7581ff827eba42651d86" - }, - { - "repo": "email-connect", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "5bce1e037a368816811a21dd9123ebf47f1a7d293c424c661d30fa14f2366231" - }, - { - "repo": "emergent-security", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "268d9192dc9b97da462d46fe5b40ea33e678840b23944ab0cd73622c130bdef6" - }, - { - "repo": "evidence-anchor", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "c20b96c226bb9465d7154c127ee19a94396c7b03307e7581ff827eba42651d86" - }, - { - "repo": "evidence-binder", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "2664dfb5668238051b7cd540470ee2f7a5557415c53462fa4f14474829f3ce46" - }, - { - "repo": "evidence-source", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "7b2a3c7b108fbdc69828b088915418c87dedfee5e202e4546defe68d8df64667" - }, - { - "repo": "feature-control", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "2335b614d120a3e954d55389448b4c8462bfab3582de2e0bbae02dd5474dd132" - }, - { - "repo": "fin-hub", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "c6bb1aa6b770f684721fae9f1576f2c2f0128d1b758f4e33b8a277e0b4ff087a" - }, - { - "repo": "gate-house", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "2b63d94375d29649c41a7eae7cfb3f6e35210fd3438aa5013f3ddc22a662511a" - }, - { - "repo": "glas-harness", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "8f86dbdaf6535c909ff19967f7806d85c1f7a09db1e999033abf9b9007ed805b" - }, - { - "repo": "guide-board", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "abbc20c7ab14bcbdb73679a5143355c7ad3a7441b8f8e7bf5a1af393c7d1c1e1" - }, - { - "repo": "helix-forge", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "c20b96c226bb9465d7154c127ee19a94396c7b03307e7581ff827eba42651d86" - }, - { - "repo": "hub-core", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "a78d185973e0d0600f6ff05470ff3b840130fca4ed7922edaf08155d246e9008" - }, - { - "repo": "human-resources", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "d72d6b4f1479992e33400ed7c950cdc7112ead9c22abd38275717f0ae9255787" - }, - { - "repo": "ihp-railiance-probe", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "c20b96c226bb9465d7154c127ee19a94396c7b03307e7581ff827eba42651d86" - }, - { - "repo": "info-tech-canon", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "6015ec78772586e6e351422741430be8c40d7c7116403ee4b92933df342c4c72" - }, - { - "repo": "informed-decision", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "b43ea44c725dcbd59fe957ffc307805e0aabc23b60a4a9049005c70ca4871a62" - }, - { - "repo": "infospace-bench", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "74ba65dad84faffd6ce0e6d771f8650abe76b87a6ee09ee007780bd13c5cd9b2" - }, - { - "repo": "issue-core", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "70eb00870ed87072aeb0f7c38de0a879f1b3910fe6f976b982a191e261e8e7be" - }, - { - "repo": "kaizen-agentic", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "0236d486d6df6d928e7fd9f186a02273c8a59d534abb026603f7128876fbe776" - }, - { - "repo": "key-cape", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "901d15c15cacd844cf19a1a7b74c890ce5e0b00a3372a9e10bd7114f328596c8" - }, - { - "repo": "kings-guard", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "8a143864a6ce9a7b6c5a0f64eb75f67cfa99c2b9b155baac4f81a261d3a5312c" - }, - { - "repo": "kontextual-engine", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "5a5980f37031c15fc9b332f143ddbfbd6c2789ff6c6ec0f4c3e971cbc506830e" - }, - { - "repo": "llm-connect", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "27420d2b21fb45cf6cf6ac41890518f6b5a8c10027594a7e95ec535715a01296" - }, - { - "repo": "markitect-filter", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "95d2743d4201f6b89efedebfcd34fdb03e3f832fa00b6f4f646015c3264dfb60" - }, - { - "repo": "markitect-main", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "ba7e29cc82fd4d1eff61e48b1d870714f2d9c97531e839c469f892602509f137" - }, - { - "repo": "markitect-quarkdown", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "67c718d9bb8221b9b58ab30cbf9eb1cf340e2d2ecc1d77cb4b5bdaf28fa5befc" - }, - { - "repo": "markitect-tool", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "9159a4af2783b17602c23ca4b72b552641d5e1c3170a4dee1aee69c3ba9371d2" - }, - { - "repo": "maturity-engine", - "kind": "required_local_index", - "origin": "worktree_untracked_registry_fixture_not_publication_evidence", - "sha256": "42b4cd1f9c6fe0960acadd10a337a579a6313fa46c2ff5a2a34bbacf2749d049" - }, - { - "repo": "net-kingdom", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "6fadeb0e89729a9226d6eebd44fbb07723512a3ebe6737f5a1113b14829447ed" - }, - { - "repo": "open-cmis-tck", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "e8fe7a7d0d3af104009f996c466353467e737069d0c2d04f880a86ae60d76bda" - }, - { - "repo": "open-reuse", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "f5e8b9cd3ceb7e336a2afc5097065a6c0453cc697c8c4aa2d2c39c1d1fe4fe66" - }, - { - "repo": "ops-bridge", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "aefd795eb16fcfdebc108450826a0f62e000bc61e9d78007bc6221bc2328e40c" - }, - { - "repo": "ops-hub", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "6fea9fee803a5d55ece3daefdfda0efff11eae8d2a0b719fbd0dec64f4f85314" - }, - { - "repo": "ops-mason", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "5eb499bc819c874835b8e6727ccbd5f9889ebb6f25a90018e3e574e5b6082b32" - }, - { - "repo": "ops-warden", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "4d3aba70ead10c826814dc766f9d23e3e0ce52475330acf57905bf62b01c819c" - }, - { - "repo": "phase-memory", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "e84b7603c98ae48879002b16a8302fb0e0e1b6c6e1099565570a8d8f98478d31" - }, - { - "repo": "policy-nexus", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "c1eb3e23621de354a9081cbf29a2f3d772b5f8538aaceca417574cde5a04c021" - }, - { - "repo": "rail-knative", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "e044b8f2f6bc1b8aa7c672ee33dfac69d6813fd672388713a70ab7ea4d4052c0" - }, - { - "repo": "rail-kubernetes", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "699f69facea1ce4e71d90fe0790db19b68d3a546015453651d3afc808d31d09d" - }, - { - "repo": "railiance-apps", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "2a550acf8545e95bd81842bb1b00f4db46c4dbb42b522823f043e948667ddf2c" - }, - { - "repo": "railiance-bootstrap", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "feefcc699e045a1a72f254d71f46460ad2362ed23c9de6e54c952711fcb33788" - }, - { - "repo": "railiance-cluster", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "0e67a2aca183ee7ef9c4c04e618fcb03647120f456a133e84a8f42c2b8d8fcde" - }, - { - "repo": "railiance-enablement", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "4b1f91b0da94e3098916f3e360b20b9926be4dd8683d6fb167a027aaf04ebfac" - }, - { - "repo": "railiance-fabric", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "f473644906fe3f331702b407c3519e6a3cd0d96d362cf30d80e03aac53c3b862" - }, - { - "repo": "railiance-forge", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "4df605d617b7656ffb94a43ab4633c8fc69ec723f68f5f5b8d5f24ad8efb6b98" - }, - { - "repo": "railiance-infra", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "14a76b1f1dd317a1d426502ff5f80780e9551cd1cd600543de6fb9a84cb8ada2" - }, - { - "repo": "railiance-master", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "f36cb2765ec04064314f43866f9a87a94a4f0f728adfaad46739f232b4986c0a" - }, - { - "repo": "railiance-platform", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "0315d526165368e0a513de6b15932778d43c3e6045c589c95060f555fca3202e" - }, - { - "repo": "railiance-telemetry", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "82f3f2d188e2d7ebea71b7262e106c5f48feaf39a2da881bb645ff9352884205" - }, - { - "repo": "rapp-openbao", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "044efa3d02b90e1872f2516c581159d388a8080a689f76fcd78bb4d048d6ee64" - }, - { - "repo": "rapp-playwright", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "79645df817858f96230f2443d66796d1078185c7afef5948f6a38632234d33bb" - }, - { - "repo": "rapp-policy-nexus", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "e68bdedf61eee9ca2026f46a2434ce384c26234616e74f7a5d08a06c75b3bb00" - }, - { - "repo": "rapp-postgres", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "d939333eed9d85172e006f526c445fbe2602a721d53f7c0d14bc68286ae08776" - }, - { - "repo": "rapp-sbom-nexus", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "d2ee0f193d2198bf8f16ce64c90ae7664e59a2bc307ad711426af3fd47deb057" - }, - { - "repo": "rapp-telemetry", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "ee8801f143ed5cf064205710a61c2bb24efc6ea8585d5786d6b679426ec4c1d4" - }, - { - "repo": "rapp-tenant-engine", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "d8e9c1282350b5d2fd4f4d69712aa7a5fbcd2367bb1a7fad1b6eb16a97e5d732" - }, - { - "repo": "rapp-user-engine", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "95b4ed2d0b189f6847b1c0899f740d1da46933a8f40491e1a02f2d4e57c819fc" - }, - { - "repo": "reef-railiance", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "84a89c376021e3cb980c02c41d1a31396b874bebcc3801c2d1a9a33ae4195eb5" - }, - { - "repo": "rein-aharness", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "20990ed0e016b3330a0d44e9b86bfff8966e82bc8800469ec0f320cfa8a63fbc" - }, - { - "repo": "rein-openweights", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "2f4e59b2dbc7ea6078405f5c2f2be0aebd9434bee171a429b9ebe6baa83f3c2b" - }, - { - "repo": "repo-manager", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "ba068a8dd7a282664e94e2acdbbb170a2ba48e260e7ce0ec8eaaa8aee6f9e7c2" - }, - { - "repo": "repo-scoping", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "480d7c57759d6997d7bd531e966c207bb290e978f9fe831d6d246b5592c3dd71" - }, - { - "repo": "repo-seed", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "8cb4e4baacd95a070a96db6d72f4fb3019cffda95606c65896f796ccac0c9c7c" - }, - { - "repo": "resource-control", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "31b16f7d824e376f21de44aff46d5d532d3679d5e72035ce84813572b11bbd44" - }, - { - "repo": "reuse-surface", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "a77c952e9e1a37a3504ccd7001a7a2493d60d46f147f277071829cd05646e31c" - }, - { - "repo": "risk-nexus", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "53f0bf9e0aa06a6db0aa991f0ebdaa1d2bf74cfaf4e30eed8c003a4d2186a746" - }, - { - "repo": "role-engine", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "1188e02e0333664b3554d11c59c12942fef9e29e6491b186dcec67e6ae3e8a5c" - }, - { - "repo": "runbook-tutorials", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "a74fa708c4fea755f5c52504bd227393888cca78c043349cdc182c4d783390e5" - }, - { - "repo": "sand-boxer", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "a182d5672d088e80b79eacff9cb37fc2f3518c3c100537e18d125abc7f169e96" - }, - { - "repo": "sbom-nexus", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "ed6efd581483d0058a3928b365b933cbbd98c035b0a75c866156a69961d74edc" - }, - { - "repo": "secrets-engine", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "d5d903336d05ccd0b75a49f7be7e866ef89c6bdb6444e8c747a5ffa934a6bbe2" - }, - { - "repo": "security-canon", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "9b9f9348e560a72d8032f62b2ba4820d81fe182353ccc886e4f5c57cbdea563f" - }, - { - "repo": "shard-wiki", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "b0bb63c0a080e46c60f24a87959c529da5e725334ed69c4ba985c39107c54ef9" - }, - { - "repo": "state-hub", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "eab454bd985ab6ab83c38fd29e6e58ebdfe1e09bbc5388edddaa07a88133619a" - }, - { - "repo": "tegwick-control", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "c20b96c226bb9465d7154c127ee19a94396c7b03307e7581ff827eba42651d86" - }, - { - "repo": "tenant-engine", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "4131f1b63e52306f267204cdfb0faa90d6550f8bca51f97cf1062becea95d805" - }, - { - "repo": "the-custodian", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "cfe7f25e91fee824347aa22ccee2a70e7dd58ac06a7106f7e2ec9e54dc163020" - }, - { - "repo": "user-engine", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "7133c52c2013cea70d07d33960f145c370d33a8b4397c1dc927769fcaf200cbd" - }, - { - "repo": "vantage-point", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "cc5cf52ead95adc2920db84299d994e54def089d3f8fd852e10d9857ab0fdd2e" - }, - { - "repo": "vergabe-teilnahme", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "73ffd306894d9839f4800aa028144883d012bf0fe74a310ad09ef9296c627d56" - }, - { - "repo": "whitehat-security", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "e4bf9bac7f62f60cf10a9fbd25aa8200c22f13d61861862ff5fa1cc90b55f37c" - }, - { - "repo": "whynot-control", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "c20b96c226bb9465d7154c127ee19a94396c7b03307e7581ff827eba42651d86" - }, - { - "repo": "whynot-design", - "kind": "anonymous_cache_seed_not_runtime_evidence", - "origin": "committed_HEAD_fixture", - "sha256": "541104bcafb17dcf7d26dabbce7ff93b2025a0bc6cad9bec71ac145f5ec72669" - }, - { - "repo": "zone-engine", - "kind": "required_local_index", - "origin": "committed_HEAD_fixture", - "sha256": "b6b196089a3011f16e8a38f6914589efc72a29ee3aca4bc0c5e3cf30bee97ec4" - } - ], - "foreign_repo_writes": false, - "network_fetch_needed": false, - "preserved_prior_outcomes": [ - { - "environment": "original isolated checkout without siblings", - "passed": 226, - "failed": 1, - "failure": "required access-engine sibling missing" - }, - { - "environment": "partial fixture preparation failed at untracked maturity-engine registry", - "passed": 226, - "failed": 1, - "failure": "required maturity-engine fixture missing; preparation failure not hidden" - } - ], - "final_result": { - "command": "/home/worsch/reuse-surface/.venv/bin/python -m pytest -q tests", - "cwd": "/tmp/cust81-reuse-suite-fixtures-r1/reuse-surface", - "exit_code": 0, - "passed": 227, - "failed": 0, - "warnings": 1, - "duration_seconds": 7.8, - "warning": "Starlette httpx testclient deprecation", - "consumer_source_sha256": "dbaa40f25cc0f090143578cd1c7068cb2cb00960fafd17d5239bf8a5bac514dd" - } -} diff --git a/docs/catalog/index.html b/docs/catalog/index.html index 99328ac..a7fe460 100644 --- a/docs/catalog/index.html +++ b/docs/catalog/index.html @@ -15,7 +15,7 @@

Capability Catalog

-

Updated 2026-10-13 · 3 entries

+

Updated 2026-06-16 · 2 entries

helix_forge

Capability Registration

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

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 / A5 / 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.

-

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

-
diff --git a/docs/catalog/registry.json b/docs/catalog/registry.json index f9642fb..be4ab35 100644 --- a/docs/catalog/registry.json +++ b/docs/catalog/registry.json @@ -1,40 +1,7 @@ { "domain": "helix_forge", - "updated": "2026-10-13", + "updated": "2026-06-16", "capabilities": [ - { - "id": "capability.infotech.headless-browser", - "name": "Headless Browser Automation", - "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", - "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", - "cli", - "service API", - "container" - ] - }, { "id": "capability.registry.register", "name": "Capability Registration", diff --git a/docs/evidence/2026-10-13-browser-discovery.md b/docs/evidence/2026-10-13-browser-discovery.md deleted file mode 100644 index edc34b9..0000000 --- a/docs/evidence/2026-10-13-browser-discovery.md +++ /dev/null @@ -1,115 +0,0 @@ -# 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](../../registry/capabilities/capability.infotech.headless-browser.md). - -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: - -```sh -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. - -- [Preflight](2026-10-13-browser-discovery/preflight.json) -- [Receipt](2026-10-13-browser-discovery/receipt.json) -- [Independent artifact checks](2026-10-13-browser-discovery/artifact-checks.json) -- [Desktop fixture](2026-10-13-browser-discovery/desktop-final.png) -- [Narrow fixture](2026-10-13-browser-discovery/narrow-final.png) - -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. -- Whitespace check passed apart from intentional Markdown hard breaks in the - generated Custodian brief. - -## Publication and hosted readback - -Implementation commit **`50077c9`** pushed to `origin/main`. Public raw capability -and index documents matched the committed files byte for byte. Refreshed -`https://reuse.coulomb.social/v1/federated?refresh=true` at **18:49:02 UTC**: -`stale: false`, no federation warnings, **66 capabilities**, exactly one browser -entry at **D3 / A5 / C2 / R2**. - -The updated local CLI queried this hosted snapshot with `--intent "headless -browser" --no-llm`: browser first, score **0.6667**, verdict **reuse**, with the -client and conditional availability guidance in the returned summary. Matching -runs in the CLI against the hosted index; no server code deployment was needed. - -- [Hosted entry readback](2026-10-13-browser-discovery/hosted-readback.json) -- [Hosted-snapshot plan-check](2026-10-13-browser-discovery/hosted-plan-check.json) - -REUSE-IN-0001 is closed for registry discovery/consumption concerns. Provider -managed admission and consumer application acceptance remain outside this closure. - -`statehub fix-consistency --repo reuse-surface --json` synchronized the finished -workplan and all three done tasks with zero failures or automation errors. Its -generated brief/index are included with the closure commit; the automatic -generated-only commit was refused by the existing Git hook. Four pre-existing -repository-classification advisories remain. A plain intake status PATCH returned -HTTP 500 because closure requires an outcome. Used the supported intake `/close` -transition with `outcome: promoted`, `promoted_to: REUSE-WP-0024` after recording -those fields in the canonical file. -Inbox handoffs and standing notices were read/acknowledged. Progress receipt: -`898a9638-09b8-44fa-8e04-5970c7cd2bbc`. diff --git a/docs/evidence/2026-10-13-browser-discovery/artifact-checks.json b/docs/evidence/2026-10-13-browser-discovery/artifact-checks.json deleted file mode 100644 index c7e6c95..0000000 --- a/docs/evidence/2026-10-13-browser-discovery/artifact-checks.json +++ /dev/null @@ -1,30 +0,0 @@ -[ - { - "name": "desktop-6-keyboard-result.png", - "bytes": 26622, - "sha256": "b15998824256b86c74f2bbb75f061061be65db0b4f3bb5444529ac69a723cdad", - "width": 1280, - "height": 800 - }, - { - "name": "desktop-final.png", - "bytes": 26622, - "sha256": "b15998824256b86c74f2bbb75f061061be65db0b4f3bb5444529ac69a723cdad", - "width": 1280, - "height": 800 - }, - { - "name": "narrow-6-keyboard-result.png", - "bytes": 24280, - "sha256": "49d27cb169b8e180ce93969c6d2b8619a7684cf035bb9dcae9cd91d8bd9952e8", - "width": 390, - "height": 844 - }, - { - "name": "narrow-final.png", - "bytes": 24280, - "sha256": "49d27cb169b8e180ce93969c6d2b8619a7684cf035bb9dcae9cd91d8bd9952e8", - "width": 390, - "height": 844 - } -] diff --git a/docs/evidence/2026-10-13-browser-discovery/desktop-final.png b/docs/evidence/2026-10-13-browser-discovery/desktop-final.png deleted file mode 100644 index 91a2040..0000000 Binary files a/docs/evidence/2026-10-13-browser-discovery/desktop-final.png and /dev/null differ diff --git a/docs/evidence/2026-10-13-browser-discovery/hosted-plan-check.json b/docs/evidence/2026-10-13-browser-discovery/hosted-plan-check.json deleted file mode 100644 index 62732b7..0000000 --- a/docs/evidence/2026-10-13-browser-discovery/hosted-plan-check.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "query": { - "source": "intent", - "text": "headless browser", - "workplan_id": null, - "workplan_path": null - }, - "verdict": "reuse", - "top_score": 0.6667, - "matches": [ - { - "id": "capability.infotech.headless-browser", - "score": 0.6667, - "vector": "D3 / A5 / C2 / R2", - "owner": "reuse-surface", - "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.", - "kind": "deterministic" - }, - { - "id": "capability.identity.user-engine", - "score": 0.2, - "vector": "D4 / A1 / C2 / R0", - "owner": "user-engine", - "summary": "Headless, multi-application, multi-tenant user management engine covering registration, identity/factor models, entitlement claims, hats/realms/services/assets access profiles, and onboarding journeys.", - "kind": "deterministic" - }, - { - "id": "capability.infotech.pdf-evidence-ingest", - "score": 0.2, - "vector": "D2 / A1 / C1 / R1", - "owner": "evidence-source", - "summary": "Turns raw PDF bytes into an engine-shaped Document + DocumentRepresentation \u2014 SHA-256 fingerprint, canonical text, page map, and gap-free offset map \u2014 as a runtime-agnostic library with no viewer, persistence, or React coupling.", - "kind": "deterministic" - }, - { - "id": "capability.communication.context-engine", - "score": 0.0476, - "vector": "D4 / A1 / C1 / R0", - "owner": "kontextual-engine", - "summary": "Headless knowledge-operations engine turning heterogeneous information assets into persistent, contextual, governed, retrievable, transformable, and agent-operable knowledge.", - "kind": "deterministic" - }, - { - "id": "capability.infotech.email-connector", - "score": 0.0476, - "vector": "D2 / A1 / C1 / R0", - "owner": "email-connect", - "summary": "Headless, provider-neutral email communication and evidence service; first slice scans a mailbox or fixture directory and produces timestamped CSV evidence reports.", - "kind": "deterministic" - } - ], - "federated_index_updated": "2026-10-13", - "federated_index_stale_warning": null, - "index_source": { - "kind": "hosted", - "url": "https://reuse.coulomb.social/v1/federated", - "fetched_at": "2026-10-13T18:49:10.789378+00:00", - "composed_at": "2026-10-13T18:49:02+00:00", - "capability_count": 66, - "sha256": "59d5c247ac2a769e07f7ac6e464242bc0d3af78bc838b7f31ff995a8a36671e7", - "digest_format": "response-bytes", - "max_age_hours": 24, - "stale": false, - "federation_warnings": false - } -} diff --git a/docs/evidence/2026-10-13-browser-discovery/hosted-readback.json b/docs/evidence/2026-10-13-browser-discovery/hosted-readback.json deleted file mode 100644 index ae2e8d2..0000000 --- a/docs/evidence/2026-10-13-browser-discovery/hosted-readback.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "composed_at": "2026-10-13T18:49:02+00:00", - "updated": "2026-10-13", - "stale": false, - "capability_count": 66, - "federation_warnings": null, - "browser": { - "id": "capability.infotech.headless-browser", - "name": "Headless Browser Automation", - "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", - "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", - "cli", - "service API", - "container" - ], - "source_repo": "reuse-surface", - "source_url": "https://forgejo.coulomb.social/coulomb/reuse-surface/raw/branch/main/registry/indexes/capabilities.yaml", - "source_index": "/data/cache/reuse-surface.yaml" - } -} diff --git a/docs/evidence/2026-10-13-browser-discovery/narrow-final.png b/docs/evidence/2026-10-13-browser-discovery/narrow-final.png deleted file mode 100644 index c2ad4e9..0000000 Binary files a/docs/evidence/2026-10-13-browser-discovery/narrow-final.png and /dev/null differ diff --git a/docs/evidence/2026-10-13-browser-discovery/preflight.json b/docs/evidence/2026-10-13-browser-discovery/preflight.json deleted file mode 100644 index 0a0f4fd..0000000 --- a/docs/evidence/2026-10-13-browser-discovery/preflight.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "available": true, - "error": null, - "checked_at": "2026-10-13T18:42:18.136Z", - "browser_version": "156.0.8078.4", - "api_version": "1", - "service_version": "0.1.0", - "playwright_version": "1.64.0", - "execution_location": "workstation-release-check", - "release": "sha256:8d6fd5a8172cf906bb503642ed620761945c5138b86f6396c36f65cbe6def441", - "allowed_origins": [], - "fixture": true, - "active": 0, - "queued": 0, - "limits": { - "concurrency": 1, - "max_queue": 4, - "max_timeout_ms": 120000, - "retention_ms": 3600000, - "max_runs": 64 - } -} diff --git a/docs/evidence/2026-10-13-browser-discovery/receipt.json b/docs/evidence/2026-10-13-browser-discovery/receipt.json deleted file mode 100644 index c30efdf..0000000 --- a/docs/evidence/2026-10-13-browser-discovery/receipt.json +++ /dev/null @@ -1,184 +0,0 @@ -{ - "id": "6c710b36-319b-45b8-b062-ac2065f5e81b", - "api_version": "1", - "status": "passed", - "error": null, - "label": "independent-browser-trial", - "target": "fixture", - "viewports": [ - { - "name": "desktop", - "width": 1280, - "height": 800 - }, - { - "name": "narrow", - "width": 390, - "height": 844 - } - ], - "timeout_ms": 60000, - "created_at": "2026-10-13T18:42:41.545Z", - "expires_at": "2026-10-13T19:42:41.545Z", - "service_version": "0.1.0", - "playwright_version": "1.64.0", - "release": "sha256:8d6fd5a8172cf906bb503642ed620761945c5138b86f6396c36f65cbe6def441", - "execution_location": "workstation-release-check", - "browser_version": "156.0.8078.4", - "completed_steps": 14, - "steps": [ - { - "viewport": "desktop", - "index": 0, - "action": "visible", - "status": "passed", - "at": "2026-10-13T18:42:52.067Z", - "selector": "h1" - }, - { - "viewport": "desktop", - "index": 1, - "action": "text", - "status": "passed", - "at": "2026-10-13T18:42:52.461Z", - "selector": "#count" - }, - { - "viewport": "desktop", - "index": 2, - "action": "press", - "status": "passed", - "at": "2026-10-13T18:42:52.576Z", - "key": "Tab" - }, - { - "viewport": "desktop", - "index": 3, - "action": "focused", - "status": "passed", - "at": "2026-10-13T18:42:52.660Z", - "selector": "#increment" - }, - { - "viewport": "desktop", - "index": 4, - "action": "press", - "status": "passed", - "at": "2026-10-13T18:42:52.674Z", - "key": "Enter" - }, - { - "viewport": "desktop", - "index": 5, - "action": "text", - "status": "passed", - "at": "2026-10-13T18:42:52.754Z", - "selector": "#count" - }, - { - "viewport": "desktop", - "index": 6, - "action": "screenshot", - "status": "passed", - "at": "2026-10-13T18:42:52.764Z" - }, - { - "viewport": "narrow", - "index": 0, - "action": "visible", - "status": "passed", - "at": "2026-10-13T18:42:55.566Z", - "selector": "h1" - }, - { - "viewport": "narrow", - "index": 1, - "action": "text", - "status": "passed", - "at": "2026-10-13T18:42:55.959Z", - "selector": "#count" - }, - { - "viewport": "narrow", - "index": 2, - "action": "press", - "status": "passed", - "at": "2026-10-13T18:42:56.177Z", - "key": "Tab" - }, - { - "viewport": "narrow", - "index": 3, - "action": "focused", - "status": "passed", - "at": "2026-10-13T18:42:56.253Z", - "selector": "#increment" - }, - { - "viewport": "narrow", - "index": 4, - "action": "press", - "status": "passed", - "at": "2026-10-13T18:42:56.265Z", - "key": "Enter" - }, - { - "viewport": "narrow", - "index": 5, - "action": "text", - "status": "passed", - "at": "2026-10-13T18:42:56.275Z", - "selector": "#count" - }, - { - "viewport": "narrow", - "index": 6, - "action": "screenshot", - "status": "passed", - "at": "2026-10-13T18:42:56.359Z" - } - ], - "artifacts": [ - { - "name": "desktop-6-keyboard-result.png", - "bytes": 26622 - }, - { - "name": "desktop-final.png", - "bytes": 26622 - }, - { - "name": "narrow-6-keyboard-result.png", - "bytes": 24280 - }, - { - "name": "narrow-final.png", - "bytes": 24280 - } - ], - "started_at": "2026-10-13T18:42:41.550Z", - "blocked_requests": 13, - "finished_at": "2026-10-13T18:42:58.107Z", - "downloads": [ - { - "name": "desktop-6-keyboard-result.png", - "bytes": 26622, - "sha256": "b15998824256b86c74f2bbb75f061061be65db0b4f3bb5444529ac69a723cdad" - }, - { - "name": "desktop-final.png", - "bytes": 26622, - "sha256": "b15998824256b86c74f2bbb75f061061be65db0b4f3bb5444529ac69a723cdad" - }, - { - "name": "narrow-6-keyboard-result.png", - "bytes": 24280, - "sha256": "49d27cb169b8e180ce93969c6d2b8619a7684cf035bb9dcae9cd91d8bd9952e8" - }, - { - "name": "narrow-final.png", - "bytes": 24280, - "sha256": "49d27cb169b8e180ce93969c6d2b8619a7684cf035bb9dcae9cd91d8bd9952e8" - } - ] -} diff --git a/docs/graph/capability-graph.mmd b/docs/graph/capability-graph.mmd index b66c008..1f2f92f 100644 --- a/docs/graph/capability-graph.mmd +++ b/docs/graph/capability-graph.mmd @@ -1,5 +1,4 @@ graph LR - capability_infotech_headless_browser["capability.infotech.headless-browser
D3 / A5 / 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 19366f8..1b47bfd 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/intakes/REUSE-IN-0001-headless-browser-runnable-answer.md b/intakes/REUSE-IN-0001-headless-browser-runnable-answer.md
deleted file mode 100644
index 145f407..0000000
--- a/intakes/REUSE-IN-0001-headless-browser-runnable-answer.md
+++ /dev/null
@@ -1,110 +0,0 @@
-# REUSE-IN-0001 — Answer a headless-browser request with a runnable trial
-
-```yaml
-id: REUSE-IN-0001
-kind: intake
-title: "Answer a headless-browser request with a runnable trial, or say the gap is availability"
-status: closed
-outcome: promoted
-promoted_to: REUSE-WP-0024
-lane: green
-flavor: implementation
-origin: cross-repo
-origin_ref: CONTENT-WP-0000-T04
-priority: medium
-owner: reuse-surface
-repo: reuse-surface
-requested_by: content-explorer
-created: "2026-10-13"
-updated: "2026-10-13"
-description: >
-  content-explorer asked the hosted reuse-surface index for a headless browser
-  while CONTENT-WP-0000-T04 was open. That task needs responsive screenshots
-  and a keyboard walkthrough. On 2026-10-12 the workstation had no Chrome,
-  Chromium, Firefox, or Playwright launcher.
-
-
-  GET https://reuse.coulomb.social/v1/federated (composed_at
-  2026-10-13T11:56:56Z, stale false) returns
-  capability.infotech.headless-browser at D3 / A2 / C2 / R2. The card
-  recommends adapting Playwright plus Chromium from whynot-design,
-  coulomb-social, core-hub, and frontend-patterns. The entry states that it
-  does not deliver a shared wrapper or a hosted browser. A keyword filter for
-  "headless" also returns four unrelated engines (kontextual-engine,
-  user-engine, email-connect, evidence-source). Hosted plan-check for the
-  intent "headless browser" includes the entry and still returns verdict
-  new. The publication note on ADHOC-2026-10-13-T02 already records that
-  scoring limitation.
-
-
-  What the consumer needed from the service:
-
-
-  1. A response that answers whether a browser can be launched on this
-  workstation now.
-
-  2. When it can, one verified command path in the query response itself:
-  install the matching Playwright Chromium, open one page, save a screenshot,
-  and record a short keyboard interaction. Learning that next step should
-  not require opening a sibling checkout and copying another repo's fixtures.
-
-  3. When it cannot, the same response should say the record is
-  discovery-only, availability is A2, nothing is installed for the caller,
-  and nothing is hosted. The verdict should be an availability gap on
-  capability.infotech.headless-browser, so the worker extends that entry
-  instead of starting a second browser stack.
-
-  4. The phrase "headless browser" should rank apart from unrelated headless
-  services.
-
-
-  A hosted browser farm, credential handling, and permission to automate
-  arbitrary external sites are outside this request. The current entry is
-  right to keep those excluded. The useful increment is a
-  workstation-verified trial helper with a pinned Playwright and Chromium
-  version, plus a query result that names that helper or names the
-  availability gap. This intake does not ask reuse-surface to mark
-  CONTENT-WP-0000-T04 done or to import OnCo.
-
-
-  Owner response, 2026-10-13, following founder direction: browser service
-  implementation, operation and consumer workstation setup are not reuse-surface
-  responsibilities. A rapp-playwright-provided service will be available shortly.
-  Record this as announced/planned, not verified availability; no endpoint,
-  consumption contract or launch receipt has been verified here. Existing A2
-  source reuse remains available and the current maturity vector is unchanged.
-
-
-  reuse-surface retains responsibility for discovery, accurate availability
-  guidance, consumption references and the reported false-new/relevance defects.
-  This intake remains open for those registry concerns; its browser-delivery
-  request belongs to rapp-playwright. A2 means source/library reuse, not
-  discovery-only or already installed for a caller. CONTENT-WP-0000-T04 remains
-  the consumer's task and is not completed by this announcement.
-state_hub_intake_id: "01a13530-89a8-77b0-bb95-ef16d74bb29b"
-```
-
-## Registry resolution — 2026-10-13
-
-Implemented under REUSE-WP-0024 and published in commit `50077c9`.
-The original description above is retained as the intake history.
-
-- The same browser capability now includes a pinned, downloadable standalone
-  client, exact preflight/trial commands in the query summary, immutable local
-  container setup and conditional managed instructions. No sibling checkout or
-  consumer browser installation is needed for the provider path.
-- A fresh local client-only trial passed all 14 fixture steps; four downloaded
-  PNGs passed independent hash/dimension checks at desktop and narrow sizes.
-  Availability is A5 for the published container, with A2 source reuse retained.
-  The endpoint is ephemeral and managed Railiance admission remains pending.
-- Short-name scoring fixes relevance and false-new behavior. Plan-check using
-  the published hosted snapshot ranks the browser first at 0.6667, verdict
-  `reuse`. Relevance is explicitly separate from runtime readiness; an unavailable
-  provider is an availability gap on this entry.
-- Hosted federation readback at 18:49:02 UTC is fresh, warning-free, and includes
-  one browser capability among 66 entries. Public capability/index bytes match
-  the published commit.
-
-[Review, trial and publication evidence](../docs/evidence/2026-10-13-browser-discovery.md).
-This closes the registry-owned intake, not CONTENT-WP-0000-T04, platform
-admission or consumer application acceptance.
diff --git a/registry/README.md b/registry/README.md
index 48b1976..0e4dd4b 100644
--- a/registry/README.md
+++ b/registry/README.md
@@ -114,17 +114,6 @@ 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
@@ -234,4 +223,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.
\ No newline at end of file
diff --git a/registry/capabilities/capability.infotech.headless-browser.md b/registry/capabilities/capability.infotech.headless-browser.md
deleted file mode 100644
index 5ab4096..0000000
--- a/registry/capabilities/capability.infotech.headless-browser.md
+++ /dev/null
@@ -1,337 +0,0 @@
----
-id: capability.infotech.headless-browser
-name: Headless Browser Automation
-summary: >-
-  Headless browser automation, screenshots and keyboard trials through rapp-playwright 0.1.0 (Playwright 1.64.0, Chromium 156.0.8078.4). Human and coding-agent managed trials passed on 2026-10-18 through the existing supervised workstation connection. Use the documented kubectl port-forward to 127.0.0.1:18081, then the pinned standalone Python client preflight/trial commands. No local browser installation. Independent per-caller managed admission remains pending; availability stays A5. Contract: https://forgejo.coulomb.social/coulomb/rapp-playwright/src/commit/8831a05aeba5ce588f3b395ade676dde2a151c5d/docs/consumer-contract.md.
-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: A5
-    target: A6
-    confidence: medium
-    rationale: >
-      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).
-      The supervised managed build profile has real human/agent receipts; independent
-      per-caller admission remains pending. Existing A2 source adaptation remains usable;
-      no endpoint uptime or caller browser installation is implied.
-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.
-      - Published provider client and container have independent fixture screenshots and keyboard receipts.
-      - Actual managed human and coding-agent supported-command trials passed on 2026-10-18 under the stated supervised build profile.
-    broken_expectations:
-      - Independent per-caller managed admission is still pending; the supervised build connection must be established first.
-      - 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.
-      - 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.
-      - Provider fixture receipts do not prove arbitrary target compatibility or independent per-caller identity.
-      - 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
-    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.
-    - 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:
-    - 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: 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
-    - ../core-hub/scripts/check_console_visual.py
-    - ../frontend-patterns/research/experiments/navigation-history/experiment.mjs
-  target_artifacts:
-    - >-
-      Managed Railiance deployment after platform admission, with consumer
-      independent per-caller access and complete recovery/rollback acceptance; the
-      supervised build pilot already has actual human/agent receipts.
-  consumption_modes: [informational, source adaptation, JavaScript library, Python library, cli, service API, container]
-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
-    - 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
-    - ../frontend-patterns/research/experiments/navigation-history/result.json
-  consumer_feedback:
-    - >-
-      2026-10-13 content-explorer, REUSE-IN-0001: published source examples did not
-      provide a verified runnable path for screenshots and keyboard interaction.
-      The false-new plan-check verdict is a registry discovery issue, not evidence
-      that a new browser stack is needed. Browser delivery belongs to the provider.
-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.
-    - >-
-      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.
-    - 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.
-    - 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
-
-## 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.
-
-## Service provider and delivery status
-
-**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 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.
-
-### 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.
-
-### Supervised managed development path — verified 2026-10-18
-
-The existing private deployment was used by one actual human and one coding
-agent, each completing 14 keyboard/responsive steps with downloaded screenshots.
-This build profile uses an existing authenticated workstation connection;
-independent per-caller identity, transport and final managed admission remain open.
-Establish that existing connection, then use the same supported provider client:
-
-```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
-```
-
-Both managed trials passed against the deployed release digest already listed
-above. The client is byte-identical to the pinned published commit.
-[Human receipt](https://forgejo.coulomb.social/coulomb/the-custodian/src/commit/17635cb0a76e5595ec06421ab7419ae889f6d731/docs/changes/netkingdom-target-2026-10-18/wp80-build-mode-r1/playwright-human/receipt.json),
-[agent receipt](https://forgejo.coulomb.social/coulomb/the-custodian/src/commit/17635cb0a76e5595ec06421ab7419ae889f6d731/docs/changes/netkingdom-target-2026-10-18/wp80-build-mode-r1/playwright-agent/receipt.json),
-and [profile/commands](https://forgejo.coulomb.social/coulomb/the-custodian/src/commit/17635cb0a76e5595ec06421ab7419ae889f6d731/docs/changes/netkingdom-target-2026-10-18/wp80-build-mode-r1/README.md)
-state the exact scope. Use a fresh output directory; keep the run capability
-private. Do not distribute a kubeconfig or treat this receipt as a broader identity
-acceptance. Stop the port-forward with Ctrl-C when finished. 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
-
-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.
-
-## 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` 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
-   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/capabilities/capability.registry.register.md b/registry/capabilities/capability.registry.register.md
index f873c59..05185f9 100644
--- a/registry/capabilities/capability.registry.register.md
+++ b/registry/capabilities/capability.registry.register.md
@@ -1,35 +1,34 @@
 ---
 id: capability.registry.register
-name: Capability registry and federation
-summary: Owner Markdown entries, indexes, federation hub and planning queries.
+name: Capability Registration
+summary: Register a new capability so it becomes visible for planning and implementation reuse.
 owner: reuse-surface
 status: draft
 domain: helix_forge
 tags:
-- registry
-- governance
-- meta
-- security
-- netkingdom
-- framework-reuse
+  - registry
+  - governance
+  - meta
+
 maturity:
   discovery:
     current: D3
     target: D5
     confidence: medium
-    rationale: 'Core use case UC-RS-001 is documented in specs/UseCaseCatalog.md and
-      the registry model is bounded in INTENT.md, but concrete promotion workflows
+    rationale: >
+      Core use case UC-RS-001 is documented in specs/UseCaseCatalog.md and the
+      registry model is bounded in INTENT.md, but concrete promotion workflows
       are not yet grounded in registry artifacts.
-
-      '
   availability:
-    current: A3
+    current: A4
     target: A5
     confidence: medium
-    rationale: 'Source interface assessed 2026-10-14: Owner Markdown entries, indexes,
-      federation hub and planning queries. Availability describes the delivery form,
-      not production acceptance. Discovery is not readiness; empty and stale entries
-      need evidence-led maintenance.'
+    rationale: >
+      Local registry workflows use the reuse-surface CLI (A3). Federation repo
+      registration is also available through the hosted hub HTTP API at
+      reuse.coulomb.social (POST/PATCH /v1/repos), deployed and dogfood-tested
+      on Railiance01 (REUSE-WP-0011).
+
 external_evidence:
   completeness:
     level: C2
@@ -37,162 +36,164 @@ external_evidence:
     confidence: medium
     basis: scope_vs_intent_and_consumer_expectations
     satisfied_expectations:
-    - capability IDs can be assigned in registry entries
-    - maturity vectors can be recorded at registration time
-    - CLI validate, query, and export support registry workflows
-    - promotion history can be recorded in entries
-    - federation repo registration via hosted hub API and hub CLI
+      - capability IDs can be assigned in registry entries
+      - maturity vectors can be recorded at registration time
+      - CLI validate, query, and export support registry workflows
+      - promotion history can be recorded in entries
+      - federation repo registration via hosted hub API and hub CLI
     broken_expectations:
-    - no automated duplicate detection yet
+      - no automated duplicate detection yet
     out_of_scope_expectations:
-    - hosting registered capabilities
-    - enforcing implementation architecture
+      - hosting registered capabilities
+      - enforcing implementation architecture
   reliability:
     level: R3
     name: Usable
     confidence: medium
     basis: consumer_quality_signals
     known_reliability_risks:
-    - index drift still possible if authors skip validate
-    - CLI requires local venv install
-    - sibling repos cannot register until indexes publish raw URLs
+      - index drift still possible if authors skip validate
+      - CLI requires local venv install
+      - sibling repos cannot register until indexes publish raw URLs
     evidence:
       satisfied_signals:
-      - CI validate with fail-on-warnings on every push
-      - hub register/list/federated smoke on production reuse.coulomb.social
-      - pytest coverage for hub API and federation compose paths
+        - CI validate with fail-on-warnings on every push
+        - hub register/list/federated smoke on production reuse.coulomb.social
+        - pytest coverage for hub API and federation compose paths
+
 discovery:
-  intent: Owner Markdown entries, indexes, federation hub and planning queries
+  intent: >
+    Make a capability candidate visible in the registry so humans and agents can
+    discover, assess, compare, and reuse it instead of rebuilding it in isolation.
   includes:
-  - Owner Markdown entries, indexes, federation hub and planning queries
+    - stable capability ID assignment
+    - initial discovery and availability classification
+    - explicit completeness and reliability placeholders
+    - evidence and relation references
   excludes:
-  - Discovery is not readiness; empty and stale entries need evidence-led maintenance
+    - implementing the registered capability
+    - certifying implementation quality
+    - operating runtime services for registered capabilities
   assumptions:
-  - unregistered capabilities are invisible for registry-driven reuse
-  - low-maturity entries are acceptable when evidence gaps are explicit
+    - unregistered capabilities are invisible for registry-driven reuse
+    - low-maturity entries are acceptable when evidence gaps are explicit
   use_cases:
-  - UC-RS-001
-  - 'U01: Architect composes a security deployment from explicit owner contracts and
-    case types'
-  - 'U09: Maintainer observes posture, prioritizes findings, coordinates work and
-    verifies outcomes'
-  - 'U14: Framework adopter validates and reuses selected contracts, tools and reference
-    compositions'
+    - UC-RS-001
   research_memos:
-  - specs/UseCaseCatalog.md
-  - specs/ProductRequirementsDocument.md
+    - specs/UseCaseCatalog.md
+    - specs/ProductRequirementsDocument.md
+
 availability:
-  current_level: A3
+  current_level: A4
   target_level: A5
   current_artifacts:
-  - docs/RegistryFederation.md
-  - specs/CapabilityMaturityStandard.md
+    - templates/capability-entry.template.md
+    - registry/indexes/capabilities.yaml
+    - reuse_surface/cli.py
+    - reuse_surface/hub/
+    - specs/FederationHubAPI.md
+    - https://reuse.coulomb.social
   target_artifacts:
-  - packaged container release with documented SLO
+    - packaged container release with documented SLO
   consumption_modes:
-  - library
-  - CLI
+    - informational
+    - markdown authoring
+    - cli
+    - service API
+
 relations:
   depends_on: []
   supports:
-  - capability.feature-control.evaluate
-  - capability.identity.vocabulary-canonicalize
+    - capability.feature-control.evaluate
+    - capability.identity.vocabulary-canonicalize
   related_to:
-  - capability.registry.validate
-  - capability.security.iam-tooling-suite
+    - capability.registry.validate
+
 evidence:
   documentation:
-  - docs/RegistryFederation.md
-  - specs/CapabilityMaturityStandard.md
+    - INTENT.md
+    - specs/UseCaseCatalog.md
+    - specs/FederationHubAPI.md
+    - docs/deploy/reuse-kubernetes.md
   tests:
-  - tests/test_hub.py
-  - tests/test_hub_sync.py
-  - .forgejo/workflows/ci.yml
+    - tests/test_hub.py
+    - tests/test_hub_sync.py
+    - .forgejo/workflows/ci.yml
   consumer_feedback:
-  - 'reuse-surface dogfood (REUSE-WP-0011): production hub registration and /v1/federated
-    compose succeeded on Railiance01 without write-path regressions after WP-0011
-    deploy.
-
-    '
+    - >
+        reuse-surface dogfood (REUSE-WP-0011): production hub registration and
+        /v1/federated compose succeeded on Railiance01 without write-path
+        regressions after WP-0011 deploy.
   bug_reports: []
   incidents: []
+
 consumer_guidance:
   recommended_for:
-  - Architect composes a security deployment from explicit owner contracts and case
-    types
-  - Maintainer observes posture, prioritizes findings, coordinates work and verifies
-    outcomes
-  - Framework adopter validates and reuses selected contracts, tools and reference
-    compositions
+    - making a new capability visible at D0/A0/C0/R0 with minimal friction
+    - seeding planning discussions before implementation exists
   not_recommended_for:
-  - Discovery is not readiness; empty and stale entries need evidence-led maintenance
+    - treating registry presence as proof of implementation readiness
+    - skipping explicit evidence for maturity promotion
   known_limitations:
-  - Discovery is not readiness; empty and stale entries need evidence-led maintenance
-  - 2026-10-14 architecture review estimates operational maturity separately; a registry
-    entry does not authorize execution or establish deployment.
+    - manual index updates are required after adding an entry
+    - duplicate detection is guidance-only in the MVP
+
 promotion_history:
-- date: '2026-06-14'
-  dimension: discovery
-  from: D0
-  to: D1
-  rationale: Added name, summary, and registry-first intent from INTENT.md.
-  author: reuse-surface
-- date: '2026-06-15'
-  dimension: discovery
-  from: D1
-  to: D3
-  rationale: Bounded scope with UC-RS-001 and MVP registry artifacts in specs/.
-  author: reuse-surface
-- date: '2026-06-15'
-  dimension: availability
-  from: A0
-  to: A3
-  rationale: reuse-surface CLI shipped validate, query, and export commands.
-  author: reuse-surface
-- date: '2026-06-15'
-  dimension: availability
-  from: A3
-  to: A4
-  rationale: 'Hosted federation hub live at reuse.coulomb.social; hub register/update
-    via HTTP API and reuse-surface hub CLI; production deploy on Railiance01.
-
-    '
-  author: reuse-surface
-- date: '2026-06-16'
-  dimension: reliability
-  from: R2
-  to: R3
-  rationale: 'CI gates, pytest hub/federation coverage, and production hub smoke support
-    normal registration workflows with documented limitations.
-
-    '
-  author: reuse-surface
-- date: '2026-10-14'
-  dimension: availability
-  from: A4
-  to: A3
-  rationale: Interface-form reassessment from current owner sources; no completeness/reliability
-    promotion.
-  author: codex
+  - date: "2026-06-14"
+    dimension: discovery
+    from: D0
+    to: D1
+    rationale: Added name, summary, and registry-first intent from INTENT.md.
+    author: reuse-surface
+  - date: "2026-06-15"
+    dimension: discovery
+    from: D1
+    to: D3
+    rationale: Bounded scope with UC-RS-001 and MVP registry artifacts in specs/.
+    author: reuse-surface
+  - date: "2026-06-15"
+    dimension: availability
+    from: A0
+    to: A3
+    rationale: reuse-surface CLI shipped validate, query, and export commands.
+    author: reuse-surface
+  - date: "2026-06-15"
+    dimension: availability
+    from: A3
+    to: A4
+    rationale: >
+      Hosted federation hub live at reuse.coulomb.social; hub register/update
+      via HTTP API and reuse-surface hub CLI; production deploy on Railiance01.
+    author: reuse-surface
+  - date: "2026-06-16"
+    dimension: reliability
+    from: R2
+    to: R3
+    rationale: >
+      CI gates, pytest hub/federation coverage, and production hub smoke support
+      normal registration workflows with documented limitations.
+    author: reuse-surface
 ---
 
-# Capability registry and federation
+# Capability Registration
 
-Owner Markdown entries, indexes, federation hub and planning queries.
+## Overview
 
-## Reuse boundary
+Registration is the entry point for reuse visibility. A capability that is not
+registered cannot be discovered through the registry surface, even if code or
+documentation exists elsewhere.
 
-Discovery is not readiness; empty and stale entries need evidence-led maintenance.
+## Current reuse mode
 
-## Supported use cases
+**Local registry (A3 CLI):** add Markdown entries under `registry/capabilities/`,
+update `registry/indexes/capabilities.yaml`, run `reuse-surface validate`.
 
-- U01: Architect composes a security deployment from explicit owner contracts and case types
-- U09: Maintainer observes posture, prioritizes findings, coordinates work and verifies outcomes
-- U14: Framework adopter validates and reuses selected contracts, tools and reference compositions
+**Federation registration (A4 API):** register published index URLs on the hosted
+hub (`reuse-surface hub register`, `POST /v1/repos`) for cross-repo discovery
+via `GET /v1/federated`.
 
-## Evidence and integration
+## Next promotion steps
 
-- [docs/RegistryFederation.md](../../docs/RegistryFederation.md)
-- [specs/CapabilityMaturityStandard.md](../../specs/CapabilityMaturityStandard.md)
-
-Assessment: CUST-WP-0081, 2026-10-14. Relations identify interfaces to compose; they do not certify native integration. Existing external evidence levels are retained where present. New entries use conservative C1/R0 until consumer assessment exists.
+1. Attach concrete use cases and actors to reach D5.
+2. Package hub as a versioned container release with operator SLO (A5).
+3. Record consumer expectations and broken expectations as external evidence.
\ No newline at end of file
diff --git a/registry/capabilities/capability.registry.validate.md b/registry/capabilities/capability.registry.validate.md
index 8231e35..bd68d33 100644
--- a/registry/capabilities/capability.registry.validate.md
+++ b/registry/capabilities/capability.registry.validate.md
@@ -1,31 +1,24 @@
 ---
 id: capability.registry.validate
-name: Capability registry validation
-summary: Schema, index consistency and relation checks.
+name: Registry Entry Validation
+summary: Validate capability registry entries against schema, index consistency, and relation integrity.
 owner: reuse-surface
 status: draft
 domain: helix_forge
-tags:
-- registry
-- validation
-- cli
-- security
-- netkingdom
-- framework-reuse
+tags: [registry, validation, cli]
+
 maturity:
   discovery:
     current: D4
     target: D5
     confidence: medium
-    rationale: UC-RS-023 is implemented via reuse-surface validate with schema and
-      drift checks.
+    rationale: UC-RS-023 is implemented via reuse-surface validate with schema and drift checks.
   availability:
     current: A3
     target: A3
     confidence: high
-    rationale: 'Source interface assessed 2026-10-14: Schema, index consistency and
-      relation checks. Availability describes the delivery form, not production acceptance.
-      Schema validity alone proves neither capability behavior nor hosted freshness.'
+    rationale: Available as reuse-surface validate CLI command.
+
 external_evidence:
   completeness:
     level: C3
@@ -33,102 +26,82 @@ external_evidence:
     confidence: medium
     basis: scope_vs_intent_and_consumer_expectations
     satisfied_expectations:
-    - schema validation for entry front matter
-    - index drift detection
-    - optional relation integrity checks
+      - schema validation for entry front matter
+      - index drift detection
+      - optional relation integrity checks
     broken_expectations: []
     out_of_scope_expectations:
-    - runtime validation of registered capability implementations
+      - runtime validation of registered capability implementations
   reliability:
     level: R3
     name: Usable
     confidence: medium
     basis: consumer_quality_signals
     known_reliability_risks:
-    - requires local venv install
-    - relation warnings require explicit --relations flag
+      - requires local venv install
+      - relation warnings require explicit --relations flag
     evidence:
       satisfied_signals:
-      - validate --relations --fail-on-warnings in CI
-      - tests/test_registry.py schema and drift coverage
+        - validate --relations --fail-on-warnings in CI
+        - tests/test_registry.py schema and drift coverage
+
 discovery:
-  intent: Schema, index consistency and relation checks
+  intent: Keep registry data structurally sound so agents and humans can trust discovery metadata.
   includes:
-  - Schema, index consistency and relation checks
+    - JSON Schema validation
+    - index drift warnings
+    - relation reference checks
   excludes:
-  - Schema validity alone proves neither capability behavior nor hosted freshness
+    - validating implementation code in other repos
   use_cases:
-  - UC-RS-023
-  - 'U01: Architect composes a security deployment from explicit owner contracts and
-    case types'
-  - 'U14: Framework adopter validates and reuses selected contracts, tools and reference
-    compositions'
+    - UC-RS-023
   research_memos:
-  - specs/UseCaseCatalog.md
+    - specs/UseCaseCatalog.md
+
 availability:
   current_level: A3
   target_level: A3
   current_artifacts:
-  - docs/RegistryFederation.md
-  - schemas/capability.schema.yaml
+    - reuse_surface/cli.py
+    - schemas/capability.schema.yaml
   consumption_modes:
-  - library
-  - CLI
+    - cli
+
 relations:
   depends_on:
-  - capability.registry.register
+    - capability.registry.register
   supports: []
   related_to:
-  - capability.registry.register
-  - capability.security.iam-tooling-suite
+    - capability.registry.register
+
 evidence:
   documentation:
-  - docs/RegistryFederation.md
-  - schemas/capability.schema.yaml
+    - tools/README.md
+    - .forgejo/workflows/ci.yml
   tests:
-  - tests/test_registry.py
+    - tests/test_registry.py
   consumer_feedback:
-  - 'reuse-surface CI: registry changes fail when schema validation or relation checks
-    warn with --fail-on-warnings, giving agents a dependable pre-merge gate.
+    - >
+        reuse-surface CI: registry changes fail when schema validation or relation
+        checks warn with --fail-on-warnings, giving agents a dependable pre-merge gate.
 
-    '
 consumer_guidance:
   recommended_for:
-  - Architect composes a security deployment from explicit owner contracts and case
-    types
-  - Framework adopter validates and reuses selected contracts, tools and reference
-    compositions
+    - pre-commit and CI validation of registry changes
   not_recommended_for:
-  - Schema validity alone proves neither capability behavior nor hosted freshness
+    - certifying business correctness of capability claims
   known_limitations:
-  - Schema validity alone proves neither capability behavior nor hosted freshness
-  - 2026-10-14 architecture review estimates operational maturity separately; a registry
-    entry does not authorize execution or establish deployment.
+    - warnings do not fail CI unless --fail-on-warnings is set
+
 promotion_history:
-- date: '2026-06-16'
-  dimension: reliability
-  from: R2
-  to: R3
-  rationale: CI fail-on-warnings and pytest registry coverage support dependable validation.
-  author: reuse-surface
+  - date: "2026-06-16"
+    dimension: reliability
+    from: R2
+    to: R3
+    rationale: CI fail-on-warnings and pytest registry coverage support dependable validation.
+    author: reuse-surface
 ---
 
-# Capability registry validation
+# Registry Entry Validation
 
-Schema, index consistency and relation checks.
-
-## Reuse boundary
-
-Schema validity alone proves neither capability behavior nor hosted freshness.
-
-## Supported use cases
-
-- U01: Architect composes a security deployment from explicit owner contracts and case types
-- U14: Framework adopter validates and reuses selected contracts, tools and reference compositions
-
-## Evidence and integration
-
-- [docs/RegistryFederation.md](../../docs/RegistryFederation.md)
-- [schemas/capability.schema.yaml](../../schemas/capability.schema.yaml)
-
-Assessment: CUST-WP-0081, 2026-10-14. Relations identify interfaces to compose; they do not certify native integration. Existing external evidence levels are retained where present. New entries use conservative C1/R0 until consumer assessment exists.
+Validates registry shape and consistency through the reuse-surface CLI.
\ No newline at end of file
diff --git a/registry/federation/local-repo-roster.yaml b/registry/federation/local-repo-roster.yaml
index d202475..75d8ab1 100644
--- a/registry/federation/local-repo-roster.yaml
+++ b/registry/federation/local-repo-roster.yaml
@@ -206,8 +206,8 @@ repos:
   hub_registered: true
   publish_check: pass
   batch: null
-- slug: access-engine
-  path: /home/worsch/access-engine
+- slug: flex-auth
+  path: /home/worsch/flex-auth
   status: established
   capability_count: 1
   capability_status: has
diff --git a/registry/federation/sources.yaml b/registry/federation/sources.yaml
index c0fab94..dca17c1 100644
--- a/registry/federation/sources.yaml
+++ b/registry/federation/sources.yaml
@@ -2,26 +2,20 @@ version: 1
 domain: helix_forge
 collision_policy: warn
 sources:
-- repo: access-engine
-  index: ../access-engine/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
 - repo: activity-core
-  index: ../activity-core/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/activity-core/raw/branch/main/registry/indexes/capabilities.yaml
   enabled: true
-  required: true
-  domain: infotech
+  required: false
+  domain: helix_forge
+  cache_ttl_seconds: 86400
+  auth_header: Authorization
 - repo: agentic-resources
-  index: ../agentic-resources/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/agentic-resources/raw/main/registry/indexes/capabilities.yaml
   enabled: true
-  required: true
-  domain: infotech
-- repo: approval-engine
-  index: ../approval-engine/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
+  required: false
+  domain: helix_forge
+  cache_ttl_seconds: 86400
+  auth_header: Authorization
 - repo: artifact-store
   url: https://forgejo.coulomb.social/coulomb/artifact-store/raw/main/registry/indexes/capabilities.yaml
   enabled: true
@@ -30,10 +24,12 @@ sources:
   cache_ttl_seconds: 86400
   auth_header: Authorization
 - repo: audit-core
-  index: ../audit-core/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/audit-core/raw/main/registry/indexes/capabilities.yaml
   enabled: true
-  required: true
-  domain: infotech
+  required: false
+  domain: helix_forge
+  cache_ttl_seconds: 86400
+  auth_header: Authorization
 - repo: can-you-assist
   url: https://forgejo.coulomb.social/coulomb/can-you-assist/raw/main/registry/indexes/capabilities.yaml
   enabled: true
@@ -62,13 +58,6 @@ sources:
   domain: helix_forge
   cache_ttl_seconds: 86400
   auth_header: Authorization
-- repo: commerce-canon
-  url: https://forgejo.coulomb.social/coulomb/commerce-canon/raw/main/registry/indexes/capabilities.yaml
-  enabled: true
-  required: false
-  domain: helix_forge
-  cache_ttl_seconds: 86400
-  auth_header: Authorization
 - repo: config-atlas
   url: https://forgejo.coulomb.social/coulomb/config-atlas/raw/main/registry/indexes/capabilities.yaml
   enabled: true
@@ -77,10 +66,12 @@ sources:
   cache_ttl_seconds: 86400
   auth_header: Authorization
 - repo: coordination-engine
-  index: ../coordination-engine/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/coordination-engine/raw/main/registry/indexes/capabilities.yaml
   enabled: true
-  required: true
-  domain: infotech
+  required: false
+  domain: helix_forge
+  cache_ttl_seconds: 86400
+  auth_header: Authorization
 - repo: core-hub
   url: https://forgejo.coulomb.social/coulomb/core-hub/raw/branch/main/registry/indexes/capabilities.yaml
   enabled: true
@@ -102,11 +93,6 @@ sources:
   domain: helix_forge
   cache_ttl_seconds: 86400
   auth_header: Authorization
-- repo: emergent-security
-  index: ../emergent-security/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
 - repo: evidence-anchor
   url: https://forgejo.coulomb.social/coulomb/evidence-anchor/raw/main/registry/indexes/capabilities.yaml
   enabled: true
@@ -135,26 +121,13 @@ sources:
   domain: helix_forge
   cache_ttl_seconds: 86400
   auth_header: Authorization
-- repo: fin-hub
-  index: ../fin-hub/registry/indexes/capabilities.yaml
+- repo: flex-auth
+  url: https://forgejo.coulomb.social/coulomb/flex-auth/raw/main/registry/indexes/capabilities.yaml
   enabled: true
-  required: true
-  domain: infotech
-- repo: gate-house
-  index: ../gate-house/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
-- repo: gated-executor
-  index: ../gated-executor/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
-- repo: glas-harness
-  index: ../glas-harness/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
+  required: false
+  domain: helix_forge
+  cache_ttl_seconds: 86400
+  auth_header: Authorization
 - repo: guide-board
   url: https://forgejo.coulomb.social/coulomb/guide-board/raw/main/registry/indexes/capabilities.yaml
   enabled: true
@@ -183,6 +156,13 @@ sources:
   domain: helix_forge
   cache_ttl_seconds: 86400
   auth_header: Authorization
+- repo: commerce-canon
+  url: https://forgejo.coulomb.social/coulomb/commerce-canon/raw/main/registry/indexes/capabilities.yaml
+  enabled: true
+  required: false
+  domain: helix_forge
+  cache_ttl_seconds: 86400
+  auth_header: Authorization
 - repo: ihp-railiance-probe
   url: https://forgejo.coulomb.social/coulomb/ihp-railiance-probe/raw/main/registry/indexes/capabilities.yaml
   enabled: true
@@ -191,15 +171,12 @@ sources:
   cache_ttl_seconds: 86400
   auth_header: Authorization
 - repo: info-tech-canon
-  index: ../info-tech-canon/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/info-tech-canon/raw/main/registry/indexes/capabilities.yaml
   enabled: true
-  required: true
-  domain: infotech
-- repo: informed-decision
-  index: ../informed-decision/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
+  required: false
+  domain: helix_forge
+  cache_ttl_seconds: 86400
+  auth_header: Authorization
 - repo: infospace-bench
   url: https://forgejo.coulomb.social/coulomb/infospace-bench/raw/main/registry/indexes/capabilities.yaml
   enabled: true
@@ -208,10 +185,12 @@ sources:
   cache_ttl_seconds: 86400
   auth_header: Authorization
 - repo: issue-core
-  index: ../issue-core/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/issue-core/raw/branch/main/registry/indexes/capabilities.yaml
   enabled: true
-  required: true
-  domain: infotech
+  required: false
+  domain: helix_forge
+  cache_ttl_seconds: 86400
+  auth_header: Authorization
 - repo: kaizen-agentic
   url: https://forgejo.coulomb.social/coulomb/kaizen-agentic/raw/main/registry/indexes/capabilities.yaml
   enabled: true
@@ -220,15 +199,12 @@ sources:
   cache_ttl_seconds: 86400
   auth_header: Authorization
 - repo: key-cape
-  index: ../key-cape/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/key-cape/raw/branch/main/registry/indexes/capabilities.yaml
   enabled: true
-  required: true
-  domain: infotech
-- repo: kings-guard
-  index: ../kings-guard/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
+  required: false
+  domain: helix_forge
+  cache_ttl_seconds: 86400
+  auth_header: Authorization
 - repo: kontextual-engine
   url: https://forgejo.coulomb.social/coulomb/kontextual-engine/raw/main/registry/indexes/capabilities.yaml
   enabled: true
@@ -271,16 +247,13 @@ sources:
   domain: helix_forge
   cache_ttl_seconds: 86400
   auth_header: Authorization
-- repo: maturity-engine
-  index: ../maturity-engine/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
 - repo: net-kingdom
-  index: ../net-kingdom/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/net-kingdom/raw/main/registry/indexes/capabilities.yaml
   enabled: true
-  required: true
-  domain: infotech
+  required: false
+  domain: helix_forge
+  cache_ttl_seconds: 86400
+  auth_header: Authorization
 - repo: open-cmis-tck
   url: https://forgejo.coulomb.social/coulomb/open-cmis-tck/raw/main/registry/indexes/capabilities.yaml
   enabled: true
@@ -296,10 +269,12 @@ sources:
   cache_ttl_seconds: 86400
   auth_header: Authorization
 - repo: ops-bridge
-  index: ../ops-bridge/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/ops-bridge/raw/main/registry/indexes/capabilities.yaml
   enabled: true
-  required: true
-  domain: infotech
+  required: false
+  domain: helix_forge
+  cache_ttl_seconds: 86400
+  auth_header: Authorization
 - repo: ops-hub
   url: https://forgejo.coulomb.social/coulomb/ops-hub/raw/main/registry/indexes/capabilities.yaml
   enabled: true
@@ -307,16 +282,13 @@ sources:
   domain: helix_forge
   cache_ttl_seconds: 86400
   auth_header: Authorization
-- repo: ops-mason
-  index: ../ops-mason/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
 - repo: ops-warden
-  index: ../ops-warden/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/ops-warden/raw/main/registry/indexes/capabilities.yaml
   enabled: true
-  required: true
-  domain: infotech
+  required: false
+  domain: helix_forge
+  cache_ttl_seconds: 86400
+  auth_header: Authorization
 - repo: phase-memory
   url: https://forgejo.coulomb.social/coulomb/phase-memory/raw/main/registry/indexes/capabilities.yaml
   enabled: true
@@ -324,131 +296,55 @@ sources:
   domain: helix_forge
   cache_ttl_seconds: 86400
   auth_header: Authorization
-- repo: policy-nexus
-  index: ../policy-nexus/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
-- repo: rail-knative
-  index: ../rail-knative/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
-- repo: rail-kubernetes
-  index: ../rail-kubernetes/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
 - repo: railiance-apps
-  index: ../railiance-apps/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/railiance-apps/raw/branch/main/registry/indexes/capabilities.yaml
   enabled: true
-  required: true
-  domain: infotech
-- repo: railiance-bootstrap
-  index: ../railiance-bootstrap/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
+  required: false
+  domain: helix_forge
+  cache_ttl_seconds: 86400
+  auth_header: Authorization
 - repo: railiance-cluster
-  index: ../railiance-cluster/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/railiance-cluster/raw/branch/main/registry/indexes/capabilities.yaml
   enabled: true
-  required: true
-  domain: infotech
+  required: false
+  domain: helix_forge
+  cache_ttl_seconds: 86400
+  auth_header: Authorization
 - repo: railiance-enablement
-  index: ../railiance-enablement/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/railiance-enablement/raw/branch/main/registry/indexes/capabilities.yaml
   enabled: true
-  required: true
-  domain: infotech
+  required: false
+  domain: helix_forge
+  cache_ttl_seconds: 86400
+  auth_header: Authorization
 - repo: railiance-fabric
-  index: ../railiance-fabric/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/railiance-fabric/raw/main/registry/indexes/capabilities.yaml
   enabled: true
-  required: true
-  domain: infotech
+  required: false
+  domain: helix_forge
+  cache_ttl_seconds: 86400
+  auth_header: Authorization
 - repo: railiance-forge
-  index: ../railiance-forge/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/railiance-forge/raw/main/registry/indexes/capabilities.yaml
   enabled: true
-  required: true
-  domain: infotech
+  required: false
+  domain: helix_forge
+  cache_ttl_seconds: 86400
+  auth_header: Authorization
 - repo: railiance-infra
-  index: ../railiance-infra/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/railiance-infra/raw/branch/main/registry/indexes/capabilities.yaml
   enabled: true
-  required: true
-  domain: infotech
-- repo: railiance-master
-  index: ../railiance-master/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
+  required: false
+  domain: helix_forge
+  cache_ttl_seconds: 86400
+  auth_header: Authorization
 - repo: railiance-platform
-  index: ../railiance-platform/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/railiance-platform/raw/branch/main/registry/indexes/capabilities.yaml
   enabled: true
-  required: true
-  domain: infotech
-- repo: railiance-telemetry
-  index: ../railiance-telemetry/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
-- repo: rapp-openbao
-  index: ../rapp-openbao/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
-- repo: rapp-playwright
-  index: ../rapp-playwright/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
-- repo: rapp-policy-nexus
-  index: ../rapp-policy-nexus/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
-- repo: rapp-postgres
-  index: ../rapp-postgres/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
-- repo: rapp-sbom-nexus
-  index: ../rapp-sbom-nexus/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
-- repo: rapp-telemetry
-  index: ../rapp-telemetry/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
-- repo: rapp-tenant-engine
-  index: ../rapp-tenant-engine/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
-- repo: rapp-user-engine
-  index: ../rapp-user-engine/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
-- repo: reef-railiance
-  index: ../reef-railiance/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
-- repo: rein-aharness
-  index: ../rein-aharness/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
-- repo: rein-openweights
-  index: ../rein-openweights/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
-- repo: repo-manager
-  index: ../repo-manager/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
+  required: false
+  domain: helix_forge
+  cache_ttl_seconds: 86400
+  auth_header: Authorization
 - repo: repo-scoping
   url: https://forgejo.coulomb.social/coulomb/repo-scoping/raw/main/registry/indexes/capabilities.yaml
   enabled: true
@@ -463,56 +359,14 @@ sources:
   domain: helix_forge
   cache_ttl_seconds: 86400
   auth_header: Authorization
-- repo: release-registry
-  index: ../release-registry/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
-- repo: resource-control
-  index: ../resource-control/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
 - repo: reuse-surface
-  index: ../reuse-surface/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/reuse-surface/raw/main/registry/indexes/capabilities.yaml
   enabled: true
-  required: true
-  domain: infotech
-- repo: risk-nexus
-  index: ../risk-nexus/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
-- repo: role-engine
-  index: ../role-engine/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
-- repo: runbook-tutorials
-  index: ../runbook-tutorials/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
-- repo: sand-boxer
-  index: ../sand-boxer/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
-- repo: sbom-nexus
-  index: ../sbom-nexus/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
-- repo: secrets-engine
-  index: ../secrets-engine/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
-- repo: security-canon
-  index: ../security-canon/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
+  required: false
+  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
@@ -521,10 +375,12 @@ sources:
   cache_ttl_seconds: 86400
   auth_header: Authorization
 - repo: state-hub
-  index: ../state-hub/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/state-hub/raw/branch/main/registry/indexes/capabilities.yaml
   enabled: true
-  required: true
-  domain: infotech
+  required: false
+  domain: helix_forge
+  cache_ttl_seconds: 86400
+  auth_header: Authorization
 - repo: tegwick-control
   url: https://forgejo.coulomb.social/coulomb/tegwick-control/raw/main/registry/indexes/capabilities.yaml
   enabled: true
@@ -532,21 +388,20 @@ sources:
   domain: helix_forge
   cache_ttl_seconds: 86400
   auth_header: Authorization
-- repo: tenant-engine
-  index: ../tenant-engine/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
 - repo: the-custodian
-  index: ../the-custodian/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/the-custodian/raw/main/registry/indexes/capabilities.yaml
   enabled: true
-  required: true
-  domain: infotech
+  required: false
+  domain: helix_forge
+  cache_ttl_seconds: 86400
+  auth_header: Authorization
 - repo: user-engine
-  index: ../user-engine/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/user-engine/raw/main/registry/indexes/capabilities.yaml
   enabled: true
-  required: true
-  domain: infotech
+  required: false
+  domain: helix_forge
+  cache_ttl_seconds: 86400
+  auth_header: Authorization
 - repo: vantage-point
   url: https://forgejo.coulomb.social/coulomb/vantage-point/raw/main/registry/indexes/capabilities.yaml
   enabled: true
@@ -561,16 +416,6 @@ sources:
   domain: helix_forge
   cache_ttl_seconds: 86400
   auth_header: Authorization
-- repo: web-fetcher
-  index: ../web-fetcher/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
-- repo: whitehat-security
-  index: ../whitehat-security/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
 - repo: whynot-control
   url: https://forgejo.coulomb.social/coulomb/whynot-control/raw/main/registry/indexes/capabilities.yaml
   enabled: true
@@ -585,8 +430,3 @@ sources:
   domain: helix_forge
   cache_ttl_seconds: 86400
   auth_header: Authorization
-- repo: zone-engine
-  index: ../zone-engine/registry/indexes/capabilities.yaml
-  enabled: true
-  required: true
-  domain: infotech
diff --git a/registry/indexes/capabilities.yaml b/registry/indexes/capabilities.yaml
index 4856d8c..0cbda4e 100644
--- a/registry/indexes/capabilities.yaml
+++ b/registry/indexes/capabilities.yaml
@@ -1,75 +1,26 @@
+# Manually maintained capability index for humans and agents.
 version: 1
-updated: '2026-10-18'
+updated: "2026-06-16"
 domain: helix_forge
 capabilities:
-- id: capability.infotech.headless-browser
-  name: Headless Browser Automation
-  summary: 'Headless browser automation, screenshots and keyboard trials through rapp-playwright
-    0.1.0 (Playwright 1.64.0, Chromium 156.0.8078.4). Human and coding-agent managed
-    trials passed on 2026-10-18 through the existing supervised workstation connection.
-    Use the documented kubectl port-forward to 127.0.0.1:18081, then the pinned standalone
-    Python client preflight/trial commands. No local browser installation. Independent
-    per-caller managed admission remains pending; availability stays A5. 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
-  - cli
-  - service API
-  - container
-- id: capability.registry.register
-  name: Capability registry and federation
-  summary: Owner Markdown entries, indexes, federation hub and planning queries.
-  domain: helix_forge
-  status: draft
-  owner: reuse-surface
-  tags:
-  - registry
-  - governance
-  - meta
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A3 / C2 / R3
-  path: registry/capabilities/capability.registry.register.md
-  consumption_modes:
-  - library
-  - CLI
-- id: capability.registry.validate
-  name: Capability registry validation
-  summary: Schema, index consistency and relation checks.
-  domain: helix_forge
-  status: draft
-  owner: reuse-surface
-  tags:
-  - registry
-  - validation
-  - cli
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D4 / A3 / C3 / R3
-  path: registry/capabilities/capability.registry.validate.md
-  consumption_modes:
-  - library
-  - CLI
+  - id: capability.registry.register
+    name: Capability Registration
+    summary: Register a new capability so it becomes visible for planning and implementation reuse.
+    vector: D3 / A4 / C2 / R3
+    domain: helix_forge
+    status: draft
+    owner: reuse-surface
+    path: registry/capabilities/capability.registry.register.md
+    tags: [registry, governance, meta]
+    consumption_modes: [informational, markdown authoring, cli, service API]
+
+  - id: capability.registry.validate
+    name: Registry Entry Validation
+    summary: Validate capability registry entries against schema, index consistency, and relation integrity.
+    vector: D4 / A3 / C3 / R3
+    domain: helix_forge
+    status: draft
+    owner: reuse-surface
+    path: registry/capabilities/capability.registry.validate.md
+    tags: [registry, validation, cli]
+    consumption_modes: [cli]
\ No newline at end of file
diff --git a/registry/indexes/federated.yaml b/registry/indexes/federated.yaml
index a35e963..77077e3 100644
--- a/registry/indexes/federated.yaml
+++ b/registry/indexes/federated.yaml
@@ -1,29 +1,26 @@
 # Composed federated capability index. Regenerate with:
 # reuse-surface federation compose
 version: 1
-updated: '2026-10-21'
+updated: '2026-09-06'
 domain: helix_forge
 collision_policy: warn
 sources:
-- repo: access-engine
-  count: 1
-  index: ../access-engine/registry/indexes/capabilities.yaml
 - repo: activity-core
   count: 1
-  index: ../activity-core/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/activity-core/raw/branch/main/registry/indexes/capabilities.yaml
+  cache: registry/federation/cache/activity-core.yaml
 - repo: agentic-resources
-  count: 1
-  index: ../agentic-resources/registry/indexes/capabilities.yaml
-- repo: approval-engine
-  count: 1
-  index: ../approval-engine/registry/indexes/capabilities.yaml
+  count: 0
+  url: https://forgejo.coulomb.social/coulomb/agentic-resources/raw/main/registry/indexes/capabilities.yaml
+  cache: registry/federation/cache/agentic-resources.yaml
 - repo: artifact-store
   count: 1
   url: https://forgejo.coulomb.social/coulomb/artifact-store/raw/main/registry/indexes/capabilities.yaml
   cache: registry/federation/cache/artifact-store.yaml
 - repo: audit-core
   count: 1
-  index: ../audit-core/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/audit-core/raw/main/registry/indexes/capabilities.yaml
+  cache: registry/federation/cache/audit-core.yaml
 - repo: can-you-assist
   count: 1
   url: https://forgejo.coulomb.social/coulomb/can-you-assist/raw/main/registry/indexes/capabilities.yaml
@@ -49,8 +46,9 @@ sources:
   url: https://forgejo.coulomb.social/coulomb/config-atlas/raw/main/registry/indexes/capabilities.yaml
   cache: registry/federation/cache/config-atlas.yaml
 - repo: coordination-engine
-  count: 1
-  index: ../coordination-engine/registry/indexes/capabilities.yaml
+  count: 0
+  url: https://forgejo.coulomb.social/coulomb/coordination-engine/raw/main/registry/indexes/capabilities.yaml
+  cache: registry/federation/cache/coordination-engine.yaml
 - repo: core-hub
   count: 1
   url: https://forgejo.coulomb.social/coulomb/core-hub/raw/branch/main/registry/indexes/capabilities.yaml
@@ -63,15 +61,12 @@ sources:
   count: 1
   url: https://forgejo.coulomb.social/coulomb/email-connect/raw/main/registry/indexes/capabilities.yaml
   cache: registry/federation/cache/email-connect.yaml
-- repo: emergent-security
-  count: 1
-  index: ../emergent-security/registry/indexes/capabilities.yaml
 - repo: evidence-anchor
   count: 0
   url: https://forgejo.coulomb.social/coulomb/evidence-anchor/raw/main/registry/indexes/capabilities.yaml
   cache: registry/federation/cache/evidence-anchor.yaml
 - repo: evidence-binder
-  count: 2
+  count: 0
   url: https://forgejo.coulomb.social/coulomb/evidence-binder/raw/main/registry/indexes/capabilities.yaml
   cache: registry/federation/cache/evidence-binder.yaml
 - repo: evidence-source
@@ -82,18 +77,10 @@ sources:
   count: 3
   url: https://forgejo.coulomb.social/coulomb/feature-control/raw/main/registry/indexes/capabilities.yaml
   cache: registry/federation/cache/feature-control.yaml
-- repo: fin-hub
+- repo: flex-auth
   count: 1
-  index: ../fin-hub/registry/indexes/capabilities.yaml
-- repo: gate-house
-  count: 1
-  index: ../gate-house/registry/indexes/capabilities.yaml
-- repo: gated-executor
-  count: 1
-  index: ../gated-executor/registry/indexes/capabilities.yaml
-- repo: glas-harness
-  count: 1
-  index: ../glas-harness/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/flex-auth/raw/main/registry/indexes/capabilities.yaml
+  cache: registry/federation/cache/flex-auth.yaml
 - repo: guide-board
   count: 1
   url: https://forgejo.coulomb.social/coulomb/guide-board/raw/main/registry/indexes/capabilities.yaml
@@ -116,27 +103,24 @@ sources:
   cache: registry/federation/cache/ihp-railiance-probe.yaml
 - repo: info-tech-canon
   count: 1
-  index: ../info-tech-canon/registry/indexes/capabilities.yaml
-- repo: informed-decision
-  count: 1
-  index: ../informed-decision/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/info-tech-canon/raw/main/registry/indexes/capabilities.yaml
+  cache: registry/federation/cache/info-tech-canon.yaml
 - repo: infospace-bench
   count: 1
   url: https://forgejo.coulomb.social/coulomb/infospace-bench/raw/main/registry/indexes/capabilities.yaml
   cache: registry/federation/cache/infospace-bench.yaml
 - repo: issue-core
   count: 1
-  index: ../issue-core/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/issue-core/raw/branch/main/registry/indexes/capabilities.yaml
+  cache: registry/federation/cache/issue-core.yaml
 - repo: kaizen-agentic
   count: 1
   url: https://forgejo.coulomb.social/coulomb/kaizen-agentic/raw/main/registry/indexes/capabilities.yaml
   cache: registry/federation/cache/kaizen-agentic.yaml
 - repo: key-cape
   count: 1
-  index: ../key-cape/registry/indexes/capabilities.yaml
-- repo: kings-guard
-  count: 1
-  index: ../kings-guard/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/key-cape/raw/branch/main/registry/indexes/capabilities.yaml
+  cache: registry/federation/cache/key-cape.yaml
 - repo: kontextual-engine
   count: 1
   url: https://forgejo.coulomb.social/coulomb/kontextual-engine/raw/main/registry/indexes/capabilities.yaml
@@ -161,12 +145,10 @@ sources:
   count: 1
   url: https://forgejo.coulomb.social/coulomb/markitect-tool/raw/main/registry/indexes/capabilities.yaml
   cache: registry/federation/cache/markitect-tool.yaml
-- repo: maturity-engine
-  count: 1
-  index: ../maturity-engine/registry/indexes/capabilities.yaml
 - repo: net-kingdom
-  count: 6
-  index: ../net-kingdom/registry/indexes/capabilities.yaml
+  count: 1
+  url: https://forgejo.coulomb.social/coulomb/net-kingdom/raw/main/registry/indexes/capabilities.yaml
+  cache: registry/federation/cache/net-kingdom.yaml
 - repo: open-cmis-tck
   count: 1
   url: https://forgejo.coulomb.social/coulomb/open-cmis-tck/raw/main/registry/indexes/capabilities.yaml
@@ -177,96 +159,48 @@ sources:
   cache: registry/federation/cache/open-reuse.yaml
 - repo: ops-bridge
   count: 1
-  index: ../ops-bridge/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/ops-bridge/raw/main/registry/indexes/capabilities.yaml
+  cache: registry/federation/cache/ops-bridge.yaml
 - repo: ops-hub
-  count: 1
+  count: 0
   url: https://forgejo.coulomb.social/coulomb/ops-hub/raw/main/registry/indexes/capabilities.yaml
   cache: registry/federation/cache/ops-hub.yaml
-- repo: ops-mason
-  count: 1
-  index: ../ops-mason/registry/indexes/capabilities.yaml
 - repo: ops-warden
-  count: 3
-  index: ../ops-warden/registry/indexes/capabilities.yaml
+  count: 1
+  url: https://forgejo.coulomb.social/coulomb/ops-warden/raw/main/registry/indexes/capabilities.yaml
+  cache: registry/federation/cache/ops-warden.yaml
 - repo: phase-memory
   count: 1
   url: https://forgejo.coulomb.social/coulomb/phase-memory/raw/main/registry/indexes/capabilities.yaml
   cache: registry/federation/cache/phase-memory.yaml
-- repo: policy-nexus
-  count: 1
-  index: ../policy-nexus/registry/indexes/capabilities.yaml
-- repo: rail-knative
-  count: 1
-  index: ../rail-knative/registry/indexes/capabilities.yaml
-- repo: rail-kubernetes
-  count: 1
-  index: ../rail-kubernetes/registry/indexes/capabilities.yaml
 - repo: railiance-apps
   count: 1
-  index: ../railiance-apps/registry/indexes/capabilities.yaml
-- repo: railiance-bootstrap
-  count: 1
-  index: ../railiance-bootstrap/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/railiance-apps/raw/branch/main/registry/indexes/capabilities.yaml
+  cache: registry/federation/cache/railiance-apps.yaml
 - repo: railiance-cluster
   count: 1
-  index: ../railiance-cluster/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/railiance-cluster/raw/branch/main/registry/indexes/capabilities.yaml
+  cache: registry/federation/cache/railiance-cluster.yaml
 - repo: railiance-enablement
   count: 1
-  index: ../railiance-enablement/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/railiance-enablement/raw/branch/main/registry/indexes/capabilities.yaml
+  cache: registry/federation/cache/railiance-enablement.yaml
 - repo: railiance-fabric
   count: 1
-  index: ../railiance-fabric/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/railiance-fabric/raw/main/registry/indexes/capabilities.yaml
+  cache: registry/federation/cache/railiance-fabric.yaml
 - repo: railiance-forge
-  count: 2
-  index: ../railiance-forge/registry/indexes/capabilities.yaml
+  count: 1
+  url: https://forgejo.coulomb.social/coulomb/railiance-forge/raw/main/registry/indexes/capabilities.yaml
+  cache: registry/federation/cache/railiance-forge.yaml
 - repo: railiance-infra
   count: 1
-  index: ../railiance-infra/registry/indexes/capabilities.yaml
-- repo: railiance-master
-  count: 1
-  index: ../railiance-master/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/railiance-infra/raw/branch/main/registry/indexes/capabilities.yaml
+  cache: registry/federation/cache/railiance-infra.yaml
 - repo: railiance-platform
   count: 1
-  index: ../railiance-platform/registry/indexes/capabilities.yaml
-- repo: railiance-telemetry
-  count: 1
-  index: ../railiance-telemetry/registry/indexes/capabilities.yaml
-- repo: rapp-openbao
-  count: 1
-  index: ../rapp-openbao/registry/indexes/capabilities.yaml
-- repo: rapp-playwright
-  count: 1
-  index: ../rapp-playwright/registry/indexes/capabilities.yaml
-- repo: rapp-policy-nexus
-  count: 1
-  index: ../rapp-policy-nexus/registry/indexes/capabilities.yaml
-- repo: rapp-postgres
-  count: 1
-  index: ../rapp-postgres/registry/indexes/capabilities.yaml
-- repo: rapp-sbom-nexus
-  count: 1
-  index: ../rapp-sbom-nexus/registry/indexes/capabilities.yaml
-- repo: rapp-telemetry
-  count: 1
-  index: ../rapp-telemetry/registry/indexes/capabilities.yaml
-- repo: rapp-tenant-engine
-  count: 1
-  index: ../rapp-tenant-engine/registry/indexes/capabilities.yaml
-- repo: rapp-user-engine
-  count: 1
-  index: ../rapp-user-engine/registry/indexes/capabilities.yaml
-- repo: reef-railiance
-  count: 1
-  index: ../reef-railiance/registry/indexes/capabilities.yaml
-- repo: rein-aharness
-  count: 1
-  index: ../rein-aharness/registry/indexes/capabilities.yaml
-- repo: rein-openweights
-  count: 1
-  index: ../rein-openweights/registry/indexes/capabilities.yaml
-- repo: repo-manager
-  count: 1
-  index: ../repo-manager/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/railiance-platform/raw/branch/main/registry/indexes/capabilities.yaml
+  cache: registry/federation/cache/railiance-platform.yaml
 - repo: repo-scoping
   count: 1
   url: https://forgejo.coulomb.social/coulomb/repo-scoping/raw/main/registry/indexes/capabilities.yaml
@@ -275,56 +209,30 @@ sources:
   count: 1
   url: https://forgejo.coulomb.social/coulomb/repo-seed/raw/main/registry/indexes/capabilities.yaml
   cache: registry/federation/cache/repo-seed.yaml
-- repo: release-registry
-  count: 1
-  index: ../release-registry/registry/indexes/capabilities.yaml
-- repo: resource-control
-  count: 1
-  index: ../resource-control/registry/indexes/capabilities.yaml
 - repo: reuse-surface
-  count: 3
-  index: ../reuse-surface/registry/indexes/capabilities.yaml
-- repo: risk-nexus
-  count: 1
-  index: ../risk-nexus/registry/indexes/capabilities.yaml
-- repo: role-engine
-  count: 1
-  index: ../role-engine/registry/indexes/capabilities.yaml
-- repo: runbook-tutorials
-  count: 1
-  index: ../runbook-tutorials/registry/indexes/capabilities.yaml
-- repo: sand-boxer
-  count: 1
-  index: ../sand-boxer/registry/indexes/capabilities.yaml
-- repo: sbom-nexus
-  count: 1
-  index: ../sbom-nexus/registry/indexes/capabilities.yaml
-- repo: secrets-engine
-  count: 1
-  index: ../secrets-engine/registry/indexes/capabilities.yaml
-- repo: security-canon
-  count: 1
-  index: ../security-canon/registry/indexes/capabilities.yaml
+  count: 2
+  url: https://forgejo.coulomb.social/coulomb/reuse-surface/raw/main/registry/indexes/capabilities.yaml
+  cache: registry/federation/cache/reuse-surface.yaml
 - repo: shard-wiki
   count: 8
   url: https://forgejo.coulomb.social/coulomb/shard-wiki/raw/main/registry/indexes/capabilities.yaml
   cache: registry/federation/cache/shard-wiki.yaml
 - repo: state-hub
   count: 2
-  index: ../state-hub/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/state-hub/raw/branch/main/registry/indexes/capabilities.yaml
+  cache: registry/federation/cache/state-hub.yaml
 - repo: tegwick-control
   count: 0
   url: https://forgejo.coulomb.social/coulomb/tegwick-control/raw/main/registry/indexes/capabilities.yaml
   cache: registry/federation/cache/tegwick-control.yaml
-- repo: tenant-engine
-  count: 1
-  index: ../tenant-engine/registry/indexes/capabilities.yaml
 - repo: the-custodian
   count: 1
-  index: ../the-custodian/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/the-custodian/raw/main/registry/indexes/capabilities.yaml
+  cache: registry/federation/cache/the-custodian.yaml
 - repo: user-engine
   count: 1
-  index: ../user-engine/registry/indexes/capabilities.yaml
+  url: https://forgejo.coulomb.social/coulomb/user-engine/raw/main/registry/indexes/capabilities.yaml
+  cache: registry/federation/cache/user-engine.yaml
 - repo: vantage-point
   count: 1
   url: https://forgejo.coulomb.social/coulomb/vantage-point/raw/main/registry/indexes/capabilities.yaml
@@ -333,12 +241,6 @@ sources:
   count: 1
   url: https://forgejo.coulomb.social/coulomb/vergabe-teilnahme/raw/main/registry/indexes/capabilities.yaml
   cache: registry/federation/cache/vergabe-teilnahme.yaml
-- repo: web-fetcher
-  count: 1
-  index: ../web-fetcher/registry/indexes/capabilities.yaml
-- repo: whitehat-security
-  count: 1
-  index: ../whitehat-security/registry/indexes/capabilities.yaml
 - repo: whynot-control
   count: 0
   url: https://forgejo.coulomb.social/coulomb/whynot-control/raw/main/registry/indexes/capabilities.yaml
@@ -347,31 +249,25 @@ sources:
   count: 1
   url: https://forgejo.coulomb.social/coulomb/whynot-design/raw/main/registry/indexes/capabilities.yaml
   cache: registry/federation/cache/whynot-design.yaml
-- repo: zone-engine
-  count: 1
-  index: ../zone-engine/registry/indexes/capabilities.yaml
 capabilities:
 - id: capability.activity.event-coordinate
-  name: Durable automation and bounded operations
-  summary: Temporal/NATS/webhook/manual trigger, validated definitions and evidence/runtime
-    sinks.
+  name: Organizational Event Coordination
+  summary: Coordinate structured responses to cross-domain events through activity
+    workflows and automation.
+  vector: D3 / A1 / C1 / R0
   domain: helix_forge
   status: draft
   owner: activity-core
+  path: registry/capabilities/capability.activity.event-coordinate.md
   tags:
   - activity
   - coordination
   - automation
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A4 / C1 / R0
-  path: registry/capabilities/capability.activity.event-coordinate.md
   consumption_modes:
-  - HTTP API
-  - source
+  - informational
   source_repo: activity-core
-  source_index: ../activity-core/registry/indexes/capabilities.yaml
+  source_url: https://forgejo.coulomb.social/coulomb/activity-core/raw/branch/main/registry/indexes/capabilities.yaml
+  source_index: registry/federation/cache/activity-core.yaml
 - id: capability.agents.cli-assistant
   name: Console-Native LLM Assistant (cya)
   summary: Console-native, backend-agnostic assistant CLI that expresses user intent
@@ -392,25 +288,25 @@ capabilities:
   source_url: https://forgejo.coulomb.social/coulomb/can-you-assist/raw/main/registry/indexes/capabilities.yaml
   source_index: registry/federation/cache/can-you-assist.yaml
 - id: capability.agents.custodian-runtime-tooling
-  name: Generic agent runtime and repository tooling
-  summary: Agent runtime modules and repository classification tooling.
+  name: Custodian Runtime And Repo-Classification Tooling
+  summary: 'Generic tooling from The Custodian''s runtime and ecosystem-management
+    surface: an agent runtime framework (context, actions, tool adapters, policies)
+    and repo-classification batch tooling used across the workstation''s 61 repos.'
+  vector: D2 / A1 / C1 / R0
   domain: custodian
   status: draft
   owner: the-custodian
+  path: registry/capabilities/capability.agents.custodian-runtime-tooling.md
   tags:
   - agents
   - runtime
   - classification
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D2 / A2 / C1 / R0
-  path: registry/capabilities/capability.agents.custodian-runtime-tooling.md
   consumption_modes:
-  - CLI
-  - source
+  - library import (runtime/)
+  - cli (tools/ scripts)
   source_repo: the-custodian
-  source_index: ../the-custodian/registry/indexes/capabilities.yaml
+  source_url: https://forgejo.coulomb.social/coulomb/the-custodian/raw/main/registry/indexes/capabilities.yaml
+  source_index: registry/federation/cache/the-custodian.yaml
 - id: capability.agents.kaizen-framework
   name: Kaizen Agentic Framework
   summary: AI agency framework providing 20 deployable agent instruction sets, project
@@ -455,23 +351,6 @@ capabilities:
   source_repo: llm-connect
   source_url: https://forgejo.coulomb.social/coulomb/llm-connect/raw/main/registry/indexes/capabilities.yaml
   source_index: registry/federation/cache/llm-connect.yaml
-- id: capability.agents.performance-learning
-  name: Agent performance learning
-  summary: Capture sessions, curate patterns, distribute lessons and measure outcomes.
-  domain: infotech
-  status: draft
-  owner: agentic-resources
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.agents.performance-learning.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: agentic-resources
-  source_index: ../agentic-resources/registry/indexes/capabilities.yaml
 - id: capability.agents.repo-scoping-service
   name: Repository Scoping Service
   summary: Maps repositories from usefulness to implementation (Ability -> Capability
@@ -494,42 +373,44 @@ capabilities:
   source_url: https://forgejo.coulomb.social/coulomb/repo-scoping/raw/main/registry/indexes/capabilities.yaml
   source_index: registry/federation/cache/repo-scoping.yaml
 - id: capability.audit.event-retain
-  name: Independent audit custody
-  summary: Tenant-aware event ingestion, chain integrity, heartbeat and reconciliation.
+  name: Audit Event Retention
+  summary: Collect, normalize, retain, and search audit events with integrity evidence
+    across tenants.
+  joins: operations.audit
+  provision: data/capability/audit-core-operational.json
+  vector: D4 provision / A4 / C3 / R2
   domain: infotech
-  status: draft
+  status: production
   owner: audit-core
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A4 / C3 / R2
   path: registry/capabilities/capability.audit.event-retain.md
+  tags:
+  - audit
+  - retention
+  - compliance
   consumption_modes:
-  - HTTP API
-  - source
+  - http ingest
+  - source module
   source_repo: audit-core
-  source_index: ../audit-core/registry/indexes/capabilities.yaml
+  source_url: https://forgejo.coulomb.social/coulomb/audit-core/raw/main/registry/indexes/capabilities.yaml
+  source_index: registry/federation/cache/audit-core.yaml
 - id: capability.authorization.policy-evaluate
-  name: Policy evaluation and decision evidence
-  summary: Check, batch, list-allowed, explain, binding, lifetime and decision records.
+  name: Authorization Policy Evaluation
+  summary: Evaluate access decisions from policy-as-code rules for subjects, resources,
+    and actions.
+  vector: D4 / A2 / C2 / R1
   domain: helix_forge
   status: draft
-  owner: access-engine
+  owner: flex-auth
+  path: registry/capabilities/capability.authorization.policy-evaluate.md
   tags:
   - authorization
   - policy
   - flex-auth
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D4 / A4 / C2 / R1
-  path: registry/capabilities/capability.authorization.policy-evaluate.md
   consumption_modes:
-  - HTTP API
-  - source
-  source_repo: access-engine
-  source_index: ../access-engine/registry/indexes/capabilities.yaml
+  - source module
+  source_repo: flex-auth
+  source_url: https://forgejo.coulomb.social/coulomb/flex-auth/raw/main/registry/indexes/capabilities.yaml
+  source_index: registry/federation/cache/flex-auth.yaml
 - id: capability.cmis.tck
   name: OpenCMIS Conformance-Preparation Extension
   summary: CMIS conformance-preparation extension for guide-board, keeping CMIS-specific
@@ -687,23 +568,6 @@ capabilities:
   source_repo: markitect-tool
   source_url: https://forgejo.coulomb.social/coulomb/markitect-tool/raw/main/registry/indexes/capabilities.yaml
   source_index: registry/federation/cache/markitect-tool.yaml
-- id: capability.coordination.cross-owner-work
-  name: Cross-owner coordination lifecycle
-  summary: Observation, lease, wake-up, checkpoint and receipt contracts/runtime.
-  domain: infotech
-  status: draft
-  owner: coordination-engine
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.coordination.cross-owner-work.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: coordination-engine
-  source_index: ../coordination-engine/registry/indexes/capabilities.yaml
 - id: capability.design.whynot-system
   name: Whynot Design System
   summary: 'Framework-agnostic visual language for whynot prototype/market-signal
@@ -725,125 +589,6 @@ capabilities:
   source_repo: whynot-design
   source_url: https://forgejo.coulomb.social/coulomb/whynot-design/raw/main/registry/indexes/capabilities.yaml
   source_index: registry/federation/cache/whynot-design.yaml
-- id: capability.evidence.binding
-  name: Evidence-to-Target Binding
-  summary: Links evidence items to structured targets with relation, status, and confidence
-    metadata, bidirectional queries, active-state coordination, and canonical engine
-    events.
-  vector: D3 / A2 / C3 / R3
-  domain: infotech
-  status: draft
-  owner: evidence-binder
-  path: registry/capabilities/capability.evidence.binding.md
-  tags:
-  - evidence
-  - binding
-  - evidence-link
-  - form-field
-  - citation-evidence
-  consumption_modes:
-  - source module
-  - React provider
-  source_repo: evidence-binder
-  source_url: https://forgejo.coulomb.social/coulomb/evidence-binder/raw/main/registry/indexes/capabilities.yaml
-  source_index: registry/federation/cache/evidence-binder.yaml
-- id: capability.evidence.rect-registry
-  name: Visual-Guide Rect Registry
-  summary: Coordinates field, evidence-card, and highlight rectangles from independent
-    renderers so an SVG overlay can draw the active visual guide without polling.
-  vector: D3 / A2 / C3 / R3
-  domain: infotech
-  status: draft
-  owner: evidence-binder
-  path: registry/capabilities/capability.evidence.rect-registry.md
-  tags:
-  - rect-registry
-  - visual-guide
-  - overlay
-  - active-state
-  - citation-evidence
-  consumption_modes:
-  - source module
-  - React component
-  source_repo: evidence-binder
-  source_url: https://forgejo.coulomb.social/coulomb/evidence-binder/raw/main/registry/indexes/capabilities.yaml
-  source_index: registry/federation/cache/evidence-binder.yaml
-- id: capability.execution.openweight-rein
-  name: Bounded open-weight agent execution
-  summary: Tool loop, path guards, turn/budget limits and verified-commit result.
-  domain: infotech
-  status: draft
-  owner: rein-openweights
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.execution.openweight-rein.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: rein-openweights
-  source_index: ../rein-openweights/registry/indexes/capabilities.yaml
-- id: capability.execution.profile-harness
-  name: Profile-bound agent execution lifecycle
-  summary: Typed execution requests, profile/rein resolution, sandbox and cleanup
-    orchestration.
-  domain: infotech
-  status: draft
-  owner: glas-harness
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A3 / C1 / R0
-  path: registry/capabilities/capability.execution.profile-harness.md
-  consumption_modes:
-  - library
-  - CLI
-  source_repo: glas-harness
-  source_index: ../glas-harness/registry/indexes/capabilities.yaml
-- id: capability.execution.sandbox-provision
-  name: Sandbox establishment and lifecycle
-  summary: Profiles, extensions, provision, checkpoints, TTL teardown and telemetry.
-  domain: infotech
-  status: draft
-  owner: sand-boxer
-  tags:
-  - sandbox
-  - isolation
-  - provision
-  - e2e
-  - agentic
-  - execution
-  - profile
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D5 / A5 / C5 / R0
-  path: registry/capabilities/execution.sandbox-provision.md
-  consumption_modes:
-  - containerized service
-  - CLI
-  source_repo: sand-boxer
-  source_index: ../sand-boxer/registry/indexes/capabilities.yaml
-- id: capability.execution.scheduled-agent-rein
-  name: Scheduled agent intake and harness routing
-  summary: Activity Core lease claim/heartbeat and Glas profile execution.
-  domain: infotech
-  status: draft
-  owner: rein-aharness
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.execution.scheduled-agent-rein.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: rein-aharness
-  source_index: ../rein-aharness/registry/indexes/capabilities.yaml
 - id: capability.feature-control.evaluate
   name: Feature Availability Evaluation
   summary: Evaluate whether a feature is active, hidden, disabled, or unavailable
@@ -899,23 +644,6 @@ capabilities:
   source_repo: feature-control
   source_url: https://forgejo.coulomb.social/coulomb/feature-control/raw/main/registry/indexes/capabilities.yaml
   source_index: registry/federation/cache/feature-control.yaml
-- id: capability.finance.security-budget-evidence
-  name: Budget and cost evidence for security operations
-  summary: Budget, commitment, spend attribution and planning-evidence consumption.
-  domain: infotech
-  status: draft
-  owner: fin-hub
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A4 / C1 / R0
-  path: registry/capabilities/capability.finance.security-budget-evidence.md
-  consumption_modes:
-  - HTTP API
-  - source
-  source_repo: fin-hub
-  source_index: ../fin-hub/registry/indexes/capabilities.yaml
 - id: capability.graph.nbgm-spec
   name: Network-Based Graph Model (NBGM) Specification
   summary: Generic system and versioned protocol specification for exploring dependency
@@ -955,24 +683,25 @@ capabilities:
   source_url: https://forgejo.coulomb.social/coulomb/human-resources/raw/main/registry/indexes/capabilities.yaml
   source_index: registry/federation/cache/human-resources.yaml
 - id: capability.iam.key-cape
-  name: OIDC identity and assurance
-  summary: OIDC code with PKCE, service tokens, JWKS, MFA and caller CLI.
+  name: KeyCape Lightweight IAM (NetKingdom Profile)
+  summary: Lightweight-mode implementation of the NetKingdom IAM Profile (versioned
+    OIDC/PKCE contract), orchestrating Authelia, LLDAP, and privacyIDEA so applications
+    integrate against the profile, not against implementation internals.
+  vector: D4 / A2 / C2 / R1
   domain: infotech
   status: draft
   owner: key-cape
+  path: registry/capabilities/capability.iam.key-cape.md
   tags:
   - iam
   - oidc
   - netkingdom
   - security
-  - framework-reuse
-  vector: D4 / A4 / C2 / R1
-  path: registry/capabilities/capability.iam.key-cape.md
   consumption_modes:
-  - HTTP API
-  - source
+  - service (self-hosted deployment)
   source_repo: key-cape
-  source_index: ../key-cape/registry/indexes/capabilities.yaml
+  source_url: https://forgejo.coulomb.social/coulomb/key-cape/raw/branch/main/registry/indexes/capabilities.yaml
+  source_index: registry/federation/cache/key-cape.yaml
 - id: capability.identity.subject-resolution
   name: Identity Subject Resolution
   summary: Resolve who or what is acting by mapping principals, accounts, actors,
@@ -991,44 +720,25 @@ capabilities:
   source_repo: commerce-canon
   source_url: https://forgejo.coulomb.social/coulomb/commerce-canon/raw/main/registry/indexes/capabilities.yaml
   source_index: registry/federation/cache/commerce-canon.yaml
-- id: capability.identity.tenant-facts
-  name: Tenant lifecycle and guardrail facts
-  summary: Cache-read, live-lookup and write APIs; PostgreSQL lifecycle store.
-  domain: infotech
-  status: draft
-  owner: tenant-engine
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A4 / C1 / R0
-  path: registry/capabilities/capability.identity.tenant-facts.md
-  consumption_modes:
-  - HTTP API
-  - source
-  source_repo: tenant-engine
-  source_index: ../tenant-engine/registry/indexes/capabilities.yaml
 - id: capability.identity.user-engine
-  name: User lifecycle and account journeys
-  summary: Accounts, identity links, membership, MFA and recovery portal, advisory
-    catalog.
+  name: Headless Multi-Tenant User Engine
+  summary: Headless, multi-application, multi-tenant user management engine covering
+    registration, identity/factor models, entitlement claims, hats/realms/services/assets
+    access profiles, and onboarding journeys.
+  vector: D4 / A1 / C2 / R0
   domain: communication
   status: draft
   owner: user-engine
+  path: registry/capabilities/capability.identity.user-engine.md
   tags:
   - identity
   - user-management
   - multi-tenant
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D4 / A4 / C2 / R0
-  path: registry/capabilities/capability.identity.user-engine.md
   consumption_modes:
-  - HTTP API
-  - source
+  - library import
   source_repo: user-engine
-  source_index: ../user-engine/registry/indexes/capabilities.yaml
+  source_url: https://forgejo.coulomb.social/coulomb/user-engine/raw/main/registry/indexes/capabilities.yaml
+  source_index: registry/federation/cache/user-engine.yaml
 - id: capability.identity.vocabulary-canonicalize
   name: Identity Vocabulary Canonicalization
   summary: Define an implementation-neutral vocabulary for identity-related concepts
@@ -1068,25 +778,25 @@ capabilities:
   source_url: https://forgejo.coulomb.social/coulomb/artifact-store/raw/main/registry/indexes/capabilities.yaml
   source_index: registry/federation/cache/artifact-store.yaml
 - id: capability.infotech.canon-service
-  name: Shared semantic contracts and validation
-  summary: Markdown canon with library, CLI and read-only API.
+  name: InfoTechCanon Service Surface
+  summary: Concrete service surface (CLI, importable functions, read-only local HTTP
+    API) over the InfoTechCanon information-processing infospace, backed by infospace-bench.
+  vector: D2 / A2 / C1 / R0
   domain: infotech
   status: draft
   owner: info-tech-canon
+  path: registry/capabilities/capability.infotech.canon-service.md
   tags:
   - canon
   - infospace
   - service
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D2 / A4 / C1 / R0
-  path: registry/capabilities/capability.infotech.canon-service.md
   consumption_modes:
-  - HTTP API
-  - source
+  - cli
+  - library import
+  - http api (read-only, local)
   source_repo: info-tech-canon
-  source_index: ../info-tech-canon/registry/indexes/capabilities.yaml
+  source_url: https://forgejo.coulomb.social/coulomb/info-tech-canon/raw/main/registry/indexes/capabilities.yaml
+  source_index: registry/federation/cache/info-tech-canon.yaml
 - id: capability.infotech.citation-engine
   name: Citation Evidence Domain Engine
   summary: "Core domain model and engine services for the citation-evidence ecosystem\
@@ -1189,43 +899,6 @@ 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, screenshots and keyboard trials through rapp-playwright
-    0.1.0 (Playwright 1.64.0, Chromium 156.0.8078.4). Human and coding-agent managed
-    trials passed on 2026-10-18 through the existing supervised workstation connection.
-    Use the documented kubectl port-forward to 127.0.0.1:18081, then the pinned standalone
-    Python client preflight/trial commands. No local browser installation. Independent
-    per-caller managed admission remains pending; availability stays A5. 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
-  - cli
-  - service API
-  - container
-  source_repo: reuse-surface
-  source_index: ../reuse-surface/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
@@ -1246,25 +919,25 @@ capabilities:
   source_url: https://forgejo.coulomb.social/coulomb/hub-core/raw/branch/main/registry/indexes/capabilities.yaml
   source_index: registry/federation/cache/hub-core.yaml
 - id: capability.infotech.issue-tracking
-  name: External issue tracker connector
-  summary: CLI and Python adapters for external issue systems.
+  name: Universal Issue Tracking Coordination
+  summary: Unified Python/CLI interface for issue tracking across Gitea, GitHub, and
+    GitLab, preventing direct platform API usage and credential sprawl for coordinating
+    agents.
+  vector: D4 / A2 / C2 / R1
   domain: infotech
   status: draft
   owner: issue-core
+  path: registry/capabilities/capability.infotech.issue-tracking.md
   tags:
   - issue-tracking
-  - connector
-  - work-record
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D4 / A2 / C2 / R1
-  path: registry/capabilities/capability.infotech.issue-tracking.md
+  - coordination
+  - multi-platform
   consumption_modes:
-  - CLI
-  - source
+  - cli
+  - library import
   source_repo: issue-core
-  source_index: ../issue-core/registry/indexes/capabilities.yaml
+  source_url: https://forgejo.coulomb.social/coulomb/issue-core/raw/branch/main/registry/indexes/capabilities.yaml
+  source_index: registry/federation/cache/issue-core.yaml
 - id: capability.infotech.oss-integration-continuity
   name: Managed Continuity For OSS Integrations
   summary: Turns proven open-source integrations into structured, maintainable, continuously
@@ -1305,61 +978,6 @@ capabilities:
   source_repo: evidence-source
   source_url: https://forgejo.coulomb.social/coulomb/evidence-source/raw/main/registry/indexes/capabilities.yaml
   source_index: registry/federation/cache/evidence-source.yaml
-- id: capability.infotech.provenance-fetch
-  name: Provenance-first Web and API Data Fetching
-  summary: Standard-library Python fetcher that turns declarative JSON specs into
-    Observation records carrying value, source, URL, source publication time, retrieval
-    time and payload SHA-256. Adapters for Eurostat JSON-stat, generic JSON, CSV and
-    wide XLSX endpoints; missing data is an explicit not_found, never estimated, and
-    values without a source are refused. A content-addressed cache stores the exact
-    bytes of a run and replays it offline. Tagged release v0.2.0, pip-installable
-    from Forgejo.
-  domain: infotech
-  status: draft
-  owner: web-fetcher
-  tags:
-  - fetch
-  - http
-  - api
-  - provenance
-  - research
-  - statistics
-  - eurostat
-  - csv
-  - json
-  - xlsx
-  - cache
-  - replay
-  - data-ingestion
-  - stdlib
-  vector: D2 / A3 / C2 / R2
-  path: registry/capabilities/capability.infotech.provenance-fetch.md
-  consumption_modes:
-  - Python library
-  - cli
-  - source
-  source_repo: web-fetcher
-  source_index: ../web-fetcher/registry/indexes/capabilities.yaml
-- id: capability.infotech.release-coverage
-  name: Release-unit coverage and pin check
-  summary: Compose owner release-unit declarations and check live workloads for coverage
-    and pin drift.
-  domain: infotech
-  status: draft
-  owner: release-registry
-  tags:
-  - release
-  - coverage
-  - kubernetes
-  - governance
-  - operations
-  vector: D3 / A2 / C2 / R0
-  path: registry/capabilities/capability.infotech.release-coverage.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: release-registry
-  source_index: ../release-registry/registry/indexes/capabilities.yaml
 - id: capability.infotech.repo-template
   name: Coulomb Repository Template
   summary: Bootstrap new git repositories with agent instructions, registry scaffold,
@@ -1380,40 +998,6 @@ capabilities:
   source_repo: repo-seed
   source_url: https://forgejo.coulomb.social/coulomb/repo-seed/raw/main/registry/indexes/capabilities.yaml
   source_index: registry/federation/cache/repo-seed.yaml
-- id: capability.infotech.runbook-tutorials
-  name: Guided administrative runbooks
-  summary: Pack schema, loader, local UI/CLI, gates, verification and rollback evidence.
-  domain: infotech
-  status: draft
-  owner: runbook-tutorials
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.infotech.runbook-tutorials.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: runbook-tutorials
-  source_index: ../runbook-tutorials/registry/indexes/capabilities.yaml
-- id: capability.infotech.sbom-management
-  name: Dependency provenance and SBOM evidence
-  summary: Controlled archive ingest, immutable snapshots, freshness and license review.
-  domain: infotech
-  status: draft
-  owner: sbom-nexus
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A4 / C1 / R0
-  path: registry/capabilities/capability.infotech.sbom-management.md
-  consumption_modes:
-  - HTTP API
-  - source
-  source_repo: sbom-nexus
-  source_index: ../sbom-nexus/registry/indexes/capabilities.yaml
 - id: capability.memory.phase-planning
   name: Profile-Driven Memory Phase Planning (phase-memory)
   summary: Interprets Markitect memory profiles as runtime plans, modeling memory
@@ -1433,80 +1017,26 @@ capabilities:
   source_repo: phase-memory
   source_url: https://forgejo.coulomb.social/coulomb/phase-memory/raw/main/registry/indexes/capabilities.yaml
   source_index: registry/federation/cache/phase-memory.yaml
-- id: capability.observability.security-signals
-  name: Security-relevant telemetry contracts and adapters
-  summary: Signal contract, platform adapters, report exporter and absence/alert rules.
-  domain: infotech
-  status: draft
-  owner: railiance-telemetry
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.observability.security-signals.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: railiance-telemetry
-  source_index: ../railiance-telemetry/registry/indexes/capabilities.yaml
-- id: capability.operations.ops-hub
-  name: Operations Hub Extension Contract
-  summary: Versioned hub-extension package and bootstrap client for operational truth,
-    service-catalog records, readiness evidence, and migration gates.
-  vector: D3 / A1 / C1 / R1
-  domain: operations
-  status: reviewed
-  owner: ops-hub
-  path: registry/capabilities/capability.operations.ops-hub.md
-  tags:
-  - operations
-  - service-catalog
-  - readiness
-  - hub-extension
-  consumption_modes:
-  - contract package
-  - command-line bootstrap
-  source_repo: ops-hub
-  source_url: https://forgejo.coulomb.social/coulomb/ops-hub/raw/main/registry/indexes/capabilities.yaml
-  source_index: registry/federation/cache/ops-hub.yaml
 - id: capability.ops.tunnel-bridge
-  name: SSH tunnel lifecycle
-  summary: Named tunnels, reconnect, health and TTL-aware cert_command.
+  name: SSH Reverse Tunnel Lifecycle Manager (ops-bridge)
+  summary: CLI that manages named SSH reverse tunnels keeping remote execution environments
+    connected to the local Custodian State Hub, with auto-reconnect, health checks,
+    and structured audit events.
+  vector: D3 / A2 / C2 / R1
   domain: infotech
   status: draft
   owner: ops-bridge
+  path: registry/capabilities/capability.ops.tunnel-bridge.md
   tags:
   - ssh
   - tunnel
   - ops
   - connectivity
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C2 / R1
-  path: registry/capabilities/capability.ops.tunnel-bridge.md
   consumption_modes:
-  - CLI
-  - source
+  - cli
   source_repo: ops-bridge
-  source_index: ../ops-bridge/registry/indexes/capabilities.yaml
-- id: capability.organization.role-catalog
-  name: Organizational role definitions
-  summary: Versioned documentation catalog.
-  domain: infotech
-  status: draft
-  owner: role-engine
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A0 / C1 / R0
-  path: registry/capabilities/capability.organization.role-catalog.md
-  consumption_modes:
-  - informational
-  source_repo: role-engine
-  source_index: ../role-engine/registry/indexes/capabilities.yaml
+  source_url: https://forgejo.coulomb.social/coulomb/ops-bridge/raw/main/registry/indexes/capabilities.yaml
+  source_index: registry/federation/cache/ops-bridge.yaml
 - id: capability.procurement.vergabe-teilnahme
   name: Vergabe Teilnahme (Public Procurement Participation) Application
   summary: "Django application (with a Vite/Tailwind frontend) for managing German\
@@ -1526,832 +1056,224 @@ capabilities:
   source_repo: vergabe-teilnahme
   source_url: https://forgejo.coulomb.social/coulomb/vergabe-teilnahme/raw/main/registry/indexes/capabilities.yaml
   source_index: registry/federation/cache/vergabe-teilnahme.yaml
-- id: capability.railiance.bootstrap-sequencing
-  name: Bootstrap sequencing contracts
-  summary: Bare-VM to estate sequence and handoff contract.
-  domain: infotech
-  status: draft
-  owner: railiance-bootstrap
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A0 / C1 / R0
-  path: registry/capabilities/capability.railiance.bootstrap-sequencing.md
-  consumption_modes:
-  - informational
-  source_repo: railiance-bootstrap
-  source_index: ../railiance-bootstrap/registry/indexes/capabilities.yaml
-- id: capability.railiance.browser-verification
-  name: Managed browser verification pilot
-  summary: Bounded jobs, cancellation, artifacts, origin checks and restart receipts.
-  domain: infotech
-  status: draft
-  owner: rapp-playwright
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A4 / C1 / R0
-  path: registry/capabilities/capability.railiance.browser-verification.md
-  consumption_modes:
-  - HTTP API
-  - source
-  source_repo: rapp-playwright
-  source_index: ../rapp-playwright/registry/indexes/capabilities.yaml
 - id: capability.railiance.ci-enablement
-  name: Developer delivery and CI templates
-  summary: Reusable CI workflows, build and deployment patterns.
+  name: Railiance Developer Enablement And CI/CD Templates
+  summary: "S4 Developer Enablement layer of the Railiance OAS Stack \u2014 reusable\
+    \ CI/CD workflow templates, developer portal paths, platform templates, SDKs,\
+    \ and buildpacks, using forge capabilities without owning forge runtime."
+  vector: D3 / A2 / C2 / R1
   domain: financials
   status: draft
   owner: railiance-enablement
+  path: registry/capabilities/capability.railiance.ci-enablement.md
   tags:
   - railiance
   - ci-cd
   - developer-enablement
   - forgejo
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C2 / R1
-  path: registry/capabilities/capability.railiance.ci-enablement.md
   consumption_modes:
-  - CLI
-  - source
+  - ci workflow template (copy/reference)
+  - cli (promote-repo-to-forgejo.sh)
   source_repo: railiance-enablement
-  source_index: ../railiance-enablement/registry/indexes/capabilities.yaml
+  source_url: https://forgejo.coulomb.social/coulomb/railiance-enablement/raw/branch/main/registry/indexes/capabilities.yaml
+  source_index: registry/federation/cache/railiance-enablement.yaml
 - id: capability.railiance.cluster-bootstrap
-  name: Kubernetes runtime and cluster controls
-  summary: k3s, ingress, CNI, operators and kubeconfig/runtime checks.
+  name: Railiance Cluster Runtime Bootstrap
+  summary: 'Cluster runtime entry point of the Railiance Infrastructure-as-Code framework:
+    from two bare Linux servers, a Git repo, and credentials, rebuilds a fully automated
+    Kubernetes-based environment.'
+  vector: D3 / A2 / C1 / R0
   domain: financials
   status: draft
   owner: railiance-cluster
+  path: registry/capabilities/capability.railiance.cluster-bootstrap.md
   tags:
   - railiance
   - kubernetes
   - iac
   - bootstrap
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.railiance.cluster-bootstrap.md
   consumption_modes:
-  - CLI
-  - source
+  - cli
+  - ansible playbook
   source_repo: railiance-cluster
-  source_index: ../railiance-cluster/registry/indexes/capabilities.yaml
+  source_url: https://forgejo.coulomb.social/coulomb/railiance-cluster/raw/branch/main/registry/indexes/capabilities.yaml
+  source_index: registry/federation/cache/railiance-cluster.yaml
 - id: capability.railiance.fabric-graph
-  name: Infrastructure ownership and dependency graph
-  summary: Schemas, validation, graph queries and State Hub exports.
+  name: Railiance Fabric Ecosystem Graph
+  summary: 'Models the durable infrastructure-responsibility graph of the Railiance
+    netkingdom: schemas, discovery tools, registry services, graph queries, and State
+    Hub export contracts for services, machines, repos, deployables, endpoints, ownership,
+    dependencies, and bindings.'
+  vector: D3 / A1 / C1 / R0
   domain: financials
   status: draft
   owner: railiance-fabric
+  path: registry/capabilities/capability.railiance.fabric-graph.md
   tags:
   - railiance
   - graph
   - ownership
   - discovery
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.railiance.fabric-graph.md
   consumption_modes:
-  - CLI
-  - source
+  - library import
+  - cli (validation)
   source_repo: railiance-fabric
-  source_index: ../railiance-fabric/registry/indexes/capabilities.yaml
+  source_url: https://forgejo.coulomb.social/coulomb/railiance-fabric/raw/main/registry/indexes/capabilities.yaml
+  source_index: registry/federation/cache/railiance-fabric.yaml
 - id: capability.railiance.forge-infrastructure
-  name: Source forge, registries and runner substrate
-  summary: Forgejo operation, package registries and runner lifecycle.
+  name: Railiance Forge And Artifact Infrastructure
+  summary: Source forge, registry, and automation-runner infrastructure for Railiance,
+    separated out from railiance-apps/railiance-enablement; covers current Gitea operation,
+    the Forgejo migration, container/package registries, and Actions runner substrate.
+  vector: D3 / A1 / C1 / R0
   domain: financials
   status: draft
   owner: railiance-forge
+  path: registry/capabilities/capability.railiance.forge-infrastructure.md
   tags:
   - railiance
   - forgejo
   - forge
   - ci-runner
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.railiance.forge-infrastructure.md
   consumption_modes:
-  - CLI
-  - source
+  - cli (operator tooling)
+  - documentation/runbooks
   source_repo: railiance-forge
-  source_index: ../railiance-forge/registry/indexes/capabilities.yaml
+  source_url: https://forgejo.coulomb.social/coulomb/railiance-forge/raw/main/registry/indexes/capabilities.yaml
+  source_index: registry/federation/cache/railiance-forge.yaml
 - id: capability.railiance.infra-provisioning
-  name: Host convergence and security baseline
-  summary: Ansible inventory, firewall, SSH bootstrap and baseline verification.
+  name: RailianceHosts Infrastructure Provisioning
+  summary: Git-driven server provisioning and convergence for Hosteurope/Hetzner Cloud
+    using Terraform, cloud-init, and Ansible, with SOPS+age encrypted in-repo secrets
+    and a servers.yaml inventory as source of truth.
+  vector: D4 / A2 / C2 / R1
   domain: financials
   status: draft
   owner: railiance-infra
+  path: registry/capabilities/capability.railiance.infra-provisioning.md
   tags:
   - railiance
   - terraform
   - ansible
   - infrastructure
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D4 / A2 / C2 / R1
-  path: registry/capabilities/capability.railiance.infra-provisioning.md
   consumption_modes:
-  - CLI
-  - source
+  - cli (terraform/ansible)
+  - gitops
   source_repo: railiance-infra
-  source_index: ../railiance-infra/registry/indexes/capabilities.yaml
-- id: capability.railiance.knative-rail
-  name: Knative workload lifecycle
-  summary: Derived rail for activation, revisions, traffic, scaling and rollback.
-  domain: infotech
-  status: draft
-  owner: rail-knative
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.railiance.knative-rail.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: rail-knative
-  source_index: ../rail-knative/registry/indexes/capabilities.yaml
-- id: capability.railiance.kubernetes-rail
-  name: Generic Kubernetes workload lifecycle
-  summary: Workload declaration, rollout, observe, promote and rollback surfaces.
-  domain: infotech
-  status: draft
-  owner: rail-kubernetes
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.railiance.kubernetes-rail.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: rail-kubernetes
-  source_index: ../rail-kubernetes/registry/indexes/capabilities.yaml
-- id: capability.railiance.openbao-package
-  name: Managed OpenBao deployment package
-  summary: Helm values, package deploy/status/smoke/rollback and custody boundary.
-  domain: infotech
-  status: draft
-  owner: rapp-openbao
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.railiance.openbao-package.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: rapp-openbao
-  source_index: ../rapp-openbao/registry/indexes/capabilities.yaml
+  source_url: https://forgejo.coulomb.social/coulomb/railiance-infra/raw/branch/main/registry/indexes/capabilities.yaml
+  source_index: registry/federation/cache/railiance-infra.yaml
 - id: capability.railiance.platform-services
-  name: Secret custody and platform data services
-  summary: OpenBao policy/custody, consumer grants, secret delivery and database/backup
-    contracts.
+  name: Railiance Platform Services
+  summary: "S3 Platform Services layer of the Railiance OAS Stack \u2014 shared cluster\
+    \ services: PostgreSQL HA, Valkey cache, secret management, identity integration,\
+    \ and object storage."
+  vector: D3 / A2 / C1 / R0
   domain: financials
   status: draft
   owner: railiance-platform
+  path: registry/capabilities/capability.railiance.platform-services.md
   tags:
   - railiance
   - platform
   - secrets
   - postgres
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.railiance.platform-services.md
   consumption_modes:
-  - CLI
-  - source
+  - cli (shell/python scripts)
   source_repo: railiance-platform
-  source_index: ../railiance-platform/registry/indexes/capabilities.yaml
-- id: capability.railiance.policy-publication-package
-  name: Policy publication runtime package
-  summary: Immutable image, non-root/read-only runtime and approved TLS exposure.
-  domain: infotech
-  status: draft
-  owner: rapp-policy-nexus
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.railiance.policy-publication-package.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: rapp-policy-nexus
-  source_index: ../rapp-policy-nexus/registry/indexes/capabilities.yaml
-- id: capability.railiance.postgres-isolation-recovery
-  name: Database isolation and recovery package
-  summary: CNPG cells, per-consumer roles, negative isolation tests and backup/restore
-    procedures.
-  domain: infotech
-  status: draft
-  owner: rapp-postgres
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.railiance.postgres-isolation-recovery.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: rapp-postgres
-  source_index: ../rapp-postgres/registry/indexes/capabilities.yaml
-- id: capability.railiance.sbom-runtime-package
-  name: Private SBOM runtime and dynamic database delivery
-  summary: Immutable deployment, private network policy, dynamic database leases and
-    migration/rollback.
-  domain: infotech
-  status: draft
-  owner: rapp-sbom-nexus
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.railiance.sbom-runtime-package.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: rapp-sbom-nexus
-  source_index: ../rapp-sbom-nexus/registry/indexes/capabilities.yaml
-- id: capability.railiance.security-consumption-contracts
-  name: Platform security consumption architecture
-  summary: Rail/rapp/reef boundaries, exposure and security consumption contracts.
-  domain: infotech
-  status: draft
-  owner: railiance-master
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A0 / C1 / R0
-  path: registry/capabilities/capability.railiance.security-consumption-contracts.md
-  consumption_modes:
-  - informational
-  source_repo: railiance-master
-  source_index: ../railiance-master/registry/indexes/capabilities.yaml
-- id: capability.railiance.substrate-bindings
-  name: Substrate topology and bindings
-  summary: Grouped home-reef identity, topology and placement declarations.
-  domain: infotech
-  status: draft
-  owner: reef-railiance
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A0 / C1 / R0
-  path: registry/capabilities/capability.railiance.substrate-bindings.md
-  consumption_modes:
-  - informational
-  source_repo: reef-railiance
-  source_index: ../reef-railiance/registry/indexes/capabilities.yaml
-- id: capability.railiance.telemetry-package
-  name: Private monitoring package
-  summary: Prometheus, Alertmanager and Grafana package with isolated restore evidence.
-  domain: infotech
-  status: draft
-  owner: rapp-telemetry
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.railiance.telemetry-package.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: rapp-telemetry
-  source_index: ../rapp-telemetry/registry/indexes/capabilities.yaml
-- id: capability.railiance.tenant-engine-package
-  name: Tenant Engine runtime package
-  summary: Package declaration, smoke and rollback.
-  domain: infotech
-  status: draft
-  owner: rapp-tenant-engine
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.railiance.tenant-engine-package.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: rapp-tenant-engine
-  source_index: ../rapp-tenant-engine/registry/indexes/capabilities.yaml
-- id: capability.railiance.user-engine-package
-  name: User Engine runtime package
-  summary: Pinned deployment, dedicated CNPG, ExternalSecret references and rollback.
-  domain: infotech
-  status: draft
-  owner: rapp-user-engine
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.railiance.user-engine-package.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: rapp-user-engine
-  source_index: ../rapp-user-engine/registry/indexes/capabilities.yaml
+  source_url: https://forgejo.coulomb.social/coulomb/railiance-platform/raw/branch/main/registry/indexes/capabilities.yaml
+  source_index: registry/federation/cache/railiance-platform.yaml
 - id: capability.railiance.workload-deployment-tooling
-  name: Workload release configuration and guards
-  summary: Helm/manifests, exact image pins, application runbooks and rollout/rollback.
+  name: Railiance Application Workload Deployment Tooling
+  summary: "S5 Workloads and Experience Endpoints layer of the Railiance OAS Stack\
+    \ \u2014 application Helm releases, Kubernetes workload manifests, deployment\
+    \ guardrails, and smoke-test/check tooling for user-facing services."
+  vector: D3 / A2 / C1 / R1
   domain: financials
   status: draft
   owner: railiance-apps
+  path: registry/capabilities/capability.railiance.workload-deployment-tooling.md
   tags:
   - railiance
   - kubernetes
   - helm
   - deployment
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R1
-  path: registry/capabilities/capability.railiance.workload-deployment-tooling.md
   consumption_modes:
-  - CLI
-  - source
+  - cli (shell scripts)
+  - helm/kubernetes deployment
   source_repo: railiance-apps
-  source_index: ../railiance-apps/registry/indexes/capabilities.yaml
+  source_url: https://forgejo.coulomb.social/coulomb/railiance-apps/raw/branch/main/registry/indexes/capabilities.yaml
+  source_index: registry/federation/cache/railiance-apps.yaml
 - id: capability.registry.register
-  name: Capability registry and federation
-  summary: Owner Markdown entries, indexes, federation hub and planning queries.
+  name: Capability Registration
+  summary: Register a new capability so it becomes visible for planning and implementation
+    reuse.
+  vector: D3 / A4 / C2 / R3
   domain: helix_forge
   status: draft
   owner: reuse-surface
+  path: registry/capabilities/capability.registry.register.md
   tags:
   - registry
   - governance
   - meta
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A3 / C2 / R3
-  path: registry/capabilities/capability.registry.register.md
   consumption_modes:
-  - library
-  - CLI
+  - informational
+  - markdown authoring
+  - cli
+  - service API
   source_repo: reuse-surface
-  source_index: ../reuse-surface/registry/indexes/capabilities.yaml
+  source_url: https://forgejo.coulomb.social/coulomb/reuse-surface/raw/main/registry/indexes/capabilities.yaml
+  source_index: registry/federation/cache/reuse-surface.yaml
 - id: capability.registry.validate
-  name: Capability registry validation
-  summary: Schema, index consistency and relation checks.
+  name: Registry Entry Validation
+  summary: Validate capability registry entries against schema, index consistency,
+    and relation integrity.
+  vector: D4 / A3 / C3 / R3
   domain: helix_forge
   status: draft
   owner: reuse-surface
+  path: registry/capabilities/capability.registry.validate.md
   tags:
   - registry
   - validation
   - cli
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D4 / A3 / C3 / R3
-  path: registry/capabilities/capability.registry.validate.md
   consumption_modes:
-  - library
-  - CLI
+  - cli
   source_repo: reuse-surface
-  source_index: ../reuse-surface/registry/indexes/capabilities.yaml
-- id: capability.resources.security-capacity
-  name: Capacity and recovery resource planning
-  summary: Provider-neutral inventory, procurement evidence and optimization reports.
-  domain: infotech
-  status: draft
-  owner: resource-control
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.resources.security-capacity.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: resource-control
-  source_index: ../resource-control/registry/indexes/capabilities.yaml
-- id: capability.security.access-routing
-  name: Credential routing and contained access
-  summary: warden route and access catalog; exact lane conduit and secret-exec routing.
-  domain: infotech
-  status: draft
-  owner: ops-warden
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A3 / C1 / R0
-  path: registry/capabilities/capability.security.access-routing.md
-  consumption_modes:
-  - library
-  - CLI
-  source_repo: ops-warden
-  source_index: ../ops-warden/registry/indexes/capabilities.yaml
-- id: capability.security.adversarial-evidence
-  name: Authorized adversarial evidence harness
-  summary: Offline ASM and tenancy calibrations and engagement admission.
-  domain: infotech
-  status: draft
-  owner: whitehat-security
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.security.adversarial-evidence.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: whitehat-security
-  source_index: ../whitehat-security/registry/indexes/capabilities.yaml
-- id: capability.security.agent-knowledge
-  name: Verified security orientation for agents
-  summary: Versioned source-pinned cards, read-only CLI, provider adapters and sealed
-    exports.
-  domain: infotech
-  status: draft
-  owner: emergent-security
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.security.agent-knowledge.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: emergent-security
-  source_index: ../emergent-security/registry/indexes/capabilities.yaml
-- id: capability.security.approval-lifecycle
-  name: Bound approval lifecycle
-  summary: Authenticated issue, claim, revoke, supersede and atomic consume API with
-    outbox.
-  domain: infotech
-  status: draft
-  owner: approval-engine
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A4 / C1 / R0
-  path: registry/capabilities/capability.security.approval-lifecycle.md
-  consumption_modes:
-  - HTTP API
-  - source
-  source_repo: approval-engine
-  source_index: ../approval-engine/registry/indexes/capabilities.yaml
-- id: capability.security.bootstrap-recovery
-  name: Guarded bootstrap and recovery preparation
-  summary: Guarded bootstrap custody, encrypted identity backup capture, independent
-    retrieval and isolated recovery verification.
-  domain: infotech
-  status: draft
-  owner: net-kingdom
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  - backup
-  - restore
-  - disaster-recovery
-  - age
-  - privacyidea
-  - lldap
-  - authelia
-  - keycape
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.security.bootstrap-recovery.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: net-kingdom
-  source_index: ../net-kingdom/registry/indexes/capabilities.yaml
-- id: capability.security.case-contracts
-  name: Security case types and instance validation
-  summary: Versioned types, cases and schema validation.
-  domain: infotech
-  status: draft
-  owner: net-kingdom
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.security.case-contracts.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: net-kingdom
-  source_index: ../net-kingdom/registry/indexes/capabilities.yaml
-- id: capability.security.case-follow-through
-  name: Security case operational follow-through
-  summary: KnownSecurityCase route, plan and operational receipts.
-  domain: infotech
-  status: draft
-  owner: ops-warden
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.security.case-follow-through.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: ops-warden
-  source_index: ../ops-warden/registry/indexes/capabilities.yaml
-- id: capability.security.credential-lifecycle
-  name: Cataloged credential lifecycle
-  summary: Decision-gated CLI for cataloged OpenBao lanes covering catalog, plan,
-    exact metadata apply, provisioning, verification, exec delivery (exec-env/npm-config/exec-file),
-    wrapped handoff, rotate, revoke and lifecycle, with founder-signed trust admission
-    and a local evidence outbox.
-  domain: infotech
-  status: draft
-  owner: secrets-engine
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.security.credential-lifecycle.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: secrets-engine
-  source_index: ../secrets-engine/registry/indexes/capabilities.yaml
-- id: capability.security.doctrine-review
-  name: Security doctrine and architecture review
-  summary: Layer rules, authority context, ASM criteria and interpretations.
-  domain: infotech
-  status: draft
-  owner: gate-house
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A0 / C1 / R0
-  path: registry/capabilities/capability.security.doctrine-review.md
-  consumption_modes:
-  - informational
-  source_repo: gate-house
-  source_index: ../gate-house/registry/indexes/capabilities.yaml
-- id: capability.security.emission-profile
-  name: Security emission cadence validation
-  summary: Security profile over generic emission contracts and validator.
-  domain: infotech
-  status: draft
-  owner: net-kingdom
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.security.emission-profile.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: net-kingdom
-  source_index: ../net-kingdom/registry/indexes/capabilities.yaml
-- id: capability.security.exact-approval-execution
-  name: Exact-approval privileged execution
-  summary: gexec runs a privileged action only under a supervisor signature bound
-    to its digest, agent, target, single-use nonce and expiry; receipts for every
-    outcome.
-  domain: infotech
-  status: draft
-  owner: gated-executor
-  tags:
-  - security
-  - approval
-  - executor
-  - supervised-agents
-  - receipts
-  - ssh-signature
-  vector: D4 / A3 / C3 / R2
-  path: registry/capabilities/capability.security.exact-approval-execution.md
-  consumption_modes:
-  - CLI
-  source_repo: gated-executor
-  source_index: ../gated-executor/registry/indexes/capabilities.yaml
-- id: capability.security.forge-secret-prevention
-  name: Independent introduced-history secret prevention
-  summary: Pinned receive adapter, lifecycle template and fail-closed scan.
-  domain: infotech
-  status: draft
-  owner: railiance-forge
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.security.forge-secret-prevention.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: railiance-forge
-  source_index: ../railiance-forge/registry/indexes/capabilities.yaml
-- id: capability.security.human-decision-workspace
-  name: Human security decision presentation and disposition
-  summary: Headless lifecycle and browser workspace with exact native approval references.
-  domain: infotech
-  status: draft
-  owner: informed-decision
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A4 / C1 / R0
-  path: registry/capabilities/capability.security.human-decision-workspace.md
-  consumption_modes:
-  - HTTP API
-  - source
-  source_repo: informed-decision
-  source_index: ../informed-decision/registry/indexes/capabilities.yaml
+  source_url: https://forgejo.coulomb.social/coulomb/reuse-surface/raw/main/registry/indexes/capabilities.yaml
+  source_index: registry/federation/cache/reuse-surface.yaml
 - id: capability.security.iam-tooling-suite
-  name: NetKingdom security architecture and conformance tooling
-  summary: Versioned IAM, layer, tenancy and credential contracts plus validators.
+  name: NetKingdom Security/IAM Tooling Suite
+  summary: Dynamic, self-optimizing security platform for Kubernetes-deployed IT infrastructure;
+    owns canonical IAM/security standards and executable conformance tooling (IAM
+    profile conformance, playbook capability contract validation, security bootstrap
+    console).
+  vector: D3 / A2 / C1 / R1
   domain: infotech
   status: draft
   owner: net-kingdom
+  path: registry/capabilities/capability.security.iam-tooling-suite.md
   tags:
   - security
   - iam
   - kubernetes
   - conformance
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R1
-  path: registry/capabilities/capability.security.iam-tooling-suite.md
   consumption_modes:
-  - CLI
-  - source
+  - cli
+  - local web ui
   source_repo: net-kingdom
-  source_index: ../net-kingdom/registry/indexes/capabilities.yaml
-- id: capability.security.maturity-claims
-  name: Evidence-based maturity claims and gap register
-  summary: SQLite library and CLI for ladders, evidence expiry, compute, explain and
-    stance inventory.
-  domain: infotech
-  status: draft
-  owner: maturity-engine
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.security.maturity-claims.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: maturity-engine
-  source_index: ../maturity-engine/registry/indexes/capabilities.yaml
-- id: capability.security.policy-publication
-  name: Policy publication with source provenance
-  summary: Generated immutable publication, source currency and stable policy URLs.
-  domain: infotech
-  status: draft
-  owner: policy-nexus
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.security.policy-publication.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: policy-nexus
-  source_index: ../policy-nexus/registry/indexes/capabilities.yaml
-- id: capability.security.posture-assessment
-  name: Security posture assessment and response proposals
-  summary: Normalized observation evaluator, cadence checks and secret-use snapshot
-    adapter.
-  domain: infotech
-  status: draft
-  owner: kings-guard
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.security.posture-assessment.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: kings-guard
-  source_index: ../kings-guard/registry/indexes/capabilities.yaml
-- id: capability.security.posture-feedback
-  name: Deterministic posture feedback
-  summary: CLI evaluates evidence age and posture into owner-routed findings.
-  domain: infotech
-  status: draft
-  owner: net-kingdom
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.security.posture-feedback.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: net-kingdom
-  source_index: ../net-kingdom/registry/indexes/capabilities.yaml
-- id: capability.security.practice-canon
-  name: Security practice and authority vocabulary
-  summary: Versioned SEC-DSM and Mode of Authority documents.
-  domain: infotech
-  status: draft
-  owner: security-canon
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A0 / C1 / R0
-  path: registry/capabilities/capability.security.practice-canon.md
-  consumption_modes:
-  - informational
-  source_repo: security-canon
-  source_index: ../security-canon/registry/indexes/capabilities.yaml
-- id: capability.security.repository-secret-prevention
-  name: Repository metadata and staged-secret prevention
-  summary: Repository observation plus pinned staged-blob scanner and hook integration.
-  domain: infotech
-  status: draft
-  owner: repo-manager
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.security.repository-secret-prevention.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: repo-manager
-  source_index: ../repo-manager/registry/indexes/capabilities.yaml
-- id: capability.security.risk-register
-  name: Security risk and exception review register
-  summary: Markdown findings and Python review, verification and due-work reports.
-  domain: infotech
-  status: draft
-  owner: risk-nexus
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.security.risk-register.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: risk-nexus
-  source_index: ../risk-nexus/registry/indexes/capabilities.yaml
-- id: capability.security.scenario-compose
-  name: Deterministic security scenario composition
-  summary: CLI selects pinned providers and orders trust transitions.
-  domain: infotech
-  status: draft
-  owner: net-kingdom
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.security.scenario-compose.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: net-kingdom
-  source_index: ../net-kingdom/registry/indexes/capabilities.yaml
+  source_url: https://forgejo.coulomb.social/coulomb/net-kingdom/raw/main/registry/indexes/capabilities.yaml
+  source_index: registry/federation/cache/net-kingdom.yaml
 - id: capability.security.ssh-certificate-issuance
-  name: Decision-bound SSH certificates
-  summary: warden sign with local and OpenBao backends and adm/agt/atm actors.
+  name: SSH Certificate Issuance
+  summary: Issue short-lived CA-signed SSH certificates for adm, agt, and atm actors
+    through a stable cert_command CLI interface; steward NetKingdom operational access
+    routing.
+  vector: D4 / A3 / C3 / R2
   domain: helix_forge
   status: draft
   owner: ops-warden
+  path: registry/capabilities/capability.security.ssh-certificate-issuance.md
   tags:
   - ssh
   - certificate
@@ -2359,90 +1281,49 @@ capabilities:
   - ops-warden
   - openbao
   - security
-  - netkingdom
-  - framework-reuse
-  vector: D4 / A3 / C3 / R2
-  path: registry/capabilities/capability.security.ssh-certificate-issuance.md
   consumption_modes:
-  - library
   - CLI
+  - cert_command subprocess
   source_repo: ops-warden
-  source_index: ../ops-warden/registry/indexes/capabilities.yaml
-- id: capability.security.structure-construction
-  name: Reviewed security structure construction
-  summary: Digest-bound OpenBao AppRole and Kubernetes-auth plans and guarded apply.
-  domain: infotech
-  status: draft
-  owner: ops-mason
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.security.structure-construction.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: ops-mason
-  source_index: ../ops-mason/registry/indexes/capabilities.yaml
-- id: capability.security.zone-reference
-  name: Zone membership reference conformance
-  summary: Offline resolution, exception and lineage checks.
-  domain: infotech
-  status: draft
-  owner: zone-engine
-  tags:
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D3 / A2 / C1 / R0
-  path: registry/capabilities/capability.security.zone-reference.md
-  consumption_modes:
-  - CLI
-  - source
-  source_repo: zone-engine
-  source_index: ../zone-engine/registry/indexes/capabilities.yaml
+  source_url: https://forgejo.coulomb.social/coulomb/ops-warden/raw/main/registry/indexes/capabilities.yaml
+  source_index: registry/federation/cache/ops-warden.yaml
 - id: capability.statehub.progress-log
-  name: Progress and work evidence indexing
-  summary: REST progress and task evidence references.
+  name: Work Progress Logging
+  summary: Record progress events, decisions, and session notes against workstreams
+    and tasks in State Hub.
+  vector: D4 / A4 / C3 / R3
   domain: helix_forge
   status: draft
   owner: state-hub
+  path: registry/capabilities/capability.statehub.progress-log.md
   tags:
   - state-hub
   - progress
   - coordination
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D4 / A4 / C3 / R3
-  path: registry/capabilities/capability.statehub.progress-log.md
   consumption_modes:
-  - HTTP API
-  - source
+  - service API
   source_repo: state-hub
-  source_index: ../state-hub/registry/indexes/capabilities.yaml
+  source_url: https://forgejo.coulomb.social/coulomb/state-hub/raw/branch/main/registry/indexes/capabilities.yaml
+  source_index: registry/federation/cache/state-hub.yaml
 - id: capability.statehub.workstream-coordinate
-  name: Cross-repository work tracking
-  summary: File-derived workplans, tasks, dependencies, decisions and coordination
-    views.
+  name: Workstream And Task Coordination
+  summary: Track active workstreams, tasks, progress, and consistency across domain
+    repositories.
+  vector: D4 / A4 / C3 / R2
   domain: helix_forge
   status: draft
   owner: state-hub
+  path: registry/capabilities/capability.statehub.workstream-coordinate.md
   tags:
   - state-hub
   - coordination
   - workplans
-  - security
-  - netkingdom
-  - framework-reuse
-  vector: D4 / A4 / C3 / R2
-  path: registry/capabilities/capability.statehub.workstream-coordinate.md
   consumption_modes:
-  - HTTP API
-  - source
+  - service API
+  - HTTP REST
   source_repo: state-hub
-  source_index: ../state-hub/registry/indexes/capabilities.yaml
+  source_url: https://forgejo.coulomb.social/coulomb/state-hub/raw/branch/main/registry/indexes/capabilities.yaml
+  source_index: registry/federation/cache/state-hub.yaml
 - id: capability.wiki.adapter-contract
   name: Capability-Aware Shard Adapter Contract
   summary: A versioned backend interface where each binding declares a verified capability
diff --git a/registry/release-units/reuse-surface.yaml b/registry/release-units/reuse-surface.yaml
deleted file mode 100644
index 4888cf4..0000000
--- a/registry/release-units/reuse-surface.yaml
+++ /dev/null
@@ -1,50 +0,0 @@
-# No owner classification file. Recorded internal/medium for this wave.
-kind: release-unit
-unit_id: reuse-surface
-owner: reuse-surface
-contract_version: 1.0.0
-data_classification: internal
-criticality: medium
-composition:
-  purpose: Covers the live reuse-surface workloads as one release unit.
-  member_repos:
-  - repo: reuse-surface
-    role: rollout owner
-    deployables:
-    - reuse-surface
-    - reuse-surface-landing
-rollout_contract:
-  default_mode: helm-upgrade-install
-smoke_contract:
-  required:
-  - workload-ready
-rollback_contract:
-  order:
-  - owner-rollback
-workloads:
-- kind: Deployment
-  namespace: reuse
-  name: reuse-surface
-- kind: Deployment
-  namespace: reuse
-  name: reuse-surface-landing
-pins:
-  component:
-    name: ocm.railiance.dev/reuse-surface
-    version: live
-  resources:
-  - name: reuse-surface
-    type: ociImage
-    version: live
-    digest:
-      hashAlgorithm: SHA-256
-      normalisationAlgorithm: ociArtifactDigest/v1
-      value: sha256:2364b7e7859daccf9340a063654e2b09eed1bc27e0adf7b23cbb4b30135a7db0
-  sources:
-  - name: reuse-surface
-    type: git
-    version: live
-    digest:
-      hashAlgorithm: SHA-1
-      normalisationAlgorithm: gitCommit/v1
-      value: bf30d5e988dd38921eb43902b27cca24f4e760ef
diff --git a/reuse_surface/cli.py b/reuse_surface/cli.py
index 5c47322..39ba2de 100644
--- a/reuse_surface/cli.py
+++ b/reuse_surface/cli.py
@@ -1,7 +1,6 @@
 from __future__ import annotations
 
 import argparse
-from collections import Counter
 import json
 import sys
 from pathlib import Path
@@ -88,7 +87,6 @@ from reuse_surface.registry import (
     parse_vector,
     registry_paths,
     resolve_repo_root,
-    vectors_match,
 )
 
 
@@ -116,48 +114,12 @@ def _check_index_drift(
     repo_root: Path,
 ) -> list[str]:
     warnings: list[str] = []
-    if not isinstance(index, dict) or not isinstance(index.get("capabilities"), list):
-        return ["index drift: index must contain a capabilities list"]
-    rows = []
-    for position, row in enumerate(index["capabilities"]):
-        if not isinstance(row, dict) or any(
-            not isinstance(row.get(field), str) or not row[field]
-            for field in ("id", "path")
-        ):
-            warnings.append(f"index drift: row {position} requires nonempty string id and path")
-            continue
-        rows.append(row)
-    indexed_paths = {item["path"] for item in rows}
+    indexed_paths = {item["path"] for item in index.get("capabilities", [])}
     file_paths = {str(path.relative_to(repo_root)) for path in entry_paths}
     for path in sorted(file_paths - indexed_paths):
         warnings.append(f"index drift: entry file not indexed: {path}")
     for path in sorted(indexed_paths - file_paths):
         warnings.append(f"index drift: index references missing file: {path}")
-    for field in ("id", "path"):
-        for value, count in sorted(Counter(row[field] for row in rows).items()):
-            if count > 1:
-                warnings.append(f"index drift: duplicate {field}: {value} ({count} rows)")
-    for row in rows:
-        path = repo_root / row["path"]
-        if not path.is_file():
-            continue
-        try:
-            entry = parse_front_matter(path)
-        except (ValueError, yaml.YAMLError):
-            continue  # The entry validation pass reports malformed source.
-        # The index projects the owner entry; index-only changes cannot replace it.
-        for field in ("id", "name", "summary", "domain", "status", "owner", "tags"):
-            if row.get(field) != entry.get(field):
-                warnings.append(f"index drift: {row['path']}: {field} differs from entry")
-        availability = entry.get("availability")
-        modes = availability.get("consumption_modes") if isinstance(availability, dict) else None
-        if row.get("consumption_modes") != modes:
-            warnings.append(f"index drift: {row['path']}: consumption_modes differs from entry")
-        try:
-            if not vectors_match(row["vector"], entry):
-                warnings.append(f"index drift: {row['path']}: vector differs from entry")
-        except (KeyError, TypeError, AttributeError):
-            warnings.append(f"index drift: {row['path']}: vector cannot be compared to entry")
     return warnings
 
 
@@ -183,7 +145,7 @@ def _run_validate(
     for path in paths:
         try:
             data = parse_front_matter(path)
-        except (ValueError, yaml.YAMLError) as exc:
+        except ValueError as exc:
             errors.append(str(exc))
             continue
         for error in sorted(validator.iter_errors(data), key=lambda e: e.path):
@@ -193,12 +155,8 @@ def _run_validate(
     if not target:
         index_path = registry_paths(repo_root)["index"]
         if index_path.exists():
-            try:
-                index = load_index_at(index_path)
-            except (ValueError, yaml.YAMLError) as exc:
-                errors.append(f"{index_path}: {exc}")
-            else:
-                warnings.extend(_check_index_drift(paths, index, repo_root))
+            index = load_index_at(index_path)
+            warnings.extend(_check_index_drift(paths, index, repo_root))
         if relations and repo_root == ROOT:
             warnings.extend(check_relations())
     return errors, warnings, paths
diff --git a/reuse_surface/federation.py b/reuse_surface/federation.py
index 3be03f8..f736667 100644
--- a/reuse_surface/federation.py
+++ b/reuse_surface/federation.py
@@ -1,10 +1,8 @@
 from __future__ import annotations
 
 import os
-import json
 import re
 import urllib.error
-import urllib.parse
 import urllib.request
 from datetime import date, datetime, timezone
 from pathlib import Path
@@ -105,44 +103,11 @@ def _auth_headers(source: dict[str, Any]) -> dict[str, str]:
     return {header_name: token}
 
 
-class _RejectAuthenticatedRedirect(urllib.request.HTTPRedirectHandler):
-    """Never replay a source credential at a redirect target.
-
-    A private source must register its final URL. This also rejects same-origin
-    redirects because a path change can escape the reviewed repository scope.
-    """
-
-    def redirect_request(self, req, fp, code, msg, headers, newurl):
-        raise ConnectionError("authenticated source redirect refused")
-
-
 def fetch_remote_index_text(url: str, source: dict[str, Any]) -> str:
-    if source.get("auth_env"):
-        if urllib.parse.urlsplit(url).scheme.lower() != "https":
-            raise ValueError("authenticated source requires HTTPS")
-        # Registrations are writable data, not credential-routing authority.
-        # Operators must bind each allowed environment name to exact URLs in
-        # runtime configuration before the credential itself can be read.
-        try:
-            allowlist = json.loads(os.environ.get("REUSE_SURFACE_AUTH_SOURCE_ALLOWLIST", "{}"))
-            allowed_urls = allowlist.get(source["auth_env"], [])
-            permitted = isinstance(allowed_urls, list) and url in allowed_urls
-        except (ValueError, AttributeError, TypeError):
-            permitted = False
-        if not permitted:
-            raise ValueError("authenticated source URL is not runtime-authorized")
-    auth_headers = _auth_headers(source)
-    headers = {"User-Agent": USER_AGENT, **auth_headers}
+    headers = {"User-Agent": USER_AGENT, **_auth_headers(source)}
     request = urllib.request.Request(url, headers=headers)
-    # urllib's default redirect handler copies Authorization to the target.
-    # Anonymous federation retains its existing redirect behavior.
-    opener = (
-        urllib.request.build_opener(_RejectAuthenticatedRedirect()).open
-        if auth_headers
-        else urllib.request.urlopen
-    )
     try:
-        with opener(request, timeout=30) as response:
+        with urllib.request.urlopen(request, timeout=30) as response:
             return response.read().decode("utf-8")
     except urllib.error.HTTPError as exc:
         raise ConnectionError(
@@ -348,4 +313,4 @@ def write_federated_index(
         header + yaml.safe_dump(federated, sort_keys=False),
         encoding="utf-8",
     )
-    return target, warnings
+    return target, warnings
\ No newline at end of file
diff --git a/reuse_surface/plan_check.py b/reuse_surface/plan_check.py
index 7d424b6..9118bba 100644
--- a/reuse_surface/plan_check.py
+++ b/reuse_surface/plan_check.py
@@ -147,14 +147,7 @@ def match_query(
         tokens = _tokens(blob)
         if not tokens:
             continue
-        # Score the name independently: descriptive summaries must not dilute
-        # a direct short-intent match (e.g. "headless browser"). Keep the full
-        # blob score for longer intents and summary/tag-only matches.
-        name_tokens = _tokens(item.get("name", ""))
-        score = max(
-            len(query.tokens & tokens) / len(query.tokens | tokens),
-            len(query.tokens & name_tokens) / len(query.tokens | name_tokens),
-        )
+        score = len(query.tokens & tokens) / len(query.tokens | tokens)
         if score <= 0:
             continue
         scored.append(
@@ -347,7 +340,7 @@ def format_plan_check_markdown(result: dict[str, Any]) -> str:
 
     verdict = result["verdict"]
     if verdict == "reuse":
-        lines.append("**Verdict: REUSE** — a close lexical match exists; review its consumption contract and availability before adopting it.")
+        lines.append("**Verdict: REUSE** — an existing capability already covers this; link it instead of building new.")
     elif verdict == "extend":
         lines.append("**Verdict: EXTEND** — scope overlaps closely enough that extending the top match is likely cheaper than a new capability.")
     else:
diff --git a/reuse_surface/private_source_verify.py b/reuse_surface/private_source_verify.py
deleted file mode 100644
index 311addb..0000000
--- a/reuse_surface/private_source_verify.py
+++ /dev/null
@@ -1,178 +0,0 @@
-"""Owner-prepared, receipt-only native acquisition check for CUST81 revision 1.
-
-Run inside the hub environment after a separately approved credential rollout:
-python -m reuse_surface.private_source_verify --proposal FILE --disclosure FILE
-    --consent FILE
-No credentials are accepted as arguments. No bodies or exception text are emitted.
-This command does not register sources or use the federation cache.
-"""
-from __future__ import annotations
-
-import argparse
-import hashlib
-import json
-import os
-import re
-from datetime import datetime, timezone
-from pathlib import Path
-from typing import Any
-from urllib.parse import quote
-
-import yaml
-from jsonschema import Draft202012Validator
-
-from reuse_surface import federation
-from reuse_surface.registry import load_schema
-
-PROPOSAL_SHA256 = "7819eb51d249f5c7aff4df9fb520afcfb76603b05a4104439499102b6c20af99"
-DISCLOSURE_SHA256 = "46ac4fe49a08054cc215aade2fbaf3b36ee334520997857ed84f530b52da9d35"
-CONSENT_SHA256 = "4a4602ad926e3af855d6ddba4731430d33e4a7432c507ba0a5193b9f43056b52"
-AUTH_ENV = "REUSE_SURFACE_FORGEJO_SOURCE_READ_TOKEN"
-REPOSITORIES = frozenset({
-    "rapp-openbao", "rapp-policy-nexus", "rapp-postgres", "rapp-sbom-nexus",
-    "rapp-telemetry", "rapp-tenant-engine", "rapp-user-engine",
-})
-
-
-def _sha(content: bytes) -> str:
-    return hashlib.sha256(content).hexdigest()
-
-
-def _load(path: Path, expected: str) -> dict[str, Any]:
-    data = path.read_bytes()
-    if _sha(data) != expected:
-        raise ValueError("packet_digest_mismatch")
-    return json.loads(data)
-
-
-def _raw_url(repo: str, commit: str, path: str) -> str:
-    if not re.fullmatch(r"[0-9a-f]{40}", commit):
-        raise ValueError("invalid_commit")
-    if not re.fullmatch(r"registry/(indexes|capabilities)/[a-zA-Z0-9._-]+\.(yaml|md)", path):
-        raise ValueError("invalid_metadata_path")
-    return (
-        f"https://forgejo.coulomb.social/api/v1/repos/coulomb/{repo}/raw/"
-        f"{quote(path, safe='/')}?ref={commit}"
-    )
-
-
-def _prepared_sources(proposal_path: Path, disclosure_path: Path, consent_path: Path):
-    proposal = _load(proposal_path, PROPOSAL_SHA256)
-    disclosure = _load(disclosure_path, DISCLOSURE_SHA256)
-    consent = _load(consent_path, CONSENT_SHA256)
-    if (
-        consent["consent_status"] != "approved"
-        or consent["proposal_sha256"] != DISCLOSURE_SHA256
-        or consent["proposal_id"] != disclosure["id"]
-        or consent["proposal_revision"] != disclosure["revision"]
-        or set(consent["repositories"]) != REPOSITORIES
-    ):
-        raise ValueError("invalid_consent")
-    sources = proposal["sources"]
-    approved = {source["repo"]: source for source in disclosure["sources"]}
-    if len(sources) != 7 or {source["repo"] for source in sources} != REPOSITORIES:
-        raise ValueError("invalid_source_scope")
-    for source in sources:
-        owner = approved[source["repo"]]
-        files = {item["path"]: item["sha256"] for item in owner["files"]}
-        if (
-            source["consented_commit"] != owner["commit"]
-            or source["capability_ids"] != owner["capability_ids"]
-            or source["index_sha256"] != files["registry/indexes/capabilities.yaml"]
-            or source["auth_env"] != AUTH_ENV
-            or source["native_raw_url"] != _raw_url(
-                source["repo"], owner["commit"], "registry/indexes/capabilities.yaml"
-            )
-        ):
-            raise ValueError("source_not_consented")
-        yield source, files
-
-
-def verify(proposal_path: Path, disclosure_path: Path, consent_path: Path) -> dict[str, Any]:
-    receipt: dict[str, Any] = {
-        "id": "CUST81-PRIVATE-NATIVE-FETCH-RECEIPT-R1",
-        "checked_at": datetime.now(timezone.utc).isoformat(),
-        "proposal_sha256": PROPOSAL_SHA256,
-        "disclosure_sha256": DISCLOSURE_SHA256,
-        "consent_sha256": CONSENT_SHA256,
-        "cache_used": False,
-        "all_verified": False,
-        "sources": [],
-    }
-    try:
-        # Exhaust all packet checks before any native network request.
-        sources = list(_prepared_sources(proposal_path, disclosure_path, consent_path))
-        expected_urls = {
-            _raw_url(source["repo"], source["consented_commit"], path)
-            for source, files in sources for path in files
-        }
-        allowlist = json.loads(os.environ.get("REUSE_SURFACE_AUTH_SOURCE_ALLOWLIST", "{}"))
-        actual_urls = allowlist.get(AUTH_ENV)
-        if (
-            not isinstance(actual_urls, list)
-            or len(actual_urls) != 14
-            or set(actual_urls) != expected_urls
-        ):
-            raise ValueError("runtime_scope_not_exact")
-        schema = Draft202012Validator(load_schema())
-    except Exception:
-        receipt["error"] = "packet_scope_or_schema_validation_failed"
-        return receipt
-    for source, files in sources:
-        row = {
-            "repo": source["repo"],
-            "commit": source["consented_commit"],
-            "index_sha256": source["index_sha256"],
-            "verified": False,
-            "entry_sha256": [],
-        }
-        receipt["sources"].append(row)
-        try:
-            index_text = federation.fetch_remote_index_text(source["native_raw_url"], source)
-            if _sha(index_text.encode("utf-8")) != source["index_sha256"]:
-                raise ValueError("index_hash_mismatch")
-            index = yaml.safe_load(index_text)
-            entries = index["capabilities"]
-            if not isinstance(entries, list) or [e["id"] for e in entries] != source["capability_ids"]:
-                raise ValueError("unexpected_capability_ids")
-            for entry in entries:
-                if not {"id", "name", "summary", "vector", "domain", "status", "owner", "path"} <= entry.keys():
-                    raise ValueError("invalid_index_row")
-                if entry["owner"] != source["repo"] or entry["path"] not in files:
-                    raise ValueError("unconsented_entry")
-                entry_url = _raw_url(source["repo"], source["consented_commit"], entry["path"])
-                entry_text = federation.fetch_remote_index_text(entry_url, source)
-                digest = _sha(entry_text.encode("utf-8"))
-                if digest != files[entry["path"]]:
-                    raise ValueError("entry_hash_mismatch")
-                front = re.match(r"^---\n(.*?)\n---", entry_text, re.DOTALL)
-                if front is None:
-                    raise ValueError("missing_front_matter")
-                metadata = yaml.safe_load(front.group(1))
-                schema.validate(metadata)
-                if metadata["id"] != entry["id"] or metadata["owner"] != source["repo"]:
-                    raise ValueError("entry_identity_mismatch")
-                row["entry_sha256"].append(digest)
-            row["verified"] = True
-        except Exception:
-            # Never stringify errors: HTTP handlers and parsers can embed bodies,
-            # headers, credentials, or private source text in their messages.
-            row["error"] = "native_fetch_or_metadata_validation_failed"
-    receipt["all_verified"] = len(receipt["sources"]) == 7 and all(
-        row["verified"] for row in receipt["sources"]
-    )
-    return receipt
-
-
-def main() -> int:
-    parser = argparse.ArgumentParser(description=__doc__)
-    for name in ("proposal", "disclosure", "consent"):
-        parser.add_argument(f"--{name}", type=Path, required=True)
-    args = parser.parse_args()
-    receipt = verify(args.proposal, args.disclosure, args.consent)
-    print(json.dumps(receipt, sort_keys=True))
-    return 0 if receipt["all_verified"] else 1
-
-
-if __name__ == "__main__":
-    raise SystemExit(main())
diff --git a/specs/PlanCheck.md b/specs/PlanCheck.md
index 224f01c..61b71f1 100644
--- a/specs/PlanCheck.md
+++ b/specs/PlanCheck.md
@@ -61,11 +61,9 @@ Reuses the token-Jaccard approach already proven in `overlaps.py`
 same codebase:
 
 1. **Tokenize** the query blob with the existing `TOKEN_RE`.
-2. **Score** with the maximum of two token-Jaccard similarities: query versus
-   capability `name`, and query versus `name` + `summary` + `tags`.
-   Scoring the name separately prevents detailed summaries and consumption
-   instructions from diluting a short direct query such as "headless browser".
-   Summary/tag matches and longer intents retain the full-blob signal.
+2. **Score** against every federated capability's blob (`name` + `summary` +
+   `tags` + `discovery.intent` + `discovery.includes`, mirroring
+   `overlaps._entry_blob`) via Jaccard similarity.
 3. **Rank signal, not just tie-break:** among candidates within
    `--tie-window` (default 0.05) of the top score, prefer the entry with the
    higher discovery/availability vector (a more mature capability is a safer
@@ -78,7 +76,7 @@ same codebase:
 
 | Verdict | Condition | Meaning |
 |---|---|---|
-| `reuse` | top score ≥ `--reuse-threshold` (default 0.45) | A close lexical match exists; review its consumption contract and availability before adoption. |
+| `reuse` | top score ≥ `--reuse-threshold` (default 0.45) | An existing capability already covers this need — link it, don't rebuild it. |
 | `extend` | top score in `[--extend-threshold, --reuse-threshold)` (default 0.22–0.45) | Scope overlaps a capability closely enough that extending it is very likely cheaper than a new one — surfaced with an explicit "consider extending" framing. |
 | `new` | top score < `--extend-threshold`, or no federated capabilities exist | No good match. Proceed; optionally file a capability request (T04). |
 
@@ -88,12 +86,6 @@ the same threshold reasoning as `overlaps.py`'s `--threshold 0.28` default,
 shifted since plan-check matches short intent text against short summaries
 rather than long entry-to-entry blobs.
 
-Verdicts describe relevance, not runtime readiness. A source-only candidate or
-an unavailable endpoint is an availability gap on the existing capability, not
-evidence that a second capability should be built. The match summary carries
-provider consumption guidance where published; callers must run its preflight
-and respect any local-only or managed-admission conditions.
-
 ## 6. Output
 
 ### Markdown (TTY default)
diff --git a/tests/test_hosted_plan_check.py b/tests/test_hosted_plan_check.py
index 35256fc..df687a6 100644
--- a/tests/test_hosted_plan_check.py
+++ b/tests/test_hosted_plan_check.py
@@ -58,31 +58,6 @@ def test_hosted_only_capability_and_provenance_without_local_fallback(monkeypatc
     assert result["index_source"]["capability_count"] == 1
 
 
-def test_hosted_browser_discovery_includes_conditional_trial_guidance(monkeypatch, capsys):
-    from reuse_surface.registry import load_index
-
-    browser = next(item for item in load_index()["capabilities"]
-                   if item["id"] == "capability.infotech.headless-browser")
-    payload = snapshot()
-    payload["capabilities"] = [
-        {"id": "capability.example.headless", "name": "Headless Knowledge Engine",
-         "summary": "Headless information management", "tags": [],
-         "vector": "D7 / A7 / C6 / R6"},
-        browser,
-    ]
-    serve(monkeypatch, payload)
-    assert main(["plan-check", "--intent", "headless browser", "--hub-url",
-                 "https://registry.example", "--no-llm", "--format", "json"]) == 0
-    result = json.loads(capsys.readouterr().out)
-    assert result["verdict"] == "reuse"
-    assert result["matches"][0]["id"] == browser["id"]
-    summary = result["matches"][0]["summary"]
-    assert "rapp_playwright.py" in summary
-    assert "preflight" in summary and "trial --out" in summary
-    assert "ephemeral" in summary and "admission is pending" in summary
-    assert "availability gap" in summary
-
-
 @pytest.mark.parametrize("change", [
     {"stale": True}, {"stale": None}, {"composed_at": None},
     {"composed_at": "2020-01-01T00:00:00Z"},
diff --git a/tests/test_index_parity.py b/tests/test_index_parity.py
deleted file mode 100644
index 3a2774b..0000000
--- a/tests/test_index_parity.py
+++ /dev/null
@@ -1,91 +0,0 @@
-"""Exercise the same strict native validator used by the existing Forgejo job."""
-from __future__ import annotations
-
-import copy
-import subprocess
-import sys
-from pathlib import Path
-
-import pytest
-import yaml
-
-ROOT = Path(__file__).resolve().parent.parent
-
-
-def fixture_registry(tmp_path):
-    index = yaml.safe_load((ROOT / "registry/indexes/capabilities.yaml").read_text())
-    row = copy.deepcopy(index["capabilities"][0])
-    source = ROOT / row["path"]
-    target = tmp_path / row["path"]
-    target.parent.mkdir(parents=True)
-    target.write_bytes(source.read_bytes())
-    index["capabilities"] = [row]
-    index_path = tmp_path / "registry/indexes/capabilities.yaml"
-    index_path.parent.mkdir(parents=True)
-    return index_path, index
-
-
-def validate(root):
-    return subprocess.run(
-        [sys.executable, "-m", "reuse_surface.cli", "validate", "--root", str(root),
-         "--fail-on-warnings"], cwd=ROOT, capture_output=True, text=True,
-    )
-
-
-@pytest.mark.parametrize("field,value", [
-    ("id", "capability.synthetic.stale"), ("name", "stale name"),
-    ("summary", "stale summary"), ("domain", "stale-domain"),
-    ("status", "retired"), ("owner", "wrong-owner"),
-    ("tags", ["stale"]), ("consumption_modes", ["stale"]),
-    ("vector", "D0 / A0 / C0 / R0"),
-])
-def test_existing_strict_validator_refuses_stale_projection(tmp_path, field, value):
-    path, index = fixture_registry(tmp_path)
-    path.write_text(yaml.safe_dump(index))
-    assert validate(tmp_path).returncode == 0
-    original_entry = (tmp_path / index["capabilities"][0]["path"]).read_bytes()
-    index["capabilities"][0][field] = value
-    path.write_text(yaml.safe_dump(index))
-    result = validate(tmp_path)
-    assert result.returncode == 1, result.stdout + result.stderr
-    assert f"{field} differs from entry" in result.stderr
-    assert (tmp_path / index["capabilities"][0]["path"]).read_bytes() == original_entry
-
-
-def test_duplicate_id_and_path_cannot_satisfy_exactly_once(tmp_path):
-    path, index = fixture_registry(tmp_path)
-    index["capabilities"].append(copy.deepcopy(index["capabilities"][0]))
-    path.write_text(yaml.safe_dump(index))
-    result = validate(tmp_path)
-    assert result.returncode == 1
-    assert "duplicate id:" in result.stderr
-    assert "duplicate path:" in result.stderr
-
-
-def test_equivalent_vector_whitespace_is_allowed(tmp_path):
-    path, index = fixture_registry(tmp_path)
-    index["capabilities"][0]["vector"] = index["capabilities"][0]["vector"].replace(" ", "")
-    path.write_text(yaml.safe_dump(index))
-    assert validate(tmp_path).returncode == 0
-
-
-@pytest.mark.parametrize("source", ["null", "[]", "availability: null", "availability: []", "availability: ["])
-def test_malformed_frontmatter_returns_failure_without_traceback(tmp_path, source):
-    path, index = fixture_registry(tmp_path)
-    path.write_text(yaml.safe_dump(index))
-    (tmp_path / index["capabilities"][0]["path"]).write_text("---\n" + source + "\n---\n")
-    result = validate(tmp_path)
-    assert result.returncode == 1
-    assert "Traceback" not in result.stderr
-    assert "error:" in result.stderr
-
-
-@pytest.mark.parametrize("rows", [None, {}, [None], [[]], [{}], [{"id": [], "path": "x"}], [{"id": "x", "path": None}]])
-def test_unvalidated_index_shape_returns_failure_without_traceback(tmp_path, rows):
-    path, index = fixture_registry(tmp_path)
-    index["capabilities"] = rows
-    path.write_text(yaml.safe_dump(index))
-    result = validate(tmp_path)
-    assert result.returncode == 1
-    assert "Traceback" not in result.stderr
-    assert "index drift:" in result.stderr
diff --git a/tests/test_plan_check.py b/tests/test_plan_check.py
index 6cdaba5..fd9fccb 100644
--- a/tests/test_plan_check.py
+++ b/tests/test_plan_check.py
@@ -80,63 +80,6 @@ def test_match_query_no_capabilities():
     assert match_query(query, []) == []
 
 
-def test_short_browser_intent_outranks_mature_headless_services(monkeypatch):
-    browser = {
-        "id": "capability.infotech.headless-browser",
-        "name": "Headless Browser Automation",
-        "summary": "Playwright Chromium screenshots keyboard " + " ".join(
-            f"detail{i}" for i in range(100)
-        ),
-        "vector": "D3 / A2 / C2 / R2",
-        "tags": ["headless", "browser"],
-    }
-    other = {
-        "id": "capability.communication.context-engine",
-        "name": "Context Engine",
-        "summary": "Headless knowledge operations",
-        "vector": "D7 / A7 / C6 / R6",
-    }
-    monkeypatch.setattr(
-        "reuse_surface.plan_check.load_federated_capabilities",
-        lambda: ([other, browser], _recent_date()),
-    )
-    result = run_plan_check(load_query_from_intent("headless browser"), use_llm=False)
-    assert result["verdict"] == "reuse"
-    assert result["matches"][0]["id"] == browser["id"]
-    assert result["matches"][0]["score"] > result["matches"][1]["score"]
-    assert maybe_file_capability_request(
-        result, requesting_domain="infotech", requesting_agent="test"
-    ) is None
-
-    # Extra operational documentation must not turn a direct name match into NEW.
-    original_score = result["top_score"]
-    browser["summary"] += " " + " ".join(f"command{i}" for i in range(100))
-    repeated = run_plan_check(load_query_from_intent("headless browser"), use_llm=False)
-    assert repeated["top_score"] == original_score
-
-
-def test_summary_only_matching_survives_name_scoring():
-    query = load_query_from_intent("responsive screenshots keyboard assertions")
-    matches = match_query(query, [{
-        "id": "capability.infotech.headless-browser",
-        "name": "Browser Automation",
-        "summary": "Responsive screenshots keyboard assertions",
-    }])
-    assert verdict_for_score(matches[0].score) == "reuse"
-
-
-def test_maturity_still_breaks_equally_relevant_name_ties():
-    candidates = [
-        {"id": "capability.example.early", "name": "Browser Automation",
-         "summary": "Early implementation", "vector": "D2 / A2 / C1 / R1"},
-        {"id": "capability.example.mature", "name": "Browser Automation",
-         "summary": "Documented implementation", "vector": "D4 / A5 / C3 / R3"},
-    ]
-    matches = match_query(load_query_from_intent("browser automation"), candidates)
-    assert matches[0].id == "capability.example.mature"
-    assert matches[0].score == matches[1].score
-
-
 def test_load_query_from_workplan(tmp_path):
     workplan = tmp_path / "TEST-WP-0001-thing.md"
     workplan.write_text(
diff --git a/tests/test_private_source_verify.py b/tests/test_private_source_verify.py
deleted file mode 100644
index fa950d5..0000000
--- a/tests/test_private_source_verify.py
+++ /dev/null
@@ -1,188 +0,0 @@
-import hashlib
-import io
-import json
-from email.message import Message
-from urllib.request import HTTPSHandler, build_opener
-from urllib.response import addinfourl
-
-import pytest
-import yaml
-
-from reuse_surface import federation, private_source_verify as verifier
-
-
-def _digest(text):
-    return hashlib.sha256(text.encode()).hexdigest()
-
-
-@pytest.fixture
-def packets(tmp_path, monkeypatch):
-    """Fake owner-consented bodies; no estate credential or network transport."""
-    approved, sources, bodies = [], [], {}
-    for repo in sorted(verifier.REPOSITORIES):
-        cap_id = f"capability.fixture.{repo}"
-        commit = "a" * 40
-        path = f"registry/capabilities/{cap_id}.md"
-        metadata = {
-            "id": cap_id, "name": "Fixture", "summary": "Fixture metadata",
-            "owner": repo, "status": "draft",
-            "maturity": {"discovery": {"current": "D3", "target": "D5"}, "availability": {"current": "A2", "target": "A5"}},
-            "external_evidence": {"completeness": {"level": "C1"}, "reliability": {"level": "R0"}},
-        }
-        entry = "---\n" + yaml.safe_dump(metadata) + "---\nPrivate fixture body\n"
-        index = yaml.safe_dump({"capabilities": [{
-            "id": cap_id, "name": "Fixture", "summary": "Fixture metadata", "vector": "D3 / A2 / C1 / R0",
-            "domain": "infotech", "status": "draft", "owner": repo, "path": path,
-        }]})
-        index_url = verifier._raw_url(repo, commit, "registry/indexes/capabilities.yaml")
-        bodies[index_url] = index
-        bodies[verifier._raw_url(repo, commit, path)] = entry
-        sources.append({"repo": repo, "capability_ids": [cap_id], "consented_commit": commit,
-                        "native_raw_url": index_url, "index_sha256": _digest(index), "auth_env": verifier.AUTH_ENV})
-        approved.append({"repo": repo, "capability_ids": [cap_id], "commit": commit, "files": [
-            {"path": "registry/indexes/capabilities.yaml", "sha256": _digest(index)},
-            {"path": path, "sha256": _digest(entry)},
-        ]})
-    disclosure = json.dumps({"id": "fixture", "revision": 1, "sources": approved})
-    consent = json.dumps({"consent_status": "approved", "proposal_sha256": _digest(disclosure),
-                         "proposal_id": "fixture", "proposal_revision": 1, "repositories": sorted(verifier.REPOSITORIES)})
-    proposal = json.dumps({"sources": sources})
-    paths = []
-    for name, text in (("proposal", proposal), ("disclosure", disclosure), ("consent", consent)):
-        path = tmp_path / f"{name}.json"
-        path.write_text(text)
-        paths.append(path)
-        monkeypatch.setattr(verifier, f"{name.upper()}_SHA256", _digest(text))
-    return paths, bodies
-
-
-def _transport(monkeypatch, bodies, mutate=None):
-    calls = []
-
-    class FakeResponse:
-        def __init__(self, body):
-            self.body = body
-
-        def __enter__(self):
-            return self
-
-        def __exit__(self, *args):
-            return False
-
-        def read(self):
-            return self.body.encode()
-
-    class FakeOpener:
-        def open(self, req, timeout):
-            assert req.get_header("Authorization") == "Bearer fixture-secret"
-            assert timeout == 30
-            calls.append(req.full_url)
-            body = bodies[req.full_url]
-            return FakeResponse(mutate(req.full_url, body) if mutate else body)
-
-    monkeypatch.setenv(verifier.AUTH_ENV, "fixture-secret")
-    monkeypatch.setenv("REUSE_SURFACE_AUTH_SOURCE_ALLOWLIST", json.dumps({verifier.AUTH_ENV: list(bodies)}))
-    monkeypatch.setattr(federation.urllib.request, "build_opener", lambda handler: FakeOpener())
-    # Deliberately prohibit composition/cache resolution; direct fetch must work.
-    monkeypatch.setattr(federation, "resolve_source_index_path", lambda *a, **k: pytest.fail("cache path used"))
-    return calls
-
-
-def test_exact_consented_native_index_and_entries_no_cache(packets, monkeypatch):
-    paths, bodies = packets
-    calls = _transport(monkeypatch, bodies)
-    receipt = verifier.verify(*paths)
-    assert receipt["all_verified"]
-    assert not receipt["cache_used"]
-    assert len(calls) == 14
-    assert all("?ref=" + "a" * 40 in url for url in calls)
-    output = json.dumps(receipt)
-    assert "fixture-secret" not in output
-    assert "Private fixture body" not in output
-
-
-@pytest.mark.parametrize("suffix", [".yaml", ".md"])
-def test_changed_unconsented_body_fails(packets, monkeypatch, suffix):
-    paths, bodies = packets
-    _transport(monkeypatch, bodies, lambda url, text: text + "changed" if suffix in url else text)
-    receipt = verifier.verify(*paths)
-    assert not receipt["all_verified"]
-    assert all(not row["verified"] for row in receipt["sources"])
-
-
-def test_packet_tampering_rejected_before_fetch(packets, monkeypatch):
-    paths, _ = packets
-    paths[0].write_text(paths[0].read_text() + " ")
-    monkeypatch.setattr(federation, "fetch_remote_index_text", lambda *a: pytest.fail("network before consent checks"))
-    assert verifier.verify(*paths)["error"] == "packet_scope_or_schema_validation_failed"
-
-
-def test_missing_auth_fails_before_transport(packets, monkeypatch):
-    paths, bodies = packets
-    monkeypatch.setenv("REUSE_SURFACE_AUTH_SOURCE_ALLOWLIST", json.dumps({verifier.AUTH_ENV: list(bodies)}))
-    monkeypatch.delenv(verifier.AUTH_ENV, raising=False)
-    monkeypatch.setattr(federation.urllib.request, "build_opener", lambda *a: pytest.fail("transport without auth"))
-    receipt = verifier.verify(*paths)
-    assert not receipt["all_verified"]
-    assert all(not row["verified"] for row in receipt["sources"])
-
-
-def test_error_output_never_embeds_secret_or_body(packets, monkeypatch):
-    paths, bodies = packets
-    monkeypatch.setenv("REUSE_SURFACE_AUTH_SOURCE_ALLOWLIST", json.dumps({verifier.AUTH_ENV: list(bodies)}))
-
-    def failure(*args):
-        raise ValueError("fixture-secret Private fixture body")
-
-    monkeypatch.setattr(federation, "fetch_remote_index_text", failure)
-    output = json.dumps(verifier.verify(*paths))
-    assert "fixture-secret" not in output
-    assert "Private fixture body" not in output
-
-
-def test_broadened_runtime_reader_scope_fails_before_fetch(packets, monkeypatch):
-    paths, bodies = packets
-    monkeypatch.setenv("REUSE_SURFACE_AUTH_SOURCE_ALLOWLIST", json.dumps({verifier.AUTH_ENV: list(bodies) + ["https://attacker.invalid/"]}))
-    monkeypatch.setattr(federation, "fetch_remote_index_text", lambda *a: pytest.fail("broadened scope used"))
-    assert not verifier.verify(*paths)["all_verified"]
-
-
-@pytest.mark.parametrize("target", ["https://attacker.invalid/stolen", "https://forgejo.coulomb.social/other/repo"])
-def test_native_auth_redirect_never_replays_header(monkeypatch, target):
-    calls = []
-
-    class FakeHTTPS(HTTPSHandler):
-        def https_open(self, req):
-            calls.append(req.full_url)
-            headers = Message()
-            headers["Location"] = target
-            result = addinfourl(io.BytesIO(b""), headers, req.full_url, 302)
-            result.msg = "Found"
-            return result
-
-    # Use real urllib opener/redirect/error processors and fake HTTPS transport.
-    opener = build_opener(FakeHTTPS(), federation._RejectAuthenticatedRedirect())
-    monkeypatch.setattr(federation.urllib.request, "build_opener", lambda *a: opener)
-    monkeypatch.setenv("FIXTURE_AUTH", "fixture-secret")
-    monkeypatch.setenv("REUSE_SURFACE_AUTH_SOURCE_ALLOWLIST", json.dumps({"FIXTURE_AUTH": ["https://forgejo.coulomb.social/approved"]}))
-    with pytest.raises(ConnectionError, match="redirect refused"):
-        federation.fetch_remote_index_text("https://forgejo.coulomb.social/approved", {"repo": "fixture", "auth_env": "FIXTURE_AUTH"})
-    assert calls == ["https://forgejo.coulomb.social/approved"]
-
-
-def test_authenticated_http_rejected_before_transport(monkeypatch):
-    monkeypatch.setenv("FIXTURE_AUTH", "fixture-secret")
-    monkeypatch.setattr(federation.urllib.request, "build_opener", lambda *a: pytest.fail("cleartext transport"))
-    with pytest.raises(ValueError, match="HTTPS"):
-        federation.fetch_remote_index_text("http://forgejo.coulomb.social/approved", {"repo": "fixture", "auth_env": "FIXTURE_AUTH"})
-
-
-@pytest.mark.parametrize("config", [None, "broken-json", "[]", '{"FIXTURE_AUTH":"https://attacker.invalid/"}', '{"OTHER_AUTH":["https://attacker.invalid/"]}'])
-def test_unapproved_auth_target_rejected_before_credential_lookup(monkeypatch, config):
-    if config is None:
-        monkeypatch.delenv("REUSE_SURFACE_AUTH_SOURCE_ALLOWLIST", raising=False)
-    else:
-        monkeypatch.setenv("REUSE_SURFACE_AUTH_SOURCE_ALLOWLIST", config)
-    monkeypatch.setattr(federation, "_auth_headers", lambda *a: pytest.fail("unauthorized credential lookup"))
-    with pytest.raises(ValueError, match="runtime-authorized"):
-        federation.fetch_remote_index_text("https://attacker.invalid/", {"repo": "fixture", "auth_env": "FIXTURE_AUTH"})
diff --git a/tests/test_stats.py b/tests/test_stats.py
index d5f47e0..339670e 100644
--- a/tests/test_stats.py
+++ b/tests/test_stats.py
@@ -2,8 +2,6 @@ from __future__ import annotations
 
 from pathlib import Path
 
-import pytest
-
 from reuse_surface.stats import (
     collect_roster_stats,
     collect_stats,
@@ -12,36 +10,19 @@ from reuse_surface.stats import (
 )
 
 
-@pytest.fixture
-def stats_repo(tmp_path, monkeypatch):
-    monkeypatch.delenv("REUSE_SURFACE_URL", raising=False)
-    index = tmp_path / "registry/indexes/capabilities.yaml"
-    index.parent.mkdir(parents=True)
-    index.write_text("""version: 1
-domain: infotech
-capabilities:
-  - id: capability.example.source
-    vector: D3 / A2 / C2 / R2
-    path: registry/capabilities/source.md
-  - id: capability.example.service
-    vector: D4 / A5 / C3 / R3
-    path: registry/capabilities/service.md
-""")
-    return tmp_path
-
-
-def test_collect_stats_on_repo_root(stats_repo):
-    stats = collect_stats(stats_repo)
+def test_collect_stats_on_repo_root():
+    root = Path(__file__).resolve().parent.parent
+    stats = collect_stats(root)
     assert stats["capability_count"] == 2
     assert stats["index_present"] is True
-    assert stats["histograms"]["discovery"]["D3"] == 1
-    assert stats["histograms"]["discovery"]["D4"] == 1
-    assert stats["reliability"] == {"r0_r2": 1, "r3_plus": 1}
+    assert "discovery" in stats["histograms"]
 
 
-def test_format_stats_markdown_contains_count(stats_repo):
-    text = format_stats_markdown(collect_stats(stats_repo))
-    assert "**Capabilities:** 2" in text
+def test_format_stats_markdown_contains_count():
+    root = Path(__file__).resolve().parent.parent
+    text = format_stats_markdown(collect_stats(root))
+    assert "Capabilities:" in text
+    assert "2" in text
 
 
 def test_collect_roster_stats_federation_ready():
diff --git a/workplans/ADHOC-2026-10-13.md b/workplans/ADHOC-2026-10-13.md
deleted file mode 100644
index 6f3230b..0000000
--- a/workplans/ADHOC-2026-10-13.md
+++ /dev/null
@@ -1,72 +0,0 @@
----
-id: ADHOC-2026-10-13
-type: workplan
-title: "Register existing headless browser tooling for a worker trial"
-domain: infotech
-repo: reuse-surface
-status: finished
-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: done
-priority: medium
-state_hub_task_id: "2a8633d9-5664-5df8-9fd5-16b1d4bef91f"
-```
-
-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.
-
-Publication verified 2026-10-13:
-
-- Content commit `64e1674` pushed to `origin/main`.
-- Published source document fetched from
-  `https://forgejo.coulomb.social/coulomb/reuse-surface/raw/branch/main/registry/capabilities/capability.infotech.headless-browser.md`
-  matches the committed local file byte for byte.
-- Refreshed `https://reuse.coulomb.social/v1/federated?refresh=true`;
-  `composed_at: 2026-10-13T11:56:56+00:00`, `stale: false`, 66 capabilities,
-  exactly one `capability.infotech.headless-browser`, no federation warnings.
-- Hosted `plan-check --intent "headless browser" --no-llm` includes the entry.
-  Its documented scoring limitation remains; publication does not change ranking.
-- Registry validation and graph checks passed again before publication; the
-  previously recorded 76-test result covers the unchanged implementation.
-- State Hub indexed both completed tasks. Its consistency tool required reopening
-  the finished workstream before indexing T02; the record is closed again after
-  that sync. Generated writeback files are committed with this publication record.
diff --git a/workplans/ADHOC-2026-10-16.md b/workplans/ADHOC-2026-10-16.md
deleted file mode 100644
index f56ca00..0000000
--- a/workplans/ADHOC-2026-10-16.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-id: REUSE-WP-ADHOC-2026-10-16
-type: workplan
-title: "Refuse owner/index drift in the existing native registry validator"
-domain: infotech
-repo: reuse-surface
-status: finished
-owner: codex
-created: "2026-10-16"
-updated: "2026-10-16"
-flavor: implementation
-state_hub_workstream_id: "803c5bb3-12c5-51be-9852-c6719f7c80fd"
----
-
-## Refuse owner/index drift in the existing native registry validator
-
-```task
-id: REUSE-WP-ADHOC-2026-10-16-T01
-status: done
-priority: medium
-state_hub_task_id: "63c0e025-f7aa-5849-ac2f-61128ceb7a0e"
-```
-
-The existing strict validator accepted stale index metadata and duplicate IDs/paths. Extend its existing parity warnings and add native CLI regression tests, including malformed frontmatter/index shape without tracebacks. Existing mandatory Forgejo validation consumes this source; fleet adoption and hosted freshness are unverified.
-
-Completed 2026-10-16 under the founder's NetKingdom target implementation demand
-(CUST-WP-0080, TSA-11). Source review and exact before/after native CLI evidence:
-`the-custodian/docs/changes/netkingdom-target-2026-10-16/improvement-loop-next/`.
-The current 60-provider cohort has all 70 reviewed IDs exactly once; 3 field
-mismatches across 2 capabilities become zero with the source corrections.
-Native hosted refresh/readback and the accepted Activity/rein schedule remain
-separate gates. No production change, model call, credential access or external
-message was performed.
-
-Validation and publication checkpoint, 2026-10-16: 23 new native CLI cases
-passed, covering projected fields, duplicate ID/path, vector whitespace,
-malformed frontmatter and unvalidated index row shapes. Root independently
-reviewed source and passed all 30 parity/native-registry cases across its
-initial run and three required filesystem-approved reruns. The failed sandbox
-writes remain failed observations, not source defects. All three affected owner
-strict validations pass. Source commit `dd00b27` was published by the normal
-`statehub fix-consistency` backlog push; no manual push was used. Its automatic
-brief-only writeback was refused by the unchanged generated-only guard. This
-source record retains the issued workstream/task bindings; generated artifacts
-are not bundled to evade that refusal. Hosted readback remains outstanding.
diff --git a/workplans/archived/260615-REUSE-WP-0001-statehub-bootstrap.md b/workplans/REUSE-WP-0001-statehub-bootstrap.md
similarity index 100%
rename from workplans/archived/260615-REUSE-WP-0001-statehub-bootstrap.md
rename to workplans/REUSE-WP-0001-statehub-bootstrap.md
diff --git a/workplans/archived/260615-REUSE-WP-0002-mvp-registry-foundation.md b/workplans/REUSE-WP-0002-mvp-registry-foundation.md
similarity index 100%
rename from workplans/archived/260615-REUSE-WP-0002-mvp-registry-foundation.md
rename to workplans/REUSE-WP-0002-mvp-registry-foundation.md
diff --git a/workplans/archived/260615-REUSE-WP-0003-intent-scope-gap-closure.md b/workplans/REUSE-WP-0003-intent-scope-gap-closure.md
similarity index 100%
rename from workplans/archived/260615-REUSE-WP-0003-intent-scope-gap-closure.md
rename to workplans/REUSE-WP-0003-intent-scope-gap-closure.md
diff --git a/workplans/archived/260615-REUSE-WP-0004-registry-hardening.md b/workplans/REUSE-WP-0004-registry-hardening.md
similarity index 100%
rename from workplans/archived/260615-REUSE-WP-0004-registry-hardening.md
rename to workplans/REUSE-WP-0004-registry-hardening.md
diff --git a/workplans/archived/260615-REUSE-WP-0005-registry-federation.md b/workplans/REUSE-WP-0005-registry-federation.md
similarity index 100%
rename from workplans/archived/260615-REUSE-WP-0005-registry-federation.md
rename to workplans/REUSE-WP-0005-registry-federation.md
diff --git a/workplans/archived/260615-REUSE-WP-0006-registry-hygiene-and-coverage.md b/workplans/REUSE-WP-0006-registry-hygiene-and-coverage.md
similarity index 100%
rename from workplans/archived/260615-REUSE-WP-0006-registry-hygiene-and-coverage.md
rename to workplans/REUSE-WP-0006-registry-hygiene-and-coverage.md
diff --git a/workplans/archived/260615-REUSE-WP-0007-interactive-catalog.md b/workplans/REUSE-WP-0007-interactive-catalog.md
similarity index 100%
rename from workplans/archived/260615-REUSE-WP-0007-interactive-catalog.md
rename to workplans/REUSE-WP-0007-interactive-catalog.md
diff --git a/workplans/archived/260615-REUSE-WP-0008-graph-explorer.md b/workplans/REUSE-WP-0008-graph-explorer.md
similarity index 100%
rename from workplans/archived/260615-REUSE-WP-0008-graph-explorer.md
rename to workplans/REUSE-WP-0008-graph-explorer.md
diff --git a/workplans/archived/260615-REUSE-WP-0009-cli-hardening.md b/workplans/REUSE-WP-0009-cli-hardening.md
similarity index 100%
rename from workplans/archived/260615-REUSE-WP-0009-cli-hardening.md
rename to workplans/REUSE-WP-0009-cli-hardening.md
diff --git a/workplans/archived/260615-REUSE-WP-0010-network-federation.md b/workplans/REUSE-WP-0010-network-federation.md
similarity index 100%
rename from workplans/archived/260615-REUSE-WP-0010-network-federation.md
rename to workplans/REUSE-WP-0010-network-federation.md
diff --git a/workplans/archived/260617-REUSE-WP-0016-interactive-registry-maintain.md b/workplans/REUSE-WP-0016-interactive-registry-maintain.md
similarity index 100%
rename from workplans/archived/260617-REUSE-WP-0016-interactive-registry-maintain.md
rename to workplans/REUSE-WP-0016-interactive-registry-maintain.md
diff --git a/workplans/archived/260821-REUSE-WP-0020-coulombcore-retirement-cutover.md b/workplans/REUSE-WP-0020-coulombcore-retirement-cutover.md
similarity index 100%
rename from workplans/archived/260821-REUSE-WP-0020-coulombcore-retirement-cutover.md
rename to workplans/REUSE-WP-0020-coulombcore-retirement-cutover.md
diff --git a/workplans/archived/260920-REUSE-WP-0021-commerce-canon-source-rename.md b/workplans/REUSE-WP-0021-commerce-canon-source-rename.md
similarity index 67%
rename from workplans/archived/260920-REUSE-WP-0021-commerce-canon-source-rename.md
rename to workplans/REUSE-WP-0021-commerce-canon-source-rename.md
index e83320f..d1511a7 100644
--- a/workplans/archived/260920-REUSE-WP-0021-commerce-canon-source-rename.md
+++ b/workplans/REUSE-WP-0021-commerce-canon-source-rename.md
@@ -4,13 +4,12 @@ type: workplan
 title: "Follow the CommerceCanon repository rename in federation sources"
 domain: infotech
 repo: reuse-surface
-status: finished
-flavor: residual
+status: active
 owner: codex
 origin: residual
 origin_ref: IDENTITY-WP-0004
 created: "2026-09-05"
-updated: "2026-09-20"
+updated: "2026-09-06"
 state_hub_workstream_id: "0d1beafd-e638-5bb9-b91d-13543ac42a04"
 ---
 
@@ -26,7 +25,6 @@ repository's source/refresh evidence.
 ```task
 id: REUSE-WP-0021-T01
 status: done
-flavor: residual
 priority: medium
 state_hub_task_id: "b7803b7d-0b70-5aac-8f6a-2704794fccf2"
 ```
@@ -49,8 +47,7 @@ service, or capability-semantic migration is authorized by this task.
 
 ```task
 id: REUSE-WP-0021-T02
-status: done
-flavor: residual
+status: wait
 priority: low
 state_hub_task_id: "ceba0cd4-3992-5f16-bdd2-1f054055d10b"
 ```
@@ -91,34 +88,3 @@ a stale UUID. Do not manually substitute identifiers or run a derived-identity
 migration to quiet this audit. T02 must use a reviewed restoration tool that
 verifies existing primary records and historical source provenance. These
 archived binding defects do not invalidate the source-coordinate refresh.
-
-## Binding repair completed — 2026-09-20
-
-T02 is done. The restoration used the State Hub's own authoritative records
-rather than derived identifiers, so work-record identity and history are intact.
-
-**Workplan bindings.** The hub already carried correct `backing_relative_path`
-and `backing_archived: true` for all three archived workplans, which confirmed
-each UUID against its file. The verified existing identities were written back
-into the blank frontmatter fields — the same three UUIDs recorded in the
-2026-09-06 note above, not newly derived ones. `bindings` upload then returned
-`synced 22/22` instead of 422; C-03 cleared at the workplan level.
-
-**Task bindings.** The file task ids matched neither DB set. The hub holds each
-archived task twice: the original records created 2026-07-06 at registration,
-and a deterministic UUIDv5 duplicate set created 2026-08-28 by an unrelated
-migration. The files were rebound to the **2026-07-06 originals** — the
-historical identities — matched one-to-one by section heading and creation
-order, with every title aligning exactly. The v5 duplicates were left in place;
-removing them is hub-side data repair and is not authorized from this repo.
-
-**One collateral repair.** An intermediate `fix-consistency` run canceled
-REUSE-WP-0019-T06 (`a9f44d45…`) as an orphan while its file binding was still
-missing. Once rebound, the task was restored to `done` via
-`PATCH /tasks/{id}` — a sanctioned status update reflecting work already
-completed in 2026-07.
-
-`statehub fix-consistency --repo reuse-surface` now reports
-**0 automation-error, 0 assessment-fail, PASS (with warnings)**. Remaining
-warnings are unrelated: C-24 capability-tag advisories and an unread flex-auth
-inbox message (C-28/C-29, FLEX-WP-0020 handoff).
diff --git a/workplans/archived/260908-REUSE-WP-0022-hosted-plan-check.md b/workplans/REUSE-WP-0022-hosted-plan-check.md
similarity index 67%
rename from workplans/archived/260908-REUSE-WP-0022-hosted-plan-check.md
rename to workplans/REUSE-WP-0022-hosted-plan-check.md
index 06d038d..205f540 100644
--- a/workplans/archived/260908-REUSE-WP-0022-hosted-plan-check.md
+++ b/workplans/REUSE-WP-0022-hosted-plan-check.md
@@ -4,13 +4,12 @@ type: workplan
 title: "Use current hosted capability discovery in factory planning"
 domain: infotech
 repo: reuse-surface
-status: finished
+status: active
 owner: the-custodian
 topic_slug: helix-forge
 created: "2026-09-08"
 updated: "2026-09-08"
 related: [HFACT-WP-0001, VERGABE-WP-0018]
-state_hub_workstream_id: "9f90448a-b149-5d04-91b5-0bfc163a9ea2"
 ---
 
 # Hosted query-before-build
@@ -29,7 +28,6 @@ id: REUSE-WP-0022-T01
 status: done
 priority: high
 assignee: the-custodian
-state_hub_task_id: "004ba579-64d0-5b56-9847-b4b02fbf0f7a"
 ```
 
 Use the existing public GET /v1/federated. Preserve local mode compatibility.
@@ -43,11 +41,10 @@ No additional service, model call or mutation credential is necessary.
 
 ```task
 id: REUSE-WP-0022-T02
-status: done
+status: progress
 priority: high
 assignee: the-custodian
 depends_on: [REUSE-WP-0022-T01]
-state_hub_task_id: "a97e7347-70b1-5ce6-93fa-ff9fb1df2133"
 ```
 
 Publish the tested implementation through the existing Forgejo review path.
@@ -63,18 +60,3 @@ warning). Vergabe-teilnahme invoked the CLI against the real hosted federation:
 `bfb6b79970867ac981fc48286dea24b2ff766cf732d3675f73ccbddb8971e498`.
 Consumer receipt: `vergabe-teilnahme/docs/evidence/2026-09-08-hosted-plan-check.json`.
 This attended implementation does not count as a governed factory run.
-
-## Completion and handoff
-
-Integrated on published `main` at `998a5ef3efd42af728fb276594f634f516855daa`
-after PR 1 and live CI run 331 passed. Main CI 333 and image publication 334
-passed. Image `main-998a5ef` has digest
-`sha256:b510acc6bb1aee0e70709f65e53c61a96336ca837eba6dd75ceaa1f5cbf3d441`.
-Vergabe-teilnahme's consumer and build gate are integrated and its image is
-published under VERGABE-WP-0018. No production deployment is claimed here.
-
-Residual integration/operating acceptance remains live in HFACT-WP-0001-T06/T07.
-HFACT-WP-0001-T02 also owns disposition of three archived REUSE-WP-0017/0018/0019
-null-ID consistency findings; these are historical projection issues, not failed
-checks for REUSE-WP-0022. Forgejo PR 1 metadata still needs the authenticated
-`manually-merged` receipt after OpenBao caller login; source is already on main.
diff --git a/workplans/REUSE-WP-0023-access-engine-source-rename.md b/workplans/REUSE-WP-0023-access-engine-source-rename.md
deleted file mode 100644
index 4351dbd..0000000
--- a/workplans/REUSE-WP-0023-access-engine-source-rename.md
+++ /dev/null
@@ -1,140 +0,0 @@
----
-id: REUSE-WP-0023
-type: workplan
-title: "Follow the access-engine repository rename in federation sources"
-domain: infotech
-repo: reuse-surface
-status: finished
-flavor: residual
-owner: claude
-origin: residual
-origin_ref: FLEX-WP-0020
-created: "2026-09-20"
-updated: "2026-09-30"
-state_hub_workstream_id: "65c03b24-4349-5a60-b7d6-79cf54931d06"
----
-
-# access-engine source-coordinate handoff
-
-flex-auth is being renamed to access-engine under FLEX-WP-0020. Forge
-repository ID 42 is unchanged and the State Hub repo UUID
-`fda8ad85-a7d7-4055-8f21-902a533e59df` stays. **Runtime names stay
-`flex-auth`** per FLEX-DEC-2026-013 — this is a repository-coordinate rename
-only, not a service or capability rename.
-
-This repository owns the federation-source side: the URL, cache path, and
-roster entry that point at the renamed repository, plus evidence that the
-published capability survives the move unchanged.
-
-This is the same shape as **REUSE-WP-0021** (identity-canon → commerce-canon,
-finished 2026-09-20); reuse that workplan's approach and evidence format.
-
-## Status at registration — 2026-09-20
-
-**The rename has not landed yet.** Probed on 2026-09-20:
-
-- `https://forgejo.coulomb.social/coulomb/access-engine/raw/main/registry/indexes/capabilities.yaml` → **404**
-- `https://forgejo.coulomb.social/coulomb/flex-auth/raw/main/registry/indexes/capabilities.yaml` → **303** (still resolves)
-
-T01 therefore starts in `wait`. Do not pre-emptively rewrite the source
-coordinates: flipping the URL before the forge rename lands would break an
-enabled, publish-passing source and drop its capability from the composed
-index. Start T01 when `access-engine` serves the raw index.
-
-## Update source coordinates and verify federation
-
-```task
-id: REUSE-WP-0023-T01
-status: done
-flavor: residual
-priority: medium
-state_hub_task_id: "d97094d4-4cad-5b35-aa88-eb952215937a"
-```
-
-Blocked until the forge rename lands (see above).
-
-Update `registry/federation/sources.yaml` and
-`registry/federation/local-repo-roster.yaml` to the canonical access-engine
-URL and path. Refresh that source's cache and recompose
-`registry/indexes/federated.yaml` through the repository's federation tooling.
-
-Preserve the capability identifier published by flex-auth — a repository
-rename alone does not redefine a capability, and runtime names are explicitly
-unchanged by FLEX-DEC-2026-013. Source owner/URL/cache metadata should match
-the newly published access-engine registry.
-
-Verify the capability entry remains discoverable with canonical source links,
-confirm the composed row count does not drop, record commands and results,
-commit, and hand evidence back to FLEX-WP-0020. Leave historical
-workplan/completion provenance intact. No credential, runtime service, or
-capability-semantic migration is authorized by this task.
-
-## Reconcile the hosted hub registration
-
-```task
-id: REUSE-WP-0023-T02
-status: done
-flavor: residual
-priority: medium
-state_hub_task_id: "77b1eb56-bbf6-5454-892f-bf60e32b864a"
-```
-
-Blocked on T01.
-
-The production hub at `https://reuse.coulomb.social` carries its own repo
-registrations independent of the checked-in manifest. Register the
-access-engine coordinates there and retire the flex-auth registration the same
-way commerce-canon was handled under REUSE-WP-0021: keep the superseded
-registration disabled with a replacement note rather than deleting it, so the
-rename stays auditable. Confirm the hub's composed index serves the capability
-from the canonical URL with no target warnings.
-
-## Loose-end review — 2026-09-28
-
-Reviewed all 23 repository workplans, including archived files. The 22 closed
-workplans have no unfinished task blocks; T01 and T02 here are the only open
-tasks. Neither can complete before the upstream FLEX-WP-0020 rename lands.
-This workplan is now `blocked`, with both tasks remaining `wait`; no new tasks
-or workplans were opened.
-
-Fresh read-only probes used `curl -sS -L -o  -w '%{http_code}'`
-against the raw capability-index URLs listed above:
-
-- `access-engine/raw/main/registry/indexes/capabilities.yaml`: HTTP **404**.
-- `flex-auth/raw/main/registry/indexes/capabilities.yaml`: HTTP **200** after
-  following redirects.
-
-The 2026-09-20 flex-auth inbox handoff also confirms T01 must follow
-FLEX-WP-0020-T06, with the upstream owner responsible for announcing that the
-new raw index is available. The checked-in source and local roster still use
-`flex-auth`, correctly preserving the working source until that prerequisite
-is met. T02 remains blocked on T01; the hosted registration must follow the
-verified source migration. Resume these existing tasks when the canonical
-access-engine raw index is available and validates successfully.
-
-## T01 evidence — 2026-09-30
-
-FLEX-WP-0020 rename landed (access-engine, head b943d9a). Probe:
-`/coulomb/access-engine/raw/main/registry/indexes/capabilities.yaml` returns 303 then 200.
-Changed `registry/federation/sources.yaml` (repo + URL) and
-`local-repo-roster.yaml` (slug + path ~/access-engine). Ran
-`reuse-surface federation compose --refresh`: 65 capabilities before and after;
-only `source_repo`/`source_url`/`source_index` of the one entry changed, capability
-identifier preserved. `reuse-surface validate` ok. Old `cache/flex-auth*` files are
-ignored cache and were left. T02 (hosted hub) handed to an operator.
-
-## T02 evidence — 2026-09-30
-
-Operator ran, with their own OpenBao login (`bao kv get -field=REUSE_SURFACE_TOKEN
-platform/workloads/reuse/reuse-surface/runtime-secrets`): `hub register --repo
-access-engine --domain helix_forge --url ` (ok) and
-`hub update --repo flex-auth --no-enabled --description "Superseded by
-access-engine ..."` (ok). The `warden access --exec` lane was refused by design
-(WARDEN-WP-0039: resource.system=railiance-platform vs. ops-warden binding; no
-delegated-read contract yet) — not rename breakage; the owner-native `bao` read
-is the working route.
-
-Verified read-only against `https://reuse.coulomb.social`: `/v1/repos` shows
-access-engine enabled and flex-auth disabled with the replacement note;
-`/v1/federated` serves `capability.authorization.policy-evaluate` from the
-access-engine URL, 65 capabilities (unchanged), `stale: false`.
diff --git a/workplans/REUSE-WP-0024-browser-discovery-and-provider-evidence.md b/workplans/REUSE-WP-0024-browser-discovery-and-provider-evidence.md
deleted file mode 100644
index 5641340..0000000
--- a/workplans/REUSE-WP-0024-browser-discovery-and-provider-evidence.md
+++ /dev/null
@@ -1,84 +0,0 @@
----
-id: REUSE-WP-0024
-type: workplan
-title: "Resolve browser discovery relevance and publish verified provider consumption"
-domain: infotech
-repo: reuse-surface
-status: finished
-owner: codex
-origin: cross-repo
-origin_ref: REUSE-IN-0001
-created: "2026-10-13"
-updated: "2026-10-13"
-state_hub_workstream_id: "3d62d0af-5deb-55b5-b570-e62f05a43666"
----
-
-# Browser discovery and provider evidence
-
-Reviewed against the current checkout and rapp-playwright's published 0.1.0
-contract, immutable release and independent consumer receipts. All prior
-workplans are closed. REUSE-IN-0001 and the October 13 provider inbox handoffs
-are the remaining actionable work. User authorized review, implementation,
-commit and synchronization.
-
-## Publish the verified provider path
-
-```task
-id: REUSE-WP-0024-T01
-status: done
-priority: high
-state_hub_task_id: "dd75f033-02f1-521e-b5c3-cddb5dce80df"
-```
-
-Update the existing capability, index and generated views with pinned public
-client/contract/release/evidence links and executable preflight/trial guidance.
-Assess maturity against the standard; distinguish deployable local container
-availability from pending managed platform admission and ephemeral endpoints.
-Retain the source-adaptation fallback. No second browser capability or consumer
-task closure. Verify published sources and the available local fixture path.
-
-## Fix short-intent relevance
-
-```task
-id: REUSE-WP-0024-T02
-status: done
-priority: high
-state_hub_task_id: "a689bc2a-a112-59d4-b00c-f6934665dffb"
-```
-
-Keep deterministic token matching, but score capability names separately so
-long summaries cannot dilute a direct name match. Test browser versus unrelated
-headless services, unrelated queries, long descriptions, and maturity ties.
-Make reuse advice distinguish lexical relevance from runtime availability.
-Verify the same behavior against the hosted snapshot using the local CLI.
-
-## Validate, publish and synchronize
-
-```task
-id: REUSE-WP-0024-T03
-status: done
-priority: medium
-state_hub_task_id: "0be283ba-12da-52a1-b1af-0c2d6dcb58f1"
-```
-
-Run the appropriate tests and registry/generated-artifact checks. Commit and
-push, refresh hosted federation, retain public readback evidence, reconcile
-REUSE-IN-0001 and workplan statuses, and log progress to State Hub. Browser
-deployment and CONTENT-WP-0000-T04 acceptance remain their owners' work.
-
-## Implementation evidence
-
-See [review and trial receipts](../docs/evidence/2026-10-13-browser-discovery.md).
-The published client passed 14 fixture steps and produced four independently
-checked screenshots. Availability is now A5 for the published local container;
-A6 managed admission remains pending. Name scoring ranks the browser first at
-0.6667 instead of returning false-new. Replaced stale live-registry stats
-assumptions with a controlled fixture after the full suite exposed them.
-
-Completed publication: implementation commit `50077c9` pushed to `origin/main`;
-public capability and index bytes match. Hosted readback at 18:49:02 UTC is fresh
-and warning-free, with 66 capabilities and one browser entry. The updated local
-CLI against that snapshot returns browser first, 0.6667, `reuse`; no server code
-deployment was required. All **212 tests** pass, registry validation and graph
-checks pass. REUSE-IN-0001 is closed for the registry-owned concerns. Managed
-admission and consumer acceptance remain with their existing owners.
diff --git a/workplans/REUSE-WP-0025-private-source-reader-boundary.md b/workplans/REUSE-WP-0025-private-source-reader-boundary.md
deleted file mode 100644
index 97d2e66..0000000
--- a/workplans/REUSE-WP-0025-private-source-reader-boundary.md
+++ /dev/null
@@ -1,84 +0,0 @@
----
-id: REUSE-WP-0025
-type: workplan
-title: "Bind private source reader to consented metadata URLs"
-domain: infotech
-repo: reuse-surface
-status: blocked
-owner: reuse-surface-owner-preparation-worker
-created: "2026-10-15"
-updated: "2026-10-21"
-flavor: implementation
-depends_on: [CUST-WP-0081]
-state_hub_workstream_id: "23c7bcf5-5f5d-524f-a06e-be5247ae1a98"
----
-
-Prepared in an isolated owner checkout under the user's explicit worker-agent
-request. This worker has supervised local preparation scope only; no founder
-credential approval, permanent repo-owner authority, deployment, or source-owner
-consent is inferred. The custodian integration agent handles hub synchronization
-after accepting the proposed owner workitem. No State Hub mutation is performed
-from this isolated checkout.
-
-## Independent consumer review
-
-```task
-id: REUSE-WP-0025-T01
-status: done
-priority: high
-state_hub_task_id: "1f841e28-fc55-5b12-bb51-bb3291f17d8b"
-```
-
-Reviewed consumer INTENT, native authenticated acquisition, public API registration
-fields, and stale-cache behavior. The deployed baseline is unsuitable for a new
-private reader: registered auth_env/URL can route runtime credentials to arbitrary
-hosts; urllib's default redirect handler also forwards Authorization. Review is
-`changes_requested`; metadata consent does not authorize reader provisioning.
-See docs/assessments/cust81-private-reader/owner-review-r1.md.
-
-## Prepare native boundary and verification helper
-
-```task
-id: REUSE-WP-0025-T02
-status: done
-priority: high
-state_hub_task_id: "a9e794f6-a894-52e6-bd93-4781e05c6a55"
-```
-
-Patch rejects authenticated cleartext URLs and all redirects, and requires an
-operator-controlled exact env-to-URL allowlist before credential lookup. Receipt
-helper invokes native fetch directly for all seven consented index/entry pairs,
-checks exact hashes and entry schema, and never uses cached fallback. Fake
-transport tests and local committed metadata validation are preparation evidence,
-not live authenticated fetch receipts.
-
-## Review, publish and verify deployed consumer
-
-```task
-id: REUSE-WP-0025-T03
-status: wait
-priority: high
-blocked_on: message-from:railiance-apps
-blocking_reason: "Approved rollout requested from railiance-apps (msg f8f142bc); prerequisite: operator creates reuse-surface-reader bot + PAT in OpenBao"
-state_hub_task_id: "789bb918-4848-5bdf-bfd4-8ee42877addb"
-```
-
-Owner review and exact credential/rollout disposition remain pending. Platform/apps
-must inventory every existing authenticated dynamic registration without reading
-Secret values, migrate approved exact URLs, and deliver a reviewed image containing
-the fix plus the exact reader allowlist. Then run helper inside the hub environment
-with the owner-provided packets, verify all seven sources fresh, and hand a
-sanitized receipt to the custodian for registration and final 70-capability audit.
-No new PAT is delivered to the current baseline consumer.
-
-2026-10-21: decision 81c8535a resolved by Bernd — approved (1) the native
-boundary fix, (2A) a dedicated Forgejo machine user (e.g. `reuse-surface-reader`)
-with read access to exactly the seven consented repos and a `read:repository`
-PAT on its own OpenBao KV path, delivered via ESO as
-`REUSE_SURFACE_FORGEJO_SOURCE_READ_TOKEN` and allowlisted to the 14 commit-pinned
-URLs, and (3) the platform/apps rollout as described above. Remaining: create the
-bot user and token (human/operator — agents do not handle the secret value), roll
-out, run the helper, hand over the receipt. Follow-up: define how allowlist pins
-are refreshed and re-approved when the source repos update their metadata.
-Rollout requested from railiance-apps via hub message f8f142bc; T03 now waits
-on that reply (image digest, Helm revision, sanitized helper receipt).
diff --git a/workplans/REUSE-WP-0026-wave2-resource-right-sizing.md b/workplans/REUSE-WP-0026-wave2-resource-right-sizing.md
deleted file mode 100644
index 8258279..0000000
--- a/workplans/REUSE-WP-0026-wave2-resource-right-sizing.md
+++ /dev/null
@@ -1,59 +0,0 @@
----
-id: REUSE-WP-0026
-type: workplan
-title: "Wave-2 resource right-sizing from the 2026-10-21 allocation review"
-domain: infotech
-repo: reuse-surface
-status: finished
-flavor: implementation
-owner: claude
-created: "2026-10-21"
-updated: "2026-10-21"
-related:
-  - CUST-WP-0071
-  - RESOURCE-WP-0008
-state_hub_workstream_id: "d0b06425-2d20-5816-bd09-9e9bec846236"
----
-
-# REUSE-WP-0026 — Wave-2 resource right-sizing from the 2026-10-21 allocation review
-
-Receiving workplan in `reuse-surface` for the wave-2 request changes below.
-
-Origin: the 2026-10-21 node allocation review (`RESOURCE-WP-0008-T03`, feeding `CUST-WP-0071-T03`). Per the founder's 2026-10-21 delivery interview (`the-custodian/docs/decisions/2026-10-21-cust-wp-0071-delivery-interview.md`) the small adjustments form wave 2: one receiving task per owner repo, applied later in a batch. Applying wave 2 needs a separate founder approval, so every cluster-write task here is a human-gated `wait`. This file changes no manifest.
-
-## Apply the reviewed request changes
-
-```task
-id: REUSE-WP-0026-T01
-status: done
-priority: medium
-state_hub_task_id: "2fd47858-94d8-5a57-96f9-35b25d54bb1d"
-```
-
-Values are pod-aggregate figures from the budget file (7-day window ending 2026-10-21T06:08Z). Limits stay unchanged unless stated.
-
-| Workload (ns/name) | Pods | CPU request | CPU limit | CPU p95/peak 7d (m) | Memory request | Memory limit | Mem p95/peak (Mi) | Throttle | Action |
-|---|---:|---:|---:|---:|---:|---:|---:|---:|---|
-| `reuse/reuse-surface` | 2 | 110m → **10m** | 550m | 2.1/10.2 | 288Mi → **80Mi** | 576Mi | 56.2/57.0 | 0.0 | decrease + memory down |
-
-Source and container detail:
-
-- `reuse/reuse-surface`: two pods from `railiance-apps/charts/reuse-surface/values.yaml`: main `resources` (100m/256Mi) and the second component's `resources` (10m/32Mi) — the chart lives in railiance-apps. Split the 10m/80Mi total as 5m/48Mi main and 5m/32Mi second, or by per-pod p95.
-
-**Prepared 2026-10-21 (wave-2 worker W1a; not applied).** Live owner is Helm release `reuse` (rev 11) from railiance-apps. Change: railiance-apps `b7fb7b2`, `helm/reuse-surface-values.yaml`. Split by per-pod p95: main 100m/256Mi → 5m/64Mi (p95 about 51Mi, so 48Mi would have sat below the working set); landing 10m/32Mi → 5m/16Mi. Total 10m/80Mi, limits unchanged. The full render against live shows only `resources.requests` on both Deployments. Apply: `cd railiance-apps && make reuse-deploy`. RollingUpdate.
-
-Evidence: resource-control `docs/evidence/2026-10-21-node-allocation-review/2026-10-21-node-budget.md` (+ `.json`, commit `3d9b1bd`). Rule: CPU = max(floor, p95x1.5, peakx0.5) rounded up to 5m; memory request = 7d p95 working set x1.15 (only when the change is at least 64Mi).
-
-Steps:
-
-1. Map the pod-aggregate proposal onto the named container(s) in the source file; where a workload has several containers or pods, split by the per-pod figures in `2026-10-21-workload-usage.json` and keep the sum at the proposed value.
-2. Prepare the source change as a reviewed commit (no push, no sync) and record the before values here.
-3. Apply only inside the batched wave-2 rollout, after founder approval, through the owner's normal deploy path (ArgoCD sync or documented helm/kubectl apply).
-
-Verification: `kubectl -n  get pod -o jsonpath='{..resources}'` shows the new requests; pods Ready with no new restarts or OOMKilled over 24h; for CPU decreases the throttle ratio and request latency stay at or below the 7d baseline; node request total drops by the expected delta.
-
-Rollback: revert the source commit and re-sync/re-apply; the before values in the table above are the rollback target. Keep before/after `kubectl get -o yaml` captures as the receipt.
-
-## Applied — 2026-10-22 (REUSE-WP-0026-T01)
-
-Applied under the founder's wave-2 authorization (the-custodian docs/decisions/2026-10-21-cust-wp-0071-delivery-interview.md), after a full-render diff against live that showed resources only. railiance-apps `make reuse-deploy`, Helm revision 12; main and landing are Ready. Evidence: the-custodian docs/evidence/2026-10-22-wave2-apply.md.
diff --git a/workplans/archived/260707-REUSE-WP-0017-capability-coverage-campaign.md b/workplans/archived/260707-REUSE-WP-0017-capability-coverage-campaign.md
index 4b81e08..7b4a0d7 100644
--- a/workplans/archived/260707-REUSE-WP-0017-capability-coverage-campaign.md
+++ b/workplans/archived/260707-REUSE-WP-0017-capability-coverage-campaign.md
@@ -9,7 +9,7 @@ owner: claude-code
 topic_slug: helix-forge
 created: "2026-07-06"
 updated: "2026-07-07"
-state_hub_workstream_id: "a2d83504-fcd0-4561-8688-b77a01cb7f06"
+state_hub_workstream_id:
 ---
 
 > **Terminology note:** Historical text in this archived workplan may use the legacy term "workstream". The fleet term is **workplan** (`canon/standards/workplan-terminology-fleet_v0.1.md`).
@@ -76,7 +76,7 @@ and CI.
 id: REUSE-WP-0017-T01
 status: done
 priority: high
-state_hub_task_id: "90fe5bf2-7c03-4af5-bc4a-e5d608c7e879"
+state_hub_task_id: "40236c01-58f0-43a2-a4d6-5bf5bd80bdc7"
 ```
 
 - Add `capability_status: has | none | pending` to roster schema and
@@ -93,7 +93,7 @@ state_hub_task_id: "90fe5bf2-7c03-4af5-bc4a-e5d608c7e879"
 id: REUSE-WP-0017-T02
 status: done
 priority: high
-state_hub_task_id: "17ea8783-1344-4d04-8f7f-f93859ae4a20"
+state_hub_task_id: "8f608a69-4bd1-4018-b51d-bb19d0ca887c"
 ```
 
 - For each empty-scaffold repo: read INTENT/SCOPE/README + top-level layout,
@@ -110,7 +110,7 @@ state_hub_task_id: "17ea8783-1344-4d04-8f7f-f93859ae4a20"
 id: REUSE-WP-0017-T03
 status: done
 priority: medium
-state_hub_task_id: "3465cebf-84f9-4d67-8d8a-cca9771f2f06"
+state_hub_task_id: "2e0b5b06-b000-45a8-8d8c-31fee5eb6678"
 ```
 
 For each confirmed `no-capability` repo:
@@ -126,7 +126,7 @@ For each confirmed `no-capability` repo:
 id: REUSE-WP-0017-T04
 status: done
 priority: high
-state_hub_task_id: "20d67516-331b-46bd-8a90-1170139313c2"
+state_hub_task_id: "89a30f80-d0bd-432f-81ae-005fd1ec1356"
 ```
 
 **Note:** `establish --discover` requires a running `llm-connect` backend,
@@ -194,7 +194,7 @@ Notable calls in this cohort:
 id: REUSE-WP-0017-T05
 status: done
 priority: high
-state_hub_task_id: "56b68b6f-4dca-4fed-925f-d20783dc40d9"
+state_hub_task_id: "efa64aab-dde5-499e-a10b-11ce81ef6941"
 ```
 
 - Bernd reviews drafted entries per cohort (maturity honesty, scope, ids)
@@ -215,7 +215,7 @@ refresh.
 id: REUSE-WP-0017-T06
 status: done
 priority: medium
-state_hub_task_id: "1a04b60a-b982-4b5f-ae20-955bc88d4204"
+state_hub_task_id: "e94a792d-9b6d-4a4b-b9a6-6171a52557d2"
 ```
 
 **Diagnosis complete — two separate issues, conflated in the original note:**
@@ -259,7 +259,7 @@ config-atlas is now present among the 61 sources at
 id: REUSE-WP-0017-T07
 status: done
 priority: low
-state_hub_task_id: "24ac37bf-2509-4077-9aa3-c09a599dd644"
+state_hub_task_id: "c8cf18f5-3140-42f1-a065-9aa6f03de1f0"
 ```
 
 - `report gaps` shows 0 unclassified scaffolds; record final coverage ratio
diff --git a/workplans/archived/260707-REUSE-WP-0018-plan-check-consumption-loop.md b/workplans/archived/260707-REUSE-WP-0018-plan-check-consumption-loop.md
index d7e10fb..b31de7d 100644
--- a/workplans/archived/260707-REUSE-WP-0018-plan-check-consumption-loop.md
+++ b/workplans/archived/260707-REUSE-WP-0018-plan-check-consumption-loop.md
@@ -10,7 +10,7 @@ topic_slug: helix-forge
 created: "2026-07-06"
 updated: "2026-07-07"
 reuse_check: "new — dogfooded 2026-07-07 via reuse-surface plan-check against the full 61-capability federated index; no existing capability covers query-before-build matching"
-state_hub_workstream_id: "cd8683ff-6e6c-4f6c-a62f-565bd55113ea"
+state_hub_workstream_id:
 ---
 
 > **Terminology note:** Historical text in this archived workplan may use the legacy term "workstream". The fleet term is **workplan** (`canon/standards/workplan-terminology-fleet_v0.1.md`).
@@ -87,7 +87,7 @@ maturity vector, owning repo, and consumer guidance.
 id: REUSE-WP-0018-T01
 status: done
 priority: high
-state_hub_task_id: "c7b3407a-2b9d-46ba-ae9c-7ab12235f0ba"
+state_hub_task_id: "2507e1d0-5c67-491e-a5d1-6ac32a59ed7f"
 ```
 
 Design doc `specs/PlanCheck.md`:
@@ -107,7 +107,7 @@ Design doc `specs/PlanCheck.md`:
 id: REUSE-WP-0018-T02
 status: done
 priority: high
-state_hub_task_id: "24911d0e-41bc-4c8c-a39a-7dc8ec65d8c6"
+state_hub_task_id: "33bbe7c8-461b-43e9-9b51-1a10f6413e6a"
 ```
 
 Implemented in `reuse_surface/plan_check.py` + `plan-check` CLI command:
@@ -130,7 +130,7 @@ Implemented in `reuse_surface/plan_check.py` + `plan-check` CLI command:
 id: REUSE-WP-0018-T03
 status: done
 priority: medium
-state_hub_task_id: "9040505a-238e-4815-ae1a-8c5f8c12afa9"
+state_hub_task_id: "cf3f1923-a7b7-4ccc-8b81-6b21ba040835"
 ```
 
 Unblocked 2026-07-07 — `llm-connect` running locally (mock provider,
@@ -167,7 +167,7 @@ Unblocked 2026-07-07 — `llm-connect` running locally (mock provider,
 id: REUSE-WP-0018-T04
 status: done
 priority: medium
-state_hub_task_id: "8249dca7-18ca-4150-9671-ca87e6a5ad88"
+state_hub_task_id: "ef94baac-57ed-405c-a9f1-9752683bfc71"
 ```
 
 Implemented in `reuse_surface/statehub_bridge.py` against the live local
@@ -195,7 +195,7 @@ State Hub HTTP API (`http://127.0.0.1:8000`, confirmed reachable):
 id: REUSE-WP-0018-T05
 status: done
 priority: high
-state_hub_task_id: "c232a669-b263-4978-a8b1-3721b8bfaa68"
+state_hub_task_id: "572bd9ed-1e2d-46bc-8ae5-e8b5f8ea03ea"
 ```
 
 Gate cleared 2026-07-07: WP-0017 finished, `federated.yaml` composed with
@@ -225,7 +225,7 @@ WP-0017 landed.
 id: REUSE-WP-0018-T06
 status: done
 priority: low
-state_hub_task_id: "ff0a91eb-cc41-487b-b726-8c2f84860399"
+state_hub_task_id: "6c00931f-5ff6-4bde-b04d-9146a999047d"
 ```
 
 - `tools/README.md` command reference for `plan-check` and
diff --git a/workplans/archived/260707-REUSE-WP-0019-forgejo-automation-and-telemetry.md b/workplans/archived/260707-REUSE-WP-0019-forgejo-automation-and-telemetry.md
index e1456fb..e2022a5 100644
--- a/workplans/archived/260707-REUSE-WP-0019-forgejo-automation-and-telemetry.md
+++ b/workplans/archived/260707-REUSE-WP-0019-forgejo-automation-and-telemetry.md
@@ -10,7 +10,7 @@ topic_slug: helix-forge
 created: "2026-07-06"
 updated: "2026-07-08"
 reuse_check: "new — dogfooded 2026-07-07 via reuse-surface plan-check against the full 61-capability federated index; no existing capability covers Forgejo webhook automation or reuse telemetry"
-state_hub_workstream_id: "569be717-34f8-4039-bb26-497685f60159"
+state_hub_workstream_id:
 ---
 
 > **Terminology note:** Historical text in this archived workplan may use the legacy term "workstream". The fleet term is **workplan** (`canon/standards/workplan-terminology-fleet_v0.1.md`).
@@ -66,7 +66,7 @@ refresh* and moves reliability evidence beyond structural.
 id: REUSE-WP-0019-T01
 status: done
 priority: high
-state_hub_task_id: "4a187b56-bff9-4097-abd0-b423e7bf9442"
+state_hub_task_id: "337866d5-9952-40b8-a338-8ac16a699be0"
 ```
 
 **Inventory findings (2026-07-07):** cross-referenced `sources.yaml` (61
@@ -117,7 +117,7 @@ Implemented:
 id: REUSE-WP-0019-T02
 status: done
 priority: high
-state_hub_task_id: "691eb32a-6f20-4a2a-b9ff-0ae427b659aa"
+state_hub_task_id: "212352fe-3caf-4999-b5a2-58fa2441ca56"
 ```
 
 **Note:** `POST /v1/federated/compose` (token-auth, triggers a real
@@ -193,7 +193,7 @@ production ingress template edit outside this workplan's scope.
 id: REUSE-WP-0019-T03
 status: done
 priority: medium
-state_hub_task_id: "aa9e9f80-b878-490c-832e-515d8cbbbb60"
+state_hub_task_id: "a8e0bdc6-0a92-4a87-a7b2-19cf0a46db70"
 ```
 
 **Org-level Forgejo webhook — done by `railiance-apps` (2026-07-07),
@@ -271,7 +271,7 @@ whenever a future deploy wants to switch registries.
 id: REUSE-WP-0019-T04
 status: done
 priority: medium
-state_hub_task_id: "c8e9064e-5c39-4c84-80e9-8b255f8edaec"
+state_hub_task_id: "88e240d1-0b85-42d8-9d9e-44fb46937894"
 ```
 
 The shared schema (`schemas/reuse-event.schema.json`) already existed from
@@ -314,7 +314,7 @@ Implemented:
 id: REUSE-WP-0019-T05
 status: done
 priority: medium
-state_hub_task_id: "f0282cfa-0a71-4b46-a558-80b51ef04fa7"
+state_hub_task_id: "5694b776-f516-47ec-a848-714060dd2261"
 ```
 
 "Blocked on T04 plus initial event volume" — T04 is done, and the
@@ -376,7 +376,7 @@ follow-up rather than rushed in.
 id: REUSE-WP-0019-T06
 status: done
 priority: low
-state_hub_task_id: "a9f44d45-91e2-4b43-909f-30a5f906cf3b"
+state_hub_task_id: "b5b4cfaf-16fa-45ce-b1f2-6ad48fb090ab"
 ```
 
 SCOPE.md's "automatic hub refresh" flip was already done incidentally in