Skip to content

Release tags are lightweight and v0.1.0 is detached from main — suggest annotated tags #761

@HaleTom

Description

@HaleTom

Summary

The repository's two release tags (v0.1.0, v0.1.1) are lightweight tags, and v0.1.0 points to a commit (0fc4675) that is not reachable from the main branch. This creates confusion for anyone cloning or forking the repo.

Issue 1: Lightweight tags lack provenance

Both v0.1.0 and v0.1.1 are lightweight tags — they are bare SHA pointers with no tagger identity, no creation date, no message, and no GPG signature. For a public release from an organization like Xiaomi, this matters:

  • No way to verify who created the tag. Anyone with push access can move a lightweight tag to a different commit, and there is no audit trail.
  • No tag message. Release tags should carry a message describing what changed (e.g., "Initial open-source release", "Bug fix release").
  • No GPG signature. Annotated tags can be signed, giving downstream users a way to verify the tag's authenticity.

The fix is straightforward:

# Delete the lightweight tag and create an annotated replacement
git tag -d v0.1.0
git tag -a v0.1.0 -m "Initial open-source release of MiMo Code" <target-commit>
git push origin v0.1.0 --force

(Note: force-pushing a tag is different from force-pushing a branch — it only affects the tag reference, not any commit history.)

Issue 2: v0.1.0 is detached from main

The v0.1.0 tag points to commit 0fc4675, which is not an ancestor of main's current tip. Running git log --oneline main does not include this commit. The tag is only reachable via the v0.1.0 ref itself.

This means:

  • git checkout v0.1.0 works, but the resulting HEAD is not on any branch.
  • git log main..v0.1.0 shows commits that appear unreachable from main, which is confusing for contributors and CI.
  • Anyone bisecting or walking history from main will never encounter the v0.1.0 tag.

The initial commit on main is 7233b71 ("Initial open-source release of MiMo Code"), while 0fc4675 is a rewritten version of that commit (with an added Co-Authored-By trailer). Moving v0.1.0 to point to 7233b71 — the commit actually in main's history — would make the tag reachable from the default branch:

git tag -d v0.1.0
git tag -a v0.1.0 -m "Initial open-source release of MiMo Code" 7233b71
git push origin v0.1.0 --force

Recommendation

  1. Convert both release tags to annotated tags with descriptive messages and, ideally, GPG signatures.
  2. Move v0.1.0 to 7233b71 so the tag is reachable from main's history.
  3. Consider enabling the GitHub repository setting "Do not allow tag updates" under branch protection to prevent tags from being silently moved in the future.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    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