CUST-WP-0050: drop T03, re-home T04-T10 to STATE-WP-0065, add T11
Per 2026-06-22 review: T03 dropped (registering unregistered repos under the old model = legacy to clean up). Implementation re-homed to state-hub-local STATE-WP-0065; T04/T05/T10 merged into one spine migration (P1). CUST-WP-0050 stays the coordination driver. T11 (post-cutover inventory) replaces T03. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -208,164 +208,117 @@ agents-vs-infotech primary-domain choice, keeping both kaizen-agentic and
|
||||
llm-connect as `agents` primary (`infotech` secondary). All 11 files flipped to
|
||||
`classified_by: human` and re-validated clean against T01. Task **done**.
|
||||
|
||||
### T03 - Classify the full Gitea inventory
|
||||
### T03 - Classify the full Gitea inventory — DROPPED
|
||||
|
||||
```task
|
||||
id: CUST-WP-0050-T03
|
||||
status: todo
|
||||
status: cancel
|
||||
priority: high
|
||||
state_hub_task_id: "81489716-61ef-4207-ab8a-5877843281de"
|
||||
```
|
||||
|
||||
Produce proposed `.repo-classification.yaml` for every active repo in the Gitea
|
||||
`coulomb` org (~70), prioritising the 57 already-registered and the ~18
|
||||
unregistered repos. Deliver as per-repo PRs for owner/human review. Maintain an
|
||||
explicit **exclusion list** (forks, `lando_worsch/python-snake`, archived
|
||||
`test_domain_v2`) recorded in this workplan.
|
||||
**Dropped 2026-06-22.** T03 conflated *authoring classification files* with
|
||||
*registering repos*. Doing a ~70-repo PR storm before the vocabulary and schema
|
||||
are proven is premature and high-blast-radius, and registering the ~18
|
||||
unregistered repos now would land them in the **old** domain model — creating
|
||||
legacy only to clean it up. Classifying + registering the remaining inventory is
|
||||
deferred to **T11**, executed **under the new model after cutover**. The 11
|
||||
custodian fixtures (T02) plus T01 are sufficient to build and prove the redesign.
|
||||
|
||||
Done when every non-excluded active repo has a committed, validated classification
|
||||
file (or is on the recorded exclusion list).
|
||||
### Phase 3–4 — RE-HOMED to STATE-WP-0065 (state-hub)
|
||||
|
||||
### Phase 3 — State Hub redesign (executed in /home/worsch/state-hub)
|
||||
Per this plan's repo boundary and the 2026-06-22 decision, the implementation of
|
||||
the State Hub redesign now lives in a **state-hub-local workplan**:
|
||||
`state-hub/workplans/STATE-WP-0065-repo-anchored-classification-spine.md`
|
||||
(workstream `8dc7d106-11e2-41df-b512-89ed69d2a65f`). CUST-WP-0050 remains the
|
||||
**coordination driver** (canon standard, decisions D1/D1a, ADR-005). The original
|
||||
implementation tasks below are **cancelled here** (re-homed, not abandoned); the
|
||||
efficient regrouping merges the three spine-rewriting tasks into one migration:
|
||||
|
||||
### T04 - Redesign schema: replace domains, add classification
|
||||
| Was (CUST-WP-0050) | Now (STATE-WP-0065) |
|
||||
| --- | --- |
|
||||
| T04 schema + T05 data migration + T10 re-anchor/rename | **P1** single Alembic spine migration |
|
||||
| T04/T10 API + validation surface | **P2** API / MCP / validation |
|
||||
| T06 auto-registration | **P3** auto-registration tooling |
|
||||
| T07 reclassify existing | folded into **P3** (lazy, as committed files appear) |
|
||||
| T08 surfaces + T09 cutover | **P4** surfaces & cutover |
|
||||
|
||||
```task
|
||||
id: CUST-WP-0050-T04
|
||||
status: todo
|
||||
status: cancel
|
||||
priority: high
|
||||
state_hub_task_id: "b61f6267-c2b2-4325-95fa-30ee899ce7d1"
|
||||
```
|
||||
|
||||
Replace the `domains` table contents with the 14 fixed market domains and add
|
||||
classification storage to `managed_repos`: `category`, primary `domain_id`,
|
||||
`secondary_domains[]`, `capability_tags[]`, `business_stake[]`,
|
||||
`business_mechanics[]`, plus provenance (`classified_at`, `classified_by`,
|
||||
`standard_version`). Enforce the allowed-values from T01 at the API boundary.
|
||||
Make `repo_id` the **required** workplan anchor, derive market-domain from the
|
||||
repo's classification, and demote/retire the `topic`/`domain` spine (see D1 and
|
||||
T10). Provide an Alembic migration and updated SQLAlchemy models + Pydantic
|
||||
schemas.
|
||||
|
||||
Done when the schema/model/API accept and validate the full classification and
|
||||
reject invalid values, with a forward migration and a tested downgrade path.
|
||||
|
||||
### T05 - Migration mapping + data migration
|
||||
Re-homed → STATE-WP-0065 P1 (schema: domains→14 market domains + classification on `managed_repos`).
|
||||
|
||||
```task
|
||||
id: CUST-WP-0050-T05
|
||||
status: todo
|
||||
status: cancel
|
||||
priority: high
|
||||
state_hub_task_id: "171fa385-4d78-41ea-b749-ac3f9082fe47"
|
||||
```
|
||||
|
||||
Define and apply the mapping from the old 14 domains/topics to the new model
|
||||
(guided by standard §15 Migration Notes), re-pointing existing topics,
|
||||
workstreams, goals, decisions, progress events, and charter `topic_id`
|
||||
references with **no orphaned workstreams**. Resolve the 2026-06-21 discrepancies:
|
||||
reconcile `markitect-project`↔`markitect-main`, retire phantom
|
||||
`railiance-bootstrap`/`railiance-hosts` (or relink), collapse the
|
||||
`vergabe_teilnahme` duplicate, and decide `personhood`'s disposition (charter-only
|
||||
vs retire).
|
||||
|
||||
Done when a dry-run migration report is reviewed and the applied migration leaves
|
||||
zero orphaned coordination records; the discrepancy list is resolved or explicitly
|
||||
deferred with reasons.
|
||||
|
||||
### T06 - Auto-registration tooling
|
||||
Re-homed → STATE-WP-0065 P1 (data migration + discrepancy resolution, same window as schema).
|
||||
|
||||
```task
|
||||
id: CUST-WP-0050-T06
|
||||
status: todo
|
||||
status: cancel
|
||||
priority: high
|
||||
state_hub_task_id: "6ae14007-d6d2-4395-814e-ace91486a953"
|
||||
```
|
||||
|
||||
Build an idempotent `register-from-classification` capability (Make target +
|
||||
script + MCP tool) that, given a repo (local path or Gitea API), reads
|
||||
`.repo-classification.yaml`, validates against T01, and upserts the
|
||||
`managed_repo` with full classification. Support a **bulk** run over the Gitea
|
||||
inventory and reclassification of existing rows. Reuse the k3s/Gitea access path
|
||||
documented during the 2026-06-21 review (Gitea runs in k3s on coulombcore;
|
||||
reach it via `kubectl port-forward svc/gitea-http`).
|
||||
|
||||
Done when one command registers/reclassifies every repo with a valid file and
|
||||
emits a report of registered / updated / skipped / invalid.
|
||||
|
||||
### T07 - Reclassify existing registrations
|
||||
Re-homed → STATE-WP-0065 P3 (`register-from-classification` bulk/idempotent tooling).
|
||||
|
||||
```task
|
||||
id: CUST-WP-0050-T07
|
||||
status: todo
|
||||
status: cancel
|
||||
priority: medium
|
||||
state_hub_task_id: "6411bf3f-9de2-4bcd-9ffe-6209cda6ba93"
|
||||
```
|
||||
|
||||
Run T06 against the classification files for the 57 previously-registered repos,
|
||||
reconciling each to the new taxonomy and retiring phantom/duplicate records.
|
||||
|
||||
Done when all previously-registered repos reflect their new classification and
|
||||
the managed-repo set matches the (non-excluded) Gitea inventory.
|
||||
|
||||
### Phase 4 — Consuming surfaces & cutover
|
||||
|
||||
### T08 - Update dashboard, consistency checker, MCP/REST, docs
|
||||
Re-homed → STATE-WP-0065 P3 (lazy reclassification of existing registrations as committed files appear).
|
||||
|
||||
```task
|
||||
id: CUST-WP-0050-T08
|
||||
status: todo
|
||||
status: cancel
|
||||
priority: medium
|
||||
state_hub_task_id: "09951aec-2960-4c50-b73d-4e2e7bd285c9"
|
||||
```
|
||||
|
||||
Update the dashboard to navigate by category/domain/capability/business-stake;
|
||||
add a consistency rule flagging registered repos lacking a valid
|
||||
`.repo-classification.yaml`; expose list/filter-by-classification in MCP/REST; and
|
||||
update orientation docs (`SCOPE.md`, `README.md`, `.claude/rules/*`) that
|
||||
reference the old "domains".
|
||||
|
||||
Done when the dashboard renders the new taxonomy, the consistency checker has a
|
||||
classification rule, and docs no longer assume the old domain model.
|
||||
|
||||
### T09 - Cutover, verification, retire old model
|
||||
Re-homed → STATE-WP-0065 P4 (dashboard, consistency rule, MCP/REST filters, docs).
|
||||
|
||||
```task
|
||||
id: CUST-WP-0050-T09
|
||||
status: todo
|
||||
status: cancel
|
||||
priority: medium
|
||||
state_hub_task_id: "babbb80a-c52d-4ec2-b217-2f6196a2e5f3"
|
||||
```
|
||||
|
||||
Switch orientation/registration tooling to the new model end-to-end, archive the
|
||||
old domain semantics, and run `make fix-consistency REPO=the-custodian`.
|
||||
|
||||
Done when an end-to-end pass (classify → auto-register → dashboard view) is
|
||||
verified and the old ad-hoc domain model is retired.
|
||||
|
||||
### T10 - Re-anchor to repos + rename workstream → workplan
|
||||
Re-homed → STATE-WP-0065 P4 (cutover, verification, retire old model).
|
||||
|
||||
```task
|
||||
id: CUST-WP-0050-T10
|
||||
status: todo
|
||||
status: cancel
|
||||
priority: high
|
||||
state_hub_task_id: "bee16416-a67f-4155-93d7-09f278daa04f"
|
||||
```
|
||||
Re-homed → STATE-WP-0065 P1 (re-anchor `repo_id` required + `workstream → workplan` rename, merged into the spine migration).
|
||||
|
||||
Two coupled changes to the coordination spine, executed in `/home/worsch/state-hub`:
|
||||
### Phase 4 (custodian) — Post-cutover inventory
|
||||
|
||||
1. **Re-anchor:** make `repo_id` the required anchor for a workplan, derive
|
||||
market-domain from the repo's classification, and remove the
|
||||
`topic`/`domain` parent spine (or demote `topic` to an optional cross-repo
|
||||
tag). Promote `RepoGoal` to the goal primitive; reduce `DomainGoal` to a thin
|
||||
rollup. Cross-repo workplans anchor to a **project repo** per ADR-005.
|
||||
2. **Rename:** rename `workstream → workplan` across the DB table, SQLAlchemy
|
||||
models, Pydantic schemas, REST routes, and MCP tools/resources, so the Hub
|
||||
vocabulary matches the repo `workplans/` files and current usage. Provide
|
||||
migration + compatibility/redirect notes for existing tool callers.
|
||||
### T11 - Classify & register remaining Gitea inventory (post-cutover)
|
||||
|
||||
Sequence with T04/T05 (same migration window where practical). Done when a
|
||||
workplan is anchored to a repo with no required topic, market-domain resolves
|
||||
from classification, and the API/MCP surface uses "workplan" with green tests.
|
||||
```task
|
||||
id: CUST-WP-0050-T11
|
||||
status: todo
|
||||
priority: medium
|
||||
```
|
||||
|
||||
Replaces dropped T03. **After** STATE-WP-0065 cutover proves the new model,
|
||||
author `.repo-classification.yaml` for the remaining active Gitea repos (the ~18
|
||||
unregistered + any not yet migrated) and bulk-register them via the
|
||||
STATE-WP-0065 P3 tooling — **under the new model**, no legacy detour. Maintain an
|
||||
explicit **exclusion list** (fork `tegwick/the-custodian`,
|
||||
`lando_worsch/python-snake`, archived `test_domain_v2`, inactive repos).
|
||||
|
||||
Done when every non-excluded active Gitea repo has a committed, validated
|
||||
classification file and a `managed_repo` row under the new taxonomy (or is on the
|
||||
recorded exclusion list).
|
||||
|
||||
## Open Questions / Decisions
|
||||
|
||||
|
||||
Reference in New Issue
Block a user