diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml
index f0211cf..7bbb0e6 100644
--- a/.gitea/workflows/ci.yml
+++ b/.gitea/workflows/ci.yml
@@ -19,10 +19,18 @@ jobs:
python-version: "3.12"
- name: Install package
- run: python -m pip install -e .
+ run: python -m pip install -e ".[dev]"
- name: Validate capability registry
- run: reuse-surface validate --relations
+ run: reuse-surface validate --relations --fail-on-warnings
- name: Compose federated index
- run: reuse-surface federation compose
\ No newline at end of file
+ run: reuse-surface federation compose
+
+ - name: Generate catalog and graph
+ run: |
+ reuse-surface catalog
+ reuse-surface graph --check --fail-on-warnings
+
+ - name: Run tests
+ run: pytest -q
\ No newline at end of file
diff --git a/AGENTS.md b/AGENTS.md
index 8522218..7bbb971 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -130,6 +130,9 @@ artifacts.
.venv/bin/reuse-surface federation compose
.venv/bin/reuse-surface graph --check
+# Automated tests
+.venv/bin/pytest -q
+
# Repository hygiene
rg --files
git diff --check
diff --git a/SCOPE.md b/SCOPE.md
index a47d0d4..fce3bb7 100644
--- a/SCOPE.md
+++ b/SCOPE.md
@@ -52,8 +52,11 @@ and agents can:
- **Export a machine-readable bundle** with `reuse-surface export`
- **Detect overlap candidates** with `reuse-surface overlaps`
- **Generate a human-readable catalog** with `reuse-surface catalog`
+- **Browse a searchable catalog** at `docs/catalog/search.html` (client-side
+ filter over `registry.json`)
- **Compose federated indexes** with `reuse-surface federation compose`
- **Generate relation graphs** with `reuse-surface graph`
+- **Explore relations interactively** at `docs/graph/index.html`
- **Avoid duplicates** by querying the index and checking overlaps before adding entries
Registry tooling availability is **A3** (CLI). The registry product itself is
@@ -62,8 +65,6 @@ the index, and CLI automation.
## What Is Not Possible Yet
-- Interactive catalog site with live search beyond static HTML export
-- Interactive relation graph UI (Mermaid file only)
- Network-based federation or cross-org index sync
- Packaged releases beyond local `pip install -e .` and Gitea CI validation
@@ -72,16 +73,19 @@ See `tools/README.md` for command reference.
## Current State
- Status: active MVP registry with CLI tooling.
-- Six helix_forge capabilities are registered in `registry/capabilities/`.
+- Twelve helix_forge capabilities are registered in `registry/capabilities/`.
- `reuse-surface` CLI provides `validate`, `query`, and `export` via
`pyproject.toml` and `reuse_surface/`.
- `docs/CapabilityRegistryConcept.md` and `docs/IntentScopeGapAnalysis.md`
document onboarding and intent-scope tracking.
- CI validates the registry and composes federation on push/PR.
- Federated index: `registry/indexes/federated.yaml`.
-- Relation graph: `docs/graph/capability-graph.mmd`.
-- Finished workplans: `REUSE-WP-0001` through `REUSE-WP-0005`.
-- **Self-assessed vector:** `D5 / A3 / C4 / R2` (see gap analysis).
+- Relation graph: `docs/graph/capability-graph.mmd` and explorer at
+ `docs/graph/index.html`.
+- Searchable catalog: `docs/catalog/search.html`.
+- Test suite: `tests/` (pytest).
+- Finished workplans: `REUSE-WP-0001` through `REUSE-WP-0009`.
+- **Self-assessed vector:** `D5 / A3 / C4 / R3` (see gap analysis).
## Repository Layout
@@ -112,8 +116,10 @@ reuse-surface/
- Registry index: registry/indexes/capabilities.yaml
- Registry guidance: registry/README.md
- Generated catalog: docs/CapabilityCatalog.md
+- Searchable catalog: docs/catalog/search.html
- Federation guide: docs/RegistryFederation.md
- Relation graph: docs/graph/capability-graph.mmd
+- Graph explorer: docs/graph/index.html
- CLI reference: tools/README.md
- Agent instructions: AGENTS.md
- Workplans: workplans/
\ No newline at end of file
diff --git a/docs/CapabilityCatalog.md b/docs/CapabilityCatalog.md
index 7186681..af73e7d 100644
--- a/docs/CapabilityCatalog.md
+++ b/docs/CapabilityCatalog.md
@@ -2,12 +2,45 @@
**Domain:** helix_forge
**Updated:** 2026-06-15
-**Entries:** 6
+**Entries:** 12
Generated by `reuse-surface catalog`. Do not edit manually.
## helix_forge
+### Organizational Event Coordination
+
+- **ID:** `capability.activity.event-coordinate`
+- **Vector:** D3 / A1 / C1 / R0
+- **Owner:** activity-core
+- **Path:** `registry/capabilities/capability.activity.event-coordinate.md`
+- **Summary:** Coordinate structured responses to cross-domain events through activity workflows and automation.
+
+**Known limitations:**
+- early discovery stage
+
+### Audit Event Retention
+
+- **ID:** `capability.audit.event-retain`
+- **Vector:** D4 / A2 / C2 / R1
+- **Owner:** audit-core
+- **Path:** `registry/capabilities/capability.audit.event-retain.md`
+- **Summary:** Collect, normalize, retain, and search audit events with integrity evidence across tenants.
+
+**Known limitations:**
+- consumer evidence not yet collected in registry
+
+### Authorization Policy Evaluation
+
+- **ID:** `capability.authorization.policy-evaluate`
+- **Vector:** D4 / A2 / C2 / R1
+- **Owner:** flex-auth
+- **Path:** `registry/capabilities/capability.authorization.policy-evaluate.md`
+- **Summary:** Evaluate access decisions from policy-as-code rules for subjects, resources, and actions.
+
+**Known limitations:**
+- maturity evidence is registry-external today
+
### Feature Availability Evaluation
- **ID:** `capability.feature-control.evaluate`
@@ -26,18 +59,29 @@ Generated by `reuse-surface catalog`. Do not edit manually.
- **Vector:** D4 / A2 / C2 / R1
- **Owner:** feature-control
- **Path:** `registry/capabilities/capability.feature-control.rollout.md`
-- **Summary:** Gradually expose features to subjects across tenants, domains, groups, or cohorts using rollout rules and staged availability.
+- **Summary:** Gradually expose features to subjects across tenants, domains, groups, or cohorts using rollout rules.
**Known limitations:**
- distinguish carefully from capability.feature-control.evaluate
+### Feature Visibility Control
+
+- **ID:** `capability.feature-control.visibility`
+- **Vector:** D4 / A2 / C2 / R1
+- **Owner:** feature-control
+- **Path:** `registry/capabilities/capability.feature-control.visibility.md`
+- **Summary:** Control whether features are visible or hidden for subjects without changing entitlement or authorization.
+
+**Known limitations:**
+- implementation may be bundled with evaluate SDK today
+
### Identity Subject Resolution
- **ID:** `capability.identity.subject-resolution`
- **Vector:** D3 / A0 / C1 / R0
- **Owner:** identity-canon
- **Path:** `registry/capabilities/capability.identity.subject-resolution.md`
-- **Summary:** Resolve who or what is acting in a context by mapping principals, accounts, actors, and identifiers to a stable subject model.
+- **Summary:** Resolve who or what is acting by mapping principals, accounts, actors, and identifiers to a stable subject model.
**Known limitations:**
- resolver artifacts are not yet available
@@ -48,7 +92,7 @@ Generated by `reuse-surface catalog`. Do not edit manually.
- **Vector:** D4 / A0 / C2 / R0
- **Owner:** identity-canon
- **Path:** `registry/capabilities/capability.identity.vocabulary-canonicalize.md`
-- **Summary:** Define and maintain an implementation-neutral vocabulary for identity-related concepts across overlapping domains.
+- **Summary:** Define an implementation-neutral vocabulary for identity-related concepts across overlapping domains.
**Known limitations:**
- source-note backfill is incomplete
@@ -66,13 +110,35 @@ Generated by `reuse-surface catalog`. Do not edit manually.
- manual index updates are required after adding an entry
- duplicate detection is guidance-only in the MVP
+### Registry Entry Validation
+
+- **ID:** `capability.registry.validate`
+- **Vector:** D4 / A3 / C3 / R2
+- **Owner:** reuse-surface
+- **Path:** `registry/capabilities/capability.registry.validate.md`
+- **Summary:** Validate capability registry entries against schema, index consistency, and relation integrity.
+
+**Known limitations:**
+- warnings do not fail CI unless --fail-on-warnings is set
+
+### Work Progress Logging
+
+- **ID:** `capability.statehub.progress-log`
+- **Vector:** D4 / A4 / C3 / R2
+- **Owner:** state-hub
+- **Path:** `registry/capabilities/capability.statehub.progress-log.md`
+- **Summary:** Record progress events, decisions, and session notes against workstreams and tasks in State Hub.
+
+**Known limitations:**
+- hub must be running locally or via tunnel
+
### Workstream And Task Coordination
- **ID:** `capability.statehub.workstream-coordinate`
- **Vector:** D4 / A4 / C3 / R2
- **Owner:** state-hub
- **Path:** `registry/capabilities/capability.statehub.workstream-coordinate.md`
-- **Summary:** Track active workstreams, tasks, progress, and consistency across domain repositories through a local-first coordination service.
+- **Summary:** Track active workstreams, tasks, progress, and consistency across domain repositories.
**Known limitations:**
- requires running State Hub locally or via tunnel
diff --git a/docs/CapabilityRegistryConcept.md b/docs/CapabilityRegistryConcept.md
index bfb43a2..5602f79 100644
--- a/docs/CapabilityRegistryConcept.md
+++ b/docs/CapabilityRegistryConcept.md
@@ -85,10 +85,13 @@ tools/ → CLI validate, query, export
**Consumption flow**
-1. Read `registry/indexes/capabilities.yaml`.
-2. Filter by vector, tags, or consumption mode.
+1. Read `registry/indexes/capabilities.yaml` or open `docs/catalog/search.html`
+ for client-side filter by name, tags, vector, and consumption mode.
+2. Filter by vector, tags, or consumption mode (`reuse-surface query`).
3. Open candidate entry files for scope, relations, and guidance.
4. Prefer planning reuse at D3+ and implementation reuse at A2+.
+5. Browse relation structure in `docs/graph/index.html` after running
+ `reuse-surface graph`.
---
diff --git a/docs/IntentScopeGapAnalysis.md b/docs/IntentScopeGapAnalysis.md
index 3222a11..019731b 100644
--- a/docs/IntentScopeGapAnalysis.md
+++ b/docs/IntentScopeGapAnalysis.md
@@ -18,16 +18,15 @@ with **A3 CLI tooling** (`validate`, `query`, `export`) atop Markdown-first
authoring.
The two documents are **directionally aligned** on registry-first reuse, four
-maturity dimensions, and human/agent consumers. REUSE-WP-0003 closed the
-priority gaps from section 8. Remaining gaps are primarily scale, automation,
-and presentation concerns:
+maturity dimensions, and human/agent consumers. REUSE-WP-0003 through
+REUSE-WP-0009 closed the priority gaps from section 8 except network
+federation. Remaining gaps are primarily scale and cross-org sync:
-1. **Planning analytics** — no gap reports, overlap detection, or catalog site.
-2. **Reliability depth** — registry product dogfood evidence is early (R2).
-3. **Document cross-coverage** — SCOPE still carries operational detail INTENT
+1. **Network federation** — local compose only; no remote index fetch.
+2. **Document cross-coverage** — SCOPE still carries operational detail INTENT
omits; INTENT success criteria are not fully enumerated in SCOPE.
-**Current reuse-surface vector (self-assessment):** `D5 / A3 / C4 / R2`
+**Current reuse-surface vector (self-assessment):** `D5 / A3 / C4 / R3`
---
@@ -238,15 +237,16 @@ docs remain incomplete.
| Signal | State |
|---|---|
-| Automated tests | None |
-| Schema validation in CI | None |
+| Automated tests | `tests/` — pytest covers validate, query, export, overlaps, federation, graph, catalog |
+| Schema validation in CI | `.gitea/workflows/ci.yml` — validate, federation, catalog, graph, pytest |
| Consumer feedback on registry workflows | None |
| Production or repeated agent usage evidence | None |
| Known friction | Manual index maintenance; schema/INTENT field naming drift |
-**Overall reliability vs INTENT consumer-evidence framing:** **R0 (Unknown)** for
-the registry product itself. Individual registered capabilities may carry their
-own evidence (e.g. feature-control at R3).
+**Overall reliability vs INTENT consumer-evidence framing:** **R3 (Proven in
+Development)** for registry CLI tooling — pytest suite and CI gates exercise
+core commands. Individual registered capabilities may carry their own evidence
+(e.g. feature-control at R3).
---
@@ -273,11 +273,11 @@ own evidence (e.g. feature-control at R3).
| 12 | Registry federation | `federation compose` + federated index | Closed (WP-0005) |
| 14 | Graph visualization | `reuse-surface graph` Mermaid output | Closed (WP-0005) |
-| Priority | Gap | Suggested outcome |
-|---|---|---|
-| 13 | Interactive catalog | Searchable catalog UI beyond static HTML |
-| 15 | Network federation | Remote index fetch and cross-org sync |
-| 16 | Graph UI | Interactive relation graph explorer |
+| Priority | Gap | Outcome | Status |
+|---|---|---|---|
+| 13 | Interactive catalog | `docs/catalog/search.html` + `registry.json` | Closed (WP-0007) |
+| 15 | Network federation | Remote index fetch and cross-org sync | Open (WP-0010) |
+| 16 | Graph UI | `docs/graph/index.html` explorer | Closed (WP-0008) |
---
@@ -298,4 +298,8 @@ own evidence (e.g. feature-control at R3).
| 2026-06-15 | Initial analysis after REUSE-WP-0002 completion |
| 2026-06-15 | REUSE-WP-0003 closed priority gaps 1–8; vector updated to D5/A3/C4/R2 |
| 2026-06-15 | REUSE-WP-0004 closed priorities 9–11 (catalog, overlaps, CI) |
-| 2026-06-15 | REUSE-WP-0005 closed priorities 12 and 14 (federation, relation graphs) |
\ No newline at end of file
+| 2026-06-15 | REUSE-WP-0005 closed priorities 12 and 14 (federation, relation graphs) |
+| 2026-06-15 | REUSE-WP-0006 expanded registry to 12 capabilities; relation hygiene clean |
+| 2026-06-15 | REUSE-WP-0007 closed priority 13 (searchable catalog UI) |
+| 2026-06-15 | REUSE-WP-0008 closed priority 16 (graph explorer) |
+| 2026-06-15 | REUSE-WP-0009 added pytest suite and CI fail-on-warnings; vector R3 |
\ No newline at end of file
diff --git a/docs/catalog/index.html b/docs/catalog/index.html
index 9a5ca52..14f5268 100644
--- a/docs/catalog/index.html
+++ b/docs/catalog/index.html
@@ -15,8 +15,26 @@
Capability Catalog
- Updated 2026-06-15 · 6 entries
+ Updated 2026-06-15 · 12 entries
helix_forge
+
+ Organizational Event Coordination
+ capability.activity.event-coordinate · D3 / A1 / C1 / R0
+ Coordinate structured responses to cross-domain events through activity workflows and automation.
+ registry/capabilities/capability.activity.event-coordinate.md
+
+
+ Audit Event Retention
+ capability.audit.event-retain · D4 / A2 / C2 / R1
+ Collect, normalize, retain, and search audit events with integrity evidence across tenants.
+ registry/capabilities/capability.audit.event-retain.md
+
+
+ Authorization Policy Evaluation
+ capability.authorization.policy-evaluate · D4 / A2 / C2 / R1
+ Evaluate access decisions from policy-as-code rules for subjects, resources, and actions.
+ registry/capabilities/capability.authorization.policy-evaluate.md
+
Feature Availability Evaluation
capability.feature-control.evaluate · D5 / A4 / C3 / R3
@@ -26,19 +44,25 @@
Feature Rollout Control
capability.feature-control.rollout · D4 / A2 / C2 / R1
- Gradually expose features to subjects across tenants, domains, groups, or cohorts using rollout rules and staged availability.
+ Gradually expose features to subjects across tenants, domains, groups, or cohorts using rollout rules.
registry/capabilities/capability.feature-control.rollout.md
+
+ Feature Visibility Control
+ capability.feature-control.visibility · D4 / A2 / C2 / R1
+ Control whether features are visible or hidden for subjects without changing entitlement or authorization.
+ registry/capabilities/capability.feature-control.visibility.md
+
Identity Subject Resolution
capability.identity.subject-resolution · D3 / A0 / C1 / R0
- Resolve who or what is acting in a context by mapping principals, accounts, actors, and identifiers to a stable subject model.
+ Resolve who or what is acting by mapping principals, accounts, actors, and identifiers to a stable subject model.
registry/capabilities/capability.identity.subject-resolution.md
Identity Vocabulary Canonicalization
capability.identity.vocabulary-canonicalize · D4 / A0 / C2 / R0
- Define and maintain an implementation-neutral vocabulary for identity-related concepts across overlapping domains.
+ Define an implementation-neutral vocabulary for identity-related concepts across overlapping domains.
registry/capabilities/capability.identity.vocabulary-canonicalize.md
@@ -47,10 +71,22 @@
Register a new capability so it becomes visible for planning and implementation reuse.
registry/capabilities/capability.registry.register.md
+
+ Registry Entry Validation
+ capability.registry.validate · D4 / A3 / C3 / R2
+ Validate capability registry entries against schema, index consistency, and relation integrity.
+ registry/capabilities/capability.registry.validate.md
+
+
+ Work Progress Logging
+ capability.statehub.progress-log · D4 / A4 / C3 / R2
+ Record progress events, decisions, and session notes against workstreams and tasks in State Hub.
+ registry/capabilities/capability.statehub.progress-log.md
+
Workstream And Task Coordination
capability.statehub.workstream-coordinate · D4 / A4 / C3 / R2
- Track active workstreams, tasks, progress, and consistency across domain repositories through a local-first coordination service.
+ Track active workstreams, tasks, progress, and consistency across domain repositories.
registry/capabilities/capability.statehub.workstream-coordinate.md
diff --git a/docs/catalog/registry.json b/docs/catalog/registry.json
new file mode 100644
index 0000000..ee9e4cd
--- /dev/null
+++ b/docs/catalog/registry.json
@@ -0,0 +1,226 @@
+{
+ "domain": "helix_forge",
+ "updated": "2026-06-15",
+ "capabilities": [
+ {
+ "id": "capability.activity.event-coordinate",
+ "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"
+ ],
+ "consumption_modes": [
+ "informational"
+ ]
+ },
+ {
+ "id": "capability.audit.event-retain",
+ "name": "Audit Event Retention",
+ "summary": "Collect, normalize, retain, and search audit events with integrity evidence across tenants.",
+ "vector": "D4 / A2 / C2 / R1",
+ "domain": "helix_forge",
+ "status": "draft",
+ "owner": "audit-core",
+ "path": "registry/capabilities/capability.audit.event-retain.md",
+ "tags": [
+ "audit",
+ "retention",
+ "compliance"
+ ],
+ "consumption_modes": [
+ "source module"
+ ]
+ },
+ {
+ "id": "capability.authorization.policy-evaluate",
+ "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": "flex-auth",
+ "path": "registry/capabilities/capability.authorization.policy-evaluate.md",
+ "tags": [
+ "authorization",
+ "policy",
+ "flex-auth"
+ ],
+ "consumption_modes": [
+ "source module"
+ ]
+ },
+ {
+ "id": "capability.feature-control.evaluate",
+ "name": "Feature Availability Evaluation",
+ "summary": "Evaluate whether a feature is active, hidden, disabled, or unavailable for a subject in context.",
+ "vector": "D5 / A4 / C3 / R3",
+ "domain": "helix_forge",
+ "status": "draft",
+ "owner": "feature-control",
+ "path": "registry/capabilities/capability.feature-control.evaluate.md",
+ "tags": [
+ "feature-control",
+ "evaluation",
+ "sdk"
+ ],
+ "consumption_modes": [
+ "SDK",
+ "service API"
+ ]
+ },
+ {
+ "id": "capability.feature-control.rollout",
+ "name": "Feature Rollout Control",
+ "summary": "Gradually expose features to subjects across tenants, domains, groups, or cohorts using rollout rules.",
+ "vector": "D4 / A2 / C2 / R1",
+ "domain": "helix_forge",
+ "status": "draft",
+ "owner": "feature-control",
+ "path": "registry/capabilities/capability.feature-control.rollout.md",
+ "tags": [
+ "feature-control",
+ "rollout",
+ "planning"
+ ],
+ "consumption_modes": [
+ "source module",
+ "SDK"
+ ]
+ },
+ {
+ "id": "capability.feature-control.visibility",
+ "name": "Feature Visibility Control",
+ "summary": "Control whether features are visible or hidden for subjects without changing entitlement or authorization.",
+ "vector": "D4 / A2 / C2 / R1",
+ "domain": "helix_forge",
+ "status": "draft",
+ "owner": "feature-control",
+ "path": "registry/capabilities/capability.feature-control.visibility.md",
+ "tags": [
+ "feature-control",
+ "visibility"
+ ],
+ "consumption_modes": [
+ "source module"
+ ]
+ },
+ {
+ "id": "capability.identity.subject-resolution",
+ "name": "Identity Subject Resolution",
+ "summary": "Resolve who or what is acting by mapping principals, accounts, actors, and identifiers to a stable subject model.",
+ "vector": "D3 / A0 / C1 / R0",
+ "domain": "helix_forge",
+ "status": "draft",
+ "owner": "identity-canon",
+ "path": "registry/capabilities/capability.identity.subject-resolution.md",
+ "tags": [
+ "identity",
+ "subject",
+ "architecture"
+ ],
+ "consumption_modes": [
+ "informational"
+ ]
+ },
+ {
+ "id": "capability.identity.vocabulary-canonicalize",
+ "name": "Identity Vocabulary Canonicalization",
+ "summary": "Define an implementation-neutral vocabulary for identity-related concepts across overlapping domains.",
+ "vector": "D4 / A0 / C2 / R0",
+ "domain": "helix_forge",
+ "status": "draft",
+ "owner": "identity-canon",
+ "path": "registry/capabilities/capability.identity.vocabulary-canonicalize.md",
+ "tags": [
+ "identity",
+ "terminology",
+ "research"
+ ],
+ "consumption_modes": [
+ "informational"
+ ]
+ },
+ {
+ "id": "capability.registry.register",
+ "name": "Capability Registration",
+ "summary": "Register a new capability so it becomes visible for planning and implementation reuse.",
+ "vector": "D3 / A3 / C2 / R2",
+ "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"
+ ]
+ },
+ {
+ "id": "capability.registry.validate",
+ "name": "Registry Entry Validation",
+ "summary": "Validate capability registry entries against schema, index consistency, and relation integrity.",
+ "vector": "D4 / A3 / C3 / R2",
+ "domain": "helix_forge",
+ "status": "draft",
+ "owner": "reuse-surface",
+ "path": "registry/capabilities/capability.registry.validate.md",
+ "tags": [
+ "registry",
+ "validation",
+ "cli"
+ ],
+ "consumption_modes": [
+ "cli"
+ ]
+ },
+ {
+ "id": "capability.statehub.progress-log",
+ "name": "Work Progress Logging",
+ "summary": "Record progress events, decisions, and session notes against workstreams and tasks in State Hub.",
+ "vector": "D4 / A4 / C3 / R2",
+ "domain": "helix_forge",
+ "status": "draft",
+ "owner": "state-hub",
+ "path": "registry/capabilities/capability.statehub.progress-log.md",
+ "tags": [
+ "state-hub",
+ "progress",
+ "coordination"
+ ],
+ "consumption_modes": [
+ "service API"
+ ]
+ },
+ {
+ "id": "capability.statehub.workstream-coordinate",
+ "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"
+ ],
+ "consumption_modes": [
+ "service API",
+ "HTTP REST"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/docs/catalog/search.html b/docs/catalog/search.html
new file mode 100644
index 0000000..9147e8b
--- /dev/null
+++ b/docs/catalog/search.html
@@ -0,0 +1,44 @@
+
+
+
+
+ Capability Catalog Search
+
+
+
+ Capability Catalog
+ Client-side search over registry.json. Generated by reuse-surface catalog.
+
+
+
+
+
+
diff --git a/docs/graph/capability-graph.mmd b/docs/graph/capability-graph.mmd
index cbd0716..7ae3738 100644
--- a/docs/graph/capability-graph.mmd
+++ b/docs/graph/capability-graph.mmd
@@ -1,24 +1,42 @@
graph LR
+ capability_activity_event_coordinate["capability.activity.event-coordinate
D3 / A1 / C1 / R0"]
+ capability_audit_event_retain["capability.audit.event-retain
D4 / A2 / C2 / R1"]
+ capability_authorization_policy_evaluate["capability.authorization.policy-evaluate
D4 / A2 / C2 / R1"]
capability_feature_control_evaluate["capability.feature-control.evaluate
D5 / A4 / C3 / R3"]
capability_feature_control_rollout["capability.feature-control.rollout
D4 / A2 / C2 / R1"]
+ capability_feature_control_visibility["capability.feature-control.visibility
D4 / A2 / C2 / R1"]
capability_identity_subject_resolution["capability.identity.subject-resolution
D3 / A0 / C1 / R0"]
capability_identity_vocabulary_canonicalize["capability.identity.vocabulary-canonicalize
D4 / A0 / C2 / R0"]
capability_registry_register["capability.registry.register
D3 / A3 / C2 / R2"]
+ capability_registry_validate["capability.registry.validate
D4 / A3 / C3 / R2"]
+ capability_statehub_progress_log["capability.statehub.progress-log
D4 / A4 / C3 / R2"]
capability_statehub_workstream_coordinate["capability.statehub.workstream-coordinate
D4 / A4 / C3 / R2"]
- capability_registry_register -->|supports| capability_feature_control_evaluate
- capability_registry_register -->|supports| capability_identity_vocabulary_canonicalize
- capability_registry_register -->|related_to| capability_registry_validate
+ capability_activity_event_coordinate -->|related_to| capability_statehub_workstream_coordinate
+ capability_activity_event_coordinate -->|related_to| capability_audit_event_retain
+ capability_audit_event_retain -->|related_to| capability_activity_event_coordinate
+ capability_audit_event_retain -->|related_to| capability_statehub_progress_log
+ capability_authorization_policy_evaluate -->|depends_on| capability_identity_subject_resolution
+ capability_authorization_policy_evaluate -->|related_to| capability_feature_control_evaluate
capability_feature_control_evaluate -->|depends_on| capability_identity_vocabulary_canonicalize
capability_feature_control_evaluate -->|supports| capability_registry_register
capability_feature_control_evaluate -->|related_to| capability_feature_control_rollout
capability_feature_control_evaluate -->|related_to| capability_feature_control_visibility
capability_feature_control_rollout -->|depends_on| capability_feature_control_evaluate
capability_feature_control_rollout -->|related_to| capability_feature_control_visibility
- capability_identity_vocabulary_canonicalize -->|supports| capability_feature_control_evaluate
- capability_identity_vocabulary_canonicalize -->|supports| capability_registry_register
- capability_identity_vocabulary_canonicalize -->|related_to| capability_identity_subject_resolution
+ capability_feature_control_visibility -->|depends_on| capability_feature_control_evaluate
+ capability_feature_control_visibility -->|related_to| capability_feature_control_rollout
capability_identity_subject_resolution -->|depends_on| capability_identity_vocabulary_canonicalize
capability_identity_subject_resolution -->|supports| capability_feature_control_evaluate
capability_identity_subject_resolution -->|supports| capability_statehub_workstream_coordinate
+ capability_identity_vocabulary_canonicalize -->|supports| capability_feature_control_evaluate
+ capability_identity_vocabulary_canonicalize -->|supports| capability_registry_register
+ capability_identity_vocabulary_canonicalize -->|related_to| capability_identity_subject_resolution
+ capability_registry_register -->|supports| capability_feature_control_evaluate
+ capability_registry_register -->|supports| capability_identity_vocabulary_canonicalize
+ capability_registry_register -->|related_to| capability_registry_validate
+ capability_registry_validate -->|depends_on| capability_registry_register
+ capability_registry_validate -->|related_to| capability_registry_register
+ capability_statehub_progress_log -->|depends_on| capability_statehub_workstream_coordinate
+ capability_statehub_progress_log -->|related_to| capability_statehub_workstream_coordinate
capability_statehub_workstream_coordinate -->|supports| capability_registry_register
capability_statehub_workstream_coordinate -->|related_to| capability_statehub_progress_log
diff --git a/docs/graph/index.html b/docs/graph/index.html
new file mode 100644
index 0000000..0eb7ef2
--- /dev/null
+++ b/docs/graph/index.html
@@ -0,0 +1,23 @@
+
+
+
+
+ Capability Relation Graph
+
+
+
+
+ Capability Relation Graph
+ Generated from entry relations fields. Regenerate with reuse-surface graph.
+
+
+
+
diff --git a/pyproject.toml b/pyproject.toml
index 9d5128e..b6622a0 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -13,6 +13,11 @@ dependencies = [
"pyyaml>=6.0",
]
+[project.optional-dependencies]
+dev = [
+ "pytest>=8.0",
+]
+
[project.scripts]
reuse-surface = "reuse_surface.cli:main"
diff --git a/registry/README.md b/registry/README.md
index 2920f29..5eb1e2a 100644
--- a/registry/README.md
+++ b/registry/README.md
@@ -138,7 +138,10 @@ reuse-surface graph
reuse-surface graph --check
```
-Output: `docs/graph/capability-graph.mmd`
+Outputs:
+
+- `docs/graph/capability-graph.mmd` — Mermaid source
+- `docs/graph/index.html` — in-browser explorer (also regenerated by `catalog`)
## Promote a capability
diff --git a/registry/capabilities/capability.activity.event-coordinate.md b/registry/capabilities/capability.activity.event-coordinate.md
new file mode 100644
index 0000000..fd0037a
--- /dev/null
+++ b/registry/capabilities/capability.activity.event-coordinate.md
@@ -0,0 +1,77 @@
+---
+id: capability.activity.event-coordinate
+name: Organizational Event Coordination
+summary: Coordinate structured responses to cross-domain events through activity workflows and automation.
+owner: activity-core
+status: draft
+domain: helix_forge
+tags: [activity, coordination, automation]
+
+maturity:
+ discovery:
+ current: D3
+ target: D5
+ confidence: medium
+ rationale: activity-core INTENT defines org-wide event response boundary.
+ availability:
+ current: A1
+ target: A4
+ confidence: low
+ rationale: Conceptual workflows exist; consumable API surface still emerging.
+
+external_evidence:
+ completeness:
+ level: C1
+ name: Fragmentary
+ confidence: low
+ basis: scope_vs_intent_and_consumer_expectations
+ satisfied_expectations:
+ - problem and boundary documented in INTENT
+ broken_expectations:
+ - no registry-native automation artifacts indexed yet
+ out_of_scope_expectations:
+ - owning domain-specific business logic
+ reliability:
+ level: R0
+ confidence: low
+ basis: consumer_quality_signals
+ known_reliability_risks: []
+
+discovery:
+ intent: >
+ Give the organization a structural home for responding to events across repos
+ and domains in an auditable, automation-ready way.
+ includes:
+ - event-triggered coordination
+ - cross-domain maintenance workflows
+ excludes:
+ - single-repo cron replacements only
+ use_cases: []
+
+availability:
+ current_level: A1
+ target_level: A4
+ current_artifacts:
+ - activity-core/INTENT.md
+ consumption_modes:
+ - informational
+
+relations:
+ depends_on: []
+ related_to:
+ - capability.statehub.workstream-coordinate
+ - capability.audit.event-retain
+
+consumer_guidance:
+ recommended_for:
+ - planning org-wide event response patterns
+ not_recommended_for:
+ - assuming production automation is available
+ known_limitations:
+ - early discovery stage
+---
+
+# Organizational Event Coordination
+
+activity-core coordinates how the org responds to events—not the domain logic
+inside each repo.
\ No newline at end of file
diff --git a/registry/capabilities/capability.audit.event-retain.md b/registry/capabilities/capability.audit.event-retain.md
new file mode 100644
index 0000000..1ce2b46
--- /dev/null
+++ b/registry/capabilities/capability.audit.event-retain.md
@@ -0,0 +1,80 @@
+---
+id: capability.audit.event-retain
+name: Audit Event Retention
+summary: Collect, normalize, retain, and search audit events with integrity evidence across tenants.
+owner: audit-core
+status: draft
+domain: helix_forge
+tags: [audit, retention, compliance]
+
+maturity:
+ discovery:
+ current: D4
+ target: D6
+ confidence: medium
+ rationale: audit-core INTENT defines full audit fabric scope and integration boundaries.
+ availability:
+ current: A2
+ target: A5
+ confidence: low
+ rationale: Core modules exist; deployable service packaging in progress.
+
+external_evidence:
+ completeness:
+ level: C2
+ name: Partial
+ confidence: low
+ basis: scope_vs_intent_and_consumer_expectations
+ satisfied_expectations:
+ - retention and integrity goals documented
+ broken_expectations:
+ - federation with all platform runtimes not proven in registry
+ out_of_scope_expectations:
+ - application business audit semantics ownership
+ reliability:
+ level: R1
+ confidence: low
+ basis: consumer_quality_signals
+ known_reliability_risks:
+ - multi-tenant isolation not evidenced here
+
+discovery:
+ intent: >
+ Provide independent audit fabric for collecting, retaining, searching, and
+ proving integrity of audit events.
+ includes:
+ - audit ingestion
+ - retention policy
+ - search and export
+ - tamper evidence
+ excludes:
+ - generating domain business events
+ use_cases: []
+
+availability:
+ current_level: A2
+ target_level: A5
+ current_artifacts:
+ - audit-core/
+ consumption_modes:
+ - source module
+
+relations:
+ depends_on: []
+ related_to:
+ - capability.activity.event-coordinate
+ - capability.statehub.progress-log
+
+consumer_guidance:
+ recommended_for:
+ - planning audit retention independent of a single product
+ not_recommended_for:
+ - replacing application-level logging only
+ known_limitations:
+ - consumer evidence not yet collected in registry
+---
+
+# Audit Event Retention
+
+Audit Core provides the retention and integrity layer for audit events across
+the platform.
\ No newline at end of file
diff --git a/registry/capabilities/capability.authorization.policy-evaluate.md b/registry/capabilities/capability.authorization.policy-evaluate.md
new file mode 100644
index 0000000..be22db6
--- /dev/null
+++ b/registry/capabilities/capability.authorization.policy-evaluate.md
@@ -0,0 +1,80 @@
+---
+id: capability.authorization.policy-evaluate
+name: Authorization Policy Evaluation
+summary: Evaluate access decisions from policy-as-code rules for subjects, resources, and actions.
+owner: flex-auth
+status: draft
+domain: helix_forge
+tags: [authorization, policy, flex-auth]
+
+maturity:
+ discovery:
+ current: D4
+ target: D6
+ confidence: medium
+ rationale: flex-auth INTENT defines policy-as-code boundary and enterprise growth path.
+ availability:
+ current: A2
+ target: A5
+ confidence: low
+ rationale: Policy registry and evaluation logic exist in repo; service packaging evolving.
+
+external_evidence:
+ completeness:
+ level: C2
+ name: Partial
+ confidence: low
+ basis: scope_vs_intent_and_consumer_expectations
+ satisfied_expectations:
+ - policy-as-code intent documented
+ broken_expectations:
+ - not yet indexed from flex-auth native registry
+ out_of_scope_expectations:
+ - identity proofing
+ reliability:
+ level: R1
+ confidence: low
+ basis: consumer_quality_signals
+ known_reliability_risks:
+ - early implementation phase
+
+discovery:
+ intent: >
+ Provide inspectable authorization decisions between verified identity and
+ protected resources using policy-as-code.
+ includes:
+ - policy evaluation
+ - authorization registry
+ - decision explainability
+ excludes:
+ - identity issuance
+ - authentication protocols
+ use_cases: []
+
+availability:
+ current_level: A2
+ target_level: A5
+ current_artifacts:
+ - flex-auth/
+ consumption_modes:
+ - source module
+
+relations:
+ depends_on:
+ - capability.identity.subject-resolution
+ related_to:
+ - capability.feature-control.evaluate
+
+consumer_guidance:
+ recommended_for:
+ - planning authorization layer between identity and resources
+ not_recommended_for:
+ - feature visibility toggles without policy intent
+ known_limitations:
+ - maturity evidence is registry-external today
+---
+
+# Authorization Policy Evaluation
+
+Policy evaluation from flex-auth sits between identity resolution and protected
+systems.
\ No newline at end of file
diff --git a/registry/capabilities/capability.feature-control.visibility.md b/registry/capabilities/capability.feature-control.visibility.md
new file mode 100644
index 0000000..d658b03
--- /dev/null
+++ b/registry/capabilities/capability.feature-control.visibility.md
@@ -0,0 +1,77 @@
+---
+id: capability.feature-control.visibility
+name: Feature Visibility Control
+summary: Control whether features are visible or hidden for subjects without changing underlying entitlement or authorization.
+owner: feature-control
+status: draft
+domain: helix_forge
+tags: [feature-control, visibility]
+
+maturity:
+ discovery:
+ current: D4
+ target: D5
+ confidence: medium
+ rationale: Bounded as distinct from evaluation and rollout in feature-control domain.
+ availability:
+ current: A2
+ target: A4
+ confidence: low
+ rationale: May share SDK artifacts with evaluate but is not separately exposed as API.
+
+external_evidence:
+ completeness:
+ level: C2
+ name: Partial
+ confidence: low
+ basis: scope_vs_intent_and_consumer_expectations
+ satisfied_expectations:
+ - visibility distinguished from evaluation in registry model
+ broken_expectations:
+ - no standalone visibility API documented separately
+ out_of_scope_expectations:
+ - authorization policy decisions
+ reliability:
+ level: R1
+ confidence: low
+ basis: consumer_quality_signals
+ known_reliability_risks:
+ - easily conflated with evaluate capability
+
+discovery:
+ intent: Govern feature visibility separately from availability evaluation and rollout staging.
+ includes:
+ - hide/show feature UI or capability surfaces
+ - visibility rules per subject context
+ excludes:
+ - entitlement ownership
+ - rollout percentage control
+ use_cases: []
+
+availability:
+ current_level: A2
+ target_level: A4
+ current_artifacts:
+ - feature-control/packages/feature-control-sdk
+ consumption_modes:
+ - source module
+
+relations:
+ depends_on:
+ - capability.feature-control.evaluate
+ related_to:
+ - capability.feature-control.rollout
+
+consumer_guidance:
+ recommended_for:
+ - planning visibility behavior separate from on/off evaluation
+ not_recommended_for:
+ - authorization or billing gating
+ known_limitations:
+ - implementation may be bundled with evaluate SDK today
+---
+
+# Feature Visibility Control
+
+Visibility governs whether a feature surface appears, distinct from whether the
+feature is enabled for a subject.
\ No newline at end of file
diff --git a/registry/capabilities/capability.registry.validate.md b/registry/capabilities/capability.registry.validate.md
new file mode 100644
index 0000000..9f138ae
--- /dev/null
+++ b/registry/capabilities/capability.registry.validate.md
@@ -0,0 +1,88 @@
+---
+id: capability.registry.validate
+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]
+
+maturity:
+ discovery:
+ current: D4
+ target: D5
+ confidence: medium
+ rationale: UC-RS-023 is implemented via reuse-surface validate with schema and drift checks.
+ availability:
+ current: A3
+ target: A3
+ confidence: high
+ rationale: Available as reuse-surface validate CLI command.
+
+external_evidence:
+ completeness:
+ level: C3
+ name: Functional Core
+ confidence: medium
+ basis: scope_vs_intent_and_consumer_expectations
+ satisfied_expectations:
+ - 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
+ reliability:
+ level: R2
+ name: Tolerable
+ confidence: medium
+ basis: consumer_quality_signals
+ known_reliability_risks:
+ - requires local venv install
+
+discovery:
+ intent: Keep registry data structurally sound so agents and humans can trust discovery metadata.
+ includes:
+ - JSON Schema validation
+ - index drift warnings
+ - relation reference checks
+ excludes:
+ - validating implementation code in other repos
+ use_cases:
+ - UC-RS-023
+ research_memos:
+ - specs/UseCaseCatalog.md
+
+availability:
+ current_level: A3
+ target_level: A3
+ current_artifacts:
+ - reuse_surface/cli.py
+ - schemas/capability.schema.yaml
+ consumption_modes:
+ - cli
+
+relations:
+ depends_on:
+ - capability.registry.register
+ supports: []
+ related_to:
+ - capability.registry.register
+
+evidence:
+ documentation:
+ - tools/README.md
+ tests: []
+
+consumer_guidance:
+ recommended_for:
+ - pre-commit and CI validation of registry changes
+ not_recommended_for:
+ - certifying business correctness of capability claims
+ known_limitations:
+ - warnings do not fail CI unless --fail-on-warnings is set
+---
+
+# Registry Entry Validation
+
+Validates registry shape and consistency through the reuse-surface CLI.
\ No newline at end of file
diff --git a/registry/capabilities/capability.statehub.progress-log.md b/registry/capabilities/capability.statehub.progress-log.md
new file mode 100644
index 0000000..a54bd71
--- /dev/null
+++ b/registry/capabilities/capability.statehub.progress-log.md
@@ -0,0 +1,78 @@
+---
+id: capability.statehub.progress-log
+name: Work Progress Logging
+summary: Record progress events, decisions, and session notes against workstreams and tasks in State Hub.
+owner: state-hub
+status: draft
+domain: helix_forge
+tags: [state-hub, progress, coordination]
+
+maturity:
+ discovery:
+ current: D4
+ target: D5
+ confidence: medium
+ rationale: Progress API and agent session protocol are documented in state-hub AGENTS.md.
+ availability:
+ current: A4
+ target: A6
+ confidence: medium
+ rationale: Available via State Hub HTTP POST /progress/ endpoint.
+
+external_evidence:
+ completeness:
+ level: C3
+ name: Functional Core
+ confidence: medium
+ basis: scope_vs_intent_and_consumer_expectations
+ satisfied_expectations:
+ - progress events attach to workstreams
+ - agents can log session summaries
+ broken_expectations: []
+ out_of_scope_expectations:
+ - replacing git commit history
+ reliability:
+ level: R2
+ confidence: low
+ basis: consumer_quality_signals
+ known_reliability_risks:
+ - depends on hub availability
+
+discovery:
+ intent: Provide auditable progress memory for cross-repo agent and operator work.
+ includes:
+ - progress event creation
+ - workstream and task linkage
+ - author attribution
+ excludes:
+ - canonical workplan storage
+ use_cases: []
+
+availability:
+ current_level: A4
+ target_level: A6
+ current_artifacts:
+ - state-hub/api/
+ consumption_modes:
+ - service API
+
+relations:
+ depends_on:
+ - capability.statehub.workstream-coordinate
+ supports: []
+ related_to:
+ - capability.statehub.workstream-coordinate
+
+consumer_guidance:
+ recommended_for:
+ - closing agent sessions with hub progress notes
+ not_recommended_for:
+ - authoritative task status (use workplan files + fix-consistency)
+ known_limitations:
+ - hub must be running locally or via tunnel
+---
+
+# Work Progress Logging
+
+Progress logging complements file-backed workplans with live session memory in
+State Hub.
\ No newline at end of file
diff --git a/registry/indexes/capabilities.yaml b/registry/indexes/capabilities.yaml
index adfa467..bf5d6d5 100644
--- a/registry/indexes/capabilities.yaml
+++ b/registry/indexes/capabilities.yaml
@@ -1,19 +1,40 @@
# Manually maintained capability index for humans and agents.
-# Update this file whenever a capability is added, promoted, or deprecated.
version: 1
updated: "2026-06-15"
domain: helix_forge
capabilities:
- - id: capability.registry.register
- name: Capability Registration
- summary: Register a new capability so it becomes visible for planning and implementation reuse.
- vector: D3 / A3 / C2 / R2
+ - id: capability.activity.event-coordinate
+ 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: reuse-surface
- path: registry/capabilities/capability.registry.register.md
- tags: [registry, governance, meta]
- consumption_modes: [informational, markdown authoring, cli]
+ owner: activity-core
+ path: registry/capabilities/capability.activity.event-coordinate.md
+ tags: [activity, coordination, automation]
+ consumption_modes: [informational]
+
+ - id: capability.audit.event-retain
+ name: Audit Event Retention
+ summary: Collect, normalize, retain, and search audit events with integrity evidence across tenants.
+ vector: D4 / A2 / C2 / R1
+ domain: helix_forge
+ status: draft
+ owner: audit-core
+ path: registry/capabilities/capability.audit.event-retain.md
+ tags: [audit, retention, compliance]
+ consumption_modes: [source module]
+
+ - id: capability.authorization.policy-evaluate
+ 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: flex-auth
+ path: registry/capabilities/capability.authorization.policy-evaluate.md
+ tags: [authorization, policy, flex-auth]
+ consumption_modes: [source module]
- id: capability.feature-control.evaluate
name: Feature Availability Evaluation
@@ -28,7 +49,7 @@ capabilities:
- id: capability.feature-control.rollout
name: Feature Rollout Control
- summary: Gradually expose features to subjects across tenants, domains, groups, or cohorts using rollout rules and staged availability.
+ summary: Gradually expose features to subjects across tenants, domains, groups, or cohorts using rollout rules.
vector: D4 / A2 / C2 / R1
domain: helix_forge
status: draft
@@ -37,20 +58,20 @@ capabilities:
tags: [feature-control, rollout, planning]
consumption_modes: [source module, SDK]
- - id: capability.identity.vocabulary-canonicalize
- name: Identity Vocabulary Canonicalization
- summary: Define and maintain an implementation-neutral vocabulary for identity-related concepts across overlapping domains.
- vector: D4 / A0 / C2 / R0
+ - id: capability.feature-control.visibility
+ name: Feature Visibility Control
+ summary: Control whether features are visible or hidden for subjects without changing entitlement or authorization.
+ vector: D4 / A2 / C2 / R1
domain: helix_forge
status: draft
- owner: identity-canon
- path: registry/capabilities/capability.identity.vocabulary-canonicalize.md
- tags: [identity, terminology, research]
- consumption_modes: [informational]
+ owner: feature-control
+ path: registry/capabilities/capability.feature-control.visibility.md
+ tags: [feature-control, visibility]
+ consumption_modes: [source module]
- id: capability.identity.subject-resolution
name: Identity Subject Resolution
- summary: Resolve who or what is acting in a context by mapping principals, accounts, actors, and identifiers to a stable subject model.
+ summary: Resolve who or what is acting by mapping principals, accounts, actors, and identifiers to a stable subject model.
vector: D3 / A0 / C1 / R0
domain: helix_forge
status: draft
@@ -59,9 +80,53 @@ capabilities:
tags: [identity, subject, architecture]
consumption_modes: [informational]
+ - id: capability.identity.vocabulary-canonicalize
+ name: Identity Vocabulary Canonicalization
+ summary: Define an implementation-neutral vocabulary for identity-related concepts across overlapping domains.
+ vector: D4 / A0 / C2 / R0
+ domain: helix_forge
+ status: draft
+ owner: identity-canon
+ path: registry/capabilities/capability.identity.vocabulary-canonicalize.md
+ tags: [identity, terminology, research]
+ consumption_modes: [informational]
+
+ - id: capability.registry.register
+ name: Capability Registration
+ summary: Register a new capability so it becomes visible for planning and implementation reuse.
+ vector: D3 / A3 / C2 / R2
+ 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]
+
+ - id: capability.registry.validate
+ name: Registry Entry Validation
+ summary: Validate capability registry entries against schema, index consistency, and relation integrity.
+ vector: D4 / A3 / C3 / R2
+ domain: helix_forge
+ status: draft
+ owner: reuse-surface
+ path: registry/capabilities/capability.registry.validate.md
+ tags: [registry, validation, cli]
+ consumption_modes: [cli]
+
+ - id: capability.statehub.progress-log
+ name: Work Progress Logging
+ summary: Record progress events, decisions, and session notes against workstreams and tasks in State Hub.
+ vector: D4 / A4 / C3 / R2
+ domain: helix_forge
+ status: draft
+ owner: state-hub
+ path: registry/capabilities/capability.statehub.progress-log.md
+ tags: [state-hub, progress, coordination]
+ consumption_modes: [service API]
+
- id: capability.statehub.workstream-coordinate
name: Workstream And Task Coordination
- summary: Track active workstreams, tasks, progress, and consistency across domain repositories through a local-first coordination service.
+ summary: Track active workstreams, tasks, progress, and consistency across domain repositories.
vector: D4 / A4 / C3 / R2
domain: helix_forge
status: draft
diff --git a/registry/indexes/federated.yaml b/registry/indexes/federated.yaml
index 5b3aac4..e6c9589 100644
--- a/registry/indexes/federated.yaml
+++ b/registry/indexes/federated.yaml
@@ -7,8 +7,59 @@ collision_policy: warn
sources:
- repo: reuse-surface
index: registry/indexes/capabilities.yaml
- count: 6
+ count: 12
capabilities:
+- id: capability.activity.event-coordinate
+ 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
+ consumption_modes:
+ - informational
+ source_repo: reuse-surface
+ source_index: registry/indexes/capabilities.yaml
+- id: capability.audit.event-retain
+ name: Audit Event Retention
+ summary: Collect, normalize, retain, and search audit events with integrity evidence
+ across tenants.
+ vector: D4 / A2 / C2 / R1
+ domain: helix_forge
+ status: draft
+ owner: audit-core
+ path: registry/capabilities/capability.audit.event-retain.md
+ tags:
+ - audit
+ - retention
+ - compliance
+ consumption_modes:
+ - source module
+ source_repo: reuse-surface
+ source_index: registry/indexes/capabilities.yaml
+- id: capability.authorization.policy-evaluate
+ 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: flex-auth
+ path: registry/capabilities/capability.authorization.policy-evaluate.md
+ tags:
+ - authorization
+ - policy
+ - flex-auth
+ consumption_modes:
+ - source module
+ source_repo: reuse-surface
+ source_index: registry/indexes/capabilities.yaml
- id: capability.feature-control.evaluate
name: Feature Availability Evaluation
summary: Evaluate whether a feature is active, hidden, disabled, or unavailable
@@ -30,7 +81,7 @@ capabilities:
- id: capability.feature-control.rollout
name: Feature Rollout Control
summary: Gradually expose features to subjects across tenants, domains, groups,
- or cohorts using rollout rules and staged availability.
+ or cohorts using rollout rules.
vector: D4 / A2 / C2 / R1
domain: helix_forge
status: draft
@@ -45,10 +96,26 @@ capabilities:
- SDK
source_repo: reuse-surface
source_index: registry/indexes/capabilities.yaml
+- id: capability.feature-control.visibility
+ name: Feature Visibility Control
+ summary: Control whether features are visible or hidden for subjects without changing
+ entitlement or authorization.
+ vector: D4 / A2 / C2 / R1
+ domain: helix_forge
+ status: draft
+ owner: feature-control
+ path: registry/capabilities/capability.feature-control.visibility.md
+ tags:
+ - feature-control
+ - visibility
+ consumption_modes:
+ - source module
+ source_repo: reuse-surface
+ source_index: registry/indexes/capabilities.yaml
- id: capability.identity.subject-resolution
name: Identity Subject Resolution
- summary: Resolve who or what is acting in a context by mapping principals, accounts,
- actors, and identifiers to a stable subject model.
+ summary: Resolve who or what is acting by mapping principals, accounts, actors,
+ and identifiers to a stable subject model.
vector: D3 / A0 / C1 / R0
domain: helix_forge
status: draft
@@ -64,8 +131,8 @@ capabilities:
source_index: registry/indexes/capabilities.yaml
- id: capability.identity.vocabulary-canonicalize
name: Identity Vocabulary Canonicalization
- summary: Define and maintain an implementation-neutral vocabulary for identity-related
- concepts across overlapping domains.
+ summary: Define an implementation-neutral vocabulary for identity-related concepts
+ across overlapping domains.
vector: D4 / A0 / C2 / R0
domain: helix_forge
status: draft
@@ -98,10 +165,44 @@ capabilities:
- cli
source_repo: reuse-surface
source_index: registry/indexes/capabilities.yaml
+- id: capability.registry.validate
+ name: Registry Entry Validation
+ summary: Validate capability registry entries against schema, index consistency,
+ and relation integrity.
+ vector: D4 / A3 / C3 / R2
+ domain: helix_forge
+ status: draft
+ owner: reuse-surface
+ path: registry/capabilities/capability.registry.validate.md
+ tags:
+ - registry
+ - validation
+ - cli
+ consumption_modes:
+ - cli
+ source_repo: reuse-surface
+ source_index: registry/indexes/capabilities.yaml
+- id: capability.statehub.progress-log
+ name: Work Progress Logging
+ summary: Record progress events, decisions, and session notes against workstreams
+ and tasks in State Hub.
+ vector: D4 / A4 / C3 / R2
+ domain: helix_forge
+ status: draft
+ owner: state-hub
+ path: registry/capabilities/capability.statehub.progress-log.md
+ tags:
+ - state-hub
+ - progress
+ - coordination
+ consumption_modes:
+ - service API
+ source_repo: reuse-surface
+ source_index: registry/indexes/capabilities.yaml
- id: capability.statehub.workstream-coordinate
name: Workstream And Task Coordination
summary: Track active workstreams, tasks, progress, and consistency across domain
- repositories through a local-first coordination service.
+ repositories.
vector: D4 / A4 / C3 / R2
domain: helix_forge
status: draft
diff --git a/reuse_surface/catalog.py b/reuse_surface/catalog.py
index 2bb3a35..d169233 100644
--- a/reuse_surface/catalog.py
+++ b/reuse_surface/catalog.py
@@ -1,6 +1,7 @@
from __future__ import annotations
import html
+import json
from collections import defaultdict
from pathlib import Path
from typing import Any
@@ -9,6 +10,9 @@ ROOT = Path(__file__).resolve().parent.parent
CATALOG_MD = ROOT / "docs" / "CapabilityCatalog.md"
CATALOG_HTML_DIR = ROOT / "docs" / "catalog"
CATALOG_HTML = CATALOG_HTML_DIR / "index.html"
+CATALOG_JSON = CATALOG_HTML_DIR / "registry.json"
+CATALOG_SEARCH = CATALOG_HTML_DIR / "search.html"
+GRAPH_HTML = ROOT / "docs" / "graph" / "index.html"
def _grouped_capabilities(
@@ -112,11 +116,105 @@ def render_html(
"""
+def render_search_html() -> str:
+ return """
+
+
+
+ Capability Catalog Search
+
+
+
+ Capability Catalog
+ Client-side search over registry.json. Generated by reuse-surface catalog.
+
+
+
+
+
+
+"""
+
+
+def render_graph_explorer(mermaid_source: str) -> str:
+ escaped = json.dumps(mermaid_source)
+ return f"""
+
+
+
+ Capability Relation Graph
+
+
+
+
+ Capability Relation Graph
+ Generated from entry relations fields. Regenerate with reuse-surface graph.
+
+
+
+
+"""
+
+
def write_catalog(
index: dict[str, Any],
indexed_entries: list[tuple[dict[str, Any], dict[str, Any]]],
-) -> tuple[Path, Path]:
+ *,
+ mermaid_source: str | None = None,
+) -> list[Path]:
CATALOG_HTML_DIR.mkdir(parents=True, exist_ok=True)
+ written: list[Path] = []
CATALOG_MD.write_text(render_markdown(index, indexed_entries), encoding="utf-8")
+ written.append(CATALOG_MD)
CATALOG_HTML.write_text(render_html(index, indexed_entries), encoding="utf-8")
- return CATALOG_MD, CATALOG_HTML
\ No newline at end of file
+ written.append(CATALOG_HTML)
+ payload = {
+ "domain": index.get("domain"),
+ "updated": index.get("updated"),
+ "capabilities": [item for item, _ in indexed_entries],
+ }
+ CATALOG_JSON.write_text(json.dumps(payload, indent=2), encoding="utf-8")
+ written.append(CATALOG_JSON)
+ CATALOG_SEARCH.write_text(render_search_html(), encoding="utf-8")
+ written.append(CATALOG_SEARCH)
+ if mermaid_source is not None:
+ GRAPH_HTML.parent.mkdir(parents=True, exist_ok=True)
+ GRAPH_HTML.write_text(render_graph_explorer(mermaid_source), encoding="utf-8")
+ written.append(GRAPH_HTML)
+ return written
\ No newline at end of file
diff --git a/reuse_surface/cli.py b/reuse_surface/cli.py
index 62e9b6e..4e983d0 100644
--- a/reuse_surface/cli.py
+++ b/reuse_surface/cli.py
@@ -64,7 +64,7 @@ def cmd_validate(args: argparse.Namespace) -> int:
for error in errors:
print(f"error: {error}", file=sys.stderr)
- if errors:
+ if errors or (args.fail_on_warnings and warnings):
return 1
print(f"ok: validated {len(paths)} capability entr{'y' if len(paths) == 1 else 'ies'}")
return 0
@@ -167,18 +167,27 @@ def cmd_graph(args: argparse.Namespace) -> int:
print(content, end="")
else:
path = write_graph()
+ from reuse_surface.catalog import GRAPH_HTML, render_graph_explorer
+
+ GRAPH_HTML.parent.mkdir(parents=True, exist_ok=True)
+ GRAPH_HTML.write_text(render_graph_explorer(content), encoding="utf-8")
print(f"ok: wrote {path.relative_to(ROOT)}")
+ print(f"ok: wrote {GRAPH_HTML.relative_to(ROOT)}")
for warning in warnings:
print(f"warning: {warning}", file=sys.stderr)
+ if args.fail_on_warnings and warnings:
+ return 1
return 0
def cmd_catalog(args: argparse.Namespace) -> int:
index = load_index()
indexed_entries = _load_indexed_entries()
- md_path, html_path = write_catalog(index, indexed_entries)
- print(f"ok: wrote {md_path.relative_to(ROOT)}")
- print(f"ok: wrote {html_path.relative_to(ROOT)}")
+ paths = write_catalog(
+ index, indexed_entries, mermaid_source=render_mermaid()
+ )
+ for path in paths:
+ print(f"ok: wrote {path.relative_to(ROOT)}")
return 0
@@ -237,6 +246,11 @@ def main(argv: list[str] | None = None) -> int:
action="store_true",
help="check relation cycles and broken references",
)
+ validate.add_argument(
+ "--fail-on-warnings",
+ action="store_true",
+ help="exit non-zero when warnings are present",
+ )
validate.set_defaults(func=cmd_validate)
federation = subparsers.add_parser(
@@ -290,6 +304,11 @@ def main(argv: list[str] | None = None) -> int:
action="store_true",
help="report depends_on cycles and broken relation references",
)
+ graph.add_argument(
+ "--fail-on-warnings",
+ action="store_true",
+ help="exit non-zero when relation warnings are present",
+ )
graph.set_defaults(func=cmd_graph)
args = parser.parse_args(argv)
diff --git a/tests/test_registry.py b/tests/test_registry.py
new file mode 100644
index 0000000..458786b
--- /dev/null
+++ b/tests/test_registry.py
@@ -0,0 +1,58 @@
+from __future__ import annotations
+
+import subprocess
+import sys
+from pathlib import Path
+
+ROOT = Path(__file__).resolve().parent.parent
+
+
+def run_cli(*args: str) -> subprocess.CompletedProcess[str]:
+ return subprocess.run(
+ [sys.executable, "-m", "reuse_surface.cli", *args],
+ cwd=ROOT,
+ capture_output=True,
+ text=True,
+ check=False,
+ )
+
+
+def test_validate_passes():
+ result = run_cli("validate")
+ assert result.returncode == 0
+ assert "ok: validated" in result.stdout
+
+
+def test_validate_relations_clean():
+ result = run_cli("validate", "--relations", "--fail-on-warnings")
+ assert result.returncode == 0, result.stderr
+
+
+def test_query_finds_registry():
+ result = run_cli("query", "--tag", "registry")
+ assert result.returncode == 0
+ assert "capability.registry.register" in result.stdout
+
+
+def test_federation_compose():
+ result = run_cli("federation", "compose")
+ assert result.returncode == 0
+ assert (ROOT / "registry/indexes/federated.yaml").exists()
+
+
+def test_export_json():
+ result = run_cli("export", "--format", "json")
+ assert result.returncode == 0
+ assert '"capabilities"' in result.stdout
+
+
+def test_graph_check_clean():
+ result = run_cli("graph", "--check", "--fail-on-warnings")
+ assert result.returncode == 0, result.stderr
+
+
+def test_catalog_writes_search():
+ result = run_cli("catalog")
+ assert result.returncode == 0
+ assert (ROOT / "docs/catalog/registry.json").exists()
+ assert (ROOT / "docs/catalog/search.html").exists()
\ No newline at end of file
diff --git a/tools/README.md b/tools/README.md
index bce65ee..a5cd6a2 100644
--- a/tools/README.md
+++ b/tools/README.md
@@ -59,7 +59,8 @@ Generate human-readable catalog artifacts (UC-RS-018).
reuse-surface catalog
```
-Writes `docs/CapabilityCatalog.md` and `docs/catalog/index.html`.
+Writes `docs/CapabilityCatalog.md`, `docs/catalog/index.html`,
+`docs/catalog/registry.json`, and `docs/catalog/search.html`.
### federation compose
@@ -81,6 +82,8 @@ reuse-surface graph --check
reuse-surface graph --stdout
```
+Writes `docs/graph/capability-graph.mmd` and `docs/graph/index.html`.
+
## Export format
The export bundle includes:
diff --git a/workplans/REUSE-WP-0006-registry-hygiene-and-coverage.md b/workplans/REUSE-WP-0006-registry-hygiene-and-coverage.md
new file mode 100644
index 0000000..346424b
--- /dev/null
+++ b/workplans/REUSE-WP-0006-registry-hygiene-and-coverage.md
@@ -0,0 +1,78 @@
+---
+id: REUSE-WP-0006
+type: workplan
+title: "Registry hygiene and coverage expansion"
+domain: helix_forge
+repo: reuse-surface
+status: finished
+owner: codex
+topic_slug: helix-forge
+created: "2026-06-15"
+updated: "2026-06-15"
+state_hub_workstream_id: "d3d0b3ae-dedc-48bc-a6d2-16975e10acc3"
+---
+
+# Registry hygiene and coverage expansion
+
+Close broken relation references, register missing adjacent capabilities, and
+expand helix_forge registry coverage so `reuse-surface graph --check` and
+`validate --relations` run clean.
+
+## Register Missing Relation Targets
+
+```task
+id: REUSE-WP-0006-T01
+status: done
+priority: high
+state_hub_task_id: "183b42ae-7773-484f-afe7-4966e26f1768"
+```
+
+Register three capabilities referenced by existing relations but not yet in the
+index:
+
+- `capability.registry.validate`
+- `capability.feature-control.visibility`
+- `capability.statehub.progress-log`
+
+Each entry must pass validation and appear in the index.
+
+## Expand helix_forge Coverage
+
+```task
+id: REUSE-WP-0006-T02
+status: done
+priority: high
+state_hub_task_id: "3c6b4e4a-07c0-4a06-a64b-f152f8bdb35d"
+```
+
+Register at least three additional helix_forge capabilities from adjacent repos:
+
+- `capability.authorization.policy-evaluate` (flex-auth)
+- `capability.activity.event-coordinate` (activity-core)
+- `capability.audit.event-retain` (audit-core)
+
+Illustrate distinct vectors and link relations where appropriate.
+
+## Regenerate Derived Artifacts
+
+```task
+id: REUSE-WP-0006-T03
+status: done
+priority: medium
+state_hub_task_id: "417e7a0d-2bdd-43fd-8604-3d48cc1fc083"
+```
+
+Run and commit outputs from `federation compose`, `graph`, `catalog`, and
+`export`. Confirm `validate --relations` reports no broken references.
+
+## Update Documentation
+
+```task
+id: REUSE-WP-0006-T04
+status: done
+priority: medium
+state_hub_task_id: "9e061f46-5de8-4cf7-a7f1-b0e886391b7d"
+```
+
+Update `SCOPE.md` capability inventory and `docs/IntentScopeGapAnalysis.md`
+self-assessment after coverage growth.
\ No newline at end of file
diff --git a/workplans/REUSE-WP-0007-interactive-catalog.md b/workplans/REUSE-WP-0007-interactive-catalog.md
new file mode 100644
index 0000000..02daebd
--- /dev/null
+++ b/workplans/REUSE-WP-0007-interactive-catalog.md
@@ -0,0 +1,54 @@
+---
+id: REUSE-WP-0007
+type: workplan
+title: "Interactive capability catalog"
+domain: helix_forge
+repo: reuse-surface
+status: finished
+owner: codex
+topic_slug: helix-forge
+created: "2026-06-15"
+updated: "2026-06-15"
+state_hub_workstream_id: "1afa1322-7d60-41aa-bf7e-3ef29bb4d3a5"
+---
+
+# Interactive capability catalog
+
+Close gap analysis priority 13 (UC-RS-018 enhancement). Build a static,
+searchable catalog UI over exported registry data.
+
+## Add Catalog Site Generator
+
+```task
+id: REUSE-WP-0007-T01
+status: done
+priority: high
+state_hub_task_id: "84c56268-2e0b-42e6-b20e-6fbf059dcc20"
+```
+
+Extend `reuse-surface catalog` (or add `catalog site`) to emit
+`docs/catalog/registry.json` alongside existing MD/HTML outputs.
+
+## Build Searchable Catalog UI
+
+```task
+id: REUSE-WP-0007-T02
+status: done
+priority: high
+state_hub_task_id: "d587bc50-adb2-424a-a9d3-600a2ec5ba9b"
+```
+
+Create `docs/catalog/search.html` with client-side filter by name, summary, tags,
+vector, and consumption mode. No backend required.
+
+## Wire Catalog Into CI And Docs
+
+```task
+id: REUSE-WP-0007-T03
+status: done
+priority: medium
+state_hub_task_id: "eca7438c-3c2f-4027-9b40-67df5f17aca7"
+```
+
+Update CI to regenerate catalog artifacts, document browsing in
+`docs/CapabilityRegistryConcept.md` and `SCOPE.md`.
\ No newline at end of file
diff --git a/workplans/REUSE-WP-0008-graph-explorer.md b/workplans/REUSE-WP-0008-graph-explorer.md
new file mode 100644
index 0000000..0b83307
--- /dev/null
+++ b/workplans/REUSE-WP-0008-graph-explorer.md
@@ -0,0 +1,42 @@
+---
+id: REUSE-WP-0008
+type: workplan
+title: "Interactive relation graph explorer"
+domain: helix_forge
+repo: reuse-surface
+status: finished
+owner: codex
+topic_slug: helix-forge
+created: "2026-06-15"
+updated: "2026-06-15"
+state_hub_workstream_id: "63f8a2da-d179-4875-8cff-40a0fa2ca067"
+---
+
+# Interactive relation graph explorer
+
+Close gap analysis priority 16. Provide a browsable HTML view of
+`docs/graph/capability-graph.mmd` for architects (UC-RS-016).
+
+## Add Graph Explorer Page
+
+```task
+id: REUSE-WP-0008-T01
+status: done
+priority: high
+state_hub_task_id: "2d08de47-d3c0-484f-a945-9691da9688e4"
+```
+
+Create `docs/graph/index.html` that renders the Mermaid graph in-browser with
+node labels and a legend for relation types.
+
+## Integrate Graph Generation
+
+```task
+id: REUSE-WP-0008-T02
+status: done
+priority: medium
+state_hub_task_id: "ada96492-88d0-438e-8d2b-ae0fdd8abb06"
+```
+
+Ensure `reuse-surface graph` documents and regenerates both `.mmd` and the
+explorer page dependency. Update `registry/README.md` and `AGENTS.md`.
\ No newline at end of file
diff --git a/workplans/REUSE-WP-0009-cli-hardening.md b/workplans/REUSE-WP-0009-cli-hardening.md
new file mode 100644
index 0000000..8d4379b
--- /dev/null
+++ b/workplans/REUSE-WP-0009-cli-hardening.md
@@ -0,0 +1,55 @@
+---
+id: REUSE-WP-0009
+type: workplan
+title: "CLI hardening and test suite"
+domain: helix_forge
+repo: reuse-surface
+status: finished
+owner: codex
+topic_slug: helix-forge
+created: "2026-06-15"
+updated: "2026-06-15"
+state_hub_workstream_id: "9121d16f-879f-4db3-9df6-06f7543481d8"
+---
+
+# CLI hardening and test suite
+
+Raise registry tooling reliability toward R3 with automated tests and stricter
+CI gates after WP-0006 relation hygiene.
+
+## Add pytest Suite
+
+```task
+id: REUSE-WP-0009-T01
+status: done
+priority: high
+state_hub_task_id: "57d0869a-38bb-409a-b5b1-b3c73ff31a96"
+```
+
+Add `tests/` covering validate, query, export, overlaps, federation compose,
+graph, and catalog commands. Add `[dev]` optional deps and document
+`.venv/bin/pytest` in `AGENTS.md`.
+
+## Add Fail-On-Warnings Flags
+
+```task
+id: REUSE-WP-0009-T02
+status: done
+priority: high
+state_hub_task_id: "d10fde06-e09b-4292-b6c8-ced5e5ef213c"
+```
+
+Add `--fail-on-warnings` to `validate` and `graph --check`. Use in CI once
+WP-0006 relation hygiene is complete.
+
+## Tighten CI Pipeline
+
+```task
+id: REUSE-WP-0009-T03
+status: done
+priority: medium
+state_hub_task_id: "79c0fa70-7ec1-4762-9a7c-9783f0997016"
+```
+
+Update `.gitea/workflows/ci.yml` to run pytest and fail on relation warnings.
+Record reliability evidence on `capability.registry.register`.
\ No newline at end of file
diff --git a/workplans/REUSE-WP-0010-network-federation.md b/workplans/REUSE-WP-0010-network-federation.md
new file mode 100644
index 0000000..e567572
--- /dev/null
+++ b/workplans/REUSE-WP-0010-network-federation.md
@@ -0,0 +1,54 @@
+---
+id: REUSE-WP-0010
+type: workplan
+title: "Network federation for remote indexes"
+domain: helix_forge
+repo: reuse-surface
+status: backlog
+owner: codex
+topic_slug: helix-forge
+created: "2026-06-15"
+updated: "2026-06-15"
+state_hub_workstream_id: "da812165-d56e-47fa-9901-bb3747522ec4"
+---
+
+# Network federation for remote indexes
+
+Close gap analysis priority 15. Extend federation beyond filesystem paths to
+fetch capability indexes from HTTP URLs or git raw endpoints.
+
+## Extend Federation Schema For URLs
+
+```task
+id: REUSE-WP-0010-T01
+status: todo
+priority: medium
+state_hub_task_id: "6f181057-e0f7-4879-9eb9-928a527a01ee"
+```
+
+Extend `schemas/federation.schema.yaml` and manifest format to support `url`
+sources alongside `index` file paths, with optional auth and TTL metadata.
+
+## Implement Remote Index Fetch
+
+```task
+id: REUSE-WP-0010-T02
+status: todo
+priority: medium
+state_hub_task_id: "a2fac7d5-9383-4a42-bd23-3e8dbc7d550b"
+```
+
+Add HTTP fetch to `federation compose` with local cache under
+`registry/federation/cache/`. Clear errors when remote source unavailable.
+
+## Document Federation Operations
+
+```task
+id: REUSE-WP-0010-T03
+status: todo
+priority: low
+state_hub_task_id: "73996193-ecae-4fb4-84f7-fe84a5cd8898"
+```
+
+Update `docs/RegistryFederation.md` with remote source examples and agent
+guidance for cross-repo discovery without local checkout.
\ No newline at end of file