the-custodian/workplans/CUST-WP-0065-reclassify-repos-and-guidance-docs-to-the-new-sector-domain.md
codex ff334f1a40
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Python Tests / pytest (push) Successful in 21s
feat: automate classification convergence
2026-08-23 13:05:47 +02:00

8.4 KiB

id type title domain repo status owner created updated quality_dor quality_dor_at quality_dor_by quality_dor_note state_hub_workstream_id
CUST-WP-0065 workplan Reclassify repos and guidance docs to the new sector domain scheme infotech the-custodian active codex 2026-08-23 2026-08-23 DoR-Ok 2026-08-23 codex The live registry baseline, canonical vocabulary, source-of-truth boundary, owner dependencies, non-mechanical classification risk, and acceptance checks are explicit. e2702474-b276-4e15-8337-41bfa344c89c

Reclassify repos and guidance docs to the new sector domain scheme

Goal

Complete the transition from legacy project/estate labels to the canonical sector-domain vocabulary without mechanically rewriting project identities or silently assigning ambiguous repos. Populate the authoritative repository projection, update Custodian guidance, and route repo-owned classification changes to their owners.

Promoted from intake 019f81e6-2a31-7bee-b50a-8e9ca67267b7 — origin: "intake:019f81e6-2a31-7bee-b50a-8e9ca67267b7"

Establish the live baseline and migration semantics

id: CUST-WP-0065-T01
status: done
priority: high
state_hub_task_id: "d3f3cf0e-8c8a-5108-824d-de6deaa5ceff"

Count active repositories with complete and incomplete classification projection, distinguish missing source files from missing ingestion, and define how legacy project names relate to sector domains. Do not treat a project name as a one-to-one market classification.

Done (2026-08-23): docs/repo-classification-sector-migration-baseline-2026-08-23.md records the live 117-repository baseline: 38 active records have no projected category, comprising 14 missing source files and 24 present-but-unprojected files. It also fixes the migration rule: legacy names remain project/estate identity; sector values describe intended users and require repo-owner review when the answer is ambiguous.

Publish canonical migration guidance

id: CUST-WP-0065-T02
status: done
priority: medium
state_hub_task_id: "207ba031-517a-51c7-8c1e-bc82f312cdc1"

Review the baseline semantics into the active Repo Classification Standard and agent-facing guidance. Replace only obsolete domain-field instructions; keep historical project names and canon references intact. Add a validation example that rejects legacy names in repo_classification.domain while allowing them as project/topic identity.

Done (2026-08-23): the active Repo Classification Standard now explicitly separates legacy project/estate identities from sector-domain metadata and links the governed migration baseline. The contribution convention and all four contribution templates now show current sector values. The classification validator self-test proves custodian is rejected as a classification domain; project names remain valid outside that field.

Repair source records and authoritative projection

id: CUST-WP-0065-T03
status: progress
priority: high
state_hub_task_id: "a1ad7cd3-5bfb-58ee-8f97-6c2e864b2fd9"

Route the 14 missing .repo-classification.yaml files to repository owners and have Repo Manager/State Hub diagnose the 24 files that exist locally but remain null in the registry. Classification judgments stay with repo owners; the Custodian coordinates vocabulary and acceptance. Require schema validation and normal registrar/reconcile paths rather than direct database edits.

Started (2026-08-23): Repo Manager received the 24-repo projection defect and config-atlas sentinel proof in message a5e685c9; binky-control received the first missing-source owner handoff in message 15d8f2df. The remaining missing-source repos stay in the baseline for governed owner routing.

Implementation checkpoint (2026-08-23): all 24 committed source files now project through the State Hub API; the active-fleet projection improved from 79/117 to 103/117 classified repos. Twenty-one updated through the standard registration command. Three server-error cases (rail-knative, rapp-qonto, and rapp-sbom-nexus) were recovered with classification-only PATCHes, then used to expose and verify a State Hub registration defect. State Hub revision 57c3e08 now keeps classification updates separate from Git identity fields, honors domain_slug changes, and normalizes multi-root histories to one fingerprint; focused regression tests and all three live repros pass.

Every initially missing-source repo has an owner handoff with a suggested starting point and an explicit requirement to review, validate, commit, and report its revision: agent-harness (b5718a78), binect-chrome (cfe4baa6), binect-js (3a8358b7), binky-control (18dc8758), clay-borg (98726021), direkt-vermittlung-de (f177403a), polycode-sim (b3247d7b), railiance-telemetry (bf2e2fea), ralph-workplan (186be39c), rein-aharness (c02a26b9), rein-openweights (24d9e895), tele-mcp (76e3d0dc), testdrive-jsui (cbefc9a0), and timeline-svg (d350d2c6). T03 remains in progress because those classification judgments must land in their owning repositories; they are not safe Custodian-side mechanical edits.

Owner delivery (2026-08-23): rein-aharness published its reviewed classification at revision 81f9279 (tooling, primary agents, secondary infotech). The canonical validator passed without warnings, its reported file digest matched the checkout, and the standard API registration completed with zero invalid results. Thirteen owner classifications remain.

Verify fleet convergence and close

id: CUST-WP-0065-T04
status: progress
priority: medium
state_hub_task_id: "0c7c6f53-8a89-5102-87ca-e1991c227038"

Re-run the active-repository baseline. Close when every active repo either has a valid projected classification or a governed exclusion, current agent guidance uses sector domains, and no project identity was destroyed by the migration. Record any genuine owner decision as a live residual before finishing.

Started (2026-08-23): the post-repair fleet check reports 121 registered, 117 active, 103 classified, and 14 active null-category records. The null set exactly matches the 14 governed owner handoffs; no present source file remains unprojected. Project names and repository identities were not rewritten.

After the first owner delivery, the live projection is 104/117 classified with 13 active null-category records and again zero present-but-unprojected files.

Repeatable convergence gate (2026-08-23): tools/repo_classification_convergence.py now derives those counts directly from the State Hub registry, checks each active record's registered checkout, validates every present source file against the canonical vocabulary, and separates missing owner records, present-but-unprojected records, stale projections without a source file, invalid sources, and duplicate active slugs. make classification-status reports progress; make classification-check fails closed until all active gaps are resolved.

Its first run exposed a stale active registry row hidden by the former null-category-only check: retired inter-hub retained a projected category but its registered checkout no longer exists. Existing Custodian retirement evidence records Core Hub as the sole production surface since 2026-07-08, so the supported State Hub archive endpoint corrected that row without altering its historical classification. The active fleet is now 103/116 classified; the same 13 owner-source gaps remain, with no projection or source-validity failure.

Indexing note

Resolved (2026-08-23): Repo Manager revisions 7a15f1d and 7b9fdaa narrow the on-demand registrar's identity gate to the exact requested records, retain full-repository refusal for empty-projection rebuilds, and return bounded timeout evidence for slow legacy scans. Governed reconciliation correlation 76d57c01-5e16-428d-ae15-01a718f4b1a5 assigned and verified all four task UUIDs plus CUST-IN-0014, then committed and pushed the writeback as Custodian revision d792318. Historical identity findings remain visible for cleanup; none was rewritten or treated as the new records.

Acceptance

  • Live missing-classification baseline is reproducible and split by cause
  • Legacy project identity is distinguished from sector-domain metadata
  • Canonical and agent-facing migration guidance is current
  • Missing source classifications are owner-reviewed and validated
  • Present source classifications project into State Hub
  • Active fleet has zero unexplained null category projections