Skip to content

[Bug] /release site-version guard covers only softwareVersion — hero pill + releases metric drifted to v2.2 at v3.0.0 #562

@atlas-apex

Description

@atlas-apex

Affected

.claude/skills/release/SKILL.md § 3.5 (marketing-site version bump) + its durable guard .claude/hooks/tests/test_site_counts.sh.

Given / When / Then

Given /release § 3.5 lists seven version strings in site/index.html that must move with each cut (JSON-LD softwareVersion + dateModified, hero pill apexyard vX.Y, hero link text + href, releases-shipped count + range),

When v3.0.0 was cut,

Then only a subset was bumped — the hero pill (~L1568) still reads apexyard v2.2, and the releases-shipped metric (~L1696) still reads 12 / (v0.1 → v2.2) (CHANGELOG now has 14 release entries and the line is v3.0.0). The site advertises v2.2 in the badge while the hero link beside it says v3.0.0.

The drift went unnoticed because the durable guard test_site_counts.sh asserts only the JSON-LD softwareVersion against the CHANGELOG top entry. The other six § 3.5 locations — pill, dateModified, link text/href, count, range — are unguarded, so they can drift while CI stays green. § 3.5 itself even claims "the drift can no longer accumulate silently," but that guarantee only holds for one of the seven strings.

Repro

  1. Cut a release where the agent bumps softwareVersion + the hero link but misses the pill / metric (easy — § 3.5 relies on the operator hand-applying 7 separate edits).
  2. CI site-counts-check.ymltest_site_counts.sh passes (it only checks softwareVersion).
  3. The site ships with a stale badge (observed at v3.0.0: pill v2.2, metric 12 / (v0.1 → v2.2)).

Framework version

v3.0.0

Severity

major — public marketing site advertises the wrong version next to the correct one; the documented "durable guard" gives false confidence because it covers 1 of 7 strings.

Notes

  • Suggested fix: extend test_site_counts.sh to also assert (a) the hero pill apexyard vX.Y and (b) the releases-shipped range (v0.1 → vX.Y) against the CHANGELOG top entry's major.minor, and (c) the releases-shipped count against grep -cE '^## \[[0-9]' CHANGELOG.md. That brings the guarded set up to match § 3.5's promise. Optionally, replace the 7 hand-edits with a single deterministic bump helper invoked by /release.
  • Companion fix PR corrects the stale strings in the same change.

Glossary

Term Definition
§ 3.5 The /release skill step that bumps hard-coded version strings in the marketing site.
durable guard A CI-run test (test_site_counts.sh via site-counts-check.yml) meant to fail when site/CHANGELOG versions drift.
hero pill The version badge at the top-left of site/index.html (<span class="pill">apexyard vX.Y</span>).
releases-shipped metric The site/index.html stat showing release count + range (N · (v0.1 → vX.Y)).

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions