Skip to content

chore(ci): assert tags are bare version numbers (no v prefix)#19

Merged
Aaronontheweb merged 1 commit into
devfrom
chore/drop-v-prefix-tag-trigger
May 11, 2026
Merged

chore(ci): assert tags are bare version numbers (no v prefix)#19
Aaronontheweb merged 1 commit into
devfrom
chore/drop-v-prefix-tag-trigger

Conversation

@Aaronontheweb

Copy link
Copy Markdown
Owner

Summary

ShellSyntaxTree convention: release tags are bare SemVer version numbers — no v prefix. 0.1.0-alpha, not v0.1.0-alpha. The tag value IS the package version, verbatim.

This PR enforces that convention in the release pipeline before the first tag pushes.

Workflow changes (publish_nuget.yml)

  • Trigger broadened to tags: ['*'] so the workflow fires on ANY tag push. Mistakes (e.g., v0.1.0 accidentally pushed) show up loudly in CI instead of silently no-op-ing.
  • New first step "Assert tag is a bare version number":
    • Fails fast with ::error:: if the tag starts with v
    • Fails if the tag isn't SemVer-shaped (<major>.<minor>.<patch> or <major>.<minor>.<patch>-<prerelease>)
    • On success, writes PACKAGE_VERSION=<tag> straight to $GITHUB_ENV
  • Old "Compute package version from tag" step removed — folded into the assert. No more ${TAG#v} strip needed.

Doc cleanups

  • README.md Versioning section: 0.1.0-alpha / 0.1.x / 0.2.0 / 1.0.0 (no v prefix). Added a one-liner explaining the convention.
  • IMPLEMENTATION_PLAN.md: NOW / NEXT / LATER bucket headings updated; example tag-push command is now git tag 0.1.0-alpha && git push origin 0.1.0-alpha.

Verification

  • dotnet build -c Release — clean
  • dotnet test -c Release — 353/353 passing
  • pwsh ./scripts/Add-FileHeaders.ps1 -Verify
  • ⚠️ Workflow change only exercises on tag push; cannot be CI-verified until 0.1.0-alpha is tagged.

Test plan

  • CI passes on `Test-ubuntu-latest`
  • CI passes on `Test-windows-latest`
  • After merge: push 0.1.0-alpha tag and verify the workflow's assert step accepts it; verify the workflow rejects a deliberately-misformatted test tag (optional sanity check; can also be deferred to whenever someone accidentally mistypes).

Next

After this merges: I push the 0.1.0-alpha tag (per your go-ahead).

@Aaronontheweb Aaronontheweb enabled auto-merge (squash) May 11, 2026 13:51
ShellSyntaxTree convention: release tags are SemVer version numbers
verbatim — no decoration. Example: `0.1.0-alpha`, NOT `v0.1.0-alpha`.
The tag value IS the package version.

publish_nuget.yml changes:
- Trigger broadened to `tags: ['*']` so the workflow fires on ANY tag
  push; mistakes show up in CI rather than silently no-op-ing.
- New first step "Assert tag is a bare version number":
  * fails fast with a clear ::error:: message if the tag starts with 'v'
  * fails if the tag isn't SemVer-shaped
    (`<major>.<minor>.<patch>[-prerelease]`)
  * on success, writes PACKAGE_VERSION=<tag> straight to GITHUB_ENV
- "Compute package version from tag" step folded into the assert (no
  more `${TAG#v}` strip; the assert guarantees no leading v).

Version-string cleanups in docs:
- README.md: Versioning section header now lists `0.1.0-alpha` /
  `0.1.x` / `0.2.0` / `1.0.0` (no v prefix); added a one-liner
  explaining the convention.
- IMPLEMENTATION_PLAN.md: NOW / NEXT / LATER bucket headings switched
  from `v0.1.x` to `0.1.x` etc.; the example tag-push command is now
  `git tag 0.1.0-alpha && git push origin 0.1.0-alpha`.

Tests / build clean. Public API surface unchanged.

This lands before the first tag push so the workflow's assertion is in
place when 0.1.0-alpha goes out.
@Aaronontheweb Aaronontheweb force-pushed the chore/drop-v-prefix-tag-trigger branch from 1500cf8 to ba6d907 Compare May 11, 2026 13:55
@Aaronontheweb Aaronontheweb merged commit 41e9433 into dev May 11, 2026
2 checks passed
@Aaronontheweb Aaronontheweb deleted the chore/drop-v-prefix-tag-trigger branch May 11, 2026 13:57
Aaronontheweb added a commit that referenced this pull request May 11, 2026
Reconcile the plan with what actually shipped on 2026-05-11:

- Mark IMPLEMENTATION_PLAN.md Item 13 (Release 0.1.0-alpha) complete.
  Tag 0.1.0-alpha pushed at commit 41e9433 (PR #19);
  publish_nuget.yml succeeded at 13:58:20Z; GitHub Release cut at
  14:08:47Z. Record PR #19 + PR #20 as post-alpha CI follow-ups.
- Archive OpenSpec change v0.1-locked-interpretations under
  openspec/changes/archive/2026-05-11-v0.1-locked-interpretations/.
  Skipped applying the spec delta (--skip-specs) because some
  scenarios describe pre-implementation states (e.g., Parse stub
  throwing NotImplementedException) that are now stale; SPEC.md
  remains the v0.1 source of truth.

No code, test, corpus, or SPEC.md changes. Build clean; 353/353 tests
pass.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant