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

51 lines
2.4 KiB
Markdown

# 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.