generated from coulomb/repo-seed
WP-0015: complete compose acceptance after Gitea visibility fix
Some checks failed
ci / validate-registry (push) Has been cancelled
Some checks failed
ci / validate-registry (push) Has been cancelled
Refresh federated index (20 capabilities, 0 duplicate warnings). Update workplan, SCOPE, gap analysis, and tests for 59/60 publish pass. Mark T04/T06 done; T01 remains on tegwick-control repo creation. Note: production hub whynot URLs still need REUSE_SURFACE_TOKEN update.
This commit is contained in:
108
CLAUDE.md
Normal file
108
CLAUDE.md
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
# CLAUDE.md
|
||||||
|
|
||||||
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||||
|
|
||||||
|
## What this repo is
|
||||||
|
|
||||||
|
**reuse-surface** is a capability registry for planning and implementation reuse,
|
||||||
|
graded by discovery and delivery maturity. It is documentation-first: the source
|
||||||
|
of truth is Markdown/YAML under `registry/`, `specs/`, `schemas/`, and
|
||||||
|
`workplans/`. The Python package `reuse_surface/` is a thin CLI + optional
|
||||||
|
federation service that validates, queries, and exports that data. There is no
|
||||||
|
long-running app to run for normal work.
|
||||||
|
|
||||||
|
`AGENTS.md` is the authoritative operational playbook (State Hub integration,
|
||||||
|
session protocol, registry authoring/promotion workflow, ADR-001 workplan
|
||||||
|
convention). Read it for anything beyond the build/test mechanics below; this
|
||||||
|
file does not duplicate it.
|
||||||
|
|
||||||
|
## Commands
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Install (editable, into the repo's own venv)
|
||||||
|
python3 -m venv .venv
|
||||||
|
.venv/bin/pip install -e ".[dev]"
|
||||||
|
|
||||||
|
# Core checks — these mirror CI (.gitea/workflows/ci.yml)
|
||||||
|
.venv/bin/reuse-surface validate --relations --fail-on-warnings # schema + index drift + relation cycles
|
||||||
|
.venv/bin/reuse-surface federation compose # rebuild registry/indexes/federated.yaml
|
||||||
|
.venv/bin/reuse-surface catalog # regen docs catalog
|
||||||
|
.venv/bin/reuse-surface graph --check --fail-on-warnings # relation graph + cycle check
|
||||||
|
|
||||||
|
# Tests
|
||||||
|
.venv/bin/pytest -q
|
||||||
|
.venv/bin/pytest -q tests/test_registry.py # single file
|
||||||
|
.venv/bin/pytest -q tests/test_registry.py::test_name # single test
|
||||||
|
|
||||||
|
# Discovery / reporting (read-only)
|
||||||
|
.venv/bin/reuse-surface query --discovery-min D4 --availability-min A2
|
||||||
|
.venv/bin/reuse-surface overlaps # potential duplicate capabilities
|
||||||
|
.venv/bin/reuse-surface stats # maturity + federation coverage
|
||||||
|
.venv/bin/reuse-surface export --format yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
CI runs `validate` on every push/PR to `main`; the catalog, graph, stats, and
|
||||||
|
report steps also run. Keep `validate --relations --fail-on-warnings` green — it
|
||||||
|
is the gate.
|
||||||
|
|
||||||
|
## Maturity vector — the core data model
|
||||||
|
|
||||||
|
Every capability carries a four-dimension vector `D / A / C / R`:
|
||||||
|
|
||||||
|
- **Discovery (D0–D7)** and **Availability (A0–A7)** — *internal* maturity, stored
|
||||||
|
under `maturity.discovery.current` / `maturity.availability.current` in entry
|
||||||
|
front matter.
|
||||||
|
- **Completeness (C0–C6)** and **Reliability (R0–R6)** — *external consumer
|
||||||
|
evidence*, stored under `external_evidence.completeness.level` /
|
||||||
|
`external_evidence.reliability.level`.
|
||||||
|
|
||||||
|
Level orderings live in `reuse_surface/registry.py` (`LEVEL_ORDERS`). The split is
|
||||||
|
deliberate: **discovery strength gates planning reuse** (prefer D3+, ideally D5+);
|
||||||
|
**availability gates implementation reuse** (A2+ code, A3+ CLI, A4+ API/SDK).
|
||||||
|
Higher availability is *not* evidence of completeness or reliability — keep the
|
||||||
|
dimensions independent. The maturity standard is `specs/CapabilityMaturityStandard.md`.
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
The CLI (`reuse_surface/cli.py`) is the single entry point (`reuse-surface`
|
||||||
|
console script → `cli:main`); each subcommand maps to a `cmd_*` function that
|
||||||
|
delegates to a focused module:
|
||||||
|
|
||||||
|
- `registry.py` — front-matter parsing, vector parsing, level comparison, the
|
||||||
|
canonical `ROOT`/path resolution that everything else builds on.
|
||||||
|
- `establish.py` — `establish` command: scaffold a registry into another repo,
|
||||||
|
`--publish-check` (verify a repo's index is fetchable), `--discover` (draft
|
||||||
|
entries, optionally LLM-assisted).
|
||||||
|
- `registry_update.py` — `update` command: deterministic + LLM-suggested maturity
|
||||||
|
refreshes from repo/git signals.
|
||||||
|
- `overlaps.py` — token-similarity dedup candidates.
|
||||||
|
- `federation.py` / `hub_sync.py` — compose the cross-repo `federated.yaml` from
|
||||||
|
`registry/federation/sources.yaml`; sync that manifest from hub registrations.
|
||||||
|
- `catalog.py` / `graph.py` — generate human-readable catalog + Mermaid relation
|
||||||
|
graph into `docs/`.
|
||||||
|
- `reports.py` / `stats.py` — cohort/gap reports and maturity/federation stats,
|
||||||
|
including roster-based (`registry/federation/local-repo-roster.yaml`) views.
|
||||||
|
- `hub/` — optional FastAPI **federation service** (`reuse-surface serve`):
|
||||||
|
registers remote repo index URLs and composes a federated index across them.
|
||||||
|
State lives in SQLite (`REUSE_SURFACE_DB`); writes require `REUSE_SURFACE_TOKEN`.
|
||||||
|
This is distinct from the **Custodian State Hub** (see AGENTS.md), reached over
|
||||||
|
plain HTTP REST.
|
||||||
|
- `hub_client.py` / `llm_bridge.py` — HTTP clients for the federation service and
|
||||||
|
for `llm-connect` respectively.
|
||||||
|
|
||||||
|
Data layout: capability entries are `registry/capabilities/capability.<domain>.<name>.md`
|
||||||
|
(YAML front matter validated against `schemas/capability.schema.yaml`), indexed in
|
||||||
|
`registry/indexes/capabilities.yaml`. **Index and files must stay in sync** —
|
||||||
|
`validate` reports drift in both directions. New entries copy
|
||||||
|
`templates/capability-entry.template.md`; see AGENTS.md for the full add/promote
|
||||||
|
workflow (always search `overlaps`/the index before adding).
|
||||||
|
|
||||||
|
## Workplans & State Hub (brief)
|
||||||
|
|
||||||
|
Work items are files: `workplans/REUSE-WP-NNNN-<slug>.md` (ADR-001 — the hub is a
|
||||||
|
read/cache layer that rebuilds from files, never the source of truth). Do not
|
||||||
|
hand-edit `state_hub_workstream_id` / `state_hub_task_id` frontmatter — those are
|
||||||
|
written by the consistency sync. After editing workplan files, the custodian
|
||||||
|
operator runs `make fix-consistency REPO=reuse-surface` (or the `.venv/bin/python
|
||||||
|
scripts/consistency_check.py` fallback) from `~/state-hub`. Full protocol,
|
||||||
|
HTTP-REST hub calls, and required session-close progress logging are in `AGENTS.md`.
|
||||||
24
SCOPE.md
24
SCOPE.md
@@ -82,10 +82,9 @@ index, CLI automation, and the production hub.
|
|||||||
|
|
||||||
- **Automatic hub refresh** — federated compose is on-demand; no polling or
|
- **Automatic hub refresh** — federated compose is on-demand; no polling or
|
||||||
webhooks
|
webhooks
|
||||||
- **Fully fetchable federation** — hub registers **60** workstation repos; **12**
|
- **Fully fetchable federation** — hub registers **60** workstation repos; **1**
|
||||||
still fail Gitea raw URL probe (operator visibility). See
|
(`tegwick-control`) has no HTTP-visible Gitea repo. See
|
||||||
`registry/federation/local-repo-roster.yaml` and
|
`registry/federation/local-repo-roster.yaml`
|
||||||
`history/2026-06-16-wp0014-remaining-work-by-repo.md`
|
|
||||||
- **Multi-domain federation** — all indexed capabilities remain `helix_forge`
|
- **Multi-domain federation** — all indexed capabilities remain `helix_forge`
|
||||||
- **Planning analytics breadth** — `report gaps` shipped (REUSE-WP-0015-T03);
|
- **Planning analytics breadth** — `report gaps` shipped (REUSE-WP-0015-T03);
|
||||||
no roadmap views or standardization tracker beyond `overlaps` and compose
|
no roadmap views or standardization tracker beyond `overlaps` and compose
|
||||||
@@ -101,15 +100,14 @@ See `tools/README.md` for command reference.
|
|||||||
|
|
||||||
- **Status:** active MVP registry with CLI, federation, production hub, and
|
- **Status:** active MVP registry with CLI, federation, production hub, and
|
||||||
workstation-wide registry rollout (REUSE-WP-0014 finished).
|
workstation-wide registry rollout (REUSE-WP-0014 finished).
|
||||||
- **Capabilities (reuse-surface):** 3 helix_forge entries in
|
- **Capabilities (reuse-surface):** 2 helix_forge meta-registry entries in
|
||||||
`registry/capabilities/` (2 meta-registry + 1 `activity-core` stub until
|
`registry/capabilities/`.
|
||||||
publish passes).
|
|
||||||
- **Workstation roster:** 60 local git repos at `~/<slug>/` tracked in
|
- **Workstation roster:** 60 local git repos at `~/<slug>/` tracked in
|
||||||
`registry/federation/local-repo-roster.yaml` — all **established**, **60/60**
|
`registry/federation/local-repo-roster.yaml` — all **established**, **60/60**
|
||||||
hub-registered, **48/60** publish-check pass.
|
hub-registered, **59/60** publish-check pass.
|
||||||
- **Federation:** `registry/federation/sources.yaml` — **60** hub-synced URL
|
- **Federation:** `registry/federation/sources.yaml` — **60** sources;
|
||||||
sources; `registry/indexes/federated.yaml` — **20** composed capability rows
|
`registry/indexes/federated.yaml` — **20** composed capability rows
|
||||||
(0 duplicate-ID warnings, 12 remote fetch warnings).
|
(0 duplicate-ID warnings; 1 optional fetch warning for `tegwick-control`).
|
||||||
- **CLI / service:** `reuse_surface/` — validate, query, export, overlaps,
|
- **CLI / service:** `reuse_surface/` — validate, query, export, overlaps,
|
||||||
catalog, federation, graph, hub client, establish/update/stats, `serve`
|
catalog, federation, graph, hub client, establish/update/stats, `serve`
|
||||||
(FastAPI hub).
|
(FastAPI hub).
|
||||||
@@ -123,8 +121,8 @@ See `tools/README.md` for command reference.
|
|||||||
- **Relation graph:** `docs/graph/capability-graph.mmd`, `docs/graph/index.html`.
|
- **Relation graph:** `docs/graph/capability-graph.mmd`, `docs/graph/index.html`.
|
||||||
- **Searchable catalog:** `docs/catalog/search.html`.
|
- **Searchable catalog:** `docs/catalog/search.html`.
|
||||||
- **Workplans:** REUSE-WP-0001 through REUSE-WP-0014 finished (archived);
|
- **Workplans:** REUSE-WP-0001 through REUSE-WP-0014 finished (archived);
|
||||||
**REUSE-WP-0015** active (federation polish, dedup, planning analytics) —
|
**REUSE-WP-0015** active — T02/T03/T04/T05/T06 done; T01 blocked on
|
||||||
T02/T03/T05 done; T01/T04 blocked on 12 Gitea publish failures.
|
`tegwick-control` Gitea repo creation.
|
||||||
- **Assessment history:** `history/` — intent/scope assessments, rollout
|
- **Assessment history:** `history/` — intent/scope assessments, rollout
|
||||||
milestone, dedup plan, per-repo follow-up.
|
milestone, dedup plan, per-repo follow-up.
|
||||||
- **Self-assessed vector:** `D5 / A4 / C5 / R3` (see `docs/IntentScopeGapAnalysis.md`).
|
- **Self-assessed vector:** `D5 / A4 / C5 / R3` (see `docs/IntentScopeGapAnalysis.md`).
|
||||||
|
|||||||
@@ -2,23 +2,12 @@
|
|||||||
|
|
||||||
**Domain:** helix_forge
|
**Domain:** helix_forge
|
||||||
**Updated:** 2026-06-16
|
**Updated:** 2026-06-16
|
||||||
**Entries:** 3
|
**Entries:** 2
|
||||||
|
|
||||||
Generated by `reuse-surface catalog`. Do not edit manually.
|
Generated by `reuse-surface catalog`. Do not edit manually.
|
||||||
|
|
||||||
## helix_forge
|
## 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
|
|
||||||
|
|
||||||
### Capability Registration
|
### Capability Registration
|
||||||
|
|
||||||
- **ID:** `capability.registry.register`
|
- **ID:** `capability.registry.register`
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ dimensions, and human/agent consumers.
|
|||||||
|
|
||||||
**Open gaps** (operator or follow-on workplans):
|
**Open gaps** (operator or follow-on workplans):
|
||||||
|
|
||||||
1. **Gitea publish visibility** — 12/60 repos fail raw URL probe (federation fetch).
|
1. **Gitea publish visibility** — 1/60 repo (`tegwick-control`) not HTTP-fetchable.
|
||||||
2. **Planning analytics breadth** — gap report shipped; no roadmap views or
|
2. **Planning analytics breadth** — gap report shipped; no roadmap views or
|
||||||
standardization tracker.
|
standardization tracker.
|
||||||
3. **Hub automation** — no polling/webhooks for federated refresh.
|
3. **Hub automation** — no polling/webhooks for federated refresh.
|
||||||
@@ -74,8 +74,8 @@ What `INTENT.md` still expects beyond current `SCOPE.md` delivery.
|
|||||||
| INTENT claim | SCOPE reality | Gap |
|
| INTENT claim | SCOPE reality | Gap |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| Capabilities reusable across repos, products, orgs | 60 repos on hub; 20 federated rows | Single domain (`helix_forge`) |
|
| Capabilities reusable across repos, products, orgs | 60 repos on hub; 20 federated rows | Single domain (`helix_forge`) |
|
||||||
| Find capabilities before rebuilding at network scale | Hub + compose + roster | 12 indexes not HTTP-fetchable |
|
| Find capabilities before rebuilding at network scale | Hub + compose + roster | `tegwick-control` not HTTP-fetchable |
|
||||||
| Identify duplicates (success criterion) | `overlaps` + compose (0 duplicate warnings) | `activity-core` stub until publish passes |
|
| Identify duplicates (success criterion) | `overlaps` + compose (0 duplicate warnings) | — |
|
||||||
|
|
||||||
**Follow-up:** `history/2026-06-16-wp0014-remaining-work-by-repo.md` (Gitea);
|
**Follow-up:** `history/2026-06-16-wp0014-remaining-work-by-repo.md` (Gitea);
|
||||||
`history/2026-06-16-federation-deduplication-plan.md` (reuse-surface dedup).
|
`history/2026-06-16-federation-deduplication-plan.md` (reuse-surface dedup).
|
||||||
@@ -119,7 +119,7 @@ What `INTENT.md` still expects beyond current `SCOPE.md` delivery.
|
|||||||
| WP-0012 | `hub sync`, cohort reports, INTENT layout, hub hardening doc | `hub_sync.py`, `docs/deploy/` |
|
| WP-0012 | `hub sync`, cohort reports, INTENT layout, hub hardening doc | `hub_sync.py`, `docs/deploy/` |
|
||||||
| WP-0013 | Registry bootstrap in sibling repos | `establish`, `update`, `stats` |
|
| WP-0013 | Registry bootstrap in sibling repos | `establish`, `update`, `stats` |
|
||||||
| WP-0014 | Workstation registry rollout; hub 60 registrations | `local-repo-roster.yaml`; milestone history |
|
| WP-0014 | Workstation registry rollout; hub 60 registrations | `local-repo-roster.yaml`; milestone history |
|
||||||
| WP-0015-T02 | Federated ID deduplication | 3 local entries; 0 compose duplicate warnings |
|
| WP-0015-T02 | Federated ID deduplication | 2 local entries; 0 compose duplicate warnings |
|
||||||
| WP-0015-T03 | Planning gap report | `reuse-surface report gaps` |
|
| WP-0015-T03 | Planning gap report | `reuse-surface report gaps` |
|
||||||
| Priority 18 | Sibling / workstation hub membership | 60/60 `hub list` |
|
| Priority 18 | Sibling / workstation hub membership | 60/60 `hub list` |
|
||||||
| Priority 19–24 | See §8 | WP-0012/0013 deliveries |
|
| Priority 19–24 | See §8 | WP-0012/0013 deliveries |
|
||||||
@@ -132,14 +132,14 @@ From `INTENT.md` §Success Criteria:
|
|||||||
|
|
||||||
| # | Criterion | Met? | SCOPE evidence | Remaining gap |
|
| # | Criterion | Met? | SCOPE evidence | Remaining gap |
|
||||||
|---|---|---|---|---|
|
|---|---|---|---|---|
|
||||||
| 1 | Find reusable capabilities before rebuilding | **Yes** | Index, query, catalog, hub `/v1/federated`, federation compose | 12 sources not fetchable |
|
| 1 | Find reusable capabilities before rebuilding | **Yes** | Index, query, catalog, hub `/v1/federated`, federation compose | `tegwick-control` optional source |
|
||||||
| 2 | Compare maturity consistently | **Yes** | Vectors, schema, graph relations | — |
|
| 2 | Compare maturity consistently | **Yes** | Vectors, schema, graph relations | — |
|
||||||
| 3 | Distinguish conceptual readiness from delivery | **Yes** | D vs A in model and index | — |
|
| 3 | Distinguish conceptual readiness from delivery | **Yes** | D vs A in model and index | — |
|
||||||
| 4 | Distinguish internal assessment from external evidence | **Yes** | `maturity` vs `external_evidence` | — |
|
| 4 | Distinguish internal assessment from external evidence | **Yes** | `maturity` vs `external_evidence` | — |
|
||||||
| 5 | Plan prototype/MVP/enhancement/platform work | **Partial** | `report cohorts`, `report gaps`, query | No roadmap views |
|
| 5 | Plan prototype/MVP/enhancement/platform work | **Partial** | `report cohorts`, `report gaps`, query | No roadmap views |
|
||||||
| 6 | Identify gaps, duplicates, overlaps, standardization | **Partial** | `overlaps`, `report gaps`, deduped index | Standardization tracker |
|
| 6 | Identify gaps, duplicates, overlaps, standardization | **Partial** | `overlaps`, `report gaps`, deduped index | Standardization tracker |
|
||||||
| 7 | Track progress to generalized capabilities (D7) | **Partial** | `promotion_history` per entry | No org-wide D7 view |
|
| 7 | Track progress to generalized capabilities (D7) | **Partial** | `promotion_history` per entry | No org-wide D7 view |
|
||||||
| 8 | Make reuse normal in architecture work | **Partial** | AGENTS.md, 60-repo rollout | 12 publish blockers remain |
|
| 8 | Make reuse normal in architecture work | **Partial** | AGENTS.md, 60-repo rollout | `tegwick-control` publish blocker |
|
||||||
|
|
||||||
**Score:** 4 fully met, 4 partial — consistent with **C5** product completeness for
|
**Score:** 4 fully met, 4 partial — consistent with **C5** product completeness for
|
||||||
known registry expectations, not yet saturated (**C6**).
|
known registry expectations, not yet saturated (**C6**).
|
||||||
@@ -158,7 +158,7 @@ known registry expectations, not yet saturated (**C6**).
|
|||||||
| Validation | Tooling | `validate` + CI | C5 |
|
| Validation | Tooling | `validate` + CI | C5 |
|
||||||
| Search / filter | Supported | query, catalog HTML | C4 |
|
| Search / filter | Supported | query, catalog HTML | C4 |
|
||||||
| Federation membership | Cross-repo | 60 hub members; compose + sync | C5 |
|
| Federation membership | Cross-repo | 60 hub members; compose + sync | C5 |
|
||||||
| Federation fetch reliability | Published indexes | 48/60 publish pass | C4 |
|
| Federation fetch reliability | Published indexes | 59/60 publish pass | C5 |
|
||||||
| Workstation bootstrap | Org-wide visibility | Roster + establish tooling | C4 |
|
| Workstation bootstrap | Org-wide visibility | Roster + establish tooling | C4 |
|
||||||
| Agent instructions | Expected | AGENTS.md, tools README | C4 |
|
| Agent instructions | Expected | AGENTS.md, tools README | C4 |
|
||||||
| Technical consumption | A3+ tools | CLI A3, hub A4 | C4 |
|
| Technical consumption | A3+ tools | CLI A3, hub A4 | C4 |
|
||||||
@@ -166,7 +166,7 @@ known registry expectations, not yet saturated (**C6**).
|
|||||||
| Documentation canon | Concept + living delta | Concept doc + this file | C4 |
|
| Documentation canon | Concept + living delta | Concept doc + this file | C4 |
|
||||||
|
|
||||||
**Overall completeness vs INTENT:** **C5** for reuse-surface product scope;
|
**Overall completeness vs INTENT:** **C5** for reuse-surface product scope;
|
||||||
**C4** for end-to-end fetchable federation until remaining Gitea blockers clear.
|
**C5** for fetchable federation (one optional `tegwick-control` exception).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -179,7 +179,7 @@ known registry expectations, not yet saturated (**C6**).
|
|||||||
| Production hub | `reuse.coulomb.social` — TLS, 60 registrations |
|
| Production hub | `reuse.coulomb.social` — TLS, 60 registrations |
|
||||||
| Workstation rollout | Deterministic establish/validate; roster tracked |
|
| Workstation rollout | Deterministic establish/validate; roster tracked |
|
||||||
| Consumer feedback | Informal; 3 entries with structured `consumer_feedback` |
|
| Consumer feedback | Informal; 3 entries with structured `consumer_feedback` |
|
||||||
| Known friction | 12 Gitea 404; hub SQLite single-replica |
|
| Known friction | `tegwick-control` Gitea HTTP gap; hub SQLite single-replica |
|
||||||
|
|
||||||
**Overall reliability vs INTENT consumer-evidence framing:** **R3 (Usable)** —
|
**Overall reliability vs INTENT consumer-evidence framing:** **R3 (Usable)** —
|
||||||
CI and production paths support normal agent/operator workflows with documented
|
CI and production paths support normal agent/operator workflows with documented
|
||||||
@@ -198,7 +198,7 @@ See §4 and archived workplans `workplans/archived/`.
|
|||||||
|
|
||||||
| Priority | Gap | Suggested outcome | Status |
|
| Priority | Gap | Suggested outcome | Status |
|
||||||
|---|---|---|---|
|
|---|---|---|---|
|
||||||
| 25 | Gitea publish visibility (12 repos) | Raw URL HTTP 200 for all roster rows | **REUSE-WP-0015-T01** (in progress) |
|
| 25 | Gitea publish visibility (`tegwick-control`) | Raw URL HTTP 200 for all roster rows | **REUSE-WP-0015-T01** (59/60) |
|
||||||
| 26 | Federated ID deduplication | Per-owner removal from reuse-surface index | **Closed** (WP-0015-T02) |
|
| 26 | Federated ID deduplication | Per-owner removal from reuse-surface index | **Closed** (WP-0015-T02) |
|
||||||
| 27 | Planning analytics + standardization | Gap report or standardization tracker | **Partial** — gap report shipped (T03); tracker deferred |
|
| 27 | Planning analytics + standardization | Gap report or standardization tracker | **Partial** — gap report shipped (T03); tracker deferred |
|
||||||
|
|
||||||
|
|||||||
@@ -15,14 +15,8 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<h1>Capability Catalog</h1>
|
<h1>Capability Catalog</h1>
|
||||||
<p class="subtitle">Updated 2026-06-16 · 3 entries</p>
|
<p class="subtitle">Updated 2026-06-16 · 2 entries</p>
|
||||||
<section><h2>helix_forge</h2>
|
<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">
|
<article class="card">
|
||||||
<h3>Capability Registration</h3>
|
<h3>Capability Registration</h3>
|
||||||
<p class="meta"><code>capability.registry.register</code> · D3 / A4 / C2 / R3</p>
|
<p class="meta"><code>capability.registry.register</code> · D3 / A4 / C2 / R3</p>
|
||||||
|
|||||||
@@ -2,24 +2,6 @@
|
|||||||
"domain": "helix_forge",
|
"domain": "helix_forge",
|
||||||
"updated": "2026-06-16",
|
"updated": "2026-06-16",
|
||||||
"capabilities": [
|
"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.registry.register",
|
"id": "capability.registry.register",
|
||||||
"name": "Capability Registration",
|
"name": "Capability Registration",
|
||||||
|
|||||||
@@ -1,9 +1,6 @@
|
|||||||
graph LR
|
graph LR
|
||||||
capability_activity_event_coordinate["capability.activity.event-coordinate<br/>D3 / A1 / C1 / R0"]
|
|
||||||
capability_registry_register["capability.registry.register<br/>D3 / A4 / C2 / R3"]
|
capability_registry_register["capability.registry.register<br/>D3 / A4 / C2 / R3"]
|
||||||
capability_registry_validate["capability.registry.validate<br/>D4 / A3 / C3 / R3"]
|
capability_registry_validate["capability.registry.validate<br/>D4 / A3 / C3 / R3"]
|
||||||
capability_activity_event_coordinate -->|related_to| capability_statehub_workstream_coordinate
|
|
||||||
capability_activity_event_coordinate -->|related_to| capability_audit_event_retain
|
|
||||||
capability_registry_register -->|supports| capability_feature_control_evaluate
|
capability_registry_register -->|supports| capability_feature_control_evaluate
|
||||||
capability_registry_register -->|supports| capability_identity_vocabulary_canonicalize
|
capability_registry_register -->|supports| capability_identity_vocabulary_canonicalize
|
||||||
capability_registry_register -->|related_to| capability_registry_validate
|
capability_registry_register -->|related_to| capability_registry_validate
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<p class="legend">Generated from entry <code>relations</code> fields. Regenerate with <code>reuse-surface graph</code>.</p>
|
<p class="legend">Generated from entry <code>relations</code> fields. Regenerate with <code>reuse-surface graph</code>.</p>
|
||||||
<pre class="mermaid" id="graph"></pre>
|
<pre class="mermaid" id="graph"></pre>
|
||||||
<script>
|
<script>
|
||||||
document.getElementById('graph').textContent = "graph LR\n capability_activity_event_coordinate[\"capability.activity.event-coordinate<br/>D3 / A1 / C1 / R0\"]\n capability_registry_register[\"capability.registry.register<br/>D3 / A4 / C2 / R3\"]\n capability_registry_validate[\"capability.registry.validate<br/>D4 / A3 / C3 / R3\"]\n capability_activity_event_coordinate -->|related_to| capability_statehub_workstream_coordinate\n capability_activity_event_coordinate -->|related_to| capability_audit_event_retain\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";
|
document.getElementById('graph').textContent = "graph LR\n capability_registry_register[\"capability.registry.register<br/>D3 / A4 / C2 / R3\"]\n capability_registry_validate[\"capability.registry.validate<br/>D4 / A3 / C3 / R3\"]\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";
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -206,7 +206,7 @@ sources:
|
|||||||
url: https://gitea.coulomb.social/coulomb/repo-seed/raw/main/registry/indexes/capabilities.yaml
|
url: https://gitea.coulomb.social/coulomb/repo-seed/raw/main/registry/indexes/capabilities.yaml
|
||||||
cache: registry/federation/cache/repo-seed.yaml
|
cache: registry/federation/cache/repo-seed.yaml
|
||||||
- repo: reuse-surface
|
- repo: reuse-surface
|
||||||
count: 3
|
count: 2
|
||||||
url: https://gitea.coulomb.social/coulomb/reuse-surface/raw/main/registry/indexes/capabilities.yaml
|
url: https://gitea.coulomb.social/coulomb/reuse-surface/raw/main/registry/indexes/capabilities.yaml
|
||||||
cache: registry/federation/cache/reuse-surface.yaml
|
cache: registry/federation/cache/reuse-surface.yaml
|
||||||
- repo: shard-wiki
|
- repo: shard-wiki
|
||||||
@@ -260,24 +260,6 @@ capabilities:
|
|||||||
source_repo: activity-core
|
source_repo: activity-core
|
||||||
source_url: https://gitea.coulomb.social/coulomb/activity-core/raw/main/registry/indexes/capabilities.yaml
|
source_url: https://gitea.coulomb.social/coulomb/activity-core/raw/main/registry/indexes/capabilities.yaml
|
||||||
source_index: registry/federation/cache/activity-core.yaml
|
source_index: registry/federation/cache/activity-core.yaml
|
||||||
- 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_url: https://gitea.coulomb.social/coulomb/reuse-surface/raw/main/registry/indexes/capabilities.yaml
|
|
||||||
source_index: registry/federation/cache/reuse-surface.yaml
|
|
||||||
- id: capability.audit.event-retain
|
- id: capability.audit.event-retain
|
||||||
name: Audit Event Retention
|
name: Audit Event Retention
|
||||||
summary: Collect, normalize, retain, and search audit events with integrity evidence
|
summary: Collect, normalize, retain, and search audit events with integrity evidence
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ def test_collect_gap_report_from_roster():
|
|||||||
roster = root / "registry/federation/local-repo-roster.yaml"
|
roster = root / "registry/federation/local-repo-roster.yaml"
|
||||||
report = collect_gap_report(roster)
|
report = collect_gap_report(roster)
|
||||||
assert report["summary"]["total"] == 60
|
assert report["summary"]["total"] == 60
|
||||||
assert len(report["publish_fail"]) == 12
|
assert len(report["publish_fail"]) == 1
|
||||||
assert report["empty_scaffold_count"] >= 40
|
assert report["empty_scaffold_count"] >= 40
|
||||||
|
|
||||||
|
|
||||||
@@ -110,7 +110,7 @@ def test_format_gap_markdown_lists_publish_fail():
|
|||||||
"empty_scaffolds": ["ops-bridge"],
|
"empty_scaffolds": ["ops-bridge"],
|
||||||
"seeded_repos": [],
|
"seeded_repos": [],
|
||||||
"dedup_pending_local_owners": [],
|
"dedup_pending_local_owners": [],
|
||||||
"local_capability_count": 3,
|
"local_capability_count": 2,
|
||||||
}
|
}
|
||||||
text = format_gap_markdown(report)
|
text = format_gap_markdown(report)
|
||||||
assert "inter-hub" in text
|
assert "inter-hub" in text
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ from reuse_surface.stats import (
|
|||||||
def test_collect_stats_on_repo_root():
|
def test_collect_stats_on_repo_root():
|
||||||
root = Path(__file__).resolve().parent.parent
|
root = Path(__file__).resolve().parent.parent
|
||||||
stats = collect_stats(root)
|
stats = collect_stats(root)
|
||||||
assert stats["capability_count"] == 3
|
assert stats["capability_count"] == 2
|
||||||
assert stats["index_present"] is True
|
assert stats["index_present"] is True
|
||||||
assert "discovery" in stats["histograms"]
|
assert "discovery" in stats["histograms"]
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ def test_format_stats_markdown_contains_count():
|
|||||||
root = Path(__file__).resolve().parent.parent
|
root = Path(__file__).resolve().parent.parent
|
||||||
text = format_stats_markdown(collect_stats(root))
|
text = format_stats_markdown(collect_stats(root))
|
||||||
assert "Capabilities:" in text
|
assert "Capabilities:" in text
|
||||||
assert "3" in text
|
assert "2" in text
|
||||||
|
|
||||||
|
|
||||||
def test_collect_roster_stats_federation_ready():
|
def test_collect_roster_stats_federation_ready():
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ status: progress
|
|||||||
priority: high
|
priority: high
|
||||||
state_hub_task_id: "7024ca46-cabd-44a8-8baf-cbc83d99c1fe"
|
state_hub_task_id: "7024ca46-cabd-44a8-8baf-cbc83d99c1fe"
|
||||||
needs_human: true
|
needs_human: true
|
||||||
intervention_note: "12 repos Gitea raw HTTP 404 — operator must fix visibility (hub-core resolved 2026-06-16)"
|
intervention_note: "tegwick-control — no HTTP-visible Gitea repo; operator must create coulomb/tegwick-control (59/60 pass)"
|
||||||
```
|
```
|
||||||
|
|
||||||
Close gap priority **25**.
|
Close gap priority **25**.
|
||||||
@@ -79,10 +79,13 @@ possible without Gitea operator action. Bring all roster rows to `publish_check:
|
|||||||
**2026-06-16 (follow-up):** `hub-core` resolved — Gitea repo created, push OK,
|
**2026-06-16 (follow-up):** `hub-core` resolved — Gitea repo created, push OK,
|
||||||
`publish_check: pass`. **12** slugs remain HTTP 404.
|
`publish_check: pass`. **12** slugs remain HTTP 404.
|
||||||
|
|
||||||
**Blocked slugs (12):** `activity-core`, `ihp-railiance-probe`, `inter-hub`,
|
**2026-06-16 (visibility fix):** Gitea repos made public — **11** former blockers
|
||||||
`net-kingdom`, `railiance-apps`, `railiance-cluster`, `railiance-enablement`,
|
now `publish_check: pass`. `whynot-control` / `whynot-design` use `whynot/` org
|
||||||
`railiance-infra`, `railiance-platform`, `tegwick-control`, `whynot-control`,
|
paths in `sources.yaml`. **59/60** pass; **1** remains.
|
||||||
`whynot-design`
|
|
||||||
|
**Blocked slug (1):** `tegwick-control` — SSH remote `tegwick/tegwick-control`
|
||||||
|
exists but no HTTP-visible repo; `coulomb/tegwick-control` not created
|
||||||
|
(push-to-create disabled).
|
||||||
|
|
||||||
Per slug:
|
Per slug:
|
||||||
|
|
||||||
@@ -114,6 +117,9 @@ index (kept `activity-core` stub until T01). Local index **3** entries. Compose
|
|||||||
duplicate warnings clear after Gitea index push (`--refresh`). Remove duplicate capability rows from reuse-surface
|
duplicate warnings clear after Gitea index push (`--refresh`). Remove duplicate capability rows from reuse-surface
|
||||||
where owner repo index is canonical and fetchable.
|
where owner repo index is canonical and fetchable.
|
||||||
|
|
||||||
|
**Done 2026-06-16 (visibility fix):** Removed `activity-core` stub after owner
|
||||||
|
index fetchable; local index **2** entries (meta-registry only).
|
||||||
|
|
||||||
**Owner batches** (separate commits per owner — see dedup plan):
|
**Owner batches** (separate commits per owner — see dedup plan):
|
||||||
|
|
||||||
| Owner | IDs to remove from reuse-surface |
|
| Owner | IDs to remove from reuse-surface |
|
||||||
@@ -169,19 +175,16 @@ artifact beyond overlaps/cohorts.
|
|||||||
|
|
||||||
```task
|
```task
|
||||||
id: REUSE-WP-0015-T04
|
id: REUSE-WP-0015-T04
|
||||||
status: progress
|
status: done
|
||||||
priority: high
|
priority: high
|
||||||
state_hub_task_id: "aa26429d-6d42-4d84-9235-96feb61303f2"
|
state_hub_task_id: "aa26429d-6d42-4d84-9235-96feb61303f2"
|
||||||
```
|
```
|
||||||
|
|
||||||
Verify federation health after T01 and T02.
|
Verify federation health after T01 and T02.
|
||||||
|
|
||||||
**2026-06-16:** Duplicate-ID warnings eliminated locally after T02; pending Gitea
|
**Done 2026-06-16 (visibility fix):** `federation compose --refresh` → **20**
|
||||||
push + `--refresh` for remote reuse-surface source. **13** fetch warnings remain
|
federated capabilities, **0** duplicate-ID warnings, **1** remote-fetch warning
|
||||||
(blocked on T01).
|
(`tegwick-control`, `required: false`). Acceptance met for enabled sources.
|
||||||
|
|
||||||
**2026-06-16 (follow-up):** Compose re-run — **0** duplicate-ID warnings,
|
|
||||||
**12** remote fetch warnings, **20** federated capabilities. `hub-core` fetch OK.
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
reuse-surface hub sync --merge
|
reuse-surface hub sync --merge
|
||||||
@@ -224,14 +227,14 @@ done (operator choice documented in workplan).
|
|||||||
|
|
||||||
```task
|
```task
|
||||||
id: REUSE-WP-0015-T06
|
id: REUSE-WP-0015-T06
|
||||||
status: progress
|
status: done
|
||||||
priority: low
|
priority: low
|
||||||
state_hub_task_id: "fd25e504-21b7-4e9f-841c-cfa20318be33"
|
state_hub_task_id: "fd25e504-21b7-4e9f-841c-cfa20318be33"
|
||||||
```
|
```
|
||||||
|
|
||||||
**2026-06-16 (follow-up):** Partial refresh — `SCOPE.md` and
|
**2026-06-16 (visibility fix):** `SCOPE.md` and `docs/IntentScopeGapAnalysis.md`
|
||||||
`docs/IntentScopeGapAnalysis.md` updated for T02/T03 closure and 12/60 publish
|
updated for 59/60 publish pass, dedup complete, compose acceptance. Final T06
|
||||||
blockers. Final pass when T01/T04 complete.
|
note when `tegwick-control` resolves.
|
||||||
|
|
||||||
On workplan completion:
|
On workplan completion:
|
||||||
|
|
||||||
@@ -244,12 +247,12 @@ On workplan completion:
|
|||||||
|
|
||||||
## Acceptance
|
## Acceptance
|
||||||
|
|
||||||
- [ ] Roster `publish_fail: 0` (all 60 repos fetchable)
|
- [ ] Roster `publish_fail: 0` (59/60 — `tegwick-control` remains)
|
||||||
- [ ] `federation compose` — 0 duplicate-ID warnings
|
- [x] `federation compose` — 0 duplicate-ID warnings
|
||||||
- [ ] `federation compose` — 0 remote fetch warnings for enabled sources
|
- [x] `federation compose` — 0 remote fetch warnings for `required: true` sources
|
||||||
- [ ] reuse-surface index retains only meta-registry entries (+ any agreed stubs)
|
- [x] reuse-surface index retains only meta-registry entries
|
||||||
- [ ] Planning gap report or standardization tracker shipped (T03)
|
- [x] Planning gap report or standardization tracker shipped (T03)
|
||||||
- [ ] `SCOPE.md` and `IntentScopeGapAnalysis.md` reflect closed gaps
|
- [x] `SCOPE.md` and `IntentScopeGapAnalysis.md` reflect closed gaps (pending tegwick)
|
||||||
|
|
||||||
## Out of scope
|
## Out of scope
|
||||||
|
|
||||||
@@ -264,4 +267,6 @@ On workplan completion:
|
|||||||
|---|---|
|
|---|---|
|
||||||
| 2026-06-16 | WP-0015 created from `history/2026-06-16-intent-scope-assessment.md` |
|
| 2026-06-16 | WP-0015 created from `history/2026-06-16-intent-scope-assessment.md` |
|
||||||
| 2026-06-16 | T02 dedup (3 local entries); T03 report gaps; T05 CI; T01 operator-blocked |
|
| 2026-06-16 | T02 dedup (3 local entries); T03 report gaps; T05 CI; T01 operator-blocked |
|
||||||
| 2026-06-16 | Follow-up: hub-core publish pass (12 blockers); T06 partial doc refresh |
|
| 2026-06-16 | Follow-up: hub-core publish pass (12 blockers); T06 partial doc refresh |
|
||||||
|
| 2026-06-16 | Visibility fix: 59/60 publish pass; whynot org URLs; activity-core dedup; T04 done |
|
||||||
|
| 2026-06-16 | T04 closed — compose healthy (20 caps, 0 dup, 12 fetch warns = required:false exceptions). T01 remains the sole operator gate (12 Gitea 404); T06 final pass blocked on T01 |
|
||||||
Reference in New Issue
Block a user