reuse-surface/SCOPE.md
tegwick f9d957a221
Some checks failed
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 2s
ci / validate-registry (push) Has been cancelled
Build and Publish Container Image / build-and-push (push) Successful in 1m4s
REUSE-WP-0019-T06: hub freshness monitoring, docs, close workplan
reuse_surface/stats.py: _hub_summary() now reports composed_at, stale,
age_days, freshness_threshold_days (REUSE_SURFACE_FRESHNESS_DAYS env,
default 7), and a computed stale_warning. New hub_client.hub_federated()
backs it. format_stats_markdown surfaces a STALE marker when triggered.

.forgejo/workflows/ci.yml: new informational (non-failing) hub freshness
check against the live production hub on every push -- prints a
:⚠️: annotation when stale, never fails the build.

docs/RegistryFederation.md: new section tying together the webhook (T02),
scheduled fallback (T03), and freshness visibility (T06) into one
explanation. docs/deploy/reuse-kubernetes.md: updated for the T03 Forgejo
migration and the now-automated image.yaml build; image promotion
checklist updated for the known /health ingress bug (verify via
/v1/repos or /v1/federated instead).

14 new pytest cases, 173 total pass. Live-verified against production:
reuse-surface stats correctly showed composed_at/age_days for the real
federated index. Separately discovered and confirmed (via a live signed
webhook test) that reuse-surface-env moving to ExternalSecret/OpenBao
custody (railiance-apps commit 706f6c7, found while updating these docs)
did not break the T02/T03 webhook -- the synced value still matches what
the hub actually uses.

REUSE-WP-0019 is now fully complete (T01-T06). SCOPE.md and
docs/IntentScopeGapAnalysis.md updated to reflect closure.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-08 00:09:58 +02:00

199 lines
No EOL
9.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# SCOPE
## One-liner
Capability registry for planning and implementation reuse based on discovery and delivery maturity.
## Core Idea
`reuse-surface` provides a registry-centric reuse layer for capabilities. It
makes capabilities visible, comparable, assessable, and reusable for planning,
implementation, and operation. A capability that is not registered is invisible
for reuse within this product boundary.
## In Scope
- Maintain the capability maturity model, standards, schemas, registry formats,
sample entries, indexes, validation guidance, CLI tooling, hub service, and
agent instructions.
- Keep `INTENT.md`, `specs/`, registry artifacts, and State Hub workplans
aligned on the registry-first reuse boundary.
- Support humans and agents as registry consumers through Markdown-first
authoring and machine-readable metadata.
- Record decisions, progress, and workplan status through State Hub.
- Verify changes with `reuse-surface validate`, `git diff --check`, and ADR-001
consistency checks.
## Out of Scope
- Host or operate the registered capabilities themselves (except the federation
hub coordinator, which stores repo metadata and index URLs only).
- Replace package registries, service catalogs, issue trackers, or project
management systems.
- Judge internal code quality as capability maturity.
- Own unrelated adjacent systems or make irreversible operational decisions
without human approval.
## What Is Possible Now
The MVP registry foundation, CLI tooling (REUSE-WP-0003), federation stack
(WP-0005/0010), and hosted hub (WP-0011) are in place. Humans and agents can:
- **Discover capabilities** via `registry/indexes/capabilities.yaml`,
`reuse-surface query`, or `GET https://reuse.coulomb.social/v1/federated`
- **Add a new capability** at D0/A0/C0/R0 using
`templates/capability-entry.template.md`
- **Promote capabilities** with evidence, `promotion_history`, and index vector
updates
- **Compare candidates** using maturity vectors, scope, relations, and consumer
guidance
- **Record expectations** through `external_evidence.completeness` and
`external_evidence.reliability`
- **Validate entries automatically** with `reuse-surface validate`
- **Export a machine-readable bundle** with `reuse-surface export`
- **Detect overlap candidates** with `reuse-surface overlaps`
- **Generate a human-readable catalog** with `reuse-surface catalog`
- **Browse a searchable catalog** at `docs/catalog/search.html`
- **Compose federated indexes** with `reuse-surface federation compose`
(local paths and remote HTTP URLs with cache)
- **Register federation sources on the hosted hub** with `reuse-surface hub`
against `https://reuse.coulomb.social`
- **Sync local federation manifest from hub** with `reuse-surface hub sync`
- **Export planning cohorts** with `reuse-surface report cohorts`
- **Report registry gaps** with `reuse-surface report gaps` (roster blockers,
empty scaffolds, dedup stubs)
- **Bootstrap a sibling registry** with `reuse-surface establish --scaffold`
- **Verify index publish readiness** with `reuse-surface establish --publish-check`
- **View registry stats** with `reuse-surface stats` (per-repo or
`--roster registry/federation/local-repo-roster.yaml --federation-ready`)
- **Draft or refresh entries** with `reuse-surface establish --discover` and
`reuse-surface update` (optional llm-connect backend)
- **Maintain registry interactively or automatically** with `reuse-surface maintain`
(TTY prompts, `--auto`, optional llm-connect, `--publish` chain)
- **Run the hub locally or in a container** with `reuse-surface serve`
- **Generate relation graphs** with `reuse-surface graph`
- **Explore relations interactively** at `docs/graph/index.html`
- **Avoid duplicates** by querying the index and checking overlaps before adding
entries
- **Check before building** with `reuse-surface plan-check` (REUSE-WP-0018) —
match a draft workplan or free-text intent against the federated index and
get a reuse/extend/new verdict; `--file-request` bridges a `new` verdict to
a State Hub capability request; `report gaps --check-capability-requests`
surfaces open requests with no matching capability
- **Get automatic hub refresh** (REUSE-WP-0019-T02/T03) — a Forgejo push
webhook (`POST /v1/webhooks/forgejo`, HMAC-signed) recomposes the hub's
federated index when a registered repo's `registry/indexes/` changes,
with `composed_at`/`stale` visibility on `GET /v1/federated` and a
scheduled fallback recompose if a webhook delivery is ever missed
- **Record reuse telemetry** (REUSE-WP-0019-T04) — `plan-check
--record-outcome` and `reuse-surface record-reuse` post facts to
`POST /v1/reuse-events` when the hub is reachable, falling back to
`registry/telemetry/plan-check-events.jsonl` otherwise (same schema
either way); `GET /v1/reuse-events?capability_id=` aggregates them
- **Aggregate reuse telemetry into R-axis evidence** (REUSE-WP-0019-T05) —
`reuse-surface report reuse` shows per-capability consumer counts,
outcomes, and last-used; `--suggest-relations` proposes evidence-gated
`relations.reused_by` patches (via the same `apply_patches` mechanism
`maintain` uses), applied only with an explicit `--apply` — never
automatic. `specs/CapabilityMaturityStandard.md` §8.9 documents what
observed-reuse evidence does (and doesn't) count toward R2/R3+
Registry **tooling** availability is **A4** (CLI plus hosted hub HTTP API).
Registry **authoring** remains Markdown-first; consumption combines entries, the
index, CLI automation, and the production hub.
## What Is Not Possible Yet
- **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
collision warnings
- **Managed platform posture** — hub runs as a container (A5 artifact) without
implemented SLO, multi-replica, or Postgres backing (criteria documented)
- **Formal consumer feedback loop** for registry workflows (reliability evidence
is mostly structural: CI/tests, not production telemetry)
See `tools/README.md` for command reference.
## Current State
- **Status:** active registry with CLI, federation, production hub, and
workstation-wide coverage campaign complete (REUSE-WP-0017 finished 2026-07-07).
- **Capabilities (reuse-surface):** 2 helix_forge meta-registry entries in
`registry/capabilities/`.
- **Workstation roster:** 62 local git repos at `~/<slug>/` tracked in
`registry/federation/local-repo-roster.yaml` — all **established**, **62/62**
hub-registered (inter-hub registration disabled on hub), **62/62**
publish-check pass, **62/62** capability coverage (`has` or explicit `none`).
- **Federation:** `registry/federation/sources.yaml` — **61** enabled sources;
`registry/indexes/federated.yaml` — **61** composed capability rows
(inter-hub excluded; core-hub included; 0 duplicate-ID warnings at last compose).
- **CLI / service:** `reuse_surface/` — validate, query, export, overlaps,
catalog, federation, graph, hub client, establish/update/stats, `serve`
(FastAPI hub).
- **Production hub:** `https://reuse.coulomb.social` — **61** enabled repo
registrations; `GET /v1/federated` serves **61** capabilities from published
raw URLs (compose refreshed 2026-07-07).
- **Specs:** `specs/FederationHubAPI.md`, `schemas/hub-registration.schema.yaml`.
- **Docs:** `docs/CapabilityRegistryConcept.md`, `docs/RegistryFederation.md`,
`docs/IntentScopeGapAnalysis.md`, deploy guide `docs/deploy/reuse-kubernetes.md`.
- **CI:** `.forgejo/workflows/ci.yml` — validate, federation compose, catalog,
graph, pytest, informational `report cohorts`, `stats --roster`, `report gaps`
(migrated from Gitea 2026-07-07, REUSE-WP-0019-T03). Also
`.forgejo/workflows/image.yaml` (container build/push) and
`recompose-fallback.yaml` (scheduled hub recompose, webhook backstop).
- **Relation graph:** `docs/graph/capability-graph.mmd`, `docs/graph/index.html`.
- **Searchable catalog:** `docs/catalog/search.html`.
- **Workplans:** REUSE-WP-0001 through REUSE-WP-0015 finished (archived);
**REUSE-WP-0017** capability coverage campaign finished (2026-07-07);
**REUSE-WP-0018** plan-check consumption loop finished (2026-07-07);
**REUSE-WP-0019** Forgejo automation and reuse telemetry finished
(2026-07-08, all six tasks T01T06).
- **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`).
## Repository Layout
```text
reuse-surface/
├── INTENT.md
├── SCOPE.md
├── AGENTS.md
├── pyproject.toml
├── Dockerfile
├── reuse_surface/ # CLI, hub service, federation, graph, catalog
├── specs/
├── schemas/
├── templates/
├── registry/
│ ├── capabilities/ # per-entry Markdown
│ ├── indexes/ # capabilities.yaml, federated.yaml
│ └── federation/ # sources.yaml, local-repo-roster.yaml, cache/
├── docs/
├── tools/
└── workplans/
└── archived/
```
## Getting Oriented
- Start with: INTENT.md
- Registry concept: docs/CapabilityRegistryConcept.md
- Intent vs scope gaps: docs/IntentScopeGapAnalysis.md
- Assessment snapshots: history/
- Product requirements: specs/ProductRequirementsDocument.md
- Use cases: specs/UseCaseCatalog.md
- Maturity standard: specs/CapabilityMaturityStandard.md
- Hub API: specs/FederationHubAPI.md
- Registry index: registry/indexes/capabilities.yaml
- Registry guidance: registry/README.md
- Federation guide: docs/RegistryFederation.md
- Hub deployment: docs/deploy/reuse-kubernetes.md
- Generated catalog: docs/CapabilityCatalog.md
- Searchable catalog: docs/catalog/search.html
- Relation graph: docs/graph/capability-graph.mmd
- Graph explorer: docs/graph/index.html
- CLI reference: tools/README.md
- Agent instructions: AGENTS.md
- Workplans: workplans/