# Repo classification sector migration baseline — 2026-08-23 ## Result The live State Hub registry contains 121 repositories, of which 117 are active. Thirty-eight active records have a domain association but no projected `category`; they are not complete Repo Classification Standard projections. The gap has two distinct causes: - 14 local checkouts do not contain `.repo-classification.yaml`; - 24 local checkouts contain the file, but the live registry still projects a null category. Those paths require different fixes. The first requires a repo-owner classification decision. The second requires validation and normal Repo Manager/State Hub reconciliation; it must not be repaired by directly editing registry rows. ## Migration rule The older labels `custodian`, `railiance`, `markitect`, `coulomb_social`, `personhood`, `foerster_capabilities`, and `netkingdom` identify projects, estates, or bodies of canon. They are not sector-domain aliases. Keep those names in project titles, topic identity, architecture, provenance, and historical records. For `repo_classification.domain`, apply the current standard's user/customer question and select one allowed sector. Useful review seeds are: | Legacy identity | Likely sector starting point | Review constraint | | --- | --- | --- | | Custodian | `infotech` | Add `agents` only where agent infrastructure is materially served. | | Railiance | `infotech` | Use `industrials` only for repos whose intended users are actually in rail/industrial operations. | | Markitect | `infotech` | Use `agents` as primary only for agent-native products, not merely AI-assisted tooling. | | Coulomb.social | `communication` | Add other sectors only when a concrete product audience warrants them. | | Personhood | `agents` or `government` | Rights/governance scope is ambiguous and requires owner review. | | Foerster Capabilities | `agents` | Preserve the named research project separately from market metadata. | | NetKingdom | `infotech` | Identity, tenancy, and access control are platform capabilities, not a market alias. | This table is a triage aid, not an automatic rewrite map. ## Missing source files (14) `agent-harness`, `binect-chrome`, `binect-js`, `binky-control`, `clay-borg`, `direkt-vermittlung-de`, `polycode-sim`, `railiance-telemetry`, `ralph-workplan`, `rein-aharness`, `rein-openweights`, `tele-mcp`, `testdrive-jsui`, and `timeline-svg`. ## Source file present but registry category null (24) `config-atlas`, `disaster-control`, `glas-harness`, `ground-game`, `kings-guard`, `ops-mason`, `policy-nexus`, `prj-canon-federation`, `prj-forgejo-org-refactor`, `prj-state-hub-retirement`, `qonto-assistant`, `rail-knative`, `rapp-openbao`, `rapp-policy-nexus`, `rapp-postgres`, `rapp-qonto`, `rapp-sbom-nexus`, `resource-control`, `risk-nexus`, `sand-boxer`, `secrets-engine`, `tenant-engine`, `test-driver`, and `zone-engine`. ## Reproduction Run `make classification-status`. The command reads active repository records from `GET /repos/`, compares every registered `local_path` with its `.repo-classification.yaml`, validates present source files against the canon, and reports owner-source gaps separately from projection gaps. Use `make classification-check` as the eventual fail-closed convergence gate. The initial observed counts were: ```text registered: 121 active: 117 active with null category: 38 missing source file: 14 source file present but unprojected: 24 ``` Acceptance is zero unexplained null category projections among active repos. A governed archived/decommissioned record or an explicit classification exclusion is not unexplained. ## Implementation checkpoint The same query after API reconciliation reports: ```text registered: 121 active: 117 active with projected classification: 103 active with null category: 14 missing source file: 14 source file present but unprojected: 0 ``` All 24 present source files were validated and projected through State Hub's REST API. Twenty-one completed through the existing registration utility. `rail-knative`, `rapp-qonto`, and `rapp-sbom-nexus` initially exposed a utility defect because classification PATCHes also sent Git identity metadata; their multi-root fingerprints exceeded the single-SHA database field. State Hub revision `57c3e08` separates those concerns, supports primary-domain updates, and uses the same single-root fingerprint projection as token attribution. The three live repros subsequently completed without invalid results. The initial remaining null set exactly equalled the 14 missing-source repositories above. Each owner received a State Hub handoff requiring human review, local validation, a committed `.repo-classification.yaml`, and revision evidence. `rein-aharness` subsequently delivered revision `81f9279`; validation, digest verification, and API projection passed. The current checkpoint is 104/117 classified, 13 missing-source/null-category repos, and zero present source files left unprojected. This is governed pending work rather than an unexplained projection failure. The first automated convergence run additionally found `inter-hub` still marked active with a projected classification even though its registered checkout had been removed. Custodian retirement evidence already records Core Hub as the sole production surface from 2026-07-08. The supported State Hub archive transition corrected the stale row while preserving its history. The current active denominator is therefore 116: 103 classified, 13 missing-source/null-category, zero present-but-unprojected, and zero invalid source records.