Repository navigation
docs: record published index-it-mcp 1.5.0 (delivered acceptance partial) - #123
Merged
Merged
Conversation
v1.5.0 is published (Release Automation run 42539192667, tag v1.5.0 at 81980d0). Delivered acceptance on dev0 is partial, so 1.5.0 is recorded as published=true, accepted=false, deployed=false: - The PyPI wheel/sdist digests match the GitHub release assets. The image is cosign-verified, and delivered release smoke (wheel, STDIO and container) and PMCP prepare pass. - An unconstrained `pip install index-it-mcp==1.5.0` resolves mcp 2.3.0 (Requires-Dist mcp>=1.0.0 has no upper bound) and `index-it-mcp stdio` fails at import. Docs now pin "mcp<2" beside the package. - PMCP offline fails on the pilot fixture's cold grammar cache (#122 gap). Rehearsal and browser were not run on dev0. - dev0 still runs build b79cc7c and was not changed. Replace the "prepared candidate" wording and update the version-pinned docs tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
ViperJuice
added a commit
that referenced
this pull request
Nov 9, 2026
Published 1.5.0 and 1.4.1 require mcp>=1.0.0 with no upper bound. A plain `pip install index-it-mcp==1.5.0` resolves mcp 2.3.0 and `index-it-mcp stdio` fails at import: McpError is gone from mcp.shared.exceptions. Release smoke and the PMCP pilot install under uv.lock (mcp 1.27.0), so neither saw it. - Cap the runtime requirement at mcp>=1.27,<2; the lock stays on 1.27.0. Porting to mcp 2.x is Code-Index-MCP#124. - Add release_smoke.py --unconstrained, run by `make release-smoke` (and so by the CI agent gate and Release Automation): install the wheel alone into a fresh Python 3.12 venv with no lock constraints, check --version, prefetch grammars into an explicit TREE_SITTER_LANGUAGE_PACK_CACHE_DIR, then run a raw JSON-RPC initialize/tools/list probe and the lexical STDIO queries. The locked and unconstrained smokes share one built wheel. It fails on 1.5.0's requirements (mcp 2.3.0) and passes with the cap (mcp 1.30.0). - Bump to 1.5.1 across pyproject, __version__, uv.lock, the release workflow default, Docker installers, release docs and release-gate tests; add the CHANGELOG section and the unconstrained flag to delivered acceptance. - Docs (on top of #123): 1.5.1 is the prepared corrective candidate, 1.5.0 is published with partial delivered acceptance, and neither 1.5.0 nor 1.4.1 should be installed unpinned. Drop #123's "mcp<2" install pin, which 1.5.1 makes unnecessary; keep its 1.5.0 acceptance record as history. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ViperJuice
added a commit
that referenced
this pull request
Nov 9, 2026
* release: 1.5.1 (cap mcp<2) Published 1.5.0 and 1.4.1 require mcp>=1.0.0 with no upper bound. A plain `pip install index-it-mcp==1.5.0` resolves mcp 2.3.0 and `index-it-mcp stdio` fails at import: McpError is gone from mcp.shared.exceptions. Release smoke and the PMCP pilot install under uv.lock (mcp 1.27.0), so neither saw it. - Cap the runtime requirement at mcp>=1.27,<2; the lock stays on 1.27.0. Porting to mcp 2.x is Code-Index-MCP#124. - Add release_smoke.py --unconstrained, run by `make release-smoke` (and so by the CI agent gate and Release Automation): install the wheel alone into a fresh Python 3.12 venv with no lock constraints, check --version, prefetch grammars into an explicit TREE_SITTER_LANGUAGE_PACK_CACHE_DIR, then run a raw JSON-RPC initialize/tools/list probe and the lexical STDIO queries. The locked and unconstrained smokes share one built wheel. It fails on 1.5.0's requirements (mcp 2.3.0) and passes with the cap (mcp 1.30.0). - Bump to 1.5.1 across pyproject, __version__, uv.lock, the release workflow default, Docker installers, release docs and release-gate tests; add the CHANGELOG section and the unconstrained flag to delivered acceptance. - Docs (on top of #123): 1.5.1 is the prepared corrective candidate, 1.5.0 is published with partial delivered acceptance, and neither 1.5.0 nor 1.4.1 should be installed unpinned. Drop #123's "mcp<2" install pin, which 1.5.1 makes unnecessary; keep its 1.5.0 acceptance record as history. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(release): unambiguous mcp wording; allowlist the unconstrained smoke env (#125 review) Review of f6c26cf (MERGE-READY, 0 blocking): - S1: "unpinned" was ambiguous: `pip install index-it-mcp==1.5.0` looks pinned but is exactly the broken install. The docs and CHANGELOG now say not to install 1.5.0 or 1.4.1 without constraining `mcp` below 2, even as `index-it-mcp==1.5.0`; the docs tests require that phrase and reject "unpinned". - S2: the unconstrained install now sees only an allowlist of environment variables (interpreter, uv cache, temp, locale, TLS, proxies) and resolves with `--default-index https://pypi.org/simple`. `--no-config` does not block UV_OFFLINE, UV_DEFAULT_INDEX, UV_FIND_LINKS or UV_EXCLUDE, which could make delivered acceptance pass on older versions than PyPI users get. The contract test sets those variables and asserts they never reach the install. A real run with UV_OFFLINE=1 and UV_EXCLUDE_NEWER=2026-01-01 set still resolved the newest PyPI versions (mcp 1.30.0) and passed. - NIT: the runbook says an unconstrained-smoke failure at publish means a new dependency bound, never a rerun; the no-op PIP_CONSTRAINT entry is gone with the strip list. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Nov 9, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This replaces the "prepared candidate" wording for
1.5.0with the published state and adds the delivered-acceptance record (in the format of #95 and #102). Acceptance did not fully pass, so this PR recordspublished=true,accepted=false (partial),deployed=false. It does not claim acceptance. The requested title, "published and accepted", would have been inaccurate.Published. Release Automation run 42539192667 built tag
v1.5.0from81980d0(tree5d43fdf). It published the PyPI wheel and sdist, the GitHub release, and the signed imageghcr.io/consiliency/code-index-mcp@sha256:6ef6aa54….Passed (dev0, Python 3.12.14, clean worktree at
81980d0):image-reference.txtandimage-digest.txtboth name the published digest.v1.5.0and revision81980d0. cosign v2.5.2 (the workflow's version; its release checksum verified) verified the keyless signature with the workflow's identity (release-automation.yml@refs/heads/main), issuer and workflow SHA81980d0.release_smoke.py --wheel-path <PyPI wheel> --wheel-sha256 931f8ed7… --stdio --image-ref <digest>passed, using a fresh prefetchedTREE_SITTER_LANGUAGE_PACK_CACHE_DIR.http.serverin the same image confirmed it). One deliberate rerun with--docker-network hostpassed: cosign, offline BAML, schema/prepare/Python as uid 999, HTTP queries before and after restart, log privacy, lifecycle and the safety probe.index-it-mcp==1.5.0withphase-loop-runtime==0.7.30:uv pip checkis clean, and the installed files match the wheel's RECORD.mcp-index --versionreports 1.5.0.grammars prefetchverified 47/47;grammars checkfound 47 offline, 0 missing.MCP_BAML_TELEMETRYunset or blank, a BAML import writes nothing under~/.baml.pmcp==2.7.3as a private uv tool. The live dev0 gateway wasn't used.Failed / not run:
mcp>=1.0.0with no upper bound, sopip install index-it-mcp==1.5.0(alone or co-installed) resolvesmcp2.3.0.index-it-mcp stdiothen fails at import withcannot import name 'McpError' from 'mcp.shared.exceptions'.1.4.1has the same unbounded requirement. Release smoke and the pilot missed this because both install with lock constraints (mcp1.27.0). Adding"mcp<2"resolvesmcp1.30.0 and STDIO passes, so the docs now pin it. A corrective release needs an owner decision.reindexreturnedSandboxCallError. The pilot fixture uses a freshXDG_CACHE_HOMEwith no prefetched grammar cache, and network-denied sandbox workers can't download grammars. This is the ci(release): give the release gates an explicit grammar cache (#115) #122 gap, still present inscripts/v13_pmcp_pilot.py. The same installed probe fails with a cold cache and passes with a warm one.Deployed: no. The dev0 code-index child still runs build
b79cc7cand wasn't changed.Changes
1.5.0" and add"mcp<2"to PyPI install guidance.v13-release.md: Release Status and a new "1.5.0 Delivered Acceptance" record.V13_EXECUTION.mdandpublic-package-identity.mdupdated.test_release_metadata,test_pubname_public_docs,test_p8_customer_docs_alignment,test_p26_public_alpha_decision.Tests (dev0, one file per run, serial, under
nice):tests/docsfiles,tests/test_release_metadata.py,tests/test_v13_release_candidate.pyandtests/smoke/test_release_smoke_contract.pypass.tests/root_tests/test_readme_parsing.pyhas 4 failures. That file only parses synthetic READMEs intmp_pathand reads no repo files, and this PR changes no code.🤖 Generated with Claude Code
Open in [code]smith · Need help on this PR? Tag
@codesmith-botwith what you need.