Skip to content

feat: release stamping slim — wheels+tags only, no daily bump commits (R3-core) #120

Description

@Jammy2211

Overview

R3-core of the version-pinning design review (#118). Every release pushes "Update version to X" commits to all five library mains and "pin workspace version" / README-stamp commits to every workspace main — the noise engine behind the June/July accidental-release cascade (stale CI storms, email flood, org-wide cron pause). The wheels already get their version from sed at build time, so none of these commit-backs are needed for published artifacts. This task makes releases wheels+tags-only, and removes the scheduled run_number version fallback that produced the 2026.6.25.641 → 2026.7.6.649 accident.

Autonomy: --auto, effective supervised (feature cap — deliberate behavior change, not a pure refactor). Plan recorded here; ship sign-off will park with a batched question.

Plan

  • Scheduled releases version as <date>.1, never <date>.<run_number> (rehearsal uniqueness already comes from the .devN segment).
  • release job: keep build-tree sed stamp + annotated tag + git push --tags; drop the __init__.py commit-back and branch push to library mains.
  • release_workspaces: drop the "Write workspace version" step (obsolete under PyAutoConf#118 floor semantics) and the README version-stamp commit; keep notebook regen, Colab bumps, API baseline, workspace tags (their cadence is Q2 on research: version-pinning design review — exact pins vs daily release #118, decided separately).
  • Merge gate: merge only after PyAutoConf#118 (R2), so the release that stops writing pins also ships the floor check.
Detailed implementation plan

Affected Repositories

  • PyAutoBuild (only)

Branch Survey

Repository Current Branch Dirty?
./PyAutoBuild main clean

Note: active.md still carries a PyAutoBuild claim from morning-status-release-rehearsal, but all three of its PRs (Build#119, Heart#40, Mind#41) are merged — the claim is stale post-merge state, recorded here rather than deleting another session's entry.

Suggested branch: feature/release-stamping-slim
Worktree root: ~/Code/PyAutoLabs-wt/release-stamping-slim/

Implementation Steps

  1. .github/workflows/release.yml version_number job: VERSION="${DATE_FORMATTED}.${MINOR_VERSION:-1}" (both the live and rehearsal composition lines) — a same-day manual dispatch after a scheduled live release must pick its own minor_version (twine will loudly reject a duplicate otherwise).
  2. release job: delete the Update version step's git commit; in Tag, drop git push (branch), keep git push --tags. The sed stamps stay (they version the build tree that produces the wheels; pyproject.toml sibling-pin sed unchanged).
  3. release_workspaces: delete the Update version in README and Write workspace version steps; leave notebook regen / Colab bumps / API baseline / tag-and-push untouched.
  4. Sanity: python -m pytest tests/ in PyAutoBuild; YAML-parse the workflow; grep the repo for consumers of the removed steps (verify_workspace_versions already removed in Add a release-execution skills root (pre_build) #110-era cleanup).

Key Files

  • PyAutoBuild/.github/workflows/release.yml

Out of scope (follow-ups)

  • Q2 on research: version-pinning design review — exact pins vs daily release #118: notebook/Colab cadence under daily live releases.
  • Library __version__ via importlib.metadata (parked to avoid conflicting with the in-flight PyAutoConf#118 worktree).
  • PyAutoHeart version_skew rework for floor semantics (compares workspace pins vs __init__ stamps; goes inert once both freeze — needs a new signal source, e.g. floor vs latest tag).

Original Prompt

Click to expand starting prompt

R3 of PyAutoBuild#118 (endorsed 2026-07-08): stop committing version bumps to main on every release — the wheel already gets its version from the VERSION env var at build time; runtime __version__ can come from importlib.metadata. Keep the git tags (they anchor Colab URLs and releases); drop the daily "Update version to X" / "pin workspace version" / Colab-bump commits, which were the noise-and-stale-CI engine of the incident. Plus the #39 residue: MINOR_VERSION still falls back to github.run_number on scheduled runs — R3 defaults it to 1 on schedule.

User go-ahead: "ok, those PRs are done so we can do this work now --auto"

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions