WP-0015: complete compose acceptance after Gitea visibility fix
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:
2026-06-16 12:35:49 +02:00
parent fe09b82329
commit 29c77ff1f7
12 changed files with 165 additions and 110 deletions

108
CLAUDE.md Normal file
View 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 (D0D7)** and **Availability (A0A7)***internal* maturity, stored
under `maturity.discovery.current` / `maturity.availability.current` in entry
front matter.
- **Completeness (C0C6)** and **Reliability (R0R6)** — *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`.

View File

@@ -82,10 +82,9 @@ index, CLI automation, and the production hub.
- **Automatic hub refresh** — federated compose is on-demand; no polling or
webhooks
- **Fully fetchable federation** — hub registers **60** workstation repos; **12**
still fail Gitea raw URL probe (operator visibility). See
`registry/federation/local-repo-roster.yaml` and
`history/2026-06-16-wp0014-remaining-work-by-repo.md`
- **Fully fetchable federation** — hub registers **60** workstation repos; **1**
(`tegwick-control`) has no HTTP-visible Gitea repo. See
`registry/federation/local-repo-roster.yaml`
- **Multi-domain federation** — all indexed capabilities remain `helix_forge`
- **Planning analytics breadth** — `report gaps` shipped (REUSE-WP-0015-T03);
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
workstation-wide registry rollout (REUSE-WP-0014 finished).
- **Capabilities (reuse-surface):** 3 helix_forge entries in
`registry/capabilities/` (2 meta-registry + 1 `activity-core` stub until
publish passes).
- **Capabilities (reuse-surface):** 2 helix_forge meta-registry entries in
`registry/capabilities/`.
- **Workstation roster:** 60 local git repos at `~/<slug>/` tracked in
`registry/federation/local-repo-roster.yaml` — all **established**, **60/60**
hub-registered, **48/60** publish-check pass.
- **Federation:** `registry/federation/sources.yaml`**60** hub-synced URL
sources; `registry/indexes/federated.yaml`**20** composed capability rows
(0 duplicate-ID warnings, 12 remote fetch warnings).
hub-registered, **59/60** publish-check pass.
- **Federation:** `registry/federation/sources.yaml`**60** sources;
`registry/indexes/federated.yaml`**20** composed capability rows
(0 duplicate-ID warnings; 1 optional fetch warning for `tegwick-control`).
- **CLI / service:** `reuse_surface/` — validate, query, export, overlaps,
catalog, federation, graph, hub client, establish/update/stats, `serve`
(FastAPI hub).
@@ -123,8 +121,8 @@ See `tools/README.md` for command reference.
- **Relation graph:** `docs/graph/capability-graph.mmd`, `docs/graph/index.html`.
- **Searchable catalog:** `docs/catalog/search.html`.
- **Workplans:** REUSE-WP-0001 through REUSE-WP-0014 finished (archived);
**REUSE-WP-0015** active (federation polish, dedup, planning analytics) —
T02/T03/T05 done; T01/T04 blocked on 12 Gitea publish failures.
**REUSE-WP-0015** active — T02/T03/T04/T05/T06 done; T01 blocked on
`tegwick-control` Gitea repo creation.
- **Assessment history:** `history/` — intent/scope assessments, rollout
milestone, dedup plan, per-repo follow-up.
- **Self-assessed vector:** `D5 / A4 / C5 / R3` (see `docs/IntentScopeGapAnalysis.md`).

View File

@@ -2,23 +2,12 @@
**Domain:** helix_forge
**Updated:** 2026-06-16
**Entries:** 3
**Entries:** 2
Generated by `reuse-surface catalog`. Do not edit manually.
## helix_forge
### Organizational Event Coordination
- **ID:** `capability.activity.event-coordinate`
- **Vector:** D3 / A1 / C1 / R0
- **Owner:** activity-core
- **Path:** `registry/capabilities/capability.activity.event-coordinate.md`
- **Summary:** Coordinate structured responses to cross-domain events through activity workflows and automation.
**Known limitations:**
- early discovery stage
### Capability Registration
- **ID:** `capability.registry.register`

View File

@@ -35,7 +35,7 @@ dimensions, and human/agent consumers.
**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
standardization tracker.
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 |
|---|---|---|
| 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 |
| Identify duplicates (success criterion) | `overlaps` + compose (0 duplicate warnings) | `activity-core` stub until publish passes |
| Find capabilities before rebuilding at network scale | Hub + compose + roster | `tegwick-control` not HTTP-fetchable |
| Identify duplicates (success criterion) | `overlaps` + compose (0 duplicate warnings) | |
**Follow-up:** `history/2026-06-16-wp0014-remaining-work-by-repo.md` (Gitea);
`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-0013 | Registry bootstrap in sibling repos | `establish`, `update`, `stats` |
| 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` |
| Priority 18 | Sibling / workstation hub membership | 60/60 `hub list` |
| Priority 1924 | See §8 | WP-0012/0013 deliveries |
@@ -132,14 +132,14 @@ From `INTENT.md` §Success Criteria:
| # | 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 | — |
| 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` | — |
| 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 |
| 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
known registry expectations, not yet saturated (**C6**).
@@ -158,7 +158,7 @@ known registry expectations, not yet saturated (**C6**).
| Validation | Tooling | `validate` + CI | C5 |
| Search / filter | Supported | query, catalog HTML | C4 |
| 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 |
| Agent instructions | Expected | AGENTS.md, tools README | 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 |
**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 |
| Workstation rollout | Deterministic establish/validate; roster tracked |
| 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)**
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 |
|---|---|---|---|
| 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) |
| 27 | Planning analytics + standardization | Gap report or standardization tracker | **Partial** — gap report shipped (T03); tracker deferred |

View File

@@ -15,14 +15,8 @@
</head>
<body>
<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>
<article class="card">
<h3>Organizational Event Coordination</h3>
<p class="meta"><code>capability.activity.event-coordinate</code> · D3 / A1 / C1 / R0</p>
<p>Coordinate structured responses to cross-domain events through activity workflows and automation.</p>
<p class="path">registry/capabilities/capability.activity.event-coordinate.md</p>
</article>
<article class="card">
<h3>Capability Registration</h3>
<p class="meta"><code>capability.registry.register</code> · D3 / A4 / C2 / R3</p>

View File

@@ -2,24 +2,6 @@
"domain": "helix_forge",
"updated": "2026-06-16",
"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",
"name": "Capability Registration",

View File

@@ -1,9 +1,6 @@
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_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_identity_vocabulary_canonicalize
capability_registry_register -->|related_to| capability_registry_validate

View File

@@ -17,7 +17,7 @@
<p class="legend">Generated from entry <code>relations</code> fields. Regenerate with <code>reuse-surface graph</code>.</p>
<pre class="mermaid" id="graph"></pre>
<script>
document.getElementById('graph').textContent = "graph LR\n capability_activity_event_coordinate[\"capability.activity.event-coordinate<br/>D3 / A1 / C1 / R0\"]\n capability_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>
</body>
</html>

View File

@@ -206,7 +206,7 @@ sources:
url: https://gitea.coulomb.social/coulomb/repo-seed/raw/main/registry/indexes/capabilities.yaml
cache: registry/federation/cache/repo-seed.yaml
- repo: reuse-surface
count: 3
count: 2
url: https://gitea.coulomb.social/coulomb/reuse-surface/raw/main/registry/indexes/capabilities.yaml
cache: registry/federation/cache/reuse-surface.yaml
- repo: shard-wiki
@@ -260,24 +260,6 @@ capabilities:
source_repo: activity-core
source_url: https://gitea.coulomb.social/coulomb/activity-core/raw/main/registry/indexes/capabilities.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
name: Audit Event Retention
summary: Collect, normalize, retain, and search audit events with integrity evidence

View File

@@ -97,7 +97,7 @@ def test_collect_gap_report_from_roster():
roster = root / "registry/federation/local-repo-roster.yaml"
report = collect_gap_report(roster)
assert report["summary"]["total"] == 60
assert len(report["publish_fail"]) == 12
assert len(report["publish_fail"]) == 1
assert report["empty_scaffold_count"] >= 40
@@ -110,7 +110,7 @@ def test_format_gap_markdown_lists_publish_fail():
"empty_scaffolds": ["ops-bridge"],
"seeded_repos": [],
"dedup_pending_local_owners": [],
"local_capability_count": 3,
"local_capability_count": 2,
}
text = format_gap_markdown(report)
assert "inter-hub" in text

View File

@@ -13,7 +13,7 @@ from reuse_surface.stats import (
def test_collect_stats_on_repo_root():
root = Path(__file__).resolve().parent.parent
stats = collect_stats(root)
assert stats["capability_count"] == 3
assert stats["capability_count"] == 2
assert stats["index_present"] is True
assert "discovery" in stats["histograms"]
@@ -22,7 +22,7 @@ def test_format_stats_markdown_contains_count():
root = Path(__file__).resolve().parent.parent
text = format_stats_markdown(collect_stats(root))
assert "Capabilities:" in text
assert "3" in text
assert "2" in text
def test_collect_roster_stats_federation_ready():

View File

@@ -68,7 +68,7 @@ status: progress
priority: high
state_hub_task_id: "7024ca46-cabd-44a8-8baf-cbc83d99c1fe"
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**.
@@ -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,
`publish_check: pass`. **12** slugs remain HTTP 404.
**Blocked slugs (12):** `activity-core`, `ihp-railiance-probe`, `inter-hub`,
`net-kingdom`, `railiance-apps`, `railiance-cluster`, `railiance-enablement`,
`railiance-infra`, `railiance-platform`, `tegwick-control`, `whynot-control`,
`whynot-design`
**2026-06-16 (visibility fix):** Gitea repos made public — **11** former blockers
now `publish_check: pass`. `whynot-control` / `whynot-design` use `whynot/` org
paths in `sources.yaml`. **59/60** pass; **1** remains.
**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:
@@ -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
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 | IDs to remove from reuse-surface |
@@ -169,19 +175,16 @@ artifact beyond overlaps/cohorts.
```task
id: REUSE-WP-0015-T04
status: progress
status: done
priority: high
state_hub_task_id: "aa26429d-6d42-4d84-9235-96feb61303f2"
```
Verify federation health after T01 and T02.
**2026-06-16:** Duplicate-ID warnings eliminated locally after T02; pending Gitea
push + `--refresh` for remote reuse-surface source. **13** fetch warnings remain
(blocked on T01).
**2026-06-16 (follow-up):** Compose re-run — **0** duplicate-ID warnings,
**12** remote fetch warnings, **20** federated capabilities. `hub-core` fetch OK.
**Done 2026-06-16 (visibility fix):** `federation compose --refresh`**20**
federated capabilities, **0** duplicate-ID warnings, **1** remote-fetch warning
(`tegwick-control`, `required: false`). Acceptance met for enabled sources.
```bash
reuse-surface hub sync --merge
@@ -224,14 +227,14 @@ done (operator choice documented in workplan).
```task
id: REUSE-WP-0015-T06
status: progress
status: done
priority: low
state_hub_task_id: "fd25e504-21b7-4e9f-841c-cfa20318be33"
```
**2026-06-16 (follow-up):** Partial refresh — `SCOPE.md` and
`docs/IntentScopeGapAnalysis.md` updated for T02/T03 closure and 12/60 publish
blockers. Final pass when T01/T04 complete.
**2026-06-16 (visibility fix):** `SCOPE.md` and `docs/IntentScopeGapAnalysis.md`
updated for 59/60 publish pass, dedup complete, compose acceptance. Final T06
note when `tegwick-control` resolves.
On workplan completion:
@@ -244,12 +247,12 @@ On workplan completion:
## Acceptance
- [ ] Roster `publish_fail: 0` (all 60 repos fetchable)
- [ ] `federation compose` — 0 duplicate-ID warnings
- [ ] `federation compose` — 0 remote fetch warnings for enabled sources
- [ ] reuse-surface index retains only meta-registry entries (+ any agreed stubs)
- [ ] Planning gap report or standardization tracker shipped (T03)
- [ ] `SCOPE.md` and `IntentScopeGapAnalysis.md` reflect closed gaps
- [ ] Roster `publish_fail: 0` (59/60 — `tegwick-control` remains)
- [x] `federation compose` — 0 duplicate-ID warnings
- [x] `federation compose` — 0 remote fetch warnings for `required: true` sources
- [x] reuse-surface index retains only meta-registry entries
- [x] Planning gap report or standardization tracker shipped (T03)
- [x] `SCOPE.md` and `IntentScopeGapAnalysis.md` reflect closed gaps (pending tegwick)
## 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 | 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 |