Complete REUSE-WP-0003: registry CLI, docs alignment, and coverage

Align INTENT.md with delivered layout, add CapabilityRegistryConcept guide,
extend schema with promotion_history, ship reuse-surface validate/query/export
CLI, register three more helix_forge capabilities, and refresh SCOPE and gap
analysis to reflect A3 tooling and D5/A3/C4/R2 self-assessment.
This commit is contained in:
2026-06-15 01:12:09 +02:00
parent 80bccc4bbb
commit 0dbef6d1a3
20 changed files with 1051 additions and 165 deletions

View File

@@ -0,0 +1,21 @@
---
active: true
iteration: 1
session_id:
max_iterations: 20
completion_promise: "HEUREKA"
workplan_id: REUSE-WP-0003
workplan_file: /home/worsch/reuse-surface/workplans/REUSE-WP-0003-intent-scope-gap-closure.md
started_at: "2026-06-14T23:09:59Z"
---
Read the workplan at `/home/worsch/reuse-surface/workplans/REUSE-WP-0003-intent-scope-gap-closure.md`.
If every task has `status: done` AND frontmatter `status: done`:
run `rm -f .claude/ralph-loop.local.md` first (deactivates the loop so the stop hook exits cleanly),
then output <promise>HEUREKA</promise>.
Otherwise implement the next `todo` task as described in the workplan.
Set task `in_progress` when starting, `done` when complete.
When all tasks are done set frontmatter `status: done`.

View File

@@ -103,29 +103,29 @@ curl -s -X PATCH "http://127.0.0.1:8000/tasks/<task_id>" \
## Local Developer Workflow ## Local Developer Workflow
This repository is currently documentation-only. There is no package manifest, The repository is primarily documentation-first with a small Python CLI for
runtime application, build system, executable test suite, or formatter/linter registry validate, query, and export. There is no long-running service.
configuration checked in.
### Install ### Install
No install step is required for normal repository work. ```bash
python3 -m venv .venv
.venv/bin/pip install -e .
```
### Build ### Build
No build step exists. Treat Markdown, YAML, and workplan edits as source No separate build step. Treat Markdown, YAML, and workplan edits as source
artifacts. artifacts.
### Test / lint ### Test / lint
There is no project test runner or markdown linter configured yet. Use these
checks before closing a change:
```bash ```bash
# Confirm the repository file inventory still looks intentional # Registry validation (schema + index drift)
rg --files .venv/bin/reuse-surface validate
# Catch whitespace errors in tracked and staged diffs # Repository hygiene
rg --files
git diff --check git diff --check
``` ```
@@ -178,6 +178,10 @@ implementation reuse.
# Fast discovery surface — read this first # Fast discovery surface — read this first
cat registry/indexes/capabilities.yaml cat registry/indexes/capabilities.yaml
# CLI discovery and export
.venv/bin/reuse-surface query --discovery-min D4
.venv/bin/reuse-surface export --format yaml
# Authoring template and schema # Authoring template and schema
cat templates/capability-entry.template.md cat templates/capability-entry.template.md
cat schemas/capability.schema.yaml cat schemas/capability.schema.yaml
@@ -189,7 +193,7 @@ cat tools/README.md
### Query workflow ### Query workflow
1. Read `registry/indexes/capabilities.yaml`. 1. Run `.venv/bin/reuse-surface query` with filters, or read the index directly.
2. Filter by `vector`, `tags`, `consumption_modes`, `domain`, or `summary`. 2. Filter by `vector`, `tags`, `consumption_modes`, `domain`, or `summary`.
3. Open only matching files under `registry/capabilities/`. 3. Open only matching files under `registry/capabilities/`.
4. Compare candidates using `discovery`, `external_evidence`, `availability`, 4. Compare candidates using `discovery`, `external_evidence`, `availability`,
@@ -205,7 +209,7 @@ cat tools/README.md
`registry/capabilities/capability.<domain>.<name>.md`. `registry/capabilities/capability.<domain>.<name>.md`.
3. Start at `D0 / A0 / C0 / R0` when evidence is minimal; keep gaps explicit. 3. Start at `D0 / A0 / C0 / R0` when evidence is minimal; keep gaps explicit.
4. Add the entry to `registry/indexes/capabilities.yaml`. 4. Add the entry to `registry/indexes/capabilities.yaml`.
5. Run the manual validation checklist in `registry/README.md`. 5. Run `.venv/bin/reuse-surface validate`.
### Promote a capability ### Promote a capability
@@ -225,7 +229,7 @@ cat tools/README.md
| Identify current consumption mode | `availability` + index `consumption_modes` | | Identify current consumption mode | `availability` + index `consumption_modes` |
| Record expectations and broken expectations | `external_evidence.completeness` | | Record expectations and broken expectations | `external_evidence.completeness` |
| Record reliability evidence | `external_evidence.reliability` | | Record reliability evidence | `external_evidence.reliability` |
| Search by maturity and availability | `indexes/capabilities.yaml` filters | | Search by maturity and availability | `reuse-surface query` or index filters |
| Compare candidates | entry vectors + relations + README guidance | | Compare candidates | entry vectors + relations + README guidance |
| Avoid duplicate capabilities | index search before add | | Avoid duplicate capabilities | index search before add |

View File

@@ -205,10 +205,10 @@ maturity:
external_evidence: external_evidence:
completeness: completeness:
current: C1 level: C1
confidence: low confidence: low
reliability: reliability:
current: R0 level: R0
confidence: low confidence: low
discovery: discovery:
@@ -239,28 +239,40 @@ evidence:
## Initial Repository Role ## Initial Repository Role
The initial role of `reuse-surface` is to define and maintain the capability registry model, standards, schemas, examples, and reference tooling. The initial role of `reuse-surface` is to define and maintain the capability
registry model, standards, schemas, examples, and reference tooling.
Likely early repository contents: Current repository layout (authoritative for delivery):
```text ```text
reuse-surface/ reuse-surface/
├── INTENT.md ├── INTENT.md
├── README.md ├── SCOPE.md
├── standards/ ├── AGENTS.md
├── specs/
│ ├── ProductRequirementsDocument.md
│ ├── UseCaseCatalog.md
│ └── CapabilityMaturityStandard.md │ └── CapabilityMaturityStandard.md
├── registry/
│ ├── capabilities.yaml
│ └── examples/
├── schemas/ ├── schemas/
│ └── capability.schema.json │ └── capability.schema.yaml
├── templates/
│ └── capability-entry.template.md
├── registry/
│ ├── README.md
│ ├── capabilities/
│ └── indexes/
│ └── capabilities.yaml
├── docs/ ├── docs/
│ ├── CapabilityRegistryConcept.md │ ├── CapabilityRegistryConcept.md
│ └── CapabilityAssessmentGuide.md │ └── IntentScopeGapAnalysis.md
└── tools/ └── tools/
└── README.md └── README.md
``` ```
See `SCOPE.md` for what is possible now versus planned. See
`docs/IntentScopeGapAnalysis.md` for tracked gaps between intent and delivered
scope.
## Success Criteria ## Success Criteria
`reuse-surface` is successful when it helps humans and agents: `reuse-surface` is successful when it helps humans and agents:

View File

@@ -14,13 +14,14 @@ for reuse within this product boundary.
## In Scope ## In Scope
- Maintain the capability maturity model, standards, schemas, registry formats, - Maintain the capability maturity model, standards, schemas, registry formats,
sample entries, indexes, validation guidance, and agent instructions. sample entries, indexes, validation guidance, CLI tooling, and agent
instructions.
- Keep `INTENT.md`, `specs/`, registry artifacts, and State Hub workplans - Keep `INTENT.md`, `specs/`, registry artifacts, and State Hub workplans
aligned on the registry-first reuse boundary. aligned on the registry-first reuse boundary.
- Support humans and agents as registry consumers through Markdown-first - Support humans and agents as registry consumers through Markdown-first
authoring and machine-readable metadata. authoring and machine-readable metadata.
- Record decisions, progress, and workplan status through State Hub. - Record decisions, progress, and workplan status through State Hub.
- Verify changes with documentation review, `git diff --check`, and ADR-001 - Verify changes with `reuse-surface validate`, `git diff --check`, and ADR-001
consistency checks. consistency checks.
## Out of Scope ## Out of Scope
@@ -34,53 +35,47 @@ for reuse within this product boundary.
## What Is Possible Now ## What Is Possible Now
The MVP registry foundation is in place. Humans and agents can: The MVP registry foundation plus CLI tooling (REUSE-WP-0003) is in place. Humans
and agents can:
- **Discover capabilities** via `registry/indexes/capabilities.yaml` - **Discover capabilities** via `registry/indexes/capabilities.yaml` or
`reuse-surface query`
- **Add a new capability** at D0/A0/C0/R0 using - **Add a new capability** at D0/A0/C0/R0 using
`templates/capability-entry.template.md` `templates/capability-entry.template.md`
- **Promote capabilities** by updating front matter with evidence-backed - **Promote capabilities** with evidence, optional `promotion_history`, and index
discovery, availability, completeness, and reliability levels vector updates
- **Compare candidates** using maturity vectors, scope, relations, and consumer - **Compare candidates** using maturity vectors, scope, relations, and consumer
guidance in entry files guidance
- **Record expectations** through `external_evidence.completeness` and - **Record expectations** through `external_evidence.completeness` and
`external_evidence.reliability` fields `external_evidence.reliability`
- **Validate entries manually** using the checklist in `registry/README.md` - **Validate entries automatically** with `reuse-surface validate`
against `schemas/capability.schema.yaml` - **Export a machine-readable bundle** with `reuse-surface export`
- **Avoid duplicates** by searching the index before creating new entries - **Avoid duplicates** by querying the index before creating new entries
These workflows satisfy the MVP acceptance criteria in Registry tooling availability is **A3** (CLI). The registry product itself is
`specs/ProductRequirementsDocument.md` section 16 through manual, Git-friendly still documentation-first for authoring; consumption combines Markdown entries,
authoring. There is no CLI, API, or automated validator yet. the index, and CLI automation.
## What Is Not Possible Yet ## What Is Not Possible Yet
- Automated schema validation or registry export
- CLI query/filter commands
- Generated human-readable catalog site - Generated human-readable catalog site
- Capability graph visualization - Capability graph visualization
- Promotion history tracking or review workflows in tooling - Automated duplicate/overlap detection
- Federation across repositories or organizations - Federation across repositories or organizations
- CI integration or packaged releases beyond local `pip install -e .`
See `tools/README.md` for planned tooling that remains out of scope for the See `tools/README.md` for command reference.
current MVP.
## Current State ## Current State
- Status: active MVP registry (documentation-only, A0 availability). - Status: active MVP registry with CLI tooling.
- The repository has no package manifest, build system, runtime app, or - Six helix_forge capabilities are registered in `registry/capabilities/`.
executable test suite. Registry consumption is informational: read, author, - `reuse-surface` CLI provides `validate`, `query`, and `export` via
compare, and plan. `pyproject.toml` and `reuse_surface/`.
- Three sample capabilities are registered in `registry/capabilities/`: - `docs/CapabilityRegistryConcept.md` and `docs/IntentScopeGapAnalysis.md`
- `capability.registry.register` — D3 / A0 / C1 / R0 document onboarding and intent-scope tracking.
- `capability.feature-control.evaluate` — D5 / A4 / C3 / R3 - Finished workplans: `REUSE-WP-0001`, `REUSE-WP-0002`, `REUSE-WP-0003`.
- `capability.identity.vocabulary-canonicalize` — D4 / A0 / C2 / R0 - **Self-assessed vector:** `D5 / A3 / C4 / R2` (see gap analysis).
- `specs/` holds the product requirements, use case catalog, and maturity
standard. `schemas/`, `templates/`, `registry/`, and `tools/` hold the
registry authoring and validation surfaces.
- Bootstrap work (`REUSE-WP-0001`) and MVP registry foundation
(`REUSE-WP-0002`) are finished. The next work should expand registry coverage,
tighten validation, or add CLI tooling through new workplans.
## Repository Layout ## Repository Layout
@@ -89,32 +84,27 @@ reuse-surface/
├── INTENT.md ├── INTENT.md
├── SCOPE.md ├── SCOPE.md
├── AGENTS.md ├── AGENTS.md
├── pyproject.toml
├── reuse_surface/
├── specs/ ├── specs/
│ ├── ProductRequirementsDocument.md
│ ├── UseCaseCatalog.md
│ └── CapabilityMaturityStandard.md
├── schemas/ ├── schemas/
│ └── capability.schema.yaml
├── templates/ ├── templates/
│ └── capability-entry.template.md
├── registry/ ├── registry/
│ ├── README.md ├── docs/
│ ├── capabilities/
│ └── indexes/
│ └── capabilities.yaml
├── tools/ ├── tools/
│ └── README.md
└── workplans/ └── workplans/
``` ```
## Getting Oriented ## Getting Oriented
- Start with: INTENT.md - Start with: INTENT.md
- Registry concept: docs/CapabilityRegistryConcept.md
- Intent vs scope gaps: docs/IntentScopeGapAnalysis.md - Intent vs scope gaps: docs/IntentScopeGapAnalysis.md
- Product requirements: specs/ProductRequirementsDocument.md - Product requirements: specs/ProductRequirementsDocument.md
- Use cases: specs/UseCaseCatalog.md - Use cases: specs/UseCaseCatalog.md
- Maturity standard: specs/CapabilityMaturityStandard.md - Maturity standard: specs/CapabilityMaturityStandard.md
- Registry index: registry/indexes/capabilities.yaml - Registry index: registry/indexes/capabilities.yaml
- Registry guidance: registry/README.md - Registry guidance: registry/README.md
- CLI reference: tools/README.md
- Agent instructions: AGENTS.md - Agent instructions: AGENTS.md
- Workplans: workplans/ - Workplans: workplans/

View File

@@ -0,0 +1,129 @@
# Capability Registry Concept
**Repository:** `reuse-surface`
**Audience:** Humans onboarding to the registry
**Companion docs:** `INTENT.md`, `SCOPE.md`, `specs/CapabilityMaturityStandard.md`
---
## 1. What problem this solves
Reusable capabilities are often scattered across repositories, documents,
prototypes, and services. Without a registry, teams and agents rediscover,
duplicate, and inconsistently assess the same behaviors.
`reuse-surface` makes capabilities **visible**, **comparable**, and **reusable**
for planning and implementation through a registry-first reuse layer.
> A capability that is not registered is invisible for registry-driven reuse.
---
## 2. Core principles
### Registry first
The registry is the boundary of practical reuse awareness. Analysis starts with
what is registered, not with everything that might exist informally.
### Reuse over inventory
The goal is capability reuse, not a complete inventory of all work products.
### Planning and implementation are different
- **Planning reuse** feeds primarily on **Discovery** maturity (D0D7).
- **Implementation reuse** feeds primarily on **Availability** maturity (A0A7).
A capability may be well researched (D5) but only informational (A0). Another
may be deployable (A4) but weakly bounded (D2). Compare both dimensions.
### Internal and external evidence stay separate
| Type | Dimensions | Question |
|---|---|---|
| Internal registry assessment | Discovery, Availability | How reusable is it for planning? How consumable is it? |
| External consumer evidence | Completeness, Reliability | Does scope satisfy intent? Does it behave well in use? |
Do not treat availability as reliability, or research depth as completeness.
---
## 3. Maturity vector
A compact summary:
```text
D5 / A4 / C3 / R3
```
Vectors are descriptive, not grades. A research vocabulary capability may
naturally target `D5 / A0 / C4 / R3`. A CLI tool may target `D5 / A3 / C5 / R5`.
Canonical level definitions: `specs/CapabilityMaturityStandard.md`.
---
## 4. How the artifacts fit together
```text
templates/capability-entry.template.md → authoring starting point
registry/capabilities/*.md → canonical entries (YAML front matter)
registry/indexes/capabilities.yaml → fast discovery index for agents
schemas/capability.schema.yaml → machine-readable entry contract
registry/README.md → validation and search guidance
tools/ → CLI validate, query, export
```
**Authoring flow**
1. Search the index for overlap.
2. Copy the template to `registry/capabilities/`.
3. Fill maturity and evidence fields explicitly.
4. Add an index row.
5. Validate with `reuse-surface validate`.
**Consumption flow**
1. Read `registry/indexes/capabilities.yaml`.
2. Filter by vector, tags, or consumption mode.
3. Open candidate entry files for scope, relations, and guidance.
4. Prefer planning reuse at D3+ and implementation reuse at A2+.
---
## 5. What is manual vs automated today
See `SCOPE.md` for the live boundary. In summary:
| Activity | Mode |
|---|---|
| Discover capabilities | Index + `reuse-surface query` |
| Add or promote entries | Markdown authoring + index update |
| Validate shape | `reuse-surface validate` |
| Export for agents | `reuse-surface export` |
| Promotion history | Optional `promotion_history` in entries |
| Graph visualization, federation, CI gates | Not yet available |
---
## 6. When to register a capability
Register when a bounded reusable behavior should be:
- discoverable for roadmap or architecture planning
- comparable to adjacent capabilities
- consumable through known artifacts (now or later)
- assessed with explicit evidence over time
Do not register one-off features, tickets, or internal code modules unless they
represent a reusable capability boundary.
---
## 7. Further reading
- Product requirements: `specs/ProductRequirementsDocument.md`
- Use cases: `specs/UseCaseCatalog.md`
- Intent vs delivered scope: `docs/IntentScopeGapAnalysis.md`
- Agent workflows: `AGENTS.md`

View File

@@ -13,25 +13,21 @@ current delivered scope so future workplans can close them deliberately.
`INTENT.md` describes the long-term capability registry product: a reuse surface `INTENT.md` describes the long-term capability registry product: a reuse surface
that makes capabilities visible, assessable, and consumable across planning and that makes capabilities visible, assessable, and consumable across planning and
implementation. `SCOPE.md` describes what the repository actually delivers today: implementation. `SCOPE.md` describes what the repository actually delivers today: an MVP registry
an MVP registry foundation at **A0 availability** with manual, Markdown-first with **A3 CLI tooling** (`validate`, `query`, `export`) atop Markdown-first
workflows. authoring.
The two documents are **directionally aligned** on registry-first reuse, four The two documents are **directionally aligned** on registry-first reuse, four
maturity dimensions, and human/agent consumers. The main gaps are: 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:
1. **Delivery depth** — INTENT promises eventual technical foundation and broad 1. **Planning analytics** — no gap reports, overlap detection, or catalog site.
planning/implementation support; SCOPE delivers informational tooling only. 2. **Reliability depth** — registry product dogfood evidence is early (R2).
2. **Structural drift** — INTENT's expected repository layout and entry shape 3. **Document cross-coverage** — SCOPE still carries operational detail INTENT
differ from the implemented layout and schema in small but important ways. omits; INTENT success criteria are not fully enumerated in SCOPE.
3. **Evidence and operations** — INTENT emphasizes consumer evidence and
progress tracking; SCOPE has no reliability evidence, promotion history, or
automated validation yet.
4. **Document cross-coverage** — SCOPE operationalizes State Hub, MVP acceptance
criteria, and helix_forge domain context that INTENT does not mention; INTENT
carries success criteria and conceptual depth that SCOPE does not restate.
**Current reuse-surface vector (self-assessment):** `D4 / A0 / C3 / R0` **Current reuse-surface vector (self-assessment):** `D5 / A3 / C4 / R2`
--- ---
@@ -256,18 +252,25 @@ own evidence (e.g. feature-control at R3).
## 8. Priority Gap Closure Order ## 8. Priority Gap Closure Order
Recommended sequence for future workplans: | Priority | Gap | Outcome | Status |
|---|---|---|---|
| 1 | INTENT layout stale | INTENT layout aligned to delivered structure | Closed (WP-0003) |
| 2 | No automated validation | `reuse-surface validate` | Closed (WP-0003) |
| 3 | Thin registry coverage | Six helix_forge entries | Closed (WP-0003) |
| 4 | Missing concept docs | `docs/CapabilityRegistryConcept.md` | Closed (WP-0003) |
| 5 | No promotion history | `promotion_history` in schema/template | Closed (WP-0003) |
| 6 | Search/filter manual only | `reuse-surface query` | Closed (WP-0003) |
| 7 | No registry export | `reuse-surface export` | Closed (WP-0003) |
| 8 | Self-reliability evidence | `capability.registry.register` at R2; friction recorded | Closed (WP-0003) |
### Next recommended work
| Priority | Gap | Suggested outcome | | Priority | Gap | Suggested outcome |
|---|---|---| |---|---|---|
| 1 | INTENT layout stale | Update INTENT "Initial Repository Role" to match `SCOPE.md` layout | | 9 | Catalog site | Static browsable capability catalog (UC-RS-018) |
| 2 | No automated validation | CLI or script: validate entries against schema | | 10 | Overlap detection | CLI or report for duplicate/overlapping capabilities |
| 3 | Thin registry coverage | Register additional helix_forge capabilities beyond 3 samples | | 11 | CI validation | Run `reuse-surface validate` in CI on registry changes |
| 4 | Missing concept docs | Add `docs/CapabilityRegistryConcept.md` distilled from INTENT | | 12 | Registry federation | Cross-repo capability index composition |
| 5 | No promotion history | Add `promotion_history` to schema or separate changelog |
| 6 | Search/filter manual only | CLI `query` with discovery/availability filters |
| 7 | No registry export | YAML/JSON bundle export for agents (UC-RS-019) |
| 8 | Self-reliability evidence | Dogfood registry; record friction as reliability evidence |
--- ---
@@ -285,4 +288,5 @@ Recommended sequence for future workplans:
| Date | Change | | Date | Change |
|---|---| |---|---|
| 2026-06-15 | Initial analysis after REUSE-WP-0002 completion | | 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 |

