Prepare the 1.2.0 advisory release - #907
Merged
Merged
Conversation
Prepares 1.2.0 on the advisory channel, per docs/release-runbook.md § Cutting the release (steps 1-3) and § The advisory release channel (step 1). It stops at "ready for the owner to review": no tag, no GitHub Release, no pypi approval, nothing uploaded. - CHANGELOG.md: `## Unreleased` becomes `## 1.2.0 - 2026-09-29`, one line per change (33), with a framing paragraph, Highlights and the two pointers. It extracts at 7,936 characters. - docs/changelog/1.2.0.md (new): the full reviewed prose, linked from docs/INDEX.md. - Version-status reconciliation: entries and docs that called themselves unreleased now read true after publication. The application comparison result ships as schema `0.2`. - STABILITY.md: title stamped · 1.2.0; 18 `Migration Note: Unreleased` headings become `Migration Note: 1.2.0`, anchors untouched; preamble and note sentences restated to stay true after publication. - In-tree version sites: pyproject.toml, __version__, .well-known version, the three plugin manifests, llms.txt, docs/ai-search-summary.md, the source-tree version lines in README.md and docs/quickstart.md, the capability-lock example, the codex boundary goldens, the metadata roundtrip literal, and the pilot ledger's source-tree label. Schemas and llms-full.txt are regenerated. - .github/release-channels.json declares "1.2.0": "advisory". Published-release pins (runbook step 8) are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Prepares
1.2.0on the advisory channel, perdocs/release-runbook.md§ Cutting the release (steps 1–3) and § The advisory release channel (step 1). It stops at "ready for the owner to review". No tag was pushed, no GitHub Release was created, thepypienvironment was not approved, and nothing was uploaded anywhere.Why this is a MINOR, not a patch
STABILITY.md§ Versioning defines a minor as new features adhering to the contract. This cycle:diff --application(feat: compare application agent wiring without prior setup #871, Application diff: derive the comparison scope from the change when --scope is omitted #875, Application diff reports 'compared, no changes' when an SDK agent built by 'return Agent(...)' gains a tool #876, Google ADK: resolve repository-local imported functions and module-qualified tool bindings #864, Google ADK: trace bounded FunctionTool factories into agent tool bindings #865, Application diff rows should name what a bound tool reaches: endpoint, action, credential, model-supplied arguments #872);0.20→0.21;0.3→0.4;0.6→0.7;application_comparison_schema_version0.2, its first published version.Channel: advisory, per
docs/release-evidence-policy-decision.md§ Amendment 5, as for 1.0.0 and 1.1.0. A tagged version's channel is frozen forever, so declaring1.2.0advisory means1.2.0can never carry a qualified claim.What this changes
The release note (
CHANGELOG.md).## Unreleasedis promoted to## 1.2.0 - 2026-09-29. It is one line per change (33), with a framing paragraph, a### Highlightsblock and the two pointers 1.1.0 carries. The subsection### Application comparison without prior setupkeeps its name, so the anchorREADME.mdanddocs/application-comparison.mdlink to still resolves.scripts/release_notes.py --tag v1.2.0extracts it at 7,936 characters.Claim discipline. The framing cites only measurements the entries themselves record:
shipgate diffrepacks the repository's entire reachable history to read one base tree: 27 s per call on a 26 MB repository, 1 s on a toy one #686).It states the limits plainly:
diff --applicationreads OpenAI Agents SDK and Google ADK source wiring only;readis bounded.There is no "catches issues" framing.
The record. The full reviewed prose for all 33 entries moves verbatim to
docs/changelog/1.2.0.md(new), linked fromdocs/INDEX.md.Version-status reconciliation. In the record:
"0.2"(feat: compare application agent wiring without prior setup #871 introduced"0.1", which never shipped);Migration Note: Unreleasedare restated.docs/application-comparison.mdandREADME.mdsaid "while that entry is under Unreleased, use a source build". They now say "new in 1.2.0; until 1.2.0 is published, use a source build", which stays true after publication.docs/engineering/permission-review-guidance.md's "are unreleased" becomes "had not shipped before 1.2.0".STABILITY.md.· 1.2.0.Migration Note: Unreleasedheadings becomeMigration Note: 1.2.0; every heading has an explicit<a id>above it, so no inbound link breaks.0.21, capability diff0.4and contract v41 "are unreleased" now say they "had not shipped before 1.2.0".partialnow compares against1.1.0and says the intermediate never shipped.The general policy sentences about "unreleased
main" and the historicalmigration-note-unreleased-*anchors are left alone.Version sites.
pyproject.tomlversion = "1.2.0"src/agents_shipgate/__init__.py__version__ = "1.2.0".well-known/agents-shipgate.jsonversiononlydocs/agent-contract-current.md.claude-plugin/marketplace.json,plugins/claude-code/.claude-plugin/plugin.json,plugins/agents-shipgate/.codex-plugin/plugin.jsonllms.txt,docs/ai-search-summary.mdREADME.md,docs/quickstart.md1.2.0"docs/design-partner-pilot-results.mdSource tree: 1.2.0, with a clause saying only the label moved and the cells were not re-measureddocs/determinism-boundary.*,llms-full.txtgenerate_schemas.py,build-llms-full.py)docs/examples/capability-lock.v0.8.example.jsoncli_versiontests/golden/codex_boundary_result/*.json(8)tool.versiontests/test_v07_metadata_roundtrip.pyChannel declaration.
.github/release-channels.jsongains"1.2.0": "advisory", andtests/test_release_channel.py's committed-declaration assertion moves with it.What this deliberately does not change
No tag, no release, no publish.
No published-release pins (runbook step 8). These all stay at
1.1.0until after publication:LATEST_PUBLISHED_VERSION/LATEST_PUBLISHED_CONTRACT_VERSION;.well-known'srelease_status.latest_releaseandpackage.github_action;docs/agent-contract-current.md's "Latest release";@v1.1.0/==1.1.0pins.Moving them before the tag exists reproduces init writes an adopter workflow pinned to a tag that does not exist (56 days and counting) #506.
The two-phase labels stay.
llms.txt,docs/ai-search-summary.mdand the README/quickstart "not yet released" blocks keep their qualifiers until step 7.No deprecated ID is removed. The IDs deprecated in 1.1.0 (
docs/checks.md,STABILITY.md) become eligible for hard removal in 1.2.0 under § Versioning, but nothing requires it, and they stay readable.No published run-of-record evidence and no GitHub issue text was edited.
Release checklist state
STABILITY.mdpyproject.tomlat the release version.github/release-channels.jsondeclares the channelmaincommitverifyruns unattendedpypienvironment gateTests
-n 8) passes except three environmental cases that fail the same way onmainon this workstation (a global git ignore of.claude/settings.local.json, and a long worktree path truncating one hint).scripts/generate_schemas.py --check,scripts/verify_dependency_lock.py,ruff check .and./shipgate doctor --config shipgate.yaml --jsonpass;doctorreports imported version1.2.0with nomismatches.scripts/release_cadence.py --jsonreports the advisory linecurrent(7 days sincev1.1.0).Needs the owner's decision
2026-09-29. If the tag lands later, say so and I will re-date it before the smoke run. The release body is extracted from this commit.### Highlightssay what the entries measure and nothing more.docs/release-runbook.md§ Deployment prerequisites. The recorded platform observations are dated 2026-09-09/10. Separately, theProtect mainruleset still requiressuite (1)–suite (3)only. Name what a bound tool reaches in diff --application rows (#872) #906 split the suite into four shards, sosuite (4)should be added there, and to the runbook's table once it is.🤖 Generated with Claude Code