Skip to content

feat(build-info): self-report the bench tag lineage via git-describe (durable version honesty)#85

Merged
LightDriverCS merged 2 commits into
mainfrom
aurelius/build-info-release-describe
Jun 23, 2026
Merged

feat(build-info): self-report the bench tag lineage via git-describe (durable version honesty)#85
LightDriverCS merged 2 commits into
mainfrom
aurelius/build-info-release-describe

Conversation

@LightDriverCS

Copy link
Copy Markdown

What

Adds an additive release field to dist/build-info.json, stamped from git describe --tags --always --dirty:

{ "version": "2026.6.2", "release": "v2026.6.8-bench.3-3-gd401e877d6", "commit": "d401e877…", "builtAt": "" }

Why (the durable fix — NOT a version bump)

The bench fork deliberately keeps package.json version at the upstream base (2026.6.2) and carries the bench release identity in the git TAG (…-bench.3) — confirmed: even the v2026.6.8-bench.3 release tag has package.json 2026.6.2. So build-info version alone can't tell you which bench release is running. This bit the Briggs go-live and tonight's gateway cutover (--version→6.2 vs the real 6.8-bench.3).

I investigated bumping package.json instead and rejected it as non-durable: that field is load-bearing — npm-shrinkwrap.json (×3 embeds), deps:shrinkwrap:check, the npm-release/postpublish/appcast tests, and the publish workflow all key off it, and the bench release process intentionally decouples it. Changing it risks the release pipeline for a cosmetic label.

This instead makes a build self-report its true lineage (nearest bench tag + commits-ahead + sha) where the system reads it (build-info / health / the drift guard / debugging), with the load-bearing field untouched. The -dirty marker is a bonus floating-build signal (a build from an uncommitted worktree now flags itself).


Anvil-ready handoff

  • Scope: 1 file — scripts/write-build-info.ts (+resolveRelease(), +1 field). Purely additive.
  • Touched surfaces: build-info stamping only. package.json / version / shrinkwrap untouched → no release-pipeline impact.
  • Local gates: ran the stamper — emits release: v2026.6.8-bench.3-3-gd401e877d6-dirty; package.json unchanged; existing build-info consumers see an extra field (additive, non-breaking).
  • Blockers: none.
  • Follow-up: optionally surface release in the bench-harness drift-guard summary + openclaw --version/health output.

🤖 Generated with Claude Code

claude and others added 2 commits June 23, 2026 01:17
…e bench tag lineage

The bench fork deliberately keeps package.json version at the upstream base
(2026.6.2) and carries the bench release identity in the git TAG (e.g.
2026.6.8-bench.3) — so build-info version alone cannot tell you which bench release
a running build is. This bit the Briggs go-live and the 2026-06-23 gateway cutover
(--version -> 6.2 vs the real 6.8-bench.3 in the brew Cellar).

Add an additive 'release' field stamped from `git describe --tags --always --dirty`
(e.g. v2026.6.8-bench.3-3-gd401e877d6), so a running build honestly self-reports its
lineage: nearest bench tag + commits-ahead + short sha, plus a -dirty marker if built
from an uncommitted worktree (a bonus floating-build signal). The load-bearing version
field (npm-shrinkwrap / release-checks / npm-publish all key off it) is left untouched.
GIT_RELEASE env override for hermetic builds.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
@LightDriverCS
LightDriverCS marked this pull request as ready for review June 23, 2026 07:36
@LightDriverCS
LightDriverCS merged commit 76139d2 into main Jun 23, 2026
160 checks passed
@LightDriverCS
LightDriverCS deleted the aurelius/build-info-release-describe branch June 23, 2026 07:44
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.

3 participants