Skip to content

[Bug] release tag can land off main's ancestry (v2.3.0 mis-tagged) #550

@atlas-apex

Description

@atlas-apex

Given / When / Then

Given the release-cut model where dev is squash-merged to main and a vN.N.N tag is then created,
When the tag is placed on the release-branch HEAD (the pre-squash commit) instead of the squash commit that actually landed on main,
Then the tag points off main's ancestry — git describe --tags upstream/main fails with "No tags can describe …", git merge-base --is-ancestor <tag> upstream/main is false, and "fork from the latest release" / git describe-based tooling breaks.

This is the current state of v2.3.0 on the framework repo: the tag commit is not in main's history (the real v2.3.0 release commit on main is a different SHA). v3.0.0 was tagged correctly (on upstream/main), so the two coexist inconsistently.

Repro

  1. git fetch upstream --tags
  2. git describe --tags --abbrev=0 upstream/main → fails: No tags can describe ''.
  3. git merge-base --is-ancestor v2.3.0 upstream/main; echo $? → non-zero (not an ancestor).
  4. By contrast git merge-base --is-ancestor v3.0.0 upstream/main; echo $? → 0.

Expected

The /release tagging step must tag the merged commit on main (git tag vN.N.N upstream/main after the release PR squash-merges), never the release-branch HEAD. Worth adding a guard/post-check: after tagging, assert git merge-base --is-ancestor vN.N.N upstream/main and warn if false. The existing mis-placed v2.3.0 tag should also be re-pointed at its real squash commit on main.

Environment

  • ApexYard framework, /release skill (tag + push step) and/or manual release tagging
  • Observed on me2resh/apexyard: v2.3.0 off-ancestry, v3.0.0 correct.

Severity

Medium — breaks git describe, "default to latest release" assumptions, and any ancestry-based tooling; not data-affecting. Fix is a tagging-target correction + a one-time re-point of v2.3.0.

Glossary

Term Definition
Squash commit The single commit created on main when a release PR is squash-merged; the tag must point here.
Ancestry / git describe Tag discoverability depends on the tag being a reachable ancestor of the branch tip.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Medium — plan-worthy, not urgentbugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions