Complete WP-0006 through WP-0009: registry expansion, catalog, graph, tests
Some checks failed
ci / validate-registry (push) Has been cancelled

Register six new capabilities (12 total), add searchable catalog UI and graph
explorer, introduce pytest suite with CI fail-on-warnings, and close gap
analysis priorities 13 and 16. WP-0010 remains backlog for network federation.
This commit is contained in:
2026-06-15 02:24:20 +02:00
parent 399690a5b6
commit e766f38e6f
30 changed files with 1632 additions and 80 deletions

View File

@@ -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

View File

@@ -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`.
---

View File

@@ -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 18; vector updated to D5/A3/C4/R2 |
| 2026-06-15 | REUSE-WP-0004 closed priorities 911 (catalog, overlaps, CI) |
| 2026-06-15 | REUSE-WP-0005 closed priorities 12 and 14 (federation, relation graphs) |
| 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 |

View File

@@ -15,8 +15,26 @@
</head>
<body>
<h1>Capability Catalog</h1>
<p class="subtitle">Updated 2026-06-15 · 6 entries</p>
<p class="subtitle">Updated 2026-06-15 · 12 entries</p>
<section><h2>helix_forge</h2>
<article class="card">
<h3>Organizational Event Coordination</h3>
<p class="meta"><code>capability.activity.event-coordinate</code> · D3 / A1 / C1 / R0</p>
<p>Coordinate structured responses to cross-domain events through activity workflows and automation.</p>
<p class="path">registry/capabilities/capability.activity.event-coordinate.md</p>
</article>
<article class="card">
<h3>Audit Event Retention</h3>
<p class="meta"><code>capability.audit.event-retain</code> · D4 / A2 / C2 / R1</p>
<p>Collect, normalize, retain, and search audit events with integrity evidence across tenants.</p>
<p class="path">registry/capabilities/capability.audit.event-retain.md</p>
</article>
<article class="card">
<h3>Authorization Policy Evaluation</h3>
<p class="meta"><code>capability.authorization.policy-evaluate</code> · D4 / A2 / C2 / R1</p>
<p>Evaluate access decisions from policy-as-code rules for subjects, resources, and actions.</p>
<p class="path">registry/capabilities/capability.authorization.policy-evaluate.md</p>
</article>
<article class="card">
<h3>Feature Availability Evaluation</h3>
<p class="meta"><code>capability.feature-control.evaluate</code> · D5 / A4 / C3 / R3</p>
@@ -26,19 +44,25 @@
<article class="card">
<h3>Feature Rollout Control</h3>
<p class="meta"><code>capability.feature-control.rollout</code> · D4 / A2 / C2 / R1</p>
<p>Gradually expose features to subjects across tenants, domains, groups, or cohorts using rollout rules and staged availability.</p>
<p>Gradually expose features to subjects across tenants, domains, groups, or cohorts using rollout rules.</p>
<p class="path">registry/capabilities/capability.feature-control.rollout.md</p>
</article>
<article class="card">
<h3>Feature Visibility Control</h3>
<p class="meta"><code>capability.feature-control.visibility</code> · D4 / A2 / C2 / R1</p>
<p>Control whether features are visible or hidden for subjects without changing entitlement or authorization.</p>
<p class="path">registry/capabilities/capability.feature-control.visibility.md</p>
</article>
<article class="card">
<h3>Identity Subject Resolution</h3>
<p class="meta"><code>capability.identity.subject-resolution</code> · D3 / A0 / C1 / R0</p>
<p>Resolve who or what is acting in a context by mapping principals, accounts, actors, and identifiers to a stable subject model.</p>
<p>Resolve who or what is acting by mapping principals, accounts, actors, and identifiers to a stable subject model.</p>
<p class="path">registry/capabilities/capability.identity.subject-resolution.md</p>
</article>
<article class="card">
<h3>Identity Vocabulary Canonicalization</h3>
<p class="meta"><code>capability.identity.vocabulary-canonicalize</code> · D4 / A0 / C2 / R0</p>
<p>Define and maintain an implementation-neutral vocabulary for identity-related concepts across overlapping domains.</p>
<p>Define an implementation-neutral vocabulary for identity-related concepts across overlapping domains.</p>
<p class="path">registry/capabilities/capability.identity.vocabulary-canonicalize.md</p>
</article>
<article class="card">
@@ -47,10 +71,22 @@
<p>Register a new capability so it becomes visible for planning and implementation reuse.</p>
<p class="path">registry/capabilities/capability.registry.register.md</p>
</article>
<article class="card">
<h3>Registry Entry Validation</h3>
<p class="meta"><code>capability.registry.validate</code> · D4 / A3 / C3 / R2</p>
<p>Validate capability registry entries against schema, index consistency, and relation integrity.</p>
<p class="path">registry/capabilities/capability.registry.validate.md</p>
</article>
<article class="card">
<h3>Work Progress Logging</h3>
<p class="meta"><code>capability.statehub.progress-log</code> · D4 / A4 / C3 / R2</p>
<p>Record progress events, decisions, and session notes against workstreams and tasks in State Hub.</p>
<p class="path">registry/capabilities/capability.statehub.progress-log.md</p>
</article>
<article class="card">
<h3>Workstream And Task Coordination</h3>
<p class="meta"><code>capability.statehub.workstream-coordinate</code> · D4 / A4 / C3 / R2</p>
<p>Track active workstreams, tasks, progress, and consistency across domain repositories through a local-first coordination service.</p>
<p>Track active workstreams, tasks, progress, and consistency across domain repositories.</p>
<p class="path">registry/capabilities/capability.statehub.workstream-coordinate.md</p>
</article></section>
</body>

226
docs/catalog/registry.json Normal file
View File

@@ -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"
]
}
]
}

44
docs/catalog/search.html Normal file
View File

@@ -0,0 +1,44 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Capability Catalog Search</title>
<style>
body { font-family: system-ui, sans-serif; margin: 2rem; line-height: 1.5; }
input { width: 100%; max-width: 40rem; padding: 0.5rem; font-size: 1rem; }
.card { border: 1px solid #ddd; border-radius: 8px; padding: 1rem; margin: 1rem 0; }
.meta { color: #555; font-size: 0.9rem; }
.hidden { display: none; }
</style>
</head>
<body>
<h1>Capability Catalog</h1>
<p>Client-side search over <code>registry.json</code>. Generated by <code>reuse-surface catalog</code>.</p>
<input id="q" type="search" placeholder="Search name, summary, tags, vector..." autofocus>
<p id="count"></p>
<div id="results"></div>
<script>
let items = [];
fetch('registry.json').then(r => r.json()).then(data => {
items = data.capabilities || [];
render('');
});
document.getElementById('q').addEventListener('input', e => render(e.target.value));
function render(query) {
const q = query.trim().toLowerCase();
const matches = items.filter(item => {
const hay = [item.id, item.name, item.summary, item.vector,
...(item.tags || []), ...(item.consumption_modes || [])].join(' ').toLowerCase();
return !q || hay.includes(q);
});
document.getElementById('count').textContent = matches.length + ' match(es)';
document.getElementById('results').innerHTML = matches.map(item => `
<article class="card">
<h3>${item.name}</h3>
<p class="meta"><code>${item.id}</code> · ${item.vector} · ${item.owner}</p>
<p>${item.summary}</p>
</article>`).join('');
}
</script>
</body>
</html>

View File

@@ -1,24 +1,42 @@
graph LR
capability_activity_event_coordinate["capability.activity.event-coordinate<br/>D3 / A1 / C1 / R0"]
capability_audit_event_retain["capability.audit.event-retain<br/>D4 / A2 / C2 / R1"]
capability_authorization_policy_evaluate["capability.authorization.policy-evaluate<br/>D4 / A2 / C2 / R1"]
capability_feature_control_evaluate["capability.feature-control.evaluate<br/>D5 / A4 / C3 / R3"]
capability_feature_control_rollout["capability.feature-control.rollout<br/>D4 / A2 / C2 / R1"]
capability_feature_control_visibility["capability.feature-control.visibility<br/>D4 / A2 / C2 / R1"]
capability_identity_subject_resolution["capability.identity.subject-resolution<br/>D3 / A0 / C1 / R0"]
capability_identity_vocabulary_canonicalize["capability.identity.vocabulary-canonicalize<br/>D4 / A0 / C2 / R0"]
capability_registry_register["capability.registry.register<br/>D3 / A3 / C2 / R2"]
capability_registry_validate["capability.registry.validate<br/>D4 / A3 / C3 / R2"]
capability_statehub_progress_log["capability.statehub.progress-log<br/>D4 / A4 / C3 / R2"]
capability_statehub_workstream_coordinate["capability.statehub.workstream-coordinate<br/>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

23
docs/graph/index.html Normal file
View File

@@ -0,0 +1,23 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Capability Relation Graph</title>
<script type="module">
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs';
mermaid.initialize({ startOnLoad: true, theme: 'neutral' });
</script>
<style>
body { font-family: system-ui, sans-serif; margin: 2rem; }
.legend { color: #555; margin-bottom: 1rem; }
</style>
</head>
<body>
<h1>Capability Relation Graph</h1>
<p class="legend">Generated from entry <code>relations</code> fields. Regenerate with <code>reuse-surface graph</code>.</p>
<pre class="mermaid" id="graph"></pre>
<script>
document.getElementById('graph').textContent = "graph LR\n capability_activity_event_coordinate[\"capability.activity.event-coordinate<br/>D3 / A1 / C1 / R0\"]\n capability_audit_event_retain[\"capability.audit.event-retain<br/>D4 / A2 / C2 / R1\"]\n capability_authorization_policy_evaluate[\"capability.authorization.policy-evaluate<br/>D4 / A2 / C2 / R1\"]\n capability_feature_control_evaluate[\"capability.feature-control.evaluate<br/>D5 / A4 / C3 / R3\"]\n capability_feature_control_rollout[\"capability.feature-control.rollout<br/>D4 / A2 / C2 / R1\"]\n capability_feature_control_visibility[\"capability.feature-control.visibility<br/>D4 / A2 / C2 / R1\"]\n capability_identity_subject_resolution[\"capability.identity.subject-resolution<br/>D3 / A0 / C1 / R0\"]\n capability_identity_vocabulary_canonicalize[\"capability.identity.vocabulary-canonicalize<br/>D4 / A0 / C2 / R0\"]\n capability_registry_register[\"capability.registry.register<br/>D3 / A3 / C2 / R2\"]\n capability_registry_validate[\"capability.registry.validate<br/>D4 / A3 / C3 / R2\"]\n capability_statehub_progress_log[\"capability.statehub.progress-log<br/>D4 / A4 / C3 / R2\"]\n capability_statehub_workstream_coordinate[\"capability.statehub.workstream-coordinate<br/>D4 / A4 / C3 / R2\"]\n capability_activity_event_coordinate -->|related_to| capability_statehub_workstream_coordinate\n capability_activity_event_coordinate -->|related_to| capability_audit_event_retain\n capability_audit_event_retain -->|related_to| capability_activity_event_coordinate\n capability_audit_event_retain -->|related_to| capability_statehub_progress_log\n capability_authorization_policy_evaluate -->|depends_on| capability_identity_subject_resolution\n capability_authorization_policy_evaluate -->|related_to| capability_feature_control_evaluate\n capability_feature_control_evaluate -->|depends_on| capability_identity_vocabulary_canonicalize\n capability_feature_control_evaluate -->|supports| capability_registry_register\n capability_feature_control_evaluate -->|related_to| capability_feature_control_rollout\n capability_feature_control_evaluate -->|related_to| capability_feature_control_visibility\n capability_feature_control_rollout -->|depends_on| capability_feature_control_evaluate\n capability_feature_control_rollout -->|related_to| capability_feature_control_visibility\n capability_feature_control_visibility -->|depends_on| capability_feature_control_evaluate\n capability_feature_control_visibility -->|related_to| capability_feature_control_rollout\n capability_identity_subject_resolution -->|depends_on| capability_identity_vocabulary_canonicalize\n capability_identity_subject_resolution -->|supports| capability_feature_control_evaluate\n capability_identity_subject_resolution -->|supports| capability_statehub_workstream_coordinate\n capability_identity_vocabulary_canonicalize -->|supports| capability_feature_control_evaluate\n capability_identity_vocabulary_canonicalize -->|supports| capability_registry_register\n capability_identity_vocabulary_canonicalize -->|related_to| capability_identity_subject_resolution\n capability_registry_register -->|supports| capability_feature_control_evaluate\n capability_registry_register -->|supports| capability_identity_vocabulary_canonicalize\n capability_registry_register -->|related_to| capability_registry_validate\n capability_registry_validate -->|depends_on| capability_registry_register\n capability_registry_validate -->|related_to| capability_registry_register\n capability_statehub_progress_log -->|depends_on| capability_statehub_workstream_coordinate\n capability_statehub_progress_log -->|related_to| capability_statehub_workstream_coordinate\n capability_statehub_workstream_coordinate -->|supports| capability_registry_register\n capability_statehub_workstream_coordinate -->|related_to| capability_statehub_progress_log\n";
</script>
</body>
</html>