feat: automate classification convergence
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

This commit is contained in:
codex 2026-08-23 13:05:47 +02:00
parent af68d438d6
commit ff334f1a40
8 changed files with 346 additions and 11 deletions

View file

@ -59,9 +59,12 @@ This table is a triage aid, not an automatic rewrite map.
## Reproduction
Read active repository records from `GET /repos/`, select records whose
`status` is `active` and whose `category` is null, then test the registered
`local_path` for `.repo-classification.yaml`. The observed counts are:
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
@ -105,3 +108,12 @@ 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.