Goal
Keep the canonical validation gate green in a normal clone after the v2.0.0 release, and make hosted CI exercise the same tag-aware repository state.
Background
tests/release.bats uses v2.0.0 as the supposedly unused candidate in four tests. The git stub delegates local-tag checks to real Git unless a test explicitly sets BASE_BASH_RELEASE_TEST_LOCAL_TAG=present. Now that v2.0.0 exists, a full tagged checkout sees the real tag and those fixtures fail. The hosted Tests workflow remains green because actions/checkout uses its default shallow/tag-light checkout, so CI does not reproduce the normal-clone gate.
This is a concrete post-GA follow-up to #215, not a request to change the immutable published tag.
Reproduction and evidence
Framework reference: 23797a73b2 on main, with local v2.0.0 tag present.
$ ./tests/validate.sh
not ok 8 release guard delegates real v2 GA publication after reviewed RC gates
not ok 9 release refs preflight accepts an unused candidate tag
not ok 11 release refs preflight rejects a conflicting remote tag
not ok 12 release refs preflight fails closed when origin cannot be inspected
...
Validation stage failed: BATS test suites (exit 1).
The remaining 556 BATS assertions pass. .github/workflows/tests.yml does not fetch full history/tags before running the same validation command.
Scope
- Make each release test hermetic with respect to real local and remote tags.
- Use an explicitly unused prerelease candidate where absence is the behavior under test, or have the stub fully own tag lookup.
- Add a tag-aware/full-clone CI path so the canonical gate cannot be green only because tags are absent.
- Retain explicit coverage for conflicting local tags, conflicting remote tags, and remote lookup failure.
Acceptance criteria
Validation
bats tests/release.bats
./tests/validate.sh
- A hosted run from a checkout that contains/fetches
v2.0.0
Project fields
- Status: Backlog
- Priority: P1
- Area: CI
- Initiative: Adoption Polish
- Size: S
Ownership
Goal
Keep the canonical validation gate green in a normal clone after the v2.0.0 release, and make hosted CI exercise the same tag-aware repository state.
Background
tests/release.batsusesv2.0.0as the supposedly unused candidate in four tests. The git stub delegates local-tag checks to real Git unless a test explicitly setsBASE_BASH_RELEASE_TEST_LOCAL_TAG=present. Now thatv2.0.0exists, a full tagged checkout sees the real tag and those fixtures fail. The hostedTestsworkflow remains green becauseactions/checkoutuses its default shallow/tag-light checkout, so CI does not reproduce the normal-clone gate.This is a concrete post-GA follow-up to #215, not a request to change the immutable published tag.
Reproduction and evidence
Framework reference:
23797a73b2onmain, with localv2.0.0tag present.The remaining 556 BATS assertions pass.
.github/workflows/tests.ymldoes not fetch full history/tags before running the same validation command.Scope
Acceptance criteria
./tests/validate.shpasses in a full clone containing the publishedv2.0.0tag.Validation
bats tests/release.bats./tests/validate.shv2.0.0Project fields
Ownership