Skip to content

Promote the v2 README to README.md ahead of the first v2 beta#3014

Open
maxisbey wants to merge 1 commit into
mainfrom
v2-readme
Open

Promote the v2 README to README.md ahead of the first v2 beta#3014
maxisbey wants to merge 1 commit into
mainfrom
v2-readme

Conversation

@maxisbey

Copy link
Copy Markdown
Contributor

The repo front page still documents v1 while every release cut from main is a v2 pre-release. This makes the v2 README (README.v2.md) the root README.md ahead of the beta, and retires the machinery that kept README.md frozen at v1.

What changed

  • README.md is now the v2 README (README.v2.md is deleted). The banner is rewritten as a [!CAUTION] callout that makes the status unmissable: this documents the v2 alpha/beta pre-release line, breaking changes are expected between pre-releases, do not use it in production, and v1.x (linked) is the stable line. The banner no longer hardcodes a version pin or the beta date (both went stale the moment a release was cut), drops the backwards-compatibility-shims promise in favor of the migration-guide pointer, and scopes the "installers don't pick pre-releases" claim to pip/uv, where it's actually true.
  • Freeze machinery removed: the readme-v1-frozen pre-commit hook, the "Check README.md is not modified" CI step with its override-readme-freeze label gate, and the --readme flag on scripts/update_readme_snippets.py (no caller left — the script now reads README.md, full stop). tests/test_examples.py lints README.md again, and tests/docs_src/test_shape.py names the README instead of globbing for two.
  • Dead config from the same family deleted rather than renamed: the ruff hook exclude: (unmatchable under types: [python]), the [tool.ruff] extend-exclude README entries (ruff never selects .md), the SKIP: env in shared.yml (neither listed hook exists in the config), and the examples/ trigger on the readme-snippets hook (the v1 README that embedded examples/ files is gone; the README now embeds only docs_src/). Verified inert: ruff format --check / ruff check are byte-identical before and after.
  • pyproject.toml: readme = "README.md" — PyPI already publishes the v2 long description; this keeps it working after the rename.
  • RELEASE.md: new step 1 — bump the version examples in README.md and the docs in the commit that gets tagged, since the tagged commit's README is the PyPI long description. Deliberate updates replace the frozen file.
  • AGENTS.md / CONTRIBUTING.md / examples/README.md updated to match reality (the examples bullets now say what actually embeds/links what).

What deliberately did not change

  • Docs publishing: deploy-docs.yml builds v1.x at / and main at /v2/ from docs/ — the README isn't an input, and the v2 docs stay under /v2/ until v2 is stable.
  • examples/snippets/ stays: workspace members, imported by tests/server/mcpserver/test_integration.py, and referenced by docs/migration.md. Consolidating them into stories/ remains a follow-up — note for that PR: the test-module import has to move too.
  • The v1 monolith README is gone from main but reachable in git history; the v1.x branch carries its own (slimmer) v1 README plus the restructured v1 docs, which is where the banner points.

Notes for reviewers

  • The in-repo TODO markers said to do this "when v2 is released"; doing it at the beta is deliberate — from here on the front page documents the pre-release line, with the banner as the guard.
  • This PR's own CI runs the edited workflow and pre-commit config (pull_request runs use the merge ref), so the freeze check cannot block it and no override-readme-freeze label is needed. Required status checks are unaffected (all-green only; the freeze check was a step, not a job).
  • [!CAUTION] renders as a red alert on GitHub. PyPI's renderer doesn't support alert syntax, so future pre-release pages will show the literal [!CAUTION] line at the top of the description — accepted: the bold "do not use in production" sentence carries the warning there, and the PyPI front page stays on the latest v1.x release until v2 goes stable.
  • Old deep links to blob/main/README.v2.md and to v1 README section anchors stop resolving; the banner is the redirect. Permalinks at historical SHAs keep working.
  • Sequencing: merge before tagging v2.0.0b1, so the beta's PyPI page is built from this README.
  • Follow-up (repo settings, not code): delete the now-unused override-readme-freeze label.

AI Disclaimer

The repo front page still showed the v1 README while every release cut
from main is a v2 pre-release. Make the v2 README (README.v2.md) the
root README, with a banner that makes the status unmissable: alpha/beta
pre-release line, breaking changes between pre-releases, not for
production, v1.x is the stable line.

Retire the freeze machinery that kept README.md pinned at v1:

- the readme-v1-frozen pre-commit hook and the CI freeze check with its
  override-readme-freeze label gate
- the --readme indirection in scripts/update_readme_snippets.py (the
  script now reads README.md, its only remaining purpose)
- dead config that existed only for the split: the ruff hook exclude,
  the pyproject ruff extend-exclude entries, the SKIP env in shared.yml,
  and the examples/ trigger on the readme-snippets hook

Point pyproject's readme at README.md so PyPI keeps publishing the v2
long description, and add a release-checklist step to bump the version
examples in README.md and the docs when cutting a pre-release - the
tagged commit's README is what PyPI shows.
@maxisbey maxisbey marked this pull request as ready for review June 28, 2026 11:17

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 12 files

Tip: cubic can generate docs of your entire codebase and keep them up to date. Try it here.

Re-trigger cubic

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM — docs/CI-config-only change with no runtime code touched; the README promotion and freeze-machinery removal look mechanically correct.

Extended reasoning...

Overview

This PR promotes README.v2.md to README.md, deletes the v1 monolith README from main, and removes the machinery that kept the old README frozen: the readme-v1-frozen pre-commit hook, the CI freeze-check step and its SKIP env, the --readme flag on scripts/update_readme_snippets.py, and related dead config (extend-exclude, ruff hook exclude). It also updates pyproject.toml's readme field, RELEASE.md's process steps, and the two tests that reference the README path. No SDK runtime code under src/ is touched.

Security risks

None. The change is documentation, build/CI configuration, a small simplification of a doc-tooling script, and test path updates. The removed CI step was a README freeze guard, not a security control.

Level of scrutiny

Low. Cross-checking the pieces against each other holds up: the readme-snippets pre-commit hook and CI step both run --check with no --readme argument, matching the script's new hard-coded README.md; the removed SKIP env referenced hooks that no longer exist in the config; the new README's snippet block is byte-identical to docs_src/index/tutorial001.py, so the snippet check passes; tests/test_examples.py and tests/docs_src/test_shape.py now point at README.md, which exists; and pyproject.toml already published the v2 long description, so the readme field change preserves behavior. The only non-mechanical aspect — promoting the v2 README at the beta rather than at the stable release — is an explicitly stated, easily reversible project decision documented in the PR description.

Other factors

The bug hunting system found no issues, and the affected paths are exercised by the PR's own CI (pre-commit, readme-snippets check, and the README-linting tests run against the merge ref), so any mismatch would surface there rather than at runtime.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant