feat(planning): scaffold phases 9/10/11 backlog + forward-facing .planning/#27
Conversation
…nning/ Per CR §9 Workstream D (decision locked 2026-05-14): formalize the post-v0.1.5 backlog with three new MCP-tool phases. Each gets an on-disk CONTEXT.md skeleton plus a row in .planning/ROADMAP.md. Implementation kickoff still requires /gsd-plan-phase 0X per phase; this commit only publishes the specs. Phase 09 — compare_versions(symbol, v1, v2): structured per-version diff of a stdlib symbol (signature + docstring + deprecation). Phase 10 — whatsnew_for_version(version): the official 'What's New' page sliced into MCP-friendly sections with kind enums and pagination. Phase 11 — detect_python_version v2 (venv-aware): elevate the v1 detection chain to read VIRTUAL_ENV / pyvenv.cfg / .venv directories before falling back to .python-version / python3 / sys.version_info. Backfills tests/test_detection.py (v1 has no dedicated unit test today). Also updates AGENTS.md 'Context Hygiene' to acknowledge .planning/ now holds two kinds of content: live forward-looking specs (ROADMAP, phase CONTEXTs) and archival history (pre-2026-05 content). The prior 'archival-only' framing predated the v0.1.5 launch coordination work. GitHub issues for these three phases will be opened separately after this PR merges (D5; not included here to avoid stale issue numbers).
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
✅ Files skipped from review due to trivial changes (3)
📝 WalkthroughWalkthroughAdds a tracked ROADMAP and three new phase CONTEXT documents, and updates AGENTS.md to treat ChangesProject Planning Framework and Phase Roadmap
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Three fixes from the post-merge spec audit on PR #27: 1. Phase 11 source discriminators: align with the actual v1 strings in src/mcp_server_python_docs/detection.py. v1 returns '.python-version file' / 'python3 in PATH' / 'server runtime' (not the simplified labels the original CONTEXT spec used). v2 preserves these verbatim below the new venv:* sources. 2. Phase 09 success criterion 1: use compare_versions('asyncio.TaskGroup', '3.10', '3.11') instead of '3.11'-'3.12' for the introduction example. The symbol was introduced in 3.11, so a 3.10->3.11 diff is the right surface to test 'newly introduced' detection. A 3.11->3.12 diff would show no change for TaskGroup and could pass vacuously. 3. ROADMAP.md Historical section: drop the misleading reference to '.git/info/exclude'. That file is local-only and contains gitignore syntax, not a policy narrative; readers checking it would not find the explanation. Rephrased to be self-contained.
Three findings from a second codex:review pass on PR #27: 1. ROADMAP.md inline-summary v0.1.5 scope instead of linking to ../CHANGE-REQUEST-v0.1.5-launch.md. The CR document is intentionally untracked (it's a working planning artifact), so the link was dead from a fresh checkout's perspective. Replaced with a one-sentence summary of the five workstreams. 2. Phase 10 WNEW-01: define the kind filter and pagination params that the success criteria already exercise. Previous WNEW-01 listed only the version input, making the spec internally inconsistent with success criterion 3 (kind="deprecation") and WNEW-03 (pagination). 3. Phase 11 DETV2-01: parse the standard `version = X.Y[.Z]` key in pyvenv.cfg (written by python -m venv). version_info is the optional fallback, not the primary key as previously specified. Confirmed against the local .venv/pyvenv.cfg in the workspace.
Summary
PR #4 of 6 in the v0.1.5 launch wave (per CHANGE-REQUEST-v0.1.5-launch.md, §D).
Adds three on-disk phase skeletons for the post-v0.1.5 backlog plus a tracked
.planning/ROADMAP.md, and updatesAGENTS.mdto acknowledge the new forward-facing role of.planning/.What's in
.planning/phases/09-compare-versions/09-CONTEXT.md— new MCP tool:compare_versions(symbol, v1, v2)returns a structured diff of a stdlib symbol's signature/docstring/deprecation between two Python versions..planning/phases/10-whatsnew/10-CONTEXT.md— new MCP tool:whatsnew_for_version(version)returns the official "What's New" page sliced into MCP-friendly sections withkindenum and pagination..planning/phases/11-detect-venv/11-CONTEXT.md— enhancement:detect_python_versionv2 readsVIRTUAL_ENV/pyvenv.cfg/.venvdirectories before falling back to v1's.python-version/python3/sys.version_infochain. Backfillstests/test_detection.py(v1 has none)..planning/ROADMAP.md— new file. Documents v0.1.4 (shipped), v0.1.5 (in progress per CR), and the post-v0.1.5 backlog with links to each phase CONTEXT. Issue numbers will be backfilled after this PR merges.AGENTS.md— "Context Hygiene" section rewritten. Old framing said.planning/was archival-only; new framing distinguishes live forward-looking specs (.planning/ROADMAP.md+.planning/phases/0X-…/) from archival history.Out of scope (separate work)
phase-planlabel. Deferred until this PR merges so the issue bodies can link the merged CONTEXT.md URLs and so the ROADMAP table's#TBDplaceholders can be backfilled in a follow-up commit./gsd-plan-phasecycle when prioritized.Notes
.planning/was previously listed in.git/info/exclude(local, not tracked) as part of an old "archival artifacts kept out of public repo" policy. With this PR's locked decision (CR §9 Workstream D),.planning/becomes a tracked forward-facing surface. The local exclude has been updated with a dated note explaining the policy shift; the line for.planning/is commented out so new files in.planning/are no longer ignored. Pre-2026-05-14 archival content remains untracked in maintainers' worktrees per the prior policy.Test plan
.planning/ROADMAP.mdrenders cleanly on GitHub with the three phase rows and links to their CONTEXTsAGENTS.mdContext Hygiene section parses on GitHub🤖 Generated with Claude Code
Summary by CodeRabbit