119 lines
5.5 KiB
Markdown
119 lines
5.5 KiB
Markdown
# 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.
|