feat(ecosystem): adopt hub-core dependency and CI pin gate (CORE-WP-0009)
Some checks failed
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / pytest-smoke (push) Failing after 2s
Build and Publish Container Image / build-and-push (push) Failing after 1m51s

Import slugify_or_default from hub-core, add contract tests, vendor hub-core in
Docker/Forgejo CI, document metadata isolation and pagination deferral, and
align INTENT/SCOPE with three-repo stack.
This commit is contained in:
tegwick 2026-07-11 01:26:53 +02:00
parent 564830c4aa
commit 0709262ffd
21 changed files with 1082 additions and 55 deletions

View file

@ -0,0 +1,109 @@
---
id: CORE-WP-0009
type: workplan
title: "Hub-core adoption and ecosystem integration"
domain: infotech
repo: core-hub
status: finished
owner: codex
topic_slug: infotech
created: "2026-07-09"
updated: "2026-07-11"
state_hub_workstream_id: "75d9f8fd-088a-4634-bf05-9c20ecfd37ae"
---
# Hub-core adoption and ecosystem integration
Parent: `~/the-custodian/workplans/CUST-WP-0057-hub-ecosystem-consolidation.md`
## Goal
Adopt `hub-core` as an editable dependency and eliminate duplicate shared
utilities while keeping framework models in `core_hub`.
## Add hub-core dependency
```task
id: CORE-WP-0009-T01
status: done
priority: high
state_hub_task_id: "5a9f1594-e3f1-4a53-a78a-2e4bbf4b9ee1"
```
Add `hub-core` to `pyproject.toml` with `[tool.uv.sources]` path dependency.
Done 2026-07-09: dependency and uv source added.
## Replace local slugify
```task
id: CORE-WP-0009-T02
status: done
priority: high
state_hub_task_id: "1f3827b3-e2e6-4d99-88c6-a83361f579c7"
```
Import `slugify_or_default` from `hub_core.utils.slugs` in `api/v2.py`; remove
local `slugify()` and `re` import used only for slugs.
Done 2026-07-09: `api/v2.py` uses hub-core util.
## Contract test for hub-core pin
```task
id: CORE-WP-0009-T03
status: done
priority: high
state_hub_task_id: "00d83bfe-cb31-4111-be12-afe9e94e88b2"
```
Add `tests/test_hub_core_imports.py` proving hub-core utils import and version pin.
Done 2026-07-09: test added.
## Document metadata isolation
```task
id: CORE-WP-0009-T04
status: done
priority: medium
state_hub_task_id: "1d1735ca-4f9b-4c1a-bcbd-c1697e434a77"
```
Link `docs/specs/core-hub-architecture.md` boundary section to
`hub-core/docs/metadata-isolation.md`.
Done 2026-07-09: architecture spec updated.
## Evaluate pagination utility adoption
```task
id: CORE-WP-0009-T05
status: done
priority: low
state_hub_task_id: "b2e9ebcd-7bfe-4838-8f93-85fe5afbb155"
```
Assess `hub_core.utils.pagination` for `/api/v2` list endpoints that grow beyond
in-memory `page()` helper. Defer if no paginated DB queries yet.
Done 2026-07-09: `docs/specs/pagination-adoption.md` records deferral until list
endpoints need server-side limit/offset or compatibility spec adds query params.
Sync pagination in hub-core targets async SQLAlchemy when triggered.
## CI pin gate
```task
id: CORE-WP-0009-T06
status: done
priority: medium
state_hub_task_id: "f4c95bdb-6743-4abd-adbf-65f9cfc68bdf"
```
Ensure Forgejo CI installs hub-core from build context or path dep before
`pytest`. Document in `Makefile` alongside `the-custodian/scripts/hub-ecosystem-regression.sh`.
Done 2026-07-09: `.forgejo/workflows/ci-smoke.yaml` pytest job vendors hub-core
sibling checkout; `image.yaml` and `Dockerfile` vendor hub-core for container
builds; `Makefile` adds `hub-core-pin`, `ecosystem-regression`, and
`container-build` hub-core context.