21
pyproject.toml Normal file
View File

@@ -0,0 +1,21 @@
[build-system]
requires = ["setuptools>=68"]
build-backend = "setuptools.build_meta"
[project]
name = "reuse-surface"
version = "0.1.0"
description = "Capability registry tooling for reuse-surface"
readme = "README.md"
requires-python = ">=3.11"
dependencies = [
"jsonschema>=4.0",
"pyyaml>=6.0",
]
[project.scripts]
reuse-surface = "reuse_surface.cli:main"
[tool.setuptools.packages.find]
where = ["."]
include = ["reuse_surface*"]

View File

@@ -74,7 +74,8 @@ Definitions live in `specs/CapabilityMaturityStandard.md`.
### UC-RS-004 — Search by planning need ### UC-RS-004 — Search by planning need
1. Read `indexes/capabilities.yaml` and scan `summary`, `tags`, and `vector`. 1. Run `reuse-surface query --discovery-min D4` or read the index and scan
`summary`, `tags`, and `vector`.
2. Open candidate entries and review `discovery.intent`, `discovery.use_cases`, 2. Open candidate entries and review `discovery.intent`, `discovery.use_cases`,
and `discovery.includes`. and `discovery.includes`.
3. Prefer entries with discovery `D3+` for roadmap work and `D5+` for MVP 3. Prefer entries with discovery `D3+` for roadmap work and `D5+` for MVP
@@ -131,6 +132,8 @@ or `generalizes` rather than creating silent duplicates.
1. Attach evidence appropriate to the target level in 1. Attach evidence appropriate to the target level in
`specs/CapabilityMaturityStandard.md`. `specs/CapabilityMaturityStandard.md`.
2. Update `maturity` and/or `external_evidence` with rationale and confidence. 2. Update `maturity` and/or `external_evidence` with rationale and confidence.
3. Update `availability.current_artifacts` when a new consumption mode appears. 3. Append a `promotion_history` record with `date`, `dimension`, `from`, `to`,
4. Refresh the index `vector` and run the validation checklist. and `rationale` (optional `author`).
5. Set `status: reviewed` or `approved` when an assessor validates the entry. 4. Update `availability.current_artifacts` when a new consumption mode appears.
5. Refresh the index `vector` and run `reuse-surface validate`.
6. Set `status: reviewed` or `approved` when an assessor validates the entry.

View File

@@ -0,0 +1,111 @@
---
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.
owner: feature-control
status: draft
domain: helix_forge
tags:
- feature-control
- rollout
- planning
maturity:
discovery:
current: D4
target: D6
confidence: medium
rationale: >
Rollout is a distinct bounded behavior from single-point evaluation, with
research references in the feature-control domain and maturity standard.
availability:
current: A2
target: A4
confidence: low
rationale: >
Rollout logic may exist in source modules but is not yet consistently
exposed as a standalone SDK or API surface distinct from evaluate.
external_evidence:
completeness:
level: C2
name: Partial
confidence: low
basis: scope_vs_intent_and_consumer_expectations
satisfied_expectations:
- rollout concepts documented adjacent to feature evaluation
broken_expectations:
- no dedicated rollout artifact called out separately from evaluate
- percentage and cohort rollout variants not indexed independently
out_of_scope_expectations:
- billing-driven entitlements
reliability:
level: R1
name: Fragile
confidence: low
basis: consumer_quality_signals
known_reliability_risks:
- rollout behavior may be conflated with evaluate in consumer mental models
discovery:
intent: >
Control how features become available over time and across cohorts without
conflating rollout policy with authorization or billing.
includes:
- staged rollout rules
- cohort and context targeting for rollout
- explainable rollout state
excludes:
- one-time feature evaluation only
- authorization decisions
- billing entitlements
assumptions:
- feature evaluation capability exists for final availability decisions
use_cases:
- ucc.feature-control.domain-rollout
research_memos:
- specs/CapabilityMaturityStandard.md
availability:
current_level: A2
target_level: A4
current_artifacts:
- feature-control/packages/feature-control-sdk
target_artifacts:
- feature-control/services/feature-control-api
consumption_modes:
- source module
- SDK
relations:
depends_on:
- capability.feature-control.evaluate
supports: []
related_to:
- capability.feature-control.visibility
evidence:
documentation:
- specs/CapabilityMaturityStandard.md
tests: []
consumer_feedback: []
bug_reports: []
incidents: []
consumer_guidance:
recommended_for:
- planning staged feature exposure separate from binary evaluation
not_recommended_for:
- simple on/off evaluation without rollout semantics
- entitlement or billing ownership
known_limitations:
- distinguish carefully from capability.feature-control.evaluate
---
# Feature Rollout Control
## Overview
Rollout governs how availability changes over time and across cohorts. It
complements evaluation, which answers whether a feature is available for a
subject in a context right now.

View File

@@ -0,0 +1,115 @@
---
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.
owner: identity-canon
status: draft
domain: helix_forge
tags:
- identity
- subject
- architecture
maturity:
discovery:
current: D3
target: D5
confidence: medium
rationale: >
Subject/principal terminology is explored in identity-canon conflict maps
and conceptual model, but dedicated use-case grounding is incomplete.
availability:
current: A0
target: A4
confidence: low
rationale: >
Canon and research artifacts exist; no standalone resolver service or SDK
is registered yet.
external_evidence:
completeness:
level: C1
name: Fragmentary
confidence: low
basis: scope_vs_intent_and_consumer_expectations
satisfied_expectations:
- overloaded subject and principal terms are mapped as candidates
broken_expectations:
- no runtime resolver artifact
- canonical subject model not finalized across all actor types
out_of_scope_expectations:
- authentication protocol implementation
- credential storage
reliability:
level: R0
confidence: low
basis: consumer_quality_signals
known_reliability_risks:
- draft terminology may change during source-note backfill
discovery:
intent: >
Give planners and implementers a consistent subject concept for authorization,
feature control, tenancy, and agent workflows without collapsing product-specific
identity models.
includes:
- subject vs principal vs account distinctions
- actor type modeling
- identifier resolution concepts
excludes:
- authentication execution
- credential issuance
- directory provisioning
assumptions:
- vocabulary canonicalization supports but does not replace subject resolution
use_cases:
- UC-RS-004
research_memos:
- identity-canon/terminology/TerminologyConflictMap.md
- identity-canon/model/ConceptualModel.md
availability:
current_level: A0
target_level: A4
current_artifacts:
- identity-canon/model/ConceptualModel.md
- identity-canon/canon/CanonicalGlossary.md
target_artifacts:
- identity-canon/packages/subject-resolution-sdk
consumption_modes:
- informational
relations:
depends_on:
- capability.identity.vocabulary-canonicalize
supports:
- capability.feature-control.evaluate
- capability.statehub.workstream-coordinate
related_to: []
evidence:
documentation:
- identity-canon/canon/CanonicalGlossary.md
- identity-canon/scenarios/ScenarioTests.md
tests: []
consumer_feedback: []
bug_reports: []
incidents: []
consumer_guidance:
recommended_for:
- architecture planning where subject/principal/account terms overlap
not_recommended_for:
- runtime authentication or token validation
- treating draft canon as finalized resolver behavior
known_limitations:
- resolver artifacts are not yet available
---
# Identity Subject Resolution
## Overview
Subject resolution defines how actors and identifiers map to a stable subject
concept for downstream capabilities such as feature evaluation and coordination.
Today this capability is planning-heavy (D3/A0).

View File

@@ -20,34 +20,38 @@ maturity:
registry model is bounded in INTENT.md, but concrete promotion workflows registry model is bounded in INTENT.md, but concrete promotion workflows
are not yet grounded in registry artifacts. are not yet grounded in registry artifacts.
availability: availability:
current: A0 current: A3
target: A3 target: A3
confidence: medium confidence: medium
rationale: > rationale: >
Registration is currently manual through Markdown entries and the index. Registration and maintenance are automatable through the reuse-surface CLI
A CLI validator/query tool would raise availability to A3. for validate, query, and export workflows.
external_evidence: external_evidence:
completeness: completeness:
level: C1 level: C2
name: Fragmentary name: Partial
confidence: low confidence: medium
basis: scope_vs_intent_and_consumer_expectations basis: scope_vs_intent_and_consumer_expectations
satisfied_expectations: satisfied_expectations:
- capability IDs can be assigned in registry entries - capability IDs can be assigned in registry entries
- maturity vectors can be recorded at registration time - maturity vectors can be recorded at registration time
- CLI validate, query, and export support registry workflows
- promotion history can be recorded in entries
broken_expectations: broken_expectations:
- no automated duplicate detection yet - no automated duplicate detection yet
- no promotion history tracking yet
out_of_scope_expectations: out_of_scope_expectations:
- hosting registered capabilities - hosting registered capabilities
- enforcing implementation architecture - enforcing implementation architecture
reliability: reliability:
level: R0 level: R2
confidence: low name: Tolerable
confidence: medium
basis: consumer_quality_signals basis: consumer_quality_signals
known_reliability_risks: known_reliability_risks:
- registry consistency depends on manual index maintenance - index drift still possible if authors skip validate
- CLI requires local venv install
- schema ID pattern required a fix during WP-0003 dogfooding
discovery: discovery:
intent: > intent: >
@@ -72,17 +76,17 @@ discovery:
- specs/ProductRequirementsDocument.md - specs/ProductRequirementsDocument.md
availability: availability:
current_level: A0 current_level: A3
target_level: A3 target_level: A3
current_artifacts: current_artifacts:
- templates/capability-entry.template.md - templates/capability-entry.template.md
- registry/indexes/capabilities.yaml - registry/indexes/capabilities.yaml
target_artifacts: - reuse_surface/cli.py
- tools/validate-registry target_artifacts: []
- tools/query-registry
consumption_modes: consumption_modes:
- informational - informational
- markdown authoring - markdown authoring
- cli
relations: relations:
depends_on: [] depends_on: []
@@ -111,6 +115,26 @@ consumer_guidance:
known_limitations: known_limitations:
- manual index updates are required after adding an entry - manual index updates are required after adding an entry
- duplicate detection is guidance-only in the MVP - duplicate detection is guidance-only in the MVP
promotion_history:
- date: "2026-06-14"
dimension: discovery
from: D0
to: D1
rationale: Added name, summary, and registry-first intent from INTENT.md.
author: reuse-surface
- date: "2026-06-15"
dimension: discovery
from: D1
to: D3
rationale: Bounded scope with UC-RS-001 and MVP registry artifacts in specs/.
author: reuse-surface
- date: "2026-06-15"
dimension: availability
from: A0
to: A3
rationale: reuse-surface CLI shipped validate, query, and export commands.
author: reuse-surface
--- ---
# Capability Registration # Capability Registration

View File

@@ -0,0 +1,117 @@
---
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.
owner: state-hub
status: draft
domain: helix_forge
tags:
- state-hub
- coordination
- workplans
maturity:
discovery:
current: D4
target: D5
confidence: medium
rationale: >
State Hub intent, scope, and ADR-001 workplan conventions are documented;
concrete agent workflows are still being standardized across repos.
availability:
current: A4
target: A6
confidence: medium
rationale: >
Consumers integrate through the State Hub HTTP API and custodian scripts.
Managed platform operation is the natural target for multi-repo agents.
external_evidence:
completeness:
level: C3
name: Functional Core
confidence: medium
basis: scope_vs_intent_and_consumer_expectations
satisfied_expectations:
- workstream and task tracking via HTTP API
- workplan file to database consistency sync
- progress event logging
broken_expectations:
- no native MCP server for all agent environments
out_of_scope_expectations:
- replacing git-backed workplan canon
- identity authority
reliability:
level: R2
name: Tolerable
confidence: low
basis: consumer_quality_signals
known_reliability_risks:
- depends on local hub availability and operator maintenance
discovery:
intent: >
Give agents and operators a live, queryable memory of work across domains
without replacing file-backed workplans and governance canon.
includes:
- workstream and task indexing
- progress and decision events
- repo consistency synchronization
- inbox and human-review flags
excludes:
- canon ownership
- task factory for all work origins
- identity authority
assumptions:
- workplans remain authoritative in git for ADR-001 repos
use_cases:
- UC-RS-013
research_memos:
- state-hub/INTENT.md
availability:
current_level: A4
target_level: A6
current_artifacts:
- state-hub/api/
- state-hub/scripts/consistency_check.py
target_artifacts:
- state-hub/platform/state-hub-service
consumption_modes:
- service API
- HTTP REST
relations:
depends_on: []
supports:
- capability.registry.register
related_to:
- capability.statehub.progress-log
evidence:
documentation:
- state-hub/INTENT.md
- state-hub/AGENTS.md
tests: []
consumer_feedback: []
bug_reports: []
incidents: []
consumer_guidance:
recommended_for:
- cross-repo agent orientation and task status sync
- logging progress after workplan changes
not_recommended_for:
- storing canonical requirements or architecture canon
- assuming hub state overrides git workplan files
known_limitations:
- requires running State Hub locally or via tunnel
---
# Workstream And Task Coordination
## Overview
State Hub provides live coordination for helix_forge repositories while
workplans remain file-backed. This entry represents the service/API consumption
mode for cross-repo agent work.

View File

@@ -7,13 +7,13 @@ capabilities:
- id: capability.registry.register - id: capability.registry.register
name: Capability Registration name: Capability Registration
summary: Register a new capability so it becomes visible for planning and implementation reuse. summary: Register a new capability so it becomes visible for planning and implementation reuse.
vector: D3 / A0 / C1 / R0 vector: D3 / A3 / C2 / R2
domain: helix_forge domain: helix_forge
status: draft status: draft
owner: reuse-surface owner: reuse-surface
path: registry/capabilities/capability.registry.register.md path: registry/capabilities/capability.registry.register.md
tags: [registry, governance, meta] tags: [registry, governance, meta]
consumption_modes: [informational, markdown authoring] consumption_modes: [informational, markdown authoring, cli]
- id: capability.feature-control.evaluate - id: capability.feature-control.evaluate
name: Feature Availability Evaluation name: Feature Availability Evaluation
@@ -26,6 +26,17 @@ capabilities:
tags: [feature-control, evaluation, sdk] tags: [feature-control, evaluation, sdk]
consumption_modes: [SDK, service API] 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 and staged availability.
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.identity.vocabulary-canonicalize - id: capability.identity.vocabulary-canonicalize
name: Identity Vocabulary Canonicalization name: Identity Vocabulary Canonicalization
summary: Define and maintain an implementation-neutral vocabulary for identity-related concepts across overlapping domains. summary: Define and maintain an implementation-neutral vocabulary for identity-related concepts across overlapping domains.
@@ -35,4 +46,26 @@ capabilities:
owner: identity-canon owner: identity-canon
path: registry/capabilities/capability.identity.vocabulary-canonicalize.md path: registry/capabilities/capability.identity.vocabulary-canonicalize.md
tags: [identity, terminology, research] tags: [identity, terminology, research]
consumption_modes: [informational] consumption_modes: [informational]
- 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.
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.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.
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]

View File

@@ -0,0 +1 @@
"""Registry CLI for reuse-surface."""

192
reuse_surface/cli.py Normal file
View File

@@ -0,0 +1,192 @@
from __future__ import annotations
import argparse
import json
import sys
from pathlib import Path
from typing import Any
import yaml
from jsonschema import Draft202012Validator
from reuse_surface.registry import (
CAPABILITIES_DIR,
INDEX_PATH,
ROOT,
capability_paths,
level_at_least,
load_index,
load_schema,
parse_front_matter,
parse_vector,
)
def _check_index_drift(entry_paths: list[Path], index: dict[str, Any]) -> list[str]:
warnings: list[str] = []
indexed_paths = {item["path"] for item in index.get("capabilities", [])}
file_paths = {str(path.relative_to(ROOT)) for path in entry_paths}
for path in sorted(file_paths - indexed_paths):
warnings.append(f"index drift: entry file not indexed: {path}")
for path in sorted(indexed_paths - file_paths):
warnings.append(f"index drift: index references missing file: {path}")
return warnings
def cmd_validate(args: argparse.Namespace) -> int:
schema = load_schema()
validator = Draft202012Validator(schema)
target = Path(args.path) if args.path else None
paths = capability_paths(target)
errors: list[str] = []
warnings: list[str] = []
for path in paths:
try:
data = parse_front_matter(path)
except ValueError as exc:
errors.append(str(exc))
continue
for error in sorted(validator.iter_errors(data), key=lambda e: e.path):
location = ".".join(str(part) for part in error.path) or "<root>"
errors.append(f"{path}: {location}: {error.message}")
if not target:
index = load_index()
warnings.extend(_check_index_drift(paths, index))
for warning in warnings:
print(f"warning: {warning}", file=sys.stderr)
for error in errors:
print(f"error: {error}", file=sys.stderr)
if errors:
return 1
print(f"ok: validated {len(paths)} capability entr{'y' if len(paths) == 1 else 'ies'}")
return 0
def _matches_query(item: dict[str, Any], args: argparse.Namespace) -> bool:
vector = parse_vector(item["vector"])
if args.discovery_min and not level_at_least(
"discovery", vector["discovery"], args.discovery_min
):
return False
if args.availability_min and not level_at_least(
"availability", vector["availability"], args.availability_min
):
return False
if args.domain and item.get("domain") != args.domain:
return False
if args.tag and args.tag not in item.get("tags", []):
return False
if args.consumption_mode:
modes = [mode.lower() for mode in item.get("consumption_modes", [])]
if args.consumption_mode.lower() not in modes:
return False
if args.keyword:
haystack = " ".join(
[
item.get("id", ""),
item.get("name", ""),
item.get("summary", ""),
" ".join(item.get("tags", [])),
]
).lower()
if args.keyword.lower() not in haystack:
return False
return True
def cmd_query(args: argparse.Namespace) -> int:
index = load_index()
matches = [
item for item in index.get("capabilities", []) if _matches_query(item, args)
]
if not matches:
print("no matches")
return 0
for item in matches:
print(
f"{item['id']} {item['vector']} {item['path']}\n"
f" {item['summary']}"
)
print(f"\n{len(matches)} match{'es' if len(matches) != 1 else ''}")
return 0
def cmd_export(args: argparse.Namespace) -> int:
index = load_index()
bundle: dict[str, Any] = {
"version": index.get("version", 1),
"domain": index.get("domain"),
"updated": index.get("updated"),
"capabilities": [],
}
errors: list[str] = []
for item in index.get("capabilities", []):
path = ROOT / item["path"]
try:
front_matter = parse_front_matter(path)
except ValueError as exc:
errors.append(str(exc))
continue
bundle["capabilities"].append(
{
"index": item,
"entry": front_matter,
}
)
if errors:
for error in errors:
print(f"error: {error}", file=sys.stderr)
return 1
if args.format == "json":
print(json.dumps(bundle, indent=2, sort_keys=True))
else:
print(yaml.safe_dump(bundle, sort_keys=False))
print(
f"# exported {len(bundle['capabilities'])} capabilities",
file=sys.stderr,
)
return 0
def main(argv: list[str] | None = None) -> int:
parser = argparse.ArgumentParser(prog="reuse-surface")
subparsers = parser.add_subparsers(dest="command", required=True)
validate = subparsers.add_parser("validate", help="validate capability entries")
validate.add_argument(
"path",
nargs="?",
help="optional capability markdown file; defaults to all entries",
)
validate.set_defaults(func=cmd_validate)
query = subparsers.add_parser("query", help="query capability index")
query.add_argument("--discovery-min")
query.add_argument("--availability-min")
query.add_argument("--domain")
query.add_argument("--tag")
query.add_argument("--consumption-mode")
query.add_argument("--keyword")
query.set_defaults(func=cmd_query)
export = subparsers.add_parser("export", help="export registry bundle")
export.add_argument(
"--format",
choices=["yaml", "json"],
default="yaml",
)
export.set_defaults(func=cmd_export)
args = parser.parse_args(argv)
return args.func(args)
if __name__ == "__main__":
raise SystemExit(main())

63
reuse_surface/registry.py Normal file
View File

@@ -0,0 +1,63 @@
from __future__ import annotations
import re
from pathlib import Path
from typing import Any
import yaml
ROOT = Path(__file__).resolve().parent.parent
CAPABILITIES_DIR = ROOT / "registry" / "capabilities"
INDEX_PATH = ROOT / "registry" / "indexes" / "capabilities.yaml"
SCHEMA_PATH = ROOT / "schemas" / "capability.schema.yaml"
LEVEL_ORDERS = {
"discovery": ["D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7"],
"availability": ["A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7"],
"completeness": ["C0", "C1", "C2", "C3", "C4", "C5", "C6"],
"reliability": ["R0", "R1", "R2", "R3", "R4", "R5", "R6"],
}
def load_schema() -> dict[str, Any]:
with SCHEMA_PATH.open(encoding="utf-8") as handle:
return yaml.safe_load(handle)
def parse_front_matter(path: Path) -> dict[str, Any]:
text = path.read_text(encoding="utf-8")
match = re.match(r"^---\n(.*?)\n---", text, re.DOTALL)
if not match:
raise ValueError(f"{path}: missing YAML front matter")
data = yaml.safe_load(match.group(1))
if not isinstance(data, dict):
raise ValueError(f"{path}: front matter must be a mapping")
return data
def capability_paths(target: Path | None = None) -> list[Path]:
if target is not None:
return [target]
return sorted(CAPABILITIES_DIR.glob("*.md"))
def load_index() -> dict[str, Any]:
with INDEX_PATH.open(encoding="utf-8") as handle:
return yaml.safe_load(handle)
def parse_vector(vector: str) -> dict[str, str]:
parts = [part.strip() for part in vector.split("/")]
if len(parts) != 4:
raise ValueError(f"invalid vector: {vector}")
return {
"discovery": parts[0],
"availability": parts[1],
"completeness": parts[2],
"reliability": parts[3],
}
def level_at_least(dimension: str, current: str, minimum: str) -> bool:
order = LEVEL_ORDERS[dimension]
return order.index(current) >= order.index(minimum)

View File

@@ -17,7 +17,7 @@ required:
properties: properties:
id: id:
type: string type: string
pattern: '^capability\.[a-z0-9]+(\.[a-z0-9-]+)+$' pattern: '^capability(\.[a-z][a-z0-9-]*)+$'
description: Stable reverse-domain capability identifier. description: Stable reverse-domain capability identifier.
name: name:
type: string type: string
@@ -162,6 +162,10 @@ properties:
type: array type: array
items: items:
type: string type: string
promotion_history:
type: array
items:
$ref: '#/$defs/promotionRecord'
$defs: $defs:
confidence: confidence:
type: string type: string
@@ -182,7 +186,7 @@ $defs:
type: array type: array
items: items:
type: string type: string
pattern: '^capability\.[a-z0-9]+(\.[a-z0-9-]+)+$' pattern: '^capability(\.[a-z][a-z0-9-]*)+$'
internalMaturityDimension: internalMaturityDimension:
type: object type: object
additionalProperties: false additionalProperties: false
@@ -244,4 +248,25 @@ $defs:
known_reliability_risks: known_reliability_risks:
type: array type: array
items: items:
type: string type: string
promotionDimension:
type: string
enum: [discovery, availability, completeness, reliability]
promotionRecord:
type: object
additionalProperties: false
required: [date, dimension, from, to, rationale]
properties:
date:
type: string
pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}$'
dimension:
$ref: '#/$defs/promotionDimension'
from:
type: string
to:
type: string
rationale:
type: string
author:
type: string

View File

@@ -78,6 +78,15 @@ consumer_guidance:
- describe unsafe or weak reuse scenarios - describe unsafe or weak reuse scenarios
known_limitations: known_limitations:
- list known gaps, risks, or missing evidence - list known gaps, risks, or missing evidence
# Optional: append a row when a maturity dimension is promoted with evidence.
promotion_history: []
# - date: "2026-06-15"
# dimension: discovery
# from: D0
# to: D1
# rationale: Added intent, summary, and basic actors.
# author: capability-owner
--- ---
# Example Capability # Example Capability

View File

@@ -1,52 +1,64 @@
# Registry Tools # Registry Tools
Reference tooling for the capability registry. The MVP is document-first; this CLI tooling for the capability registry, implemented in `reuse_surface/`.
directory documents validation and query workflows until executable tools land.
## Current MVP workflows ## Install
| Workflow | Location | Mode |
|---|---|---|
| Add capability | `templates/capability-entry.template.md` | manual |
| Discover capabilities | `registry/indexes/capabilities.yaml` | manual / agent |
| Validate entry shape | `registry/README.md` checklist | manual |
| Schema reference | `schemas/capability.schema.yaml` | manual |
| Maturity definitions | `specs/CapabilityMaturityStandard.md` | manual |
## Manual validation procedure
1. Open the capability entry Markdown file.
2. Compare YAML front matter against `schemas/capability.schema.yaml`.
3. Run the checklist in `registry/README.md`.
4. Confirm the index entry exists and the `vector` is current.
5. Confirm relation targets exist or are intentionally external.
## Planned tools (out of MVP scope)
Future CLI commands may include:
```bash ```bash
# validate one entry or the whole registry python3 -m venv .venv
reuse-surface validate registry/capabilities/ .venv/bin/pip install -e .
# query by planning need, availability, or vector
reuse-surface query --discovery-min D4 --tag identity
# export machine-readable registry bundle
reuse-surface export --format yaml
``` ```
These are documented here as targets only. Do not assume they exist yet. ## Commands
## Agent query pattern ### validate
Agents should start with the index, not individual entry files: Validate one entry or the full registry against `schemas/capability.schema.yaml`
and warn on index drift.
1. Read `registry/indexes/capabilities.yaml`. ```bash
2. Filter by `vector`, `tags`, `consumption_modes`, or `summary`. reuse-surface validate
3. Open only the candidate entry paths. reuse-surface validate registry/capabilities/capability.registry.register.md
4. Before creating a new capability, search for overlap using the duplicate ```
guidance in `registry/README.md`.
### query
Filter the capability index by maturity, tags, domain, consumption mode, or keyword.
```bash
reuse-surface query --discovery-min D4
reuse-surface query --availability-min A3
reuse-surface query --tag identity
reuse-surface query --consumption-mode cli
reuse-surface query --keyword rollout
```
### export
Export a machine-readable bundle combining index rows and parsed entry front matter.
```bash
reuse-surface export
reuse-surface export --format json
```
## Export format
The export bundle includes:
- `version`, `domain`, `updated` from the index
- `capabilities[]` with `{ index, entry }` pairs
Stable IDs and maturity fields are preserved for agent consumption (UC-RS-019).
## Workflows
| Workflow | Command |
|---|---|
| Add capability | template + index update + `reuse-surface validate` |
| Discover capabilities | `reuse-surface query` or read the index |
| Validate entry shape | `reuse-surface validate` |
| Export for agents | `reuse-surface export --format json` |
## Related use cases ## Related use cases

View File

@@ -4,7 +4,7 @@ type: workplan
title: "Close intent-scope gaps: docs, tooling, and registry growth" title: "Close intent-scope gaps: docs, tooling, and registry growth"
domain: helix_forge domain: helix_forge
repo: reuse-surface repo: reuse-surface
status: ready status: finished
owner: codex owner: codex
topic_slug: helix-forge topic_slug: helix-forge
created: "2026-06-15" created: "2026-06-15"
@@ -38,7 +38,7 @@ T01, T04 (documentation — parallel)
```task ```task
id: REUSE-WP-0003-T01 id: REUSE-WP-0003-T01
status: todo status: done
priority: high priority: high
state_hub_task_id: "51c58b43-7b0f-4737-bf48-51efd6f50ead" state_hub_task_id: "51c58b43-7b0f-4737-bf48-51efd6f50ead"
``` ```
@@ -56,7 +56,7 @@ Close gap analysis item 1. Update `INTENT.md`:
```task ```task
id: REUSE-WP-0003-T02 id: REUSE-WP-0003-T02
status: todo status: done
priority: high priority: high
state_hub_task_id: "570a036a-d310-4cb7-9812-594a7f4de904" state_hub_task_id: "570a036a-d310-4cb7-9812-594a7f4de904"
``` ```
@@ -76,7 +76,7 @@ Close gap analysis item 2 and UC-RS-023. Add a minimal Python CLI under
```task ```task
id: REUSE-WP-0003-T03 id: REUSE-WP-0003-T03
status: todo status: done
priority: medium priority: medium
state_hub_task_id: "2c59041d-6c27-4610-afc0-c83873e18b9b" state_hub_task_id: "2c59041d-6c27-4610-afc0-c83873e18b9b"
``` ```
@@ -96,7 +96,7 @@ illustrate a different planning or consumption profile than existing entries.
```task ```task
id: REUSE-WP-0003-T04 id: REUSE-WP-0003-T04
status: todo status: done
priority: high priority: high
state_hub_task_id: "70077cfe-f5ca-4a61-97b2-81829a6b4565" state_hub_task_id: "70077cfe-f5ca-4a61-97b2-81829a6b4565"
``` ```
@@ -116,7 +116,7 @@ Do not duplicate the full maturity standard — link to `specs/` instead.
```task ```task
id: REUSE-WP-0003-T05 id: REUSE-WP-0003-T05
status: todo status: done
priority: medium priority: medium
state_hub_task_id: "22a3db94-21c7-44d6-8d77-5235f9f10537" state_hub_task_id: "22a3db94-21c7-44d6-8d77-5235f9f10537"
``` ```
@@ -135,7 +135,7 @@ over time (UC-RS-022). Requirements:
```task ```task
id: REUSE-WP-0003-T06 id: REUSE-WP-0003-T06
status: todo status: done
priority: medium priority: medium
state_hub_task_id: "1958f555-a3a6-46a8-84cd-c570d6706cb3" state_hub_task_id: "1958f555-a3a6-46a8-84cd-c570d6706cb3"
``` ```
@@ -154,7 +154,7 @@ queries in `registry/README.md` and `AGENTS.md`.
```task ```task
id: REUSE-WP-0003-T07 id: REUSE-WP-0003-T07
status: todo status: done
priority: medium priority: medium
state_hub_task_id: "6e595b66-ce73-4867-af79-5d0a43a0056d" state_hub_task_id: "6e595b66-ce73-4867-af79-5d0a43a0056d"
``` ```
@@ -171,7 +171,7 @@ the index and parsed front matter from all capability entries. Requirements:
```task ```task
id: REUSE-WP-0003-T08 id: REUSE-WP-0003-T08
status: todo status: done
priority: medium priority: medium
state_hub_task_id: "d876f449-68e3-4785-ba3c-7d91c4abbafc" state_hub_task_id: "d876f449-68e3-4785-ba3c-7d91c4abbafc"
``` ```