|
| 1 | +# P8-T1: Release version 0.4.2 to PyPI and MCP Registry |
| 2 | + |
| 3 | +**Status:** In Progress |
| 4 | +**Date:** 2026-03-07 |
| 5 | +**Priority:** P0 |
| 6 | +**Dependencies:** P7-T5 (completed) |
| 7 | + |
| 8 | +--- |
| 9 | + |
| 10 | +## Objective |
| 11 | + |
| 12 | +Cut the `0.4.2` release to publish all unreleased Phase 5–7 work accumulated since the `v0.4.1` tag: |
| 13 | +- Phase 5: broker robustness improvements (--broker flag, auto-recovery, -32001 error, web-UI mismatch warning) |
| 14 | +- Phase 6: broker daemon status surface, terminal frontend (TUI) |
| 15 | +- Phase 7: broker console startup, doctor diagnostics, port-conflict recovery, TUI local fallback, broker UX docs |
| 16 | + |
| 17 | +--- |
| 18 | + |
| 19 | +## Current State |
| 20 | + |
| 21 | +| Artifact | Current value | |
| 22 | +|----------|---------------| |
| 23 | +| `pyproject.toml` version | `0.4.1` | |
| 24 | +| `server.json` version | `0.4.1` | |
| 25 | +| README badge | `v0.4.1` | |
| 26 | +| Latest PyPI release | `0.4.1` | |
| 27 | +| Latest git tag | `v0.4.1` (points to earlier commit, not HEAD) | |
| 28 | +| Unreleased commits since tag | ~80 commits across P5–P7 | |
| 29 | + |
| 30 | +--- |
| 31 | + |
| 32 | +## Deliverables |
| 33 | + |
| 34 | +1. **`pyproject.toml`** — version bumped to `0.4.2` |
| 35 | +2. **`server.json`** — version bumped to `0.4.2` (both root `version` and `packages[0].version`) |
| 36 | +3. **`README.md`** — version badge updated to `v0.4.2` |
| 37 | +4. **Git tag `v0.4.2`** — created on `main` (after PR merge) and pushed to `origin` |
| 38 | +5. **GitHub Actions `publish-mcp.yml`** — triggered by tag, publishes to PyPI + MCP Registry |
| 39 | + |
| 40 | +--- |
| 41 | + |
| 42 | +## Implementation Steps |
| 43 | + |
| 44 | +### 1. Bump versions (make bump-version) |
| 45 | +```bash |
| 46 | +make bump-version VERSION=0.4.2 |
| 47 | +``` |
| 48 | +Updates `pyproject.toml` and `server.json` atomically via `scripts/publish_helper.py`. |
| 49 | + |
| 50 | +### 2. Update README badge (make badge-version) |
| 51 | +```bash |
| 52 | +make badge-version TAG=v0.4.2 |
| 53 | +``` |
| 54 | +Updates the `<!-- version-badge:start -->` … `<!-- version-badge:end -->` block in `README.md`. |
| 55 | + |
| 56 | +### 3. Run quality gates |
| 57 | +- `pytest` — all tests pass |
| 58 | +- `ruff check src/` — no lint errors |
| 59 | +- `mypy src/` — type check passes |
| 60 | +- `pytest --cov` — coverage ≥ 90% |
| 61 | + |
| 62 | +### 4. Commit, push branch, open PR, merge to main |
| 63 | + |
| 64 | +### 5. Tag and push (after merge) |
| 65 | +```bash |
| 66 | +git tag v0.4.2 |
| 67 | +git push origin v0.4.2 |
| 68 | +``` |
| 69 | +This triggers `publish-mcp.yml` → publishes to PyPI and MCP Registry. |
| 70 | + |
| 71 | +--- |
| 72 | + |
| 73 | +## Acceptance Criteria |
| 74 | + |
| 75 | +- [ ] `pyproject.toml` version = `0.4.2` |
| 76 | +- [ ] `server.json` root `version` = `0.4.2` |
| 77 | +- [ ] `server.json` `packages[0].version` = `0.4.2` |
| 78 | +- [ ] README badge reflects `v0.4.2` |
| 79 | +- [ ] All quality gates pass (pytest, ruff, mypy, coverage ≥ 90%) |
| 80 | +- [ ] Git tag `v0.4.2` exists on `origin/main` |
| 81 | +- [ ] `https://pypi.org/project/mcpbridge-wrapper/0.4.2/` is accessible |
| 82 | +- [ ] GitHub Actions `publish-mcp.yml` run for `v0.4.2` shows all steps green |
| 83 | + |
| 84 | +--- |
| 85 | + |
| 86 | +## Risk Notes |
| 87 | + |
| 88 | +- The `publish-mcp.yml` tag push must happen on `main` after the PR merges — do NOT push the tag from the feature branch. |
| 89 | +- `make badge-version` reads the latest git tag; run it with explicit `TAG=v0.4.2` to avoid reading `v0.4.1`. |
| 90 | +- PyPI publish uses `skip-existing: true` so a re-run is safe if it partially fails. |
0 commit comments