Skip to content

fix(dx): resolve packaging version and CLI advertising drift (MUT-035, MUT-050, MUT-051) - #122

Merged
CodewithJha merged 1 commit into
CodewithJha:mainfrom
BasilZafar11:codex/issue-78-packaging-dx
Oct 14, 2026
Merged

CodewithJha merged 1 commit into
CodewithJha:mainfrom
BasilZafar11:codex/issue-78-packaging-dx

Conversation

@BasilZafar11

Copy link
Copy Markdown
Contributor

Fixes #78

Summary

  • Make the repository root an unversioned uv workspace. Move contributor dependencies to the default dev group, retain optional LLM dependencies in llm, and remove the duplicate root CLI entrypoint. Regenerate the lockfile and update CI, contributor instructions, sample setup, and support templates to uv sync --group dev.
  • Read Hosted API version from mutiny-api distribution metadata, with an explicit unreleased source fallback. Document the Hosted API as unreleased with an independent internal version, without changing release versions.
  • Replace the stock web README with Mutiny Hosted setup, API proxy/auth configuration, Windows instructions, and checks.
  • Remove the CLI Python 3.13 classifier so advertised minor versions match CI's 3.11/3.12 coverage. Clarify the source/workspace mutiny-api requirement in top-level and mutiny db --help output. CLI wheels still do not depend on or vendor the API.

Type of change

  • Bug fix
  • Tests
  • CLI / DX
  • Docs / community / DX

Checklist

  • Followed CONTRIBUTING.md, security policy, support guidance, and code of conduct
  • Linked related issue
  • Core stays free of framework SDK imports
  • Added regression coverage and wheel metadata assertions
  • Documentation matches the implemented workspace commands
  • One concern: packaging and contributor DX drift
  • Authorized local/offline checks only

Test plan

  • uv lock and uv sync --locked --group dev: successful, with no skipped root entrypoint warning.
  • uv run --locked ruff check: passed.
  • MUTINY_SAMPLE_OFFLINE=1 uv run --locked pytest -q --tb=short: 676 passed on local Python 3.13. CI continues to cover Python 3.11/3.12.
  • Initial packaging/version regressions: 17 passed. Final packaging rerun with wheel metadata assertions: 13 passed.
  • Sample offline mutiny init and mutiny run: successful; a violation regression was saved.
  • mutiny --version reports 0.2.0; mutiny db --help states the API/workspace requirement. Unit tests also exercise help with API imports unavailable.
  • Web typecheck/build and shell-based isolated artifact installation gate: left to CI; frontend changes are documentation only. Wheel builds and package integrity tests passed locally.

The setup migration from --extra dev to --group dev is documented in the changelog. Optional LLM setup uses --group llm. Branch starts from current upstream main.

@vercel

vercel Bot commented Oct 14, 2026

Copy link
Copy Markdown

@BasilZafar11 is attempting to deploy a commit to the priyanshu's projects Team on Vercel.

A member of the Team first needs to authorize it.

@BasilZafar11

Copy link
Copy Markdown
Contributor Author

Opened PR #122 to address this issue. It removes the root product version, reads API version from metadata, documents Hosted development, removes the unsupported Python 3.13 classifier, and clarifies that mutiny db requires the source/workspace API package.

All 676 tests pass, along with Ruff, wheel checks, and offline sample smoke.

#122

@CodewithJha CodewithJha left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

Thanks @BasilZafar11 — this is a careful, well-scoped packaging cleanup, and it lands every acceptance criterion in #78. Approving and merging.

What I verified on the branch

  • Full suite: MUTINY_SAMPLE_OFFLINE=1 uv run --locked pytest -q → 676 passed; uv run --locked ruff check clean; mypy clean on mutiny_api/__init__.py and db_cmd.py.
  • Offline sample mutiny run saves a violation regression; mutiny --version → 0.2.0; mutiny --help and mutiny db --help both state the source/workspace mutiny-api requirement.
  • Bare uv sync (what Railway and docker-compose run) still installs every workspace member, so python -m mutiny_api keeps booting; the root no longer emits the "not packaged / scripts skipped" warning.
  • Mutation check: reverting each fix to main individually (API __init__, CLI classifier, db help, root pyproject, web README) makes test_packaging_dx.py fail every time.
  • The new web README matches the code: next.config.ts default MUTINY_API_URL, the middleware's server-side bearer injection, and serve.py's fail-closed non-loopback binds.

What I liked

  • Making the root a virtual workspace with dependency groups fixes the version drift at its source instead of just bumping 0.1.0 → 0.2.0. It also removes the duplicate mutiny entrypoint and the redundant openai-agents extra.
  • The wheel-metadata assertions in test_package_release.py (no 3.13 classifier, no Requires-Dist: mutiny-api, no vendored mutiny_api/) check the shipped artifact itself, not just the pyproject.
  • Treating the API as "unreleased, independent version" is a valid answer to the first criterion, and it's documented in both READMEs.
  • Honest test plan: it says what you left to CI.

Non-blocking follow-ups (no action needed on this PR)

  • Because the workspace members now live in the dev group, bare uv sync on Railway/compose also installs pytest, pytest-asyncio and ruff into the Hosted runtime. That's harmless, but if #63 (compose/Railway hardening) is picked up, splitting runtime members into their own group and running uv sync --locked --no-dev --group <runtime> there would keep the runtime lean.
  • uv.lock moved from revision = 3 to revision = 5 (newer uv). CI and Dependabot handle it. Contributors on an older uv may need to upgrade before --locked passes.

@CodewithJha
CodewithJha merged commit a271366 into CodewithJha:main Oct 14, 2026
6 of 7 checks passed
@CodewithJha

Copy link
Copy Markdown
Owner

Merged in a271366, thanks again @BasilZafar11. #78 is now closed and indexed as shipped. If you'd like a next one that fits the packaging, CLI and test work you did here:

No pressure, and comment on the issue first so nobody duplicates the work.

CodewithJha pushed a commit that referenced this pull request Oct 14, 2026
Co-authored-by: Cursor <cursoragent@cursor.com>
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.

[DX] MUT-035, MUT-050, MUT-051: Version drift, 3.13 classifier, mutiny db advertised without mutiny-api

2 participants