hub-core/docs/adr/ADR-0002-repository-classification-projections.md
tegwick 6288ba3d7d
Some checks failed
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / pytest-smoke (push) Failing after 2s
docs: accept repository classification boundary
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a0230c-b06c-7641-808a-e191b6d1da49
2026-08-22 00:12:03 +02:00

2.4 KiB

ADR-0002: Consume repository classification as a projection

Status: Accepted Date: 2026-08-22 Workplan: HUB-WP-0006-T01 Upstream contract: RMGR-CONTRACT-CLASSIFICATION-0001 version 1.0

Context

State Hub's legacy topic spine mixes mutable topic rows with repository classification and navigation. State Hub retirement slice A5 replaces that model. Repo Manager now validates each repository-authoritative .repo-classification.yaml and publishes the validated classification in its repository projection.

Hub-core owns cross-domain projection and navigation, but it must not turn the projection into a second classification authority or recreate a mutable topic table.

Decision

  1. Repo Manager's classification contract version 1.0 is accepted without a schema gap. Repo Manager owns validation and publication; the repository file remains authoritative.
  2. Hub-core consumes only validated Repo Manager projections through a versioned port.repo boundary. It does not read, validate, infer, coerce, or write .repo-classification.yaml directly.
  3. Hub-core may aggregate repositories by primary domain, secondary domain, category, capability tag, business stake, and business mechanic for navigation and hub composition. Every derived view carries Repo Manager source identity, repository revision, contract version, and rebuild time.
  4. A legacy State Hub topic identifier may be retained as a compatibility alias during A5 cutover. It is not a new authority and must have an expiry or residual owner.
  5. Invalid or unsupported projection versions fail closed and remain visible as diagnostics. Hub-core does not silently reinterpret them.
  6. State Hub owns the A5 consumer-route switch and rollback flag under STATE-WP-0079. Hub-core owns the receiving projection/query and navigation surface; Repo Manager owns the input contract.

Consequences

  • Topic navigation becomes rebuildable from repository authority rather than copied from the State Hub topics table.
  • Repository classification changes continue through governed Repo Manager mutation and repository review, never a hub-core write endpoint.
  • Hub-core needs an explicit Repo Manager client, projection schema, query/MCP surface, provenance checks, and unavailable/version-mismatch behavior before A5 can switch.
  • Contract evolution is negotiated by version; a canon vocabulary change is not inferred from observed data.