kubeflow / kubeflow/docs-agent
[Pre-work] Codebase cleanup before GSoC project work begins
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 42
- Forks
- 111
- Avg merge
- 6d 23m
- Merged PRs (30d)
- 2
Description
Context
Before any new features land, there are 6 structural problems in the existing codebase that will block or corrupt downstream work if left unresolved. This issue tracks all of them.
These are not improvements — they are fixes to things that are already broken or ambiguous. Zero new features.
- Estimated: Week 1–2.
Execution Order
The order matters. Each item either unblocks the next or can safely run in parallel.
#72 ── ADR-008 (decide storage pattern)
↓
#28 ── Standardize MilvusClient across all servers
↓
#73 ── Kustomize restructure ←┐
↓ │ parallel
#74 ── _init() race condition ───────┘
#75 ── httpx per-request client ── (parallel with #73/#74)
↓
#76 ── CORS tightening (needs Kustomize overlays first)
Why this order
- ADR first — two storage patterns (
store_milvusvsstore_via_feast) co-exist after PR #58. Every pipeline issue downstream assumes one canonical path. Can't write that code until this decision is documented. - MilvusClient (#28) second —
server/app.pyandserver-https/app.pystill use the legacyconnections.connect()global state API. The_init()race (#74) and the 3-collection schema both inherit this bug. Fix the API first. - Kustomize (#73) before CORS (#76) — the clean CORS fix is an env var injected per overlay (
localhostin dev, production domain in OCI). Without overlays, you're hardcoding values. - Concurrency bugs (#74, #75) before agent layer — the Kagent-managed agent layer builds directly on top of these servers. Fix races now so the agent doesn't inherit them.
Child Issues
| # | What | Depends On | Blocks |
|---|---|---|---|
| #72 (this) | ADR-008 — formalize pymilvus over Feast | — | #28, pipeline work |
| #28 | Standardize MilvusClient across all servers | #72 | #74, ISSUE-06 |
| #73 | Restructure manifests/ into Kustomize base/overlay |
#28 | #76, ISSUE-03/04/05 |
| #74 | Fix _init() race condition in mcp-server/server.py |
#28 | Kagent agent layer |
| #75 | Fix httpx.AsyncClient per-request in server-https/app.py |
#28 | Kagent agent layer |
| #76 | Replace allow_origins=["*"] with env-var allowlist |
#73 | ISSUE-16 |
ADR-008 Task (this issue)
- PR #58 merged a Feast POC (
store_via_feast()) but the project is continuing with directpymilvus.
The decision is implicitly made but never written down.
Action:
- Write
docs/adr/ADR-008-vector-store-selection.md - Document: context, decision (MilvusClient/pymilvus), rationale (proven,
lighter deps, thread-safe), future path (Feast whenfeast[milvus]hits GA) - Mark
kagent-feast-mcp/pipelines/as legacy/optional in a comment - Reference ADR-008 in
README.md
Acceptance Criteria
docs/adr/ADR-008-vector-store-selection.mdexists and is mergedkagent-feast-mcp/pipelines/kubeflow-pipeline.pyhas a legacy comment
Child Issues
- #72
- (this) — ADR-008: formalize pymilvus over Feast
- #28
- #73
- #74
- #75
- #76
Note: closed before project work starts
References
- PR #58 — merged Feast POC that created the ambiguity
- GSoC design discussion: #59
- ADR format reference
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Read the ADR format reference and PR #58 for the storage decision context. Create docs/adr/ADR-008-vector-store-selection.md, add the requested legacy comment to kagent-feast-mcp/pipelines/kubeflow-pipeline.py, and reference the ADR in README.md. Done means the ADR exists with the listed sections and the acceptance criteria are satisfied.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- markdown, python
- Domain
- documentation
- Issue type
- Documentation
- Difficulty
- 2/5
- Estimated time
- Half a day
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 55/100