Skip to content

Move ThemeFinder into consult as a uv workspace member#1287

Closed
jjuritzno10 wants to merge 18 commits intomainfrom
feat/themefinder-monorepo
Closed

Move ThemeFinder into consult as a uv workspace member#1287
jjuritzno10 wants to merge 18 commits intomainfrom
feat/themefinder-monorepo

Conversation

@jjuritzno10
Copy link
Copy Markdown

@jjuritzno10 jjuritzno10 commented Apr 9, 2026

Summary

  • Copies the themefinder package into consult/themefinder/ and wires it up as a uv workspace member
  • Backend resolves themefinder from the local workspace instead of PyPI, eliminating the version bump/publish/pin cycle
  • Pipeline Dockerfiles (pipeline-sign-off, pipeline-mapping) install themefinder from local source via pip install ./themefinder
  • Backend Dockerfile updated for workspace-aware uv sync with root pyproject.toml and lockfile
  • Single root uv.lock replaces backend/uv.lock
  • Makefile gains test-themefinder, test-all, and run-evals targets

What changes

Area Before After
themefinder dependency PyPI version pin uv workspace member (local source)
Lockfile backend/uv.lock Root uv.lock (workspace-wide)
Pipeline Dockerfiles pip install themefinder==X.Y.Z COPY themefinder/ && pip install ./themefinder
Backend Dockerfile Copies only backend/ Copies workspace root config + themefinder source
Dev loop for themefinder changes Edit → bump → publish → update pins → rebuild Edit → it's immediately available

Verification (all pass locally)

Check Result
uv sync workspace resolution Pass
from themefinder.models import ThemeNode Pass
make test-themefinder Pass (82/82)
make test-backend Pass (346 passed, 9 skipped)
docker build -f backend/Dockerfile . Pass
docker build -f pipeline-sign-off/Dockerfile . Pass
docker build -f pipeline-mapping/Dockerfile . Pass

Follow-up PRs

  • PR 2: Migrate CI workflows (themefinder tests, evals, backend trigger paths)
  • PR 3: Auto-sync workflow to keep public i-dot-ai/themefinder repo in sync

Test plan

  • CI passes (backend tests, pre-commit)
  • Docker images build in CI pipeline
  • make serve starts backend + frontend successfully
  • themefinder imports work in running app

🤖 Generated with Claude Code

jjuritzno10 and others added 11 commits April 8, 2026 11:54
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copies the full themefinder codebase (src, tests, evals, docs, examples)
as a subdirectory. Excludes .git/, .github/, and uv.lock — workspace
lockfile will be generated in a subsequent commit.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Create root pyproject.toml with workspace config
- Add workspace source for themefinder in backend/pyproject.toml
- Delete backend/uv.lock in favor of root workspace lockfile
- Generate new uv.lock resolving both workspace members

Verified: uv sync succeeds, themefinder imports work from backend.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Pipelines will install themefinder from local source instead of PyPI.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Both pipeline-sign-off and pipeline-mapping now COPY and pip install
themefinder from the monorepo instead of pulling from PyPI.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The uv-packages stage now copies the workspace root config, lockfile,
and themefinder source so uv can resolve the workspace dependency.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds evals/, docs/, tests/, examples/, architecture/ to .dockerignore
to keep production image context small.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Update make install to use workspace-level uv sync
- Add make test-themefinder, test-all, run-evals targets

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The dev dependencies (pytest-asyncio, coverage, etc.) are defined in
[project.optional-dependencies] not [dependency-groups], so uv needs
--extra dev to make them available.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
uv resolves relative UV_PROJECT_ENVIRONMENT paths from the workspace
root, not the WORKDIR. Use absolute path /src/backend/venv so the venv
lands where the app stage expects it.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
All core migration checks pass: workspace resolution, themefinder
tests (82/82), backend tests (346 passed), and all 3 Docker builds.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2 Open source vulnerabilities detected - high severity
Aikido detected 2 vulnerabilities across 2 packages, it includes 2 high vulnerabilities.

Details

Remediation Aikido suggests bumping the vulnerable packages to a safe version.

Reply @AikidoSec ignore: [REASON] to ignore this issue.
More info

@jjuritzno10
Copy link
Copy Markdown
Author

Closing this as themefinder has moved on significantly in the past few days. Keeping the "PLAN" branch open.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant