Files
railiance-fabric/workplans/RAIL-FAB-WP-0002-ecosystem-registry-service.md

5.5 KiB

id, type, title, domain, repo, status, owner, topic_slug, planning_priority, planning_order, state_hub_workstream_id, created, updated
id type title domain repo status owner topic_slug planning_priority planning_order state_hub_workstream_id created updated
RAIL-FAB-WP-0002 workplan Railiance Ecosystem Registry Service railiance railiance-fabric completed codex railiance high 2 eab084f2-b71e-45c7-ae9c-8528b69f8dec 2026-05-17 2026-05-17

RAIL-FAB-WP-0002 - Railiance Ecosystem Registry Service

Goal

Create the first service interface for registering repositories and interacting with the Railiance ecosystem model across repos.

The service should make Fabric declarations queryable without requiring every agent or dashboard to clone every repo and run the local CLI. It should remain an indexed read model over repo-owned declarations, not a central editor for those declarations.

Context

RAIL-FAB-WP-0001 created the repo-owned graph declaration model, validator, query CLI, and State Hub export contract.

The next useful step is a service that can:

  • register participating repos
  • ingest validated graph snapshots by repo and commit
  • expose providers, consumers, unresolved dependencies, dependency paths, and blast-radius queries over the combined ecosystem graph
  • attach supporting artifacts such as CycloneDX SBOMs, OpenAPI contracts, AsyncAPI contracts, and Score workload intent
  • project graph data to State Hub and, later, Backstage or xRegistry-compatible views

Direction

Use docs/ecosystem-registry-service.md as the design baseline.

The closest external comparison point is CNCF xRegistry because it defines an extensible metadata registry model with document/API views, versioned resources, filtering, import/export, and endpoint/schema/message extensions. Railiance should keep an xRegistry-compatible projection path, while preserving the Fabric graph model as the repo-native source of truth.

Scope

In scope:

  • define the registry service API and storage model
  • implement repository registration
  • implement snapshot ingestion for FabricGraphExport
  • reuse the existing Fabric loader, validator, graph builder, and query logic
  • store validation results per repo and commit
  • expose initial HTTP query endpoints matching current CLI queries
  • expose State Hub export data from the latest accepted snapshots
  • support artifact attachment metadata for OpenAPI, AsyncAPI, and CycloneDX
  • document Backstage and xRegistry projection strategy

Out of scope:

  • editing repo-owned fabric/ declarations through the service
  • provisioning or binding live infrastructure
  • replacing State Hub planning, task, progress, or workplan state
  • building a full developer portal
  • runtime service mesh discovery
  • mandatory Score adoption

Tasks

T01 - Service API And Storage Design

id: RAIL-FAB-WP-0002-T01
status: done
priority: high
state_hub_task_id: "e3c219cf-1b81-4209-9f11-a79a78e1bb52"

Define the API surface, storage tables, validation semantics, and snapshot replacement rules.

Done when the repo contains an implementation-ready service design that identifies request/response shapes and storage ownership.

T02 - Service Scaffold

id: RAIL-FAB-WP-0002-T02
status: done
priority: high
state_hub_task_id: "ef7363a1-afae-4ac2-a977-6d162b3714e6"

Create a lightweight HTTP service that reuses the existing Python loader, validator, graph builder, and export model.

Done when the service can start locally and expose a health endpoint.

T03 - Repository Registration

id: RAIL-FAB-WP-0002-T03
status: done
priority: high
state_hub_task_id: "59323dfe-4702-4b8a-bd60-86d2caea4618"

Add endpoints and storage for repository slug, repo URL, default branch, optional State Hub repo id, and ingest configuration.

Done when repos can be registered, listed, and fetched by slug.

T04 - Snapshot Ingestion

id: RAIL-FAB-WP-0002-T04
status: done
priority: high
state_hub_task_id: "807fcb38-839f-43fd-9f45-ad5cd1f70d8f"

Add atomic ingestion for FabricGraphExport payloads keyed by repo and commit.

Done when a valid export is accepted, invalid exports are rejected with useful errors, and the latest accepted snapshot is queryable.

T05 - Ecosystem Query Endpoints

id: RAIL-FAB-WP-0002-T05
status: done
priority: high
state_hub_task_id: "f3dd0aba-b83c-4066-b0eb-efb07284a7ac"

Expose providers, consumers, unresolved dependencies, dependency paths, and blast-radius queries over the latest accepted snapshots.

Done when HTTP responses match the local CLI answers for the same graph.

T06 - Artifact Attachment

id: RAIL-FAB-WP-0002-T06
status: done
priority: medium
state_hub_task_id: "95e4e60b-9d32-407e-83d4-c2a532047775"

Support artifact metadata for CycloneDX SBOMs, OpenAPI contracts, AsyncAPI contracts, and Score workload files.

Done when artifacts can be linked to repos, services, or interfaces and surfaced in graph node details.

T07 - State Hub Export

id: RAIL-FAB-WP-0002-T07
status: done
priority: high
state_hub_task_id: "5ef7ccea-fd79-498b-99ce-b6bacb00d46d"

Expose State Hub export data from the registry's latest accepted snapshots.

Done when State Hub can fetch the same graph shape documented in docs/state-hub-integration.md.

T08 - Projection Strategy

id: RAIL-FAB-WP-0002-T08
status: done
priority: medium
state_hub_task_id: "285215e6-6018-44be-abea-56eb79c5d349"

Document and, if small enough, prototype Backstage and xRegistry projections.

Done when it is clear which Fabric nodes map to Backstage entities and which parts of the registry can be exposed through xRegistry-style groups, resources, and versions.