diff --git a/SPECS/Workplan.md b/SPECS/Workplan.md index e9bb0c20..87b1a443 100644 --- a/SPECS/Workplan.md +++ b/SPECS/Workplan.md @@ -61,6 +61,9 @@ Create a Python-based protocol compatibility wrapper that intercepts MCP respons ### Phase 13: Persistent Broker & Shared Xcode Session **Intent:** Introduce a long-lived broker connection to Xcode MCP so multiple short-lived clients can reuse one upstream session and reduce repeated Xcode permission prompts. +### Phase 14: Release 0.4.0 Readiness +**Intent:** Close release-blocking findings from the 0.4.0 readiness review across broker runtime safety, package metadata, versioning, and build compliance. + --- ## 3. Tasks @@ -2306,6 +2309,68 @@ Phase 9 Follow-up Backlog --- +### Phase 14: Release 0.4.0 Readiness + +#### ⬜️ P14-T1: Bound per-session ID restore maps in broker transport +- **Description:** Prevent unbounded memory growth in long-lived broker sessions by pruning/removing alias/restore entries once responses are routed (and define safe behavior when local ID space wraps). +- **Priority:** P1 +- **Dependencies:** FU-P13-T11, FU-P13-T15 +- **Parallelizable:** no +- **Outputs/Artifacts:** + - Updated `src/mcpbridge_wrapper/broker/transport.py` map lifecycle management for `id_restore`, `string_id_map`, and `int_id_map` + - Regression tests in `tests/unit/test_broker_transport.py` for long-lived/large-ID request streams +- **Acceptance Criteria:** + - [ ] Per-session restore/alias maps do not grow unbounded for completed requests + - [ ] Existing ID round-trip fidelity guarantees remain intact for int and string IDs + - [ ] Tests cover wrap/prune behavior and pass in CI + +--- + +#### ⬜️ P14-T3: Reconcile declared Python support with tested matrix +- **Description:** Resolve mismatch between declared Python compatibility and CI coverage by aligning `requires-python`/classifiers/docs with supported and continuously-tested interpreter versions. +- **Priority:** P1 +- **Dependencies:** none +- **Parallelizable:** yes +- **Outputs/Artifacts:** + - Updated compatibility declarations in `pyproject.toml` and documentation badges/text + - Updated `.github/workflows/ci.yml` matrix and/or version floor to match declared support +- **Acceptance Criteria:** + - [ ] Declared Python support exactly matches tested CI versions + - [ ] README and packaging metadata communicate the same minimum Python version + - [ ] CI passes on the finalized support matrix + +--- + +#### ⬜️ P14-T4: Replace deprecated setuptools license metadata with SPDX format +- **Description:** Remove packaging deprecation warnings by migrating license metadata to modern SPDX-based fields and dropping deprecated classifiers/structures. +- **Priority:** P2 +- **Dependencies:** none +- **Parallelizable:** yes +- **Outputs/Artifacts:** + - Updated `pyproject.toml` license metadata (`project.license` / `license-files` / classifiers as needed) + - Validation evidence from `python -m build` showing deprecation warnings are resolved +- **Acceptance Criteria:** + - [ ] Build output no longer emits setuptools license deprecation warnings + - [ ] Package metadata remains valid for PyPI and MCP registry publication + - [ ] Existing `make check` pipeline remains green + +--- + +#### ⬜️ P14-T2: Align release metadata and changelog for 0.4.0 +- **Description:** Prepare publishable 0.4.0 release metadata by updating package/registry versions and adding a complete changelog entry matching delivered functionality. +- **Priority:** P1 +- **Dependencies:** P14-T1, P14-T3, P14-T4 +- **Parallelizable:** no +- **Outputs/Artifacts:** + - Updated version fields in `pyproject.toml` and `server.json` + - New `0.4.0` entry in `CHANGELOG.md` with release date, key changes, and release link +- **Acceptance Criteria:** + - [ ] `pyproject.toml`, `server.json`, and `CHANGELOG.md` all reference `0.4.0` consistently + - [ ] Changelog includes accurate notes for broker and Web UI work shipped since `0.3.2` + - [ ] Release metadata passes existing build/publish validation checks + +--- + #### ✅ FU-BUG-T7-1: Cap `pending_methods` map to guard against unbounded growth - **Status:** ✅ Completed (2026-02-18)