diff --git a/README.md b/README.md index 5174e2cd..c764b338 100644 --- a/README.md +++ b/README.md @@ -10,9 +10,8 @@ [![Coverage](https://img.shields.io/badge/coverage-92.19%25-brightgreen.svg)](./SPECS/ARCHIVE/P5-T14_Code_Coverage/) [![MCP Registry](https://img.shields.io/badge/MCP%20Registry-io.github.SoundBlaster%2Fxcode--mcpbridge--wrapper-blue)](https://registry.modelcontextprotocol.io) -Version badge maintenance: run `make badge-version` (or `make badge-version-check` in CI). - -A Python wrapper that makes Xcode 26.3's MCP bridge compatible with Cursor and other strict MCP-spec-compliant clients. +A Python wrapper that makes Xcode 26.3's MCP bridge compatible with Cursor and +other strict MCP-spec-compliant clients. ## The Problem diff --git a/SPECS/ARCHIVE/INDEX.md b/SPECS/ARCHIVE/INDEX.md index 1019ff5f..b80132e3 100644 --- a/SPECS/ARCHIVE/INDEX.md +++ b/SPECS/ARCHIVE/INDEX.md @@ -1,11 +1,12 @@ # mcpbridge-wrapper Tasks Archive -**Last Updated:** 2026-03-01 (P1-T4 archived) +**Last Updated:** 2026-03-01 (P1-T7 archived) ## Archived Tasks | Task ID | Folder | Archived | Verdict | |---------|--------|----------|---------| +| P1-T7 | [P1-T7_Hide_README_version_badge_maintenance_note/](P1-T7_Hide_README_version_badge_maintenance_note/) | 2026-03-01 | PASS | | P1-T4 | [P1-T4_Update_docs_broker_robustness/](P1-T4_Update_docs_broker_robustness/) | 2026-03-01 | PASS | | P2-T5 | [P2-T5_Warn_when_broker_lacks_web_ui/](P2-T5_Warn_when_broker_lacks_web_ui/) | 2026-03-01 | PASS | | P2-T4 | [P2-T4_Surface_broker_unavailability_as_JSONRPC_error/](P2-T4_Surface_broker_unavailability_as_JSONRPC_error/) | 2026-03-01 | PASS | @@ -302,6 +303,9 @@ | Date | Task ID | Action | |------|---------|--------| +| 2026-03-01 | P1-T7 | Archived REVIEW_P1-T7_readme_badge_note report | +| 2026-03-01 | P1-T7 | Archived FOLLOWUP_P1-T7_readme_badge_note report | +| 2026-03-01 | P1-T7 | Archived Hide README version badge maintenance note (PASS) | | 2026-03-01 | P1-T4 | Archived Update docs to reflect broker robustness improvements (PASS) | | 2026-03-01 | P2-T3 | Archived Fix double-spawn race condition when MCP client toggles rapidly (PASS) | | 2026-03-01 | P2-T1 | Archived Replace --broker-spawn/--broker-connect with single --broker flag (PASS) | diff --git a/SPECS/ARCHIVE/P1-T7_Hide_README_version_badge_maintenance_note/FOLLOWUP_P1-T7_readme_badge_note.md b/SPECS/ARCHIVE/P1-T7_Hide_README_version_badge_maintenance_note/FOLLOWUP_P1-T7_readme_badge_note.md new file mode 100644 index 00000000..99dca65d --- /dev/null +++ b/SPECS/ARCHIVE/P1-T7_Hide_README_version_badge_maintenance_note/FOLLOWUP_P1-T7_readme_badge_note.md @@ -0,0 +1,11 @@ +# Follow-up Report — P1-T7 README Badge Maintenance Note + +## Source Review +- `SPECS/INPROGRESS/REVIEW_P1-T7_readme_badge_note.md` + +## Decision +- FOLLOW-UP skipped. + +## Rationale +- Review found no actionable issues (no blocker/high/medium/low findings). +- No additional tasks were added to `SPECS/Workplan.md`. diff --git a/SPECS/ARCHIVE/P1-T7_Hide_README_version_badge_maintenance_note/P1-T7_Hide_README_version_badge_maintenance_note.md b/SPECS/ARCHIVE/P1-T7_Hide_README_version_badge_maintenance_note/P1-T7_Hide_README_version_badge_maintenance_note.md new file mode 100644 index 00000000..98d3f8de --- /dev/null +++ b/SPECS/ARCHIVE/P1-T7_Hide_README_version_badge_maintenance_note/P1-T7_Hide_README_version_badge_maintenance_note.md @@ -0,0 +1,39 @@ +# PRD — P1-T7: Hide README version badge maintenance note + +## Context + +The README currently includes an internal maintenance instruction line: +`Version badge maintenance: run make badge-version (or make badge-version-check in CI).` + +This task hides that line from public README content while keeping the version badge itself visible and unchanged. + +## Scope + +- In scope: + - Remove the maintenance note line from `README.md`. + - Preserve surrounding badges and README rendering. +- Out of scope: + - Changing badge URL, version value, or badge automation scripts. + - Any code/runtime behavior changes. + +## Deliverables + +1. `README.md` updated to remove the maintenance note string. +2. Validation report documenting checks performed. + +## Acceptance Criteria + +- [ ] `README.md` no longer contains the exact string: + `Version badge maintenance: run make badge-version (or make badge-version-check in CI).` +- [ ] Version badge remains visible in the badges area. +- [ ] No unintended README formatting regressions are introduced. + +## Validation Plan + +- Run `rg -n "Version badge maintenance" README.md` and confirm no matches. +- Inspect top README section (`nl -ba README.md | sed -n '1,30p'`) to confirm badge block remains present. + +## Risks and Mitigations + +- Risk: Removing the line could collapse spacing around the badge block. + - Mitigation: Manually inspect the first 30 lines of `README.md` after change. diff --git a/SPECS/ARCHIVE/P1-T7_Hide_README_version_badge_maintenance_note/P1-T7_Validation_Report.md b/SPECS/ARCHIVE/P1-T7_Hide_README_version_badge_maintenance_note/P1-T7_Validation_Report.md new file mode 100644 index 00000000..0db26baa --- /dev/null +++ b/SPECS/ARCHIVE/P1-T7_Hide_README_version_badge_maintenance_note/P1-T7_Validation_Report.md @@ -0,0 +1,25 @@ +# Validation Report — P1-T7 + +**Task:** P1-T7 — Hide README version badge maintenance note +**Date:** 2026-03-01 +**Verdict:** PASS + +## Checks Run + +1. `rg -n "Version badge maintenance" README.md` + - Result: no matches. +2. `nl -ba README.md | sed -n '1,22p'` + - Result: version badge block remains present at the top of the README. +3. `pytest -q` + - Result: pass (669 passed, 18 skipped). +4. `ruff check src/` + - Result: pass. +5. `mypy src/` + - Result: pass. +6. `pytest --cov` + - Result: pass; total coverage 90.92% (>=90%). + +## Acceptance Criteria Mapping + +- [x] `README.md` no longer contains the exact string `Version badge maintenance: run make badge-version (or make badge-version-check in CI).` +- [x] Version badge remains visible and functional after removing the maintenance note. diff --git a/SPECS/ARCHIVE/P1-T7_Hide_README_version_badge_maintenance_note/REVIEW_P1-T7_readme_badge_note.md b/SPECS/ARCHIVE/P1-T7_Hide_README_version_badge_maintenance_note/REVIEW_P1-T7_readme_badge_note.md new file mode 100644 index 00000000..2cf80cd2 --- /dev/null +++ b/SPECS/ARCHIVE/P1-T7_Hide_README_version_badge_maintenance_note/REVIEW_P1-T7_readme_badge_note.md @@ -0,0 +1,29 @@ +## REVIEW REPORT — P1-T7 README Badge Maintenance Note + +**Scope:** 63c45e8..fde1dac +**Files:** 7 + +### Summary Verdict +- [x] Approve +- [ ] Approve with comments +- [ ] Request changes +- [ ] Block + +### Critical Issues +- None. + +### Secondary Issues +- None. + +### Architectural Notes +- Change is documentation-only and intentionally does not alter badge automation tooling. +- Task lifecycle artifacts (PRD + validation report) were archived in a dedicated task folder. + +### Tests +- `pytest -q` passed (669 passed, 18 skipped). +- `ruff check src/` passed. +- `mypy src/` passed. +- `pytest --cov` passed with 90.92% total coverage. + +### Next Steps +- No actionable follow-up items identified. diff --git a/SPECS/INPROGRESS/next.md b/SPECS/INPROGRESS/next.md index ca805305..9647f152 100644 --- a/SPECS/INPROGRESS/next.md +++ b/SPECS/INPROGRESS/next.md @@ -1,12 +1,12 @@ # No Active Task -**Status:** Idle — P1-T4 archived. Select the next task from `SPECS/Workplan.md`. +**Status:** Idle — P1-T7 archived. Select the next task from `SPECS/Workplan.md`. ## Recently Archived +- **P1-T7** — Hide README version badge maintenance note (2026-03-01, PASS) - **P1-T4** — Update docs to reflect broker robustness improvements (2026-03-01, PASS) - **P2-T5** — Warn or restart daemon when --web-ui requested but running broker lacks it (2026-03-01, PASS) - **P2-T4** — Surface broker unavailability as JSON-RPC error instead of silent timeout (2026-03-01, PASS) - **P2-T3** — Fix double-spawn race condition when MCP client toggles rapidly (2026-03-01, PASS) - **P2-T1** — Replace --broker-spawn/--broker-connect with single --broker flag (2026-03-01, PASS) -- **P2-T2** — Self-healing stale socket and PID file recovery (2026-03-01, PASS) diff --git a/SPECS/Workplan.md b/SPECS/Workplan.md index 22ab98ca..fa8b8629 100644 --- a/SPECS/Workplan.md +++ b/SPECS/Workplan.md @@ -100,6 +100,18 @@ Add new tasks using the canonical template in [TASK_TEMPLATE.md](TASK_TEMPLATE.m - [ ] DocC mirror updated to match - [ ] `make doccheck-all` passes +#### ✅ P1-T7: Hide README version badge maintenance note +- **Status:** ✅ Completed (2026-03-01) +- **Description:** Hid from `README.md` the string `Version badge maintenance: run make badge-version (or make badge-version-check in CI).` while preserving the visible version badge. +- **Priority:** P3 +- **Dependencies:** none +- **Parallelizable:** yes +- **Outputs/Artifacts:** + - `README.md` — maintenance note string removed from badge area +- **Acceptance Criteria:** + - [x] `README.md` no longer contains the exact string `Version badge maintenance: run make badge-version (or make badge-version-check in CI).` + - [x] Version badge remains visible and functional after removing the maintenance note + ### Phase 2: Broker Robustness #### ✅ P2-T1: Replace --broker-spawn/--broker-connect with single --broker flag diff --git a/Sources/XcodeMCPWrapper/Documentation.docc/XcodeMCPWrapper.md b/Sources/XcodeMCPWrapper/Documentation.docc/XcodeMCPWrapper.md index 2283b1b0..12f53a30 100644 --- a/Sources/XcodeMCPWrapper/Documentation.docc/XcodeMCPWrapper.md +++ b/Sources/XcodeMCPWrapper/Documentation.docc/XcodeMCPWrapper.md @@ -1,6 +1,7 @@ # ``XcodeMCPWrapper`` -A Python wrapper that enables external AI agents to connect to Xcode via the Model Context Protocol (MCP). +A Python wrapper that enables external AI agents to connect to Xcode via the +Model Context Protocol (MCP). ## Source Code @@ -10,8 +11,6 @@ A Python wrapper that enables external AI agents to connect to Xcode via the Mod [![Version](https://img.shields.io/badge/version-0.3.3-blue.svg)](https://github.com/SoundBlaster/XcodeMCPWrapper/releases/tag/v0.3.3) -Version badge maintenance: run `make badge-version` (or `make badge-version-check` in CI). - ## Overview Xcode 26.3+ includes an MCP bridge (`xcrun mcpbridge`) that exposes Xcode's internal capabilities to MCP clients. However, it has a protocol compatibility issue that prevents it from working with strict MCP spec followers like Cursor.