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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions