--- id: HUB-WP-0002 type: workplan title: "Import-refactor adapter seams for State Hub closeout" domain: inter_hub repo: hub-core status: ready owner: codex topic_slug: inter_hub created: "2026-06-22" updated: "2026-06-22" state_hub_workstream_id: "439b559b-fcb7-4d21-b831-cfc9c6bbc1a0" --- # Import-refactor adapter seams for State Hub closeout ## Goal Finish the hub-core side of **CUST-WP-0048** so State Hub can close the capability-request write workflow and generic MCP split without forking shared primitives. Child workplan: `~/the-custodian/workplans/CUST-WP-0048-hub-core-state-hub-import-refactor.md` Boundary reference: `~/the-custodian/docs/hub-core-extraction-boundary.md` `hub-core` already owns read paths, generic JSON adapter fields (`subject_refs`, `request_context`, `fulfillment_context`), and `HubCoreMCPServer`. Remaining seams are write workflows and host MCP composition. ## Capability Request Write Router Factory ```task id: HUB-WP-0002-T01 status: todo priority: high state_hub_task_id: "f2e0a8a1-1943-4d40-963b-3d736d2340bf" ``` Add a `create_capability_request_write_router` factory with host-injected models, schemas, and workflow callbacks for: - request creation - acceptance - status transitions - patch / dispute / reroute paths that today live in State Hub Callbacks must cover dev-hub side effects (flow transitions, notifications, task-unblock) without pulling workstream/task foreign keys into hub-core models. **Done when:** State Hub can mount write routes from the factory; hub-core tests cover callback invocation and route registration. ## MCP Server Composition Hooks ```task id: HUB-WP-0002-T02 status: todo priority: medium ``` Extend `HubCoreMCPServer` so State Hub can compose or subclass it while keeping dev-hub-only tools local. Provide a clear registration seam for host tools and document which ~17 generic tools stay in hub-core. **Done when:** State Hub MCP module imports `HubCoreMCPServer` for generic tools without duplicating orientation, messaging, capability, repo, TPSC, DoI, or risk/alert registrations. ## Regression And Boundary Update ```task id: HUB-WP-0002-T03 status: todo priority: high ``` After T01–T02 land (or are explicitly deferred with documented seams): - run full `hub-core` pytest and `~/state-hub` regression - update `hub-core-extraction-boundary.md` with resolved couplings and any deferred adapter points - hand results back so **CUST-WP-0048** T05–T07 can close **Done when:** both test suites pass and the extraction boundary reflects the new write/MCP seams.