Repository navigation
chore: release v0.35.0 - #3355
Conversation
Prepare the approved 2026-10-22 changelog with 37 user-facing PR entries and bump pyproject.toml plus uv.lock to 0.35.0. The complete local CI lint mirror passes against current main; full release validation remains a separate gate. Post-merge: tag v0.35.0 to trigger the release workflow after qualification. Refs #3354 Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 7a8b03c4-2e88-4c27-a80f-15ede27adb1c
Docs sync advisoryVerdict: unavailable * Pages affected: undetermined * LLM calls: 1/15 * Took: not recorded The classifier could not access file-reading or command-execution tools and returned an invalid classifier result. The advisory run stopped at schema validation; no documentation-impact verdict is claimed, and no panel, documentation edits or companion PR followed. This is an advisory tooling failure, not a release lint failure or a merge gate. The release PR's local validation evidence remains separate. |
There was a problem hiding this comment.
🟢 Approval recommended
The metadata-only changes are consistent with the bounded preparation scope, with no identified blocking defects; full release qualification remains required before tagging.
No open issues 🎉
What changed in this PR
Prepares v0.35.0 through release notes and matching package metadata only. Release qualification, specification ratification, tagging and publication remain separate decisions.
Changes:
- Adds a dated release section with 37 user-facing entries, preserving contributor credit and an empty Unreleased section.
- Updates both package-version sources to
0.35.0without changing external dependencies. - Retains explicit caveats for proposed schema and source-replacement contracts.
| File | Description |
|---|---|
uv.lock |
Updates the editable root package version to 0.35.0. |
pyproject.toml |
Sets the project version to 0.35.0. |
CHANGELOG.md |
Consolidates and dates the v0.35.0 release notes. |
Review effort: Balanced
ship(release): prepare v0.35.0
Description
TL;DR
Prepare v0.35.0 with 37 user-facing changelog entries dated 2026-10-22 and matching versions in
pyproject.tomlanduv.lock. The cycle warrants a minor bump because it adds opt-in root source replacements and candidate schema contracts. This PR changes release metadata only; tagging, publication and specification ratification remain separate decisions.Important
The full local lint mirror passed. This is not a claim that full release validation is green: the latest inspected nonpublishing dispatch failed on an earlier main revision, and no test suite or binary build was run for this preparation.
Problem (WHY)
replacecapability in add(deps): support consumer-root source replacements #3309 adds a manifest surface, triggering row 3 of the repository's release rubric, rather than a patch-only cycle.Approach (WHAT)
v0.34.0through main52415c281: 49 merged PRs, comprising 37 user-facing changes and 12 internal-only changes.Why MINOR (0.35.0), not PATCH (0.34.1)
The new root
replacemanifest capability (#3309, rubric row 3) and distinct candidate schema contracts (#3308 and #3309, row 4) require a minor bump. The remaining entries repair existing behavior. The project remains pre-1.0; this is not a new API-stability commitment or adoption of the proposed specifications.Implementation (HOW)
CHANGELOG.mdpyproject.toml0.35.0; dependency requirements are unchanged.uv.lock0.35.0; all external versions, hashes, URLs and timestamps are unchanged.Diagrams
The dashed nodes are the three files changed here; review, qualification and tagging remain human-gated steps outside this preparation.
flowchart LR subgraph Prep["This PR"] C["CHANGELOG.md: 37 release entries"] V["pyproject.toml: 0.35.0"] L["uv.lock: apm-cli 0.35.0"] V --> L end C --> R["Release PR"] L --> R R --> H["Human review and merge"] H --> T["Human tags v0.35.0 after qualification"] T --> W["Existing release workflow"] classDef new stroke-dasharray: 5 5; class C,V,L new;Trade-offs
Benefits
0.35.0.Issue and approved scope
Issue: Fixes #3354.
Human scope-approval comment: no separate human-authored GitHub approval comment was created by this automation. The linked issue transparently records Daniel Meppiel (@danielmeppiel)'s explicit session approvals of v0.35.0, the changelog diff, the bounded version/lint/PR scope and this tracking issue. It is not presented as a machine-verified
apm-scope:v1comment.This PR completes release preparation only. Review contact: Daniel Meppiel (@danielmeppiel). Full release qualification, merge, tag and publication remain separate.
Type of change
Testing
Validation
Checks ran with main
52415c281integrated. Only the three release files changed afterward; no product source was edited. Results below are local, not hosted-PR CI results.bash .agents/skills/cut-release/scripts/bump-version.sh 0.35.0uv lock --checkbash .agents/skills/cut-release/scripts/verify-lint-mirror.shuv run --frozen --extra dev ruff check src/ tests/ scripts/lint_architecture_boundaries.py scripts/architecture_linter/ scripts/windows_native_symlink_probe_entry.pyuv run --frozen --extra dev ruff format --check src/ tests/ scripts/lint_architecture_boundaries.py scripts/architecture_linter/ scripts/windows_native_symlink_probe_entry.pyuv run --frozen --extra dev python -m pylint --disable=all --enable=R0801 --min-similarity-lines=10 --fail-on=R0801 src/apm_cli/ scripts/lint_architecture_boundaries.py scripts/architecture_linter/ scripts/windows_native_symlink_probe_entry.pybash scripts/lint-auth-signals.shbash scripts/lint-architecture-boundaries.shgit diff --checkuv run --frozen apm --version0.35.0.The YAML I/O, portable-relative-path and 2100-line guards also passed using the CI regexes and covered paths in Python. An initial shell attempt lacked
rg; its success-shaped output was discarded, and the guards were re-executed successfully.Verbatim local output excerpts
bash .agents/skills/cut-release/scripts/verify-lint-mirror.sh:uv run --frozen apm --version(before the release commit):The diagram was rendered successfully with
npx --no-install --package @mermaid-js/mermaid-cli mmdc -i release-diagram.mmd -o release-diagram.svg --quietusing session-artifact paths. Release-note assertions passed for exact PR coverage, unique entries, external attribution, ASCII text and unchanged prior releases.Not run: pytest suites, PyInstaller builds, package publication or release tagging. The latest inspected full nonpublishing dispatch 39784442659 failed on earlier main
abd363ff7; subsequent #3353 repairs test fixtures but explicitly leaves the macOS ARM timeout unresolved. The successful push build 39794865082 is not a substitute for full release qualification.How to test
uv lock --check; expect exit 0 without modifying the lockfile.uv run --frozen apm --version; expect0.35.0and the actual checkout revision.CHANGELOG.md,pyproject.tomland the root package version inuv.lockto change.Spec conformance (OpenAPM v0.1)
If this PR changes behaviour that an OpenAPM v0.1
req-XXXcovers,confirm the three-step ritual in the
development guide:
docs/src/content/docs/specs/openapm-v0.1.mdupdated(new/changed
<a id="req-XXX"></a>anchor + prose + Appendix Crow).
docs/src/content/docs/specs/manifests/openapm-v0.1.requirements.ymlupdated.
@pytest.mark.req("req-XXX")test undertests/spec_conformance/added or extended.CONFORMANCE.{md,json}regenerated viauv run --extra dev python -m tests.spec_conformance.gen_statementand committed.
Post-merge
After the release PR is merged and release qualification is complete, the maintainer can tag
v0.35.0to trigger the release workflow:No tag was created or pushed by this session.
Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com