Repository navigation
Conversation
bump-release-version.py now writes both Info.plist and Tools/TranscriptedMCP/Sources/TranscriptedMCP/BuildVersion.swift, but the Release Candidate pin step still rejected any prep branch that changed more than Info.plist. Every release after 1.1.76 would fail the guard, and the only workaround shipped an MCP helper reporting the old version. The guard now requires exactly those two paths, then runs bump-release-version.py --check (main's copy, since nothing else may differ) so the generated file must match Info.plist byte for byte. Docs and the workflow contract test follow.
r3dbars
changed the base branch from
codex/integration-open-prs-20261110
to
main
November 12, 2026 22:46
r3dbars
marked this pull request as ready for review
November 13, 2026 12:55
This was referenced Nov 13, 2026
This branch has not been deployed
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.
Fixes a P1 the bug hunt found on the integration branch (#2530).
Problem
scripts/release/bump-release-version.pynow writes two files:Info.plistand the generatedTools/TranscriptedMCP/Sources/TranscriptedMCP/BuildVersion.swift. But the Release Candidate pin step still rejects any prep branch that differs from main in anything other thanInfo.plist. So every release after 1.1.76 fails the guard. The only workaround is to revert the generated file, and that ships an MCP helper that still reports the old version.Change
.github/workflows/release-candidate.yml: the diff guard now requires the changed paths to be exactlyInfo.plistplusBuildVersion.swift(sorted compare). After the guard passes, it runsbump-release-version.py --check. The guard ensures that's main's copy of the script, so the generated file has to matchInfo.plistbyte for byte.Tests/CIWorkflowContractTests.swift: a contract test pins the two-path allow list. It also checks that--checkruns after the guard.docs/release-packaging.mdstep 1,.github/AGENTS.mdandscripts/README.mdnow describe the two-file bump.Current state (2026-11-13, prep for 1.1.77)
main@5a72538a991a9fba22d0a0375db3e2e4f32dcb91(read from the GitHub API, no drift from expected).c86e8a330e31885c32f9265293c32bd1ce22c159, a merge commit of current main into this branch (no force-push). Original commitf89c6210bis unchanged.74329a73amatches the reviewer's merge-tree.git diff main...is still only the 5 files listed above, no unrelated source changes.check-superseded.py --pr 2679: OK, scope not covered by any merged PR.Independent review
GREEN (separate Opus read-only review). Not superseded, clean merge-tree, exact sorted set compare kept,
--checkruns after the ancestor and path guards so it's main's copy of the script, and it runs inbuild-unsignedwith no secrets.sign-and-notarize/verify-candidateare untouched and the signer still checks out main, so signer isolation holds. Non-blocking nits:--name-onlywould also list a pure mode change or symlink swap onBuildVersion.swift(content is still pinned), and the contract test splitsexpected=on spaces, which is brittle but fine.Tests run on the merged head (offline, this Mac)
bash check.sh quick: PASS (113 passed, 0 failed, 0 skipped; includesbump-release-version.py --checkand--version 1.1.77 --dry-run).python3 scripts/release/bump-release-version.py --check:Compiled MCP version matches Info.plist.bump-release-version.py --version 1.1.77, then the workflow's sorted compare. Changed paths were exactlyInfo.plist+BuildVersion.swift, so PASS.--checkpassed after the bump, and failed (exit 1) with a staleBuildVersion.swift, as intended.release-candidate.ymlparses as YAML.check-test-shape.py --self-testpasses.run-tests.sh(the contract test is Swift), full bench, hardware or native smokes. Those are left to CI and the combined release candidate.Still pending
checks,build-and-test, etc.) on headc86e8a330, which pushing it triggered. Not green until it reports.bump-release-version.py --version 1.1.77, commit both files, then rungh workflow run release-candidate.yml --ref main -f source_ref=<prep> -f version=1.1.77. That's owner dispatch and approval only. Nothing here dispatched an RC, published, notarized or merged.Historical proof (on the old base, before the merge)
This is release flow, and it can't be fully proven without a real release-candidate run. I checked the
--checkpath locally (Compiled MCP version matches Info.plist), the bump script self-test passes, and the new contract test runs in the fast tests (54248/54248 passed). The first real RC dispatch after this lands is the actual proof. Since the dispatch uses--ref main, the workflow change only takes effect once it's on main.Local
bash check.shended with deterministic proof FAIL. None of the failures come from this diff:nightly-security-check.py --strictagainst the 1.1.75 fixtures fails on appcast/cask/digest drift (fixtures 1.1.75, Info.plist and cask 1.1.76). That's on the integration base and this PR doesn't touch those files.test-live-claude-mod.pyandtest-capture-list-load-more-scroll.share sandbox/account blocks (pinned Claude Code fails at Bun startup; native smoke refuses to run in the owner's account).source-stability: the Labbuild_and_run.sh --verifystep left an untrackedTools/TranscriptedLab/dist/while the proof was running.🤖 Generated with Claude Code
Exact-head CI verification — 2026-11-13
Verified on
c86e8a330e31885c32f9265293c32bd1ce22c159:repo-hygiene,pick-runner,checks,spm-tests,app-build, and thebuild-and-testumbrella all passed. Independent review remains GREEN. The PR is ready for review; it has not been merged.The full-bench/hardware/staged-update jobs in this normal PR run were intentionally skipped. This does not claim a completed 1.1.77 Release Candidate, notarization, native updater proof, or publication. The actual release-guard proof still requires the Release Candidate workflow after integration.