Skip to content

[POST-v1.0.0] Standardize release asset naming: drop v prefix uniformly + codify rule globally #18

@abitofhelp

Description

@abitofhelp

Summary

Standardize all GitHub Release asset filenames across the abitofhelp ecosystem
on the bare-semver convention (no v prefix in the artifact name) and codify
the rule in the global Claude operating instructions so future authorization /
checklist / report text uses it uniformly.

This is deferred until after adafmt v1.0.0 ships so the rc4 → v1.0.0 window
stays free of unrelated shared-tooling churn.

Convention to standardize on

Two surfaces, two different shapes:

Surface Form Example
Git tag v<semver> v1.0.0-rc4, v4.1.0
GitHub Release tag_name v<semver> v1.0.0-rc4, v4.1.0
Release asset filename bare semver (no v) adafmt-1.0.0-rc4-linux-amd64.tar.gz, spark_prove_1.1.1.log

The v prefix is a tag-name convention only. It must NOT appear in the
distributable artifact filename.

Current state (2026-06-20)

Already conformant — every release that uses package_dist.py:

  • adafmt-1.0.0-rc{2,3,4}-linux-{amd64,arm64}.tar.gz (+ .sha256)
  • Enforced mechanically by package_dist/package_dist.py via its
    --tarball <basename> interface; the docstring example
    (adafmt-1.0.0-rc1-linux-amd64) already shows the bare-semver shape.

Non-conformant — the SPARK proof log generator:

  • release/adapters/ada.py:874 (docstring) and release/adapters/ada.py:909
    (path construction) write /tmp/spark_prove_v{version}.log, which is
    subsequently uploaded as a Release asset on the SPARK-enabled library repos.
  • Observed in the wild on:
    • abitofhelp/functional releases: spark_prove_v4.1.0.log
    • abitofhelp/tzif_ada releases: spark_prove_v3.0.3.log, spark_prove_v3.0.2.log
    • abitofhelp/zoneinfo_ada releases: spark_prove_v1.1.1.log, spark_prove_v1.1.0.log

Scope

1. Rename the SPARK proof log artifact

Change the literal in release/adapters/ada.py from
/tmp/spark_prove_v{version}.log to /tmp/spark_prove_{version}.log.
Update the surrounding docstring on line 874. Verify that nothing
downstream (workflow upload steps, asset glob patterns, release-notes
templates) hard-codes the spark_prove_v… shape.

2. Comprehensive sweep for other v-prefixed asset generators

Grep across:

  • hybrid_scripts_python/ (this repo) — all of release/, package_dist/,
    any other adapter or helper.
  • hybrid_test_python/ — the sibling shared submodule.
  • Per-repo .github/workflows/*.yml in each consumer — gh release upload
    steps, softprops/action-gh-release files: lists, manual tar/zip
    invocations, anything that names an asset.

For each match, decide: is it a release artifact (rename to bare semver) or a
non-asset string (leave alone)?

3. Codify the rule in global Claude operating instructions

Add a short "Release Engineering" section to the operating instructions used
by Claude across all projects, scoped to:

  • Tag surface uses v<semver>.
  • Release-asset filenames use bare <semver> (no v), in the shape
    <name>-<bare-semver>-<descriptor>.<ext>.
  • package_dist.py is the mechanical enforcement point for tarball assets;
    any new asset-generating script must follow the same convention.

The exact home (a new section in ~/.claude/CLAUDE.md, or a new @release
agent, or amending an existing agent) is the maintainer's call. The
project-local feedback memory
feedback_release_asset_name_no_v_prefix.md in the adafmt project memory
should be retired or pointed at the global rule once it lands globally.

4. Cross-repo follow-up after rename

After the script rename lands, any newly-published library release will use
spark_prove_<version>.log. Existing historical assets (rc2 / rc3 tarballs,
prior SPARK logs) stay as-is — no rename of published assets in-place; the
convention applies forward.

Timing

  • Do NOT start until adafmt v1.0.0 final tag ships and any immediate v1.0.0
    follow-ups have settled.
    Shared-tooling churn during the v1.0.0 window
    risks breaking the in-flight RC chain.
  • After v1.0.0: open dedicated PRs against hybrid_scripts_python (and any
    per-repo workflow that needs adjustment), validate via the usual GHA gate,
    and only then update the global instructions.

Out of scope

  • Renaming historical published assets — only forward conformance.
  • Changing the tag surface (v<semver> stays).
  • Editing package_dist.py — already conformant.

References

  • Convention surfaced and confirmed during adafmt v1.0.0-rc4 release mechanics
    (2026-06-20).
  • Authoritative confirmation by owner during the same session.
  • Project memory: feedback_release_asset_name_no_v_prefix.md (adafmt local
    memory; to be retired once the global rule lands).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesttaskA task to perform that supports the product, not related to code.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions