From 78ee2ab9a15cbba7251e5d45ab2a1662873a2cb5 Mon Sep 17 00:00:00 2001 From: Egor Merkushev Date: Tue, 10 Mar 2026 06:23:16 +0300 Subject: [PATCH 1/7] Branch for P8-T3: prepare release 0.4.4 From 8a65e01bef7a1004ba93cf4e31bff153fae8172a Mon Sep 17 00:00:00 2001 From: Egor Merkushev Date: Tue, 10 Mar 2026 06:24:36 +0300 Subject: [PATCH 2/7] Select task P8-T3: Prepare for Release 0.4.4 --- SPECS/INPROGRESS/next.md | 38 ++++++++++---------------------------- SPECS/Workplan.md | 20 ++++++++++++++++++++ 2 files changed, 30 insertions(+), 28 deletions(-) diff --git a/SPECS/INPROGRESS/next.md b/SPECS/INPROGRESS/next.md index da12551..e680d83 100644 --- a/SPECS/INPROGRESS/next.md +++ b/SPECS/INPROGRESS/next.md @@ -1,33 +1,15 @@ -# Next Task: Unselected +# Next Task: P8-T3 — Prepare for Release 0.4.4 -## Selected Task +**Priority:** P0 +**Phase:** Phase 8 +**Effort:** 2 hours +**Dependencies:** None +**Status:** Selected -No active task is selected in `SPECS/INPROGRESS/`. +## Description -The most recently completed task was `T-011 — Emit synthetic broker tools/list_changed on catalog warm-up`, -archived on `2026-03-10` with verdict `PASS`. +Prepare patch release `0.4.4` for the work merged after `v0.4.3`, covering `T-010` and `T-011`. Update release metadata, sync README/DocC badges, record release notes in `CHANGELOG.md`, and validate the full pre-release publishing gate from `PUBLISHING.md`. -## Recently Archived +## Next Step -- `2026-03-10` — `T-011` archived with verdict `PASS` -- `2026-03-10` — `T-010` archived with verdict `PASS` -- `2026-03-10` — `P8-T2` archived with verdict `PASS` -- `2026-03-10` — `P1-T13` archived with verdict `PASS` -- `2026-03-10` — `P2-T8` archived with verdict `PASS` -- `2026-03-07` — `P8-T1` archived with verdict `PASS` -- `2026-03-07` — `P7-T5` archived with verdict `PASS` -- `2026-03-07` — `P7-T4` archived with verdict `PASS` -- `2026-03-07` — `FU-P7-T3-2` archived with verdict `PASS` -- `2026-03-07` — `FU-P7-T3-1` archived with verdict `PASS` - -## Post-Merge Action Required - -After the `P8-T2` PR merges to `main`, push the release tag to trigger publishing: - -```bash -git checkout main && git pull origin main -git tag v0.4.3 -git push origin v0.4.3 -``` - -Then verify GitHub Actions `publish-mcp.yml` completes successfully. +Run the PLAN command to generate the implementation-ready PRD. diff --git a/SPECS/Workplan.md b/SPECS/Workplan.md index 8d56120..db30b78 100644 --- a/SPECS/Workplan.md +++ b/SPECS/Workplan.md @@ -662,3 +662,23 @@ Add new tasks using the canonical template in [TASK_TEMPLATE.md](TASK_TEMPLATE.m - [ ] Git tag `v0.4.3` exists on `origin/main` (post-merge) - [ ] `https://pypi.org/project/mcpbridge-wrapper/0.4.3/` is accessible (post-merge) - [ ] GitHub Actions `publish-mcp.yml` run for tag `v0.4.3` shows all steps green (post-merge) + +#### ⬜️ P8-T3: Prepare for Release 0.4.4 +- **Description:** Prepare patch release `0.4.4` for the work merged after `v0.4.3`, covering the Xcode approval observation harness (`T-010`) and the synthetic broker `notifications/tools/list_changed` warm-up notification (`T-011`). Bump release metadata to `0.4.4`, sync the README and DocC overview badges, add changelog release notes, and validate the full pre-release publishing gate described in `PUBLISHING.md`. +- **Priority:** P0 +- **Dependencies:** none +- **Parallelizable:** no +- **Outputs/Artifacts:** + - `pyproject.toml` and `server.json` updated to `0.4.4` + - `README.md` and `Sources/XcodeMCPWrapper/Documentation.docc/XcodeMCPWrapper.md` version badges updated to `v0.4.4` + - `CHANGELOG.md` release notes for `0.4.4` + - `SPECS/ARCHIVE/P8-T3_Prepare_for_Release_0.4.4/` with archived PRD, validation report, and review report + - (Post-merge, human action) `git tag v0.4.4` pushed from `main` to trigger PyPI + MCP Registry publication +- **Acceptance Criteria:** + - [ ] `pyproject.toml` and `server.json` both contain version `0.4.4` + - [ ] `README.md` and `Sources/XcodeMCPWrapper/Documentation.docc/XcodeMCPWrapper.md` both reflect `v0.4.4` + - [ ] `CHANGELOG.md` contains a `[0.4.4]` entry dated `2026-03-10` covering `T-010` and `T-011` + - [ ] `pytest tests/ -v --cov=src --cov-report=term`, `ruff check src/ tests/`, `ruff format --check src/ tests/`, `mypy src/`, `make doccheck-all`, `python -m build`, and `twine check dist/*` all pass + - [ ] Git tag `v0.4.4` exists on `origin/main` (post-merge) + - [ ] `https://pypi.org/project/mcpbridge-wrapper/0.4.4/` is accessible (post-merge) + - [ ] GitHub Actions `publish-mcp.yml` run for tag `v0.4.4` shows all steps green (post-merge) From c702928931f0fb5f2c24864311f2c13b896e17ec Mon Sep 17 00:00:00 2001 From: Egor Merkushev Date: Tue, 10 Mar 2026 06:25:23 +0300 Subject: [PATCH 3/7] Plan task P8-T3: Prepare for Release 0.4.4 --- .../P8-T3_Prepare_for_Release_0.4.4.md | 131 ++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 SPECS/INPROGRESS/P8-T3_Prepare_for_Release_0.4.4.md diff --git a/SPECS/INPROGRESS/P8-T3_Prepare_for_Release_0.4.4.md b/SPECS/INPROGRESS/P8-T3_Prepare_for_Release_0.4.4.md new file mode 100644 index 0000000..bb2ad07 --- /dev/null +++ b/SPECS/INPROGRESS/P8-T3_Prepare_for_Release_0.4.4.md @@ -0,0 +1,131 @@ +# P8-T3: Prepare for Release 0.4.4 + +**Status:** In Progress +**Date:** 2026-03-10 +**Priority:** P0 +**Dependencies:** T-010, T-011 (completed) + +--- + +## Objective + +Prepare patch release `0.4.4` for the work merged after `v0.4.3`: +- `T-010` added a deterministic Xcode approval observation harness so startup behavior around the Xcode "Allow" dialog can be captured and replayed as structured protocol traces. +- `T-011` taught the broker to emit a synthetic `notifications/tools/list_changed` when the warmed tool catalog first becomes usable, compensating for missing upstream change notifications after Xcode approval. + +The deliverable is a merge-ready branch that updates release metadata, records release notes in `CHANGELOG.md`, passes the full pre-release quality gate suite required by `PUBLISHING.md`, and leaves exact post-merge tag/publish commands for the human operator. + +**Scope boundary:** Creating and pushing the `v0.4.4` tag, publishing to PyPI, and publishing to the MCP Registry remain post-merge human actions on `main`. This task prepares the branch and validates the repository state before those actions. + +--- + +## Current State + +| Artifact | Current value | +|----------|---------------| +| `pyproject.toml` version | `0.4.3` | +| `server.json` root version | `0.4.3` | +| `server.json` package version | `0.4.3` | +| `README.md` version badge | `v0.4.3` | +| `Sources/XcodeMCPWrapper/Documentation.docc/XcodeMCPWrapper.md` version badge | `v0.4.3` | +| Latest git tag on current baseline | `v0.4.3` | +| Unreleased merged work since `v0.4.3` | `T-010`, `T-011` | + +--- + +## Deliverables + +1. **`pyproject.toml`** — `[project].version` updated to `0.4.4`. +2. **`server.json`** — root `version` and `packages[0].version` updated to `0.4.4`. +3. **`README.md`** — version badge updated to `v0.4.4`. +4. **`Sources/XcodeMCPWrapper/Documentation.docc/XcodeMCPWrapper.md`** — DocC overview badge updated to `v0.4.4`. +5. **`CHANGELOG.md`** — new `[0.4.4] - 2026-03-10` entry summarizing the shipped tooling/runtime changes. +6. **`SPECS/INPROGRESS/P8-T3_Validation_Report.md`** — records release metadata checks, quality gates, and post-merge publish instructions. + +--- + +## Implementation Steps + +### 1. Update release metadata + +Use the existing release helpers so version fields stay in sync: + +```bash +make bump-version VERSION=0.4.4 +make badge-version TAG=v0.4.4 +python scripts/update_version_badge.py --readme Sources/XcodeMCPWrapper/Documentation.docc/XcodeMCPWrapper.md --tag v0.4.4 +``` + +This updates: +- `pyproject.toml` +- `server.json` +- `README.md` version badge block +- `Sources/XcodeMCPWrapper/Documentation.docc/XcodeMCPWrapper.md` version badge block + +### 2. Add release notes + +Update `CHANGELOG.md` with a new `0.4.4` entry that covers: +- the Xcode approval observation harness and its troubleshooting/docs value (`T-010`) +- the broker-side synthetic `notifications/tools/list_changed` signal after warm-up (`T-011`) + +### 3. Run pre-release quality gates + +Run the full local validation suite required by FLOW and `PUBLISHING.md`: + +```bash +pytest tests/ -v --cov=src --cov-report=term +python -m ruff check src/ tests/ +python -m ruff format --check src/ tests/ +mypy src/ +make doccheck-all +python -m build +twine check dist/* +``` + +### 4. Record release validation + +Write `SPECS/INPROGRESS/P8-T3_Validation_Report.md` with: +- the exact versions now present in release metadata +- changelog verification +- quality gate outcomes +- explicit post-merge steps for tagging and publish verification + +### 5. Post-merge operator steps + +These commands must be executed only after the PR merges into `main`: + +```bash +git checkout main +git pull origin main +git tag v0.4.4 +git push origin v0.4.4 +``` + +Then verify: +- GitHub Actions `publish-mcp.yml` succeeds for `v0.4.4` +- PyPI serves `mcpbridge-wrapper==0.4.4` +- the MCP Registry reflects `0.4.4` + +--- + +## Acceptance Criteria + +- [ ] `pyproject.toml` contains `version = "0.4.4"`. +- [ ] `server.json` root `version` and `packages[0].version` both equal `0.4.4`. +- [ ] `README.md` and `Sources/XcodeMCPWrapper/Documentation.docc/XcodeMCPWrapper.md` version badges reflect `v0.4.4`. +- [ ] `CHANGELOG.md` contains `[0.4.4] - 2026-03-10` and summarizes `T-010` and `T-011`. +- [ ] `pytest tests/ -v --cov=src --cov-report=term` passes with coverage >=90%. +- [ ] `python -m ruff check src/ tests/` passes. +- [ ] `python -m ruff format --check src/ tests/` passes. +- [ ] `mypy src/` passes. +- [ ] `make doccheck-all` passes. +- [ ] `python -m build` and `twine check dist/*` pass. +- [ ] Validation report captures the exact post-merge commands and verification steps for `v0.4.4`. + +--- + +## Risk Notes + +- `main` is protected. Do not tag or publish from this feature branch; tag only after merge. +- `make badge-version` must be called with explicit `TAG=v0.4.4` so it does not reuse `v0.4.3`. +- The release notes must stay scoped to work already merged after `v0.4.3`; do not pull in unmerged follow-ups or future publish verification results. From 80085e9ecb05da3d8b236d63e577d56142737d15 Mon Sep 17 00:00:00 2001 From: Egor Merkushev Date: Tue, 10 Mar 2026 06:27:52 +0300 Subject: [PATCH 4/7] Implement P8-T3: prepare release metadata and changelog --- CHANGELOG.md | 11 ++++ README.md | 2 +- SPECS/INPROGRESS/P8-T3_Validation_Report.md | 65 +++++++++++++++++++ .../Documentation.docc/XcodeMCPWrapper.md | 2 +- pyproject.toml | 2 +- server.json | 4 +- 6 files changed, 81 insertions(+), 5 deletions(-) create mode 100644 SPECS/INPROGRESS/P8-T3_Validation_Report.md diff --git a/CHANGELOG.md b/CHANGELOG.md index a131ed8..86db1dd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,16 @@ All notable changes to the mcpbridge-wrapper project will be documented in this The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.4.4] - 2026-03-10 + +### Added + +- Added a deterministic Xcode approval observation harness that can script MCP startup probes, capture timestamped protocol traces, and document approval-race behavior for troubleshooting and validation workflows. + +### Fixed + +- Broker now emits a synthetic `notifications/tools/list_changed` when its warmed tool catalog first becomes usable, and again only when a later reconnect produces a materially different non-empty catalog, giving strict MCP clients an explicit refresh hint when upstream never sends one. + ## [0.4.3] - 2026-03-10 ### Fixed @@ -113,6 +123,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - ✅ Support for all 20 Xcode MCP tools - ✅ Configuration examples for Cursor, Claude Code, and Codex CLI +[0.4.4]: https://github.com/SoundBlaster/XcodeMCPWrapper/releases/tag/v0.4.4 [0.4.3]: https://github.com/SoundBlaster/XcodeMCPWrapper/releases/tag/v0.4.3 [0.4.2]: https://github.com/SoundBlaster/XcodeMCPWrapper/releases/tag/v0.4.2 [0.4.1]: https://github.com/SoundBlaster/XcodeMCPWrapper/releases/tag/v0.4.1 diff --git a/README.md b/README.md index 830aeb8..19c2c12 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ -[![Version](https://img.shields.io/badge/version-0.4.3-blue.svg)](https://github.com/SoundBlaster/XcodeMCPWrapper/releases/tag/v0.4.3) +[![Version](https://img.shields.io/badge/version-0.4.4-blue.svg)](https://github.com/SoundBlaster/XcodeMCPWrapper/releases/tag/v0.4.4) [![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) diff --git a/SPECS/INPROGRESS/P8-T3_Validation_Report.md b/SPECS/INPROGRESS/P8-T3_Validation_Report.md new file mode 100644 index 0000000..43840a4 --- /dev/null +++ b/SPECS/INPROGRESS/P8-T3_Validation_Report.md @@ -0,0 +1,65 @@ +# P8-T3 Validation Report — Prepare for Release 0.4.4 + +**Date:** 2026-03-10 +**Branch:** `codex/feature/P8-T3-prepare-release-0.4.4` +**Python:** `3.10.19` +**Verdict:** PASS + +--- + +## Deliverables Checklist + +| Deliverable | Status | Detail | +|-------------|--------|--------| +| `pyproject.toml` version = `0.4.4` | ✅ PASS | Updated via `make bump-version VERSION=0.4.4` | +| `server.json` root `version` = `0.4.4` | ✅ PASS | Updated by `scripts/publish_helper.py` | +| `server.json` `packages[0].version` = `0.4.4` | ✅ PASS | Updated by `scripts/publish_helper.py` | +| `README.md` badge updated to `v0.4.4` | ✅ PASS | Updated via `make badge-version TAG=v0.4.4` | +| `Sources/XcodeMCPWrapper/Documentation.docc/XcodeMCPWrapper.md` badge updated to `v0.4.4` | ✅ PASS | Synced via `python scripts/update_version_badge.py --readme ... --tag v0.4.4` | +| `CHANGELOG.md` contains `[0.4.4] - 2026-03-10` | ✅ PASS | Added release notes for `T-010` and `T-011` | + +--- + +## Quality Gates + +| Gate | Result | Detail | +|------|--------|--------| +| `pytest tests/ -v --cov=src --cov-report=term` | ✅ PASS | `923 passed, 5 skipped, 2 warnings in 28.60s` | +| Coverage >= 90% | ✅ PASS | Total coverage: **91.62%** | +| `python -m ruff check src/ tests/` | ✅ PASS | All checks passed | +| `python -m ruff format --check src/ tests/` | ✅ PASS | `56 files already formatted` | +| `mypy src/` | ✅ PASS | `Success: no issues found in 20 source files` | +| `make doccheck-all` | ✅ PASS | README and DocC overview stayed in sync across unstaged, staged, and branch scopes | +| `python -m build` | ✅ PASS | Built `dist/mcpbridge_wrapper-0.4.4.tar.gz` and `dist/mcpbridge_wrapper-0.4.4-py3-none-any.whl` | +| `twine check dist/*` | ✅ PASS | Wheel and sdist metadata both passed | + +--- + +## Release Notes Scope + +`0.4.4` is prepared as a patch release for the work merged after `v0.4.3`: + +- `T-010` adds the Xcode approval observation harness so approval-race behavior can be captured as timestamped MCP traces during troubleshooting and validation. +- `T-011` adds a broker-side synthetic `notifications/tools/list_changed` signal when the warmed tool catalog first becomes usable, and only re-emits it when a later reconnect changes the non-empty catalog. + +--- + +## Remaining Steps (post-merge) + +The following steps are intentionally deferred until the PR merges into `main`: + +1. `git checkout main` +2. `git pull origin main` +3. `git tag v0.4.4` +4. `git push origin v0.4.4` +5. Verify GitHub Actions `publish-mcp.yml` for `v0.4.4` completes successfully +6. Verify `https://pypi.org/project/mcpbridge-wrapper/0.4.4/` is live +7. Verify the MCP Registry reflects `0.4.4` + +These checks are acceptance criteria that cannot be completed on the feature branch without publishing from the wrong ref. + +--- + +## Summary + +All pre-merge release-preparation deliverables are complete. Version metadata is consistent across package metadata, MCP Registry manifest, README, and DocC overview; the changelog captures the shipped work; and the full local validation suite required by FLOW and `PUBLISHING.md` passed. diff --git a/Sources/XcodeMCPWrapper/Documentation.docc/XcodeMCPWrapper.md b/Sources/XcodeMCPWrapper/Documentation.docc/XcodeMCPWrapper.md index a46f022..0efd7bd 100644 --- a/Sources/XcodeMCPWrapper/Documentation.docc/XcodeMCPWrapper.md +++ b/Sources/XcodeMCPWrapper/Documentation.docc/XcodeMCPWrapper.md @@ -8,7 +8,7 @@ Model Context Protocol (MCP). [https://github.com/SoundBlaster/XcodeMCPWrapper](https://github.com/SoundBlaster/XcodeMCPWrapper) -[![Version](https://img.shields.io/badge/version-0.4.3-blue.svg)](https://github.com/SoundBlaster/XcodeMCPWrapper/releases/tag/v0.4.3) +[![Version](https://img.shields.io/badge/version-0.4.4-blue.svg)](https://github.com/SoundBlaster/XcodeMCPWrapper/releases/tag/v0.4.4) ## Overview diff --git a/pyproject.toml b/pyproject.toml index 0ad1615..a908df9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "mcpbridge-wrapper" -version = "0.4.3" +version = "0.4.4" description = "Python wrapper for xcrun mcpbridge that adds structuredContent to MCP responses" readme = "README.md" requires-python = ">=3.9" diff --git a/server.json b/server.json index be1099a..6a6d987 100644 --- a/server.json +++ b/server.json @@ -3,7 +3,7 @@ "name": "io.github.SoundBlaster/xcode-mcpbridge-wrapper", "title": "Xcode: MCP Bridge Wrapper for Cursor", "description": "Python wrapper that makes Xcode's MCP bridge compatible with strict MCP clients like Cursor", - "version": "0.4.3", + "version": "0.4.4", "repository": { "url": "https://github.com/SoundBlaster/XcodeMCPWrapper", "source": "github" @@ -13,7 +13,7 @@ { "registryType": "pypi", "identifier": "mcpbridge-wrapper", - "version": "0.4.3", + "version": "0.4.4", "transport": { "type": "stdio" }, From 94706fe3e57eac1241640337bb6cf59416156f03 Mon Sep 17 00:00:00 2001 From: Egor Merkushev Date: Tue, 10 Mar 2026 06:29:45 +0300 Subject: [PATCH 5/7] Archive task P8-T3: Prepare for Release 0.4.4 (PASS) --- SPECS/ARCHIVE/INDEX.md | 2 + .../P8-T3_Prepare_for_Release_0.4.4.md | 4 ++ .../P8-T3_Validation_Report.md | 0 SPECS/INPROGRESS/next.md | 38 ++++++++++++++----- SPECS/Workplan.md | 24 ++++++------ 5 files changed, 47 insertions(+), 21 deletions(-) rename SPECS/{INPROGRESS => ARCHIVE/P8-T3_Prepare_for_Release_0.4.4}/P8-T3_Prepare_for_Release_0.4.4.md (99%) rename SPECS/{INPROGRESS => ARCHIVE/P8-T3_Prepare_for_Release_0.4.4}/P8-T3_Validation_Report.md (100%) diff --git a/SPECS/ARCHIVE/INDEX.md b/SPECS/ARCHIVE/INDEX.md index aa86310..f3ed4f2 100644 --- a/SPECS/ARCHIVE/INDEX.md +++ b/SPECS/ARCHIVE/INDEX.md @@ -6,6 +6,7 @@ | Task ID | Folder | Archived | Verdict | |---------|--------|----------|---------| +| P8-T3 | [P8-T3_Prepare_for_Release_0.4.4/](P8-T3_Prepare_for_Release_0.4.4/) | 2026-03-10 | PASS | | T-011 | [T-011_Emit_synthetic_broker_tools_list_changed_on_catalog_warm-up/](T-011_Emit_synthetic_broker_tools_list_changed_on_catalog_warm-up/) | 2026-03-10 | PASS | | T-010 | [T-010_Build_Xcode_approval_observation_harness/](T-010_Build_Xcode_approval_observation_harness/) | 2026-03-10 | PASS | | P8-T2 | [P8-T2_Prepare_for_Release_0.4.3/](P8-T2_Prepare_for_Release_0.4.3/) | 2026-03-10 | PASS | @@ -654,3 +655,4 @@ | 2026-03-10 | P1-T13 | Archived REVIEW_p1_t13_editable_install_troubleshooting report | | 2026-03-10 | T-010 | Archived Build_Xcode_approval_observation_harness (PASS) | | 2026-03-10 | T-010 | Archived REVIEW_t010_xcode_approval_harness report | +| 2026-03-10 | P8-T3 | Archived Prepare_for_Release_0.4.4 (PASS) | diff --git a/SPECS/INPROGRESS/P8-T3_Prepare_for_Release_0.4.4.md b/SPECS/ARCHIVE/P8-T3_Prepare_for_Release_0.4.4/P8-T3_Prepare_for_Release_0.4.4.md similarity index 99% rename from SPECS/INPROGRESS/P8-T3_Prepare_for_Release_0.4.4.md rename to SPECS/ARCHIVE/P8-T3_Prepare_for_Release_0.4.4/P8-T3_Prepare_for_Release_0.4.4.md index bb2ad07..3f6c6a8 100644 --- a/SPECS/INPROGRESS/P8-T3_Prepare_for_Release_0.4.4.md +++ b/SPECS/ARCHIVE/P8-T3_Prepare_for_Release_0.4.4/P8-T3_Prepare_for_Release_0.4.4.md @@ -129,3 +129,7 @@ Then verify: - `main` is protected. Do not tag or publish from this feature branch; tag only after merge. - `make badge-version` must be called with explicit `TAG=v0.4.4` so it does not reuse `v0.4.3`. - The release notes must stay scoped to work already merged after `v0.4.3`; do not pull in unmerged follow-ups or future publish verification results. + +--- +**Archived:** 2026-03-10 +**Verdict:** PASS diff --git a/SPECS/INPROGRESS/P8-T3_Validation_Report.md b/SPECS/ARCHIVE/P8-T3_Prepare_for_Release_0.4.4/P8-T3_Validation_Report.md similarity index 100% rename from SPECS/INPROGRESS/P8-T3_Validation_Report.md rename to SPECS/ARCHIVE/P8-T3_Prepare_for_Release_0.4.4/P8-T3_Validation_Report.md diff --git a/SPECS/INPROGRESS/next.md b/SPECS/INPROGRESS/next.md index e680d83..ef4d55b 100644 --- a/SPECS/INPROGRESS/next.md +++ b/SPECS/INPROGRESS/next.md @@ -1,15 +1,33 @@ -# Next Task: P8-T3 — Prepare for Release 0.4.4 +# Next Task: Unselected -**Priority:** P0 -**Phase:** Phase 8 -**Effort:** 2 hours -**Dependencies:** None -**Status:** Selected +## Selected Task -## Description +No active task is selected in `SPECS/INPROGRESS/`. -Prepare patch release `0.4.4` for the work merged after `v0.4.3`, covering `T-010` and `T-011`. Update release metadata, sync README/DocC badges, record release notes in `CHANGELOG.md`, and validate the full pre-release publishing gate from `PUBLISHING.md`. +The most recently completed task was `P8-T3 — Prepare for Release 0.4.4`, +archived on `2026-03-10` with verdict `PASS`. -## Next Step +## Recently Archived -Run the PLAN command to generate the implementation-ready PRD. +- `2026-03-10` — `P8-T3` archived with verdict `PASS` +- `2026-03-10` — `T-011` archived with verdict `PASS` +- `2026-03-10` — `T-010` archived with verdict `PASS` +- `2026-03-10` — `P8-T2` archived with verdict `PASS` +- `2026-03-10` — `P1-T13` archived with verdict `PASS` +- `2026-03-10` — `P2-T8` archived with verdict `PASS` +- `2026-03-07` — `P8-T1` archived with verdict `PASS` +- `2026-03-07` — `P7-T5` archived with verdict `PASS` +- `2026-03-07` — `P7-T4` archived with verdict `PASS` +- `2026-03-07` — `FU-P7-T3-2` archived with verdict `PASS` + +## Post-Merge Action Required + +After the `P8-T3` PR merges to `main`, push the release tag to trigger publishing: + +```bash +git checkout main && git pull origin main +git tag v0.4.4 +git push origin v0.4.4 +``` + +Then verify GitHub Actions `publish-mcp.yml` completes successfully. diff --git a/SPECS/Workplan.md b/SPECS/Workplan.md index db30b78..5685f49 100644 --- a/SPECS/Workplan.md +++ b/SPECS/Workplan.md @@ -663,22 +663,24 @@ Add new tasks using the canonical template in [TASK_TEMPLATE.md](TASK_TEMPLATE.m - [ ] `https://pypi.org/project/mcpbridge-wrapper/0.4.3/` is accessible (post-merge) - [ ] GitHub Actions `publish-mcp.yml` run for tag `v0.4.3` shows all steps green (post-merge) -#### ⬜️ P8-T3: Prepare for Release 0.4.4 -- **Description:** Prepare patch release `0.4.4` for the work merged after `v0.4.3`, covering the Xcode approval observation harness (`T-010`) and the synthetic broker `notifications/tools/list_changed` warm-up notification (`T-011`). Bump release metadata to `0.4.4`, sync the README and DocC overview badges, add changelog release notes, and validate the full pre-release publishing gate described in `PUBLISHING.md`. +#### ✅ P8-T3: Prepare for Release 0.4.4 +- **Status:** ✅ Completed (2026-03-10) +- **Description:** Prepared patch release `0.4.4` for the work merged after `v0.4.3`, covering the Xcode approval observation harness (`T-010`) and the broker-side synthetic `notifications/tools/list_changed` warm-up notification (`T-011`). Bumped release metadata to `0.4.4`, synced the README and DocC overview badges, added changelog release notes, and validated the full local pre-release gate suite from `PUBLISHING.md`. Tagging and publication remain post-merge actions on `main`. - **Priority:** P0 - **Dependencies:** none - **Parallelizable:** no - **Outputs/Artifacts:** - - `pyproject.toml` and `server.json` updated to `0.4.4` - - `README.md` and `Sources/XcodeMCPWrapper/Documentation.docc/XcodeMCPWrapper.md` version badges updated to `v0.4.4` - - `CHANGELOG.md` release notes for `0.4.4` - - `SPECS/ARCHIVE/P8-T3_Prepare_for_Release_0.4.4/` with archived PRD, validation report, and review report - - (Post-merge, human action) `git tag v0.4.4` pushed from `main` to trigger PyPI + MCP Registry publication + - `pyproject.toml` — version set to `0.4.4` + - `server.json` — root and package versions set to `0.4.4` + - `README.md` and `Sources/XcodeMCPWrapper/Documentation.docc/XcodeMCPWrapper.md` — version badges updated to `v0.4.4` + - `CHANGELOG.md` — `[0.4.4]` entry added for `T-010` and `T-011` + - `SPECS/ARCHIVE/P8-T3_Prepare_for_Release_0.4.4/` — archived PRD + validation report + - (Post-merge, human action) `git tag v0.4.4` push triggers PyPI + MCP Registry publish - **Acceptance Criteria:** - - [ ] `pyproject.toml` and `server.json` both contain version `0.4.4` - - [ ] `README.md` and `Sources/XcodeMCPWrapper/Documentation.docc/XcodeMCPWrapper.md` both reflect `v0.4.4` - - [ ] `CHANGELOG.md` contains a `[0.4.4]` entry dated `2026-03-10` covering `T-010` and `T-011` - - [ ] `pytest tests/ -v --cov=src --cov-report=term`, `ruff check src/ tests/`, `ruff format --check src/ tests/`, `mypy src/`, `make doccheck-all`, `python -m build`, and `twine check dist/*` all pass + - [x] `pyproject.toml` and `server.json` both contain version `0.4.4` + - [x] `README.md` and `Sources/XcodeMCPWrapper/Documentation.docc/XcodeMCPWrapper.md` both reflect `v0.4.4` + - [x] `CHANGELOG.md` contains a `[0.4.4]` entry dated `2026-03-10` covering `T-010` and `T-011` + - [x] `pytest tests/ -v --cov=src --cov-report=term`, `ruff check src/ tests/`, `ruff format --check src/ tests/`, `mypy src/`, `make doccheck-all`, `python -m build`, and `twine check dist/*` all pass - [ ] Git tag `v0.4.4` exists on `origin/main` (post-merge) - [ ] `https://pypi.org/project/mcpbridge-wrapper/0.4.4/` is accessible (post-merge) - [ ] GitHub Actions `publish-mcp.yml` run for tag `v0.4.4` shows all steps green (post-merge) From 84b5f8543df74b894e580e2df1650d7e44ee3f2f Mon Sep 17 00:00:00 2001 From: Egor Merkushev Date: Tue, 10 Mar 2026 06:30:12 +0300 Subject: [PATCH 6/7] Review P8-T3: release 0.4.4 preparation --- .../REVIEW_release_0.4.4_preparation.md | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 SPECS/INPROGRESS/REVIEW_release_0.4.4_preparation.md diff --git a/SPECS/INPROGRESS/REVIEW_release_0.4.4_preparation.md b/SPECS/INPROGRESS/REVIEW_release_0.4.4_preparation.md new file mode 100644 index 0000000..39dacb2 --- /dev/null +++ b/SPECS/INPROGRESS/REVIEW_release_0.4.4_preparation.md @@ -0,0 +1,34 @@ +## REVIEW REPORT — release_0.4.4_preparation + +**Scope:** `origin/main..HEAD` +**Files:** 10 + +### Summary Verdict +- [x] Approve +- [ ] Approve with comments +- [ ] Request changes +- [ ] Block + +### Critical Issues + +- None. + +### Secondary Issues + +- None. + +### Architectural Notes + +- The release-preparation branch keeps publish side effects out of scope for the PR itself, which matches the protected-`main` workflow documented in `CONTRIBUTING.md` and `PUBLISHING.md`. +- README and DocC overview version badges were updated together, so the branch remains compatible with `make doccheck-all`. +- `CHANGELOG.md` stays narrowly scoped to the work merged after `v0.4.3`, which keeps the `0.4.4` patch release reviewable and avoids over-reporting unpublished work. + +### Tests + +- `pytest tests/ -v --cov=src --cov-report=term` passed with `923 passed, 5 skipped, 2 warnings` and `91.62%` total coverage. +- `python -m ruff check src/ tests/`, `python -m ruff format --check src/ tests/`, `mypy src/`, `make doccheck-all`, `python -m build`, and `twine check dist/*` all passed. + +### Next Steps + +- No actionable review findings. FOLLOW-UP is skipped. +- After merge, run the documented `git tag v0.4.4` / `git push origin v0.4.4` sequence on `main` and verify the `publish-mcp.yml` workflow, PyPI package page, and MCP Registry entry. From b6ac75c4557e58c8adeec31bd6bbae198d183d9e Mon Sep 17 00:00:00 2001 From: Egor Merkushev Date: Tue, 10 Mar 2026 06:30:44 +0300 Subject: [PATCH 7/7] Archive REVIEW_release_0.4.4_preparation report --- SPECS/ARCHIVE/INDEX.md | 2 ++ .../REVIEW_release_0.4.4_preparation.md | 0 2 files changed, 2 insertions(+) rename SPECS/{INPROGRESS => ARCHIVE/P8-T3_Prepare_for_Release_0.4.4}/REVIEW_release_0.4.4_preparation.md (100%) diff --git a/SPECS/ARCHIVE/INDEX.md b/SPECS/ARCHIVE/INDEX.md index f3ed4f2..0a6fdfb 100644 --- a/SPECS/ARCHIVE/INDEX.md +++ b/SPECS/ARCHIVE/INDEX.md @@ -213,6 +213,7 @@ |------|-------------| | [REVIEW_t011_synthetic_broker_tools_list_changed.md](_Historical/REVIEW_t011_synthetic_broker_tools_list_changed.md) | Review report for T-011 | | [REVIEW_t010_xcode_approval_harness.md](_Historical/REVIEW_t010_xcode_approval_harness.md) | Review report for T-010 | +| [REVIEW_release_0.4.4_preparation.md](P8-T3_Prepare_for_Release_0.4.4/REVIEW_release_0.4.4_preparation.md) | Review report for P8-T3 | | [REVIEW_release_0.4.3_preparation.md](P8-T2_Prepare_for_Release_0.4.3/REVIEW_release_0.4.3_preparation.md) | Review report for P8-T2 | | [REVIEW_p1_t13_editable_install_troubleshooting.md](_Historical/REVIEW_p1_t13_editable_install_troubleshooting.md) | Review report for P1-T13 | | [REVIEW_p2_t8_tools_catalog_gate.md](_Historical/REVIEW_p2_t8_tools_catalog_gate.md) | Review report for P2-T8 | @@ -656,3 +657,4 @@ | 2026-03-10 | T-010 | Archived Build_Xcode_approval_observation_harness (PASS) | | 2026-03-10 | T-010 | Archived REVIEW_t010_xcode_approval_harness report | | 2026-03-10 | P8-T3 | Archived Prepare_for_Release_0.4.4 (PASS) | +| 2026-03-10 | P8-T3 | Archived REVIEW_release_0.4.4_preparation report | diff --git a/SPECS/INPROGRESS/REVIEW_release_0.4.4_preparation.md b/SPECS/ARCHIVE/P8-T3_Prepare_for_Release_0.4.4/REVIEW_release_0.4.4_preparation.md similarity index 100% rename from SPECS/INPROGRESS/REVIEW_release_0.4.4_preparation.md rename to SPECS/ARCHIVE/P8-T3_Prepare_for_Release_0.4.4/REVIEW_release_0.4.4_preparation.md