docs: extract hub-core import refactor workplan
This commit is contained in:
@@ -257,95 +257,11 @@ Refactor the standalone `/home/worsch/state-hub` codebase:
|
|||||||
- Ensure all existing tests pass with the new import structure
|
- Ensure all existing tests pass with the new import structure
|
||||||
- Update pyproject.toml to depend on hub-core
|
- Update pyproject.toml to depend on hub-core
|
||||||
|
|
||||||
Implementation start (2026-06-07): added `/home/worsch/hub-core` as an editable
|
Extracted child workplan (2026-06-07): T08 became complex enough to deserve its
|
||||||
`hub-core` dependency of `/home/worsch/state-hub`, synced `uv.lock`, and
|
own progress surface. Ongoing implementation and slice history now live in
|
||||||
converted State Hub's message and DoI response schema modules into
|
`CUST-WP-0048 - Hub-Core State Hub Import Refactor`. This umbrella task remains
|
||||||
compatibility re-exports from `hub_core.schemas`. Added
|
`in_progress` until the child workplan finishes and hands control back to the
|
||||||
`tests/test_hub_core_imports.py` to pin the import seam. Verification:
|
Phase 2 dev-hub rename sequence.
|
||||||
`python -m pytest` in State Hub passed with 349 tests.
|
|
||||||
|
|
||||||
Implementation slice 2 (2026-06-07): aligned hub-core's TPSC schemas and GDPR
|
|
||||||
report payload with the existing State Hub contract, then converted State Hub's
|
|
||||||
`api.schemas.tpsc` module into a compatibility re-export from
|
|
||||||
`hub_core.schemas.tpsc`. Verification: hub-core `pytest` passed with 15 tests;
|
|
||||||
State Hub import/core-router/recently-on-scope focused tests passed. A full
|
|
||||||
State Hub run reached 349 passed / 1 failed; the lone recently-on-scope failure
|
|
||||||
passed when rerun alone and with the new import seam tests.
|
|
||||||
|
|
||||||
Implementation slice 3 (2026-06-07): converted State Hub's base domain schemas
|
|
||||||
(`DomainCreate`, `DomainRead`, `DomainRename`, `DomainUpdate`) into imports
|
|
||||||
from `hub_core.schemas.domain` while keeping dev-hub-specific `DomainDetail`
|
|
||||||
and `DomainSummary` local. Verification: State Hub import/core-router focused
|
|
||||||
tests passed with 58 tests.
|
|
||||||
|
|
||||||
Implementation slice 4 (2026-06-07): added host-model injection to
|
|
||||||
`hub_core.routers.messages.create_messages_router`, then replaced State Hub's
|
|
||||||
local `api.routers.messages` implementation with the hub-core factory while
|
|
||||||
injecting State Hub's own `AgentMessage` model. This is the first router import
|
|
||||||
that avoids importing hub-core SQLAlchemy metadata into State Hub. Verification:
|
|
||||||
hub-core `pytest` passed with 16 tests; State Hub import/core-router/MCP smoke
|
|
||||||
focused tests passed with 70 tests.
|
|
||||||
|
|
||||||
Implementation slice 5 (2026-06-07): extended
|
|
||||||
`hub_core.routers.policy.create_policy_router` with an optional update callback,
|
|
||||||
then replaced State Hub's local `api.routers.policy` implementation with the
|
|
||||||
hub-core factory while keeping State Hub's policy path validation/read/write
|
|
||||||
callbacks local. Verification: hub-core `pytest` passed with 17 tests; State
|
|
||||||
Hub policy/import/MCP/core-router focused tests passed when split to avoid live
|
|
||||||
API test-DB contention.
|
|
||||||
|
|
||||||
Implementation slice 6 (2026-06-07): added host-model injection to
|
|
||||||
`hub_core.routers.tpsc.create_tpsc_router`, then replaced State Hub's local
|
|
||||||
`api.routers.tpsc` implementation with the hub-core factory while injecting
|
|
||||||
State Hub's own repo and TPSC models. Verification: hub-core `pytest` passed
|
|
||||||
with 18 tests; State Hub TPSC/import/MCP focused tests passed with 17 tests and
|
|
||||||
core-router tests passed with 54 tests.
|
|
||||||
|
|
||||||
Implementation slice 7 (2026-06-07): added host-model and schema injection to
|
|
||||||
`hub_core.routers.progress.create_progress_router`, then replaced State Hub's
|
|
||||||
local `api.routers.progress` implementation with the hub-core factory while
|
|
||||||
injecting State Hub's own progress model and schemas. The shared router now
|
|
||||||
preserves State Hub's topic/workstream/task filters and exposes the hub-core
|
|
||||||
risk/alert progress views. Verification: hub-core pytest passed with 19 tests;
|
|
||||||
State Hub MCP/import/core-router focused tests passed with 71 tests.
|
|
||||||
|
|
||||||
Implementation slice 8 (2026-06-07): added host-model/schema injection,
|
|
||||||
optional update-route registration, and detail/archive callbacks to
|
|
||||||
`hub_core.routers.domains.create_domains_router`, then replaced State Hub's
|
|
||||||
local `api.routers.domains` implementation with the hub-core factory. State Hub
|
|
||||||
keeps its own domain detail counts and active-topic archive guard in local
|
|
||||||
callbacks. Verification: hub-core pytest passed with 20 tests; State Hub
|
|
||||||
core/import/MCP/recently-on-scope/capability focused tests passed with 102
|
|
||||||
tests.
|
|
||||||
|
|
||||||
Implementation slice 9 (2026-06-07): converted State Hub's matching generic
|
|
||||||
schema classes to hub-core imports: capability catalog create/patch/read,
|
|
||||||
capability request status/dispute, and repo path registration. State Hub's repo
|
|
||||||
create/read schemas now extend hub-core contracts while keeping dev-hub-only
|
|
||||||
fields local, and repo creation now persists `host_paths` from the shared
|
|
||||||
create contract. State Hub keeps dev-hub-specific capability request, reroute,
|
|
||||||
repo dispatch, onboarding, and scope-health schemas local. Verification: State
|
|
||||||
Hub import/capability/core/DoI scope/MCP focused tests passed with 100 tests.
|
|
||||||
|
|
||||||
Implementation slice 10 (2026-06-07): added
|
|
||||||
`hub_core.routers.capabilities.create_capability_catalog_router` with host
|
|
||||||
domain/repo/catalog model injection, then replaced State Hub's local capability
|
|
||||||
catalog CRUD implementation with that hub-core factory. State Hub keeps the
|
|
||||||
capability request workflow routes local because they still enforce State Hub
|
|
||||||
flow transitions, notifications, rerouting, and task-unblock side effects.
|
|
||||||
Verification: hub-core pytest passed with 21 tests; State Hub
|
|
||||||
capability/import/MCP/core focused tests passed with 95 tests.
|
|
||||||
|
|
||||||
Implementation slice 11 (2026-06-07): added
|
|
||||||
`hub_core.routers.capabilities.create_capability_request_read_router` with host
|
|
||||||
domain/request model and response-schema injection, then replaced State Hub's
|
|
||||||
local capability request list/detail routes with that hub-core factory. State
|
|
||||||
Hub keeps request creation, acceptance, status transitions, metadata patching,
|
|
||||||
dispute, and reroute routes local because they still enforce State Hub flow
|
|
||||||
transitions, notifications, and task-unblock side effects. Verification:
|
|
||||||
hub-core compile checks passed, hub-core pytest passed with 22 tests, the
|
|
||||||
post-format import slice passed with 14 tests, State Hub compile checks passed,
|
|
||||||
and State Hub capability/import/MCP/core focused tests passed with 95 tests.
|
|
||||||
|
|
||||||
### T09 — Rename MCP server state-hub to dev-hub
|
### T09 — Rename MCP server state-hub to dev-hub
|
||||||
|
|
||||||
|
|||||||
187
workplans/CUST-WP-0048-hub-core-state-hub-import-refactor.md
Normal file
187
workplans/CUST-WP-0048-hub-core-state-hub-import-refactor.md
Normal file
@@ -0,0 +1,187 @@
|
|||||||
|
---
|
||||||
|
id: CUST-WP-0048
|
||||||
|
type: workplan
|
||||||
|
title: "Hub-Core State Hub Import Refactor"
|
||||||
|
domain: custodian
|
||||||
|
repo: the-custodian
|
||||||
|
status: active
|
||||||
|
owner: custodian
|
||||||
|
topic_slug: custodian
|
||||||
|
created: "2026-06-07"
|
||||||
|
updated: "2026-06-07"
|
||||||
|
---
|
||||||
|
|
||||||
|
# Hub-Core State Hub Import Refactor
|
||||||
|
|
||||||
|
## Goal
|
||||||
|
|
||||||
|
Complete the CUST-WP-0025 T08 migration as its own tracked workplan: refactor
|
||||||
|
the standalone `/home/worsch/state-hub` codebase to import reusable generic
|
||||||
|
models, schemas, routers, and MCP surfaces from `/home/worsch/hub-core` while
|
||||||
|
keeping dev-hub-specific coordination behavior local.
|
||||||
|
|
||||||
|
This is a child workplan of `CUST-WP-0025` Phase 2. The umbrella task
|
||||||
|
`CUST-WP-0025-T08` remains in progress until this workplan reaches `finished`.
|
||||||
|
|
||||||
|
## Scope Boundary
|
||||||
|
|
||||||
|
`hub-core` should own reusable hub primitives and factory-based router/MCP
|
||||||
|
surfaces. `state-hub` should keep development coordination concepts such as
|
||||||
|
topics, workstreams, tasks, decisions, dependencies, consistency checks, SBOM,
|
||||||
|
dashboard loaders, and workflow side effects.
|
||||||
|
|
||||||
|
The migration should proceed by narrow seams:
|
||||||
|
|
||||||
|
- Prefer schema re-exports before router replacement.
|
||||||
|
- Prefer router factories with host-model and host-schema injection.
|
||||||
|
- Keep State Hub callbacks for dev-hub behavior such as counts, validation,
|
||||||
|
notifications, flow transitions, and task-unblock side effects.
|
||||||
|
- Keep test coverage focused per slice, with full regression at the end.
|
||||||
|
|
||||||
|
## Completed History
|
||||||
|
|
||||||
|
- 2026-06-07: Added `/home/worsch/hub-core` as an editable dependency of
|
||||||
|
`/home/worsch/state-hub`, synced `uv.lock`, and converted message and DoI
|
||||||
|
response schemas into compatibility re-exports from `hub_core.schemas`.
|
||||||
|
Verification: full State Hub pytest passed with 349 tests.
|
||||||
|
- 2026-06-07: Aligned hub-core TPSC schemas and GDPR report payload with State
|
||||||
|
Hub, then re-exported `api.schemas.tpsc` from `hub_core.schemas.tpsc`.
|
||||||
|
Verification: hub-core pytest passed with 15 tests; focused State Hub tests
|
||||||
|
passed, and the lone full-run flake passed on rerun.
|
||||||
|
- 2026-06-07: Converted base domain schemas (`DomainCreate`, `DomainRead`,
|
||||||
|
`DomainRename`, `DomainUpdate`) to imports from `hub_core.schemas.domain`.
|
||||||
|
Verification: State Hub import/core-router focused tests passed with 58 tests.
|
||||||
|
- 2026-06-07: Added host-model injection to the hub-core messages router and
|
||||||
|
replaced State Hub's local messages router with the hub-core factory.
|
||||||
|
Verification: hub-core pytest passed with 16 tests; focused State Hub tests
|
||||||
|
passed with 70 tests.
|
||||||
|
- 2026-06-07: Extended the hub-core policy router with an optional update
|
||||||
|
callback and replaced State Hub's policy router with the hub-core factory
|
||||||
|
plus local path validation/read/write callbacks. Verification: hub-core
|
||||||
|
pytest passed with 17 tests; State Hub focused tests passed when split to
|
||||||
|
avoid live API test-DB contention.
|
||||||
|
- 2026-06-07: Added host-model injection to the hub-core TPSC router and
|
||||||
|
replaced State Hub's TPSC router with the hub-core factory. Verification:
|
||||||
|
hub-core pytest passed with 18 tests; focused State Hub tests passed with 17
|
||||||
|
and 54 tests.
|
||||||
|
- 2026-06-07: Added host-model/schema injection to the hub-core progress router
|
||||||
|
and replaced State Hub's progress router while preserving topic/workstream/task
|
||||||
|
filters and shared risk/alert views. Verification: hub-core pytest passed with
|
||||||
|
19 tests; State Hub focused tests passed with 71 tests.
|
||||||
|
- 2026-06-07: Added host-model/schema injection, optional update-route
|
||||||
|
registration, and detail/archive callbacks to the hub-core domains router,
|
||||||
|
then replaced State Hub's domains router. Verification: hub-core pytest passed
|
||||||
|
with 20 tests; State Hub focused tests passed with 102 tests.
|
||||||
|
- 2026-06-07: Converted generic capability catalog schemas, capability request
|
||||||
|
status/dispute schemas, and repo path registration schema to hub-core imports.
|
||||||
|
State Hub repo create/read schemas now extend hub-core contracts. Verification:
|
||||||
|
State Hub focused tests passed with 100 tests.
|
||||||
|
- 2026-06-07: Added `create_capability_catalog_router` with host model
|
||||||
|
injection and replaced State Hub's capability catalog CRUD routes. Verification:
|
||||||
|
hub-core pytest passed with 21 tests; State Hub focused tests passed with 95
|
||||||
|
tests.
|
||||||
|
- 2026-06-07: Added `create_capability_request_read_router` with host
|
||||||
|
domain/request model and response-schema injection, then replaced State Hub's
|
||||||
|
capability request list/detail routes. Verification: hub-core compile checks
|
||||||
|
passed, hub-core pytest passed with 22 tests, the post-format import slice
|
||||||
|
passed with 14 tests, State Hub compile checks passed, and State Hub focused
|
||||||
|
tests passed with 95 tests.
|
||||||
|
|
||||||
|
## T01 - Establish Editable Dependency And Schema Re-Exports
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: CUST-WP-0048-T01
|
||||||
|
status: done
|
||||||
|
priority: high
|
||||||
|
```
|
||||||
|
|
||||||
|
Add hub-core as an editable State Hub dependency and convert the low-risk
|
||||||
|
generic schema modules to compatibility imports or extensions from hub-core.
|
||||||
|
This includes message, DoI, TPSC, base domain, capability catalog/status/dispute,
|
||||||
|
and repo path registration schemas.
|
||||||
|
|
||||||
|
## T02 - Replace Low-Risk Generic Routers
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: CUST-WP-0048-T02
|
||||||
|
status: done
|
||||||
|
priority: high
|
||||||
|
```
|
||||||
|
|
||||||
|
Replace State Hub's local generic router implementations with hub-core router
|
||||||
|
factories where host-model injection or callbacks are already sufficient:
|
||||||
|
messages, policy, TPSC, progress, and domains.
|
||||||
|
|
||||||
|
## T03 - Replace Capability Catalog And Request Read Routes
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: CUST-WP-0048-T03
|
||||||
|
status: done
|
||||||
|
priority: high
|
||||||
|
```
|
||||||
|
|
||||||
|
Move capability catalog CRUD and read-only capability request list/detail routes
|
||||||
|
behind hub-core factories. Keep request workflow writes local until their State
|
||||||
|
Hub flow-transition, notification, reroute, and task-unblock behavior has an
|
||||||
|
explicit adapter seam.
|
||||||
|
|
||||||
|
## T04 - Resolve Repos Router Boundary
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: CUST-WP-0048-T04
|
||||||
|
status: todo
|
||||||
|
priority: high
|
||||||
|
```
|
||||||
|
|
||||||
|
Review the State Hub repos router and split reusable repo registry behavior
|
||||||
|
from dev-hub-specific onboarding, dispatch, DoI, scope-health, SBOM, and state
|
||||||
|
sync behavior. Either replace the reusable subset with a hub-core factory or
|
||||||
|
document the adapter seam needed before replacement.
|
||||||
|
|
||||||
|
## T05 - Resolve Capability Request Write Workflow Boundary
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: CUST-WP-0048-T05
|
||||||
|
status: todo
|
||||||
|
priority: high
|
||||||
|
```
|
||||||
|
|
||||||
|
Review capability request creation, acceptance, status changes, patching,
|
||||||
|
dispute, and reroute routes. Decide which write paths can move to hub-core via
|
||||||
|
callbacks and which require a dev-hub extension table or context mapping for
|
||||||
|
workstream/task references.
|
||||||
|
|
||||||
|
## T06 - Split Generic MCP Tool Registration
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: CUST-WP-0048-T06
|
||||||
|
status: todo
|
||||||
|
priority: medium
|
||||||
|
```
|
||||||
|
|
||||||
|
Replace generic State Hub MCP tool registrations with `HubCoreMCPServer`
|
||||||
|
composition or inheritance while keeping dev-hub-only tools local.
|
||||||
|
|
||||||
|
## T07 - Run Regression And Coupling Report
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: CUST-WP-0048-T07
|
||||||
|
status: todo
|
||||||
|
priority: high
|
||||||
|
```
|
||||||
|
|
||||||
|
Run full hub-core and State Hub regression suites after the remaining seams are
|
||||||
|
resolved. Update `docs/hub-core-extraction-boundary.md` with any remaining
|
||||||
|
couplings, deferred adapter seams, and the next safe migration step.
|
||||||
|
|
||||||
|
## T08 - Close Child Workplan And Return To Umbrella
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: CUST-WP-0048-T08
|
||||||
|
status: todo
|
||||||
|
priority: medium
|
||||||
|
```
|
||||||
|
|
||||||
|
When T04-T07 are complete or explicitly deferred, mark this workplan finished
|
||||||
|
and update `CUST-WP-0025-T08` so the umbrella can proceed to the dev-hub rename
|
||||||
|
phase.
|
||||||
Reference in New Issue
Block a user