From c09fd05660bcd1b80d33c7f198a72ad64c3a7b7f Mon Sep 17 00:00:00 2001 From: Bjorn Date: Sun, 12 Apr 2026 12:53:22 -0700 Subject: [PATCH 1/2] fix: use published_at for registry released_at timestamp Draft releases have two timestamps: created_at (when the draft was first created) and published_at (when it was actually published). These can be hours or days apart. The registry was recording created_at, causing releases to show a publish date in the past. Prefer published_at with a fallback to created_at for releases that were never drafted. Co-Authored-By: Claude Opus 4.6 (1M context) --- .github/workflows/release.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 2b35388..59313e3 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -1320,8 +1320,8 @@ jobs: run: | RELEASE_JSON=$(gh api "repos/${{ github.repository }}/releases/tags/${{ inputs.tag }}" 2>/dev/null || echo '{}') echo "$RELEASE_JSON" | jq -r '.body // empty' > /tmp/changelog.md || true - CREATED_AT=$(echo "$RELEASE_JSON" | jq -r '.created_at // empty') - echo "released_at=$CREATED_AT" >> "$GITHUB_OUTPUT" + RELEASED_AT=$(echo "$RELEASE_JSON" | jq -r '.published_at // .created_at // empty') + echo "released_at=$RELEASED_AT" >> "$GITHUB_OUTPUT" - name: Write merged manifest from dist recording job working-directory: _workflows From 1e5a2a67496b9efe735b386834b6a260270d5a90 Mon Sep 17 00:00:00 2001 From: Steve Gontzes Date: Mon, 13 Apr 2026 10:43:47 -0400 Subject: [PATCH 2/2] Clarify released_at publish-time semantics --- .github/workflows/release.yaml | 2 ++ cmd/record-release/main.go | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 59313e3..953a082 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -1320,6 +1320,8 @@ jobs: run: | RELEASE_JSON=$(gh api "repos/${{ github.repository }}/releases/tags/${{ inputs.tag }}" 2>/dev/null || echo '{}') echo "$RELEASE_JSON" | jq -r '.body // empty' > /tmp/changelog.md || true + # Prefer publish time; created_at can predate visibility for draft releases + # and for normal create-then-publish workflow runs. RELEASED_AT=$(echo "$RELEASE_JSON" | jq -r '.published_at // .created_at // empty') echo "released_at=$RELEASED_AT" >> "$GITHUB_OUTPUT" diff --git a/cmd/record-release/main.go b/cmd/record-release/main.go index 642c37b..449fa3c 100644 --- a/cmd/record-release/main.go +++ b/cmd/record-release/main.go @@ -99,7 +99,7 @@ func main() { flag.StringVar(&configSchemaPath, "config-schema", "", "Path to config_schema.json file (optional)") flag.StringVar(&capabilitiesPath, "capabilities", "", "Path to baton_capabilities.json file (optional)") var releasedAt string - flag.StringVar(&releasedAt, "released-at", "", "Release creation timestamp in RFC 3339 format (optional, defaults to server time)") + flag.StringVar(&releasedAt, "released-at", "", "Release publish timestamp in RFC 3339 format (optional, defaults to server time)") flag.StringVar(&token, "token", "", "Bearer token (or set REGISTRY_API_TOKEN env var)") flag.Parse()