Agents Builders

Fix release gem-version read

Archived
fix-release-gem-version-read

Created

Jun 25, 14:48

Started

Jun 25, 14:49

Completed

Jun 25, 19:24

DevOps handoff

Type

Bug

Shape

backend

Worktree Slug

fix-release-gem-version-read

Repositories

mcritchie-studio

Release Train

Branch

feat/fix-release-gem-version-read

Local URL

QA URL

Production URL

devops release-tooling gem-publish

Acceptance Criteria

  • gem version read from release SHA not local
  • ship publishes a bumped gem instead of skipping
  • dry-run labels the version that will publish

Expected Test Plan

  • [unit] gem version resolved from release SHA
  • [integration] bumped gem publishes not skips (stub seam, CI-portable)

Checks Run

  • [unit] gem_version_for reads version at the QA-frozen ref, not stale local main (test/lib/release_cli_test.rb)
  • [unit] gem_version_for falls back to local checkout when no frozen ref is given
  • [integration] ship publishes a version-bumped gem instead of skipping it (full ship flow, I/O seams stubbed, CI-portable)

Agent Context

From conductor retro 2026-06-25; this bug just cost a manual gem save on studio-engine 0.11.0. bin/release gem_version_local(repo) (~bin/release:162) reads the gem version from the LOCAL checkout's version_file. During ship, that read happens BEFORE the ship ff's the local checkout to the new release SHA — so it reads the STALE pre-ff version (0.10.0), the publish-skip check sees 0.10.0 'already live', and it SKIPS publishing the actually-bumped version (0.11.0) whose gemspec is on the release SHA (1671e54). Net: rel-20260625-344494 shipped but studio-engine 0.11.0 never published (had to gem-push manually). The dry-run even labels it '0.10.0' (the tell). FIX: read the gem version from the RELEASE SHA / member_plan (e.g. git show <release-ref>:<version_file>, or use member_plan's version), independent of local ff order, so the publish-skip check + the published artifact use the version that will actually build (0.11.0). Fix the dry-run label too. Test: unit on the version resolver (reads release-SHA version, not pre-ff local); integration that a bumped gem PUBLISHES (not skips) via the existing release_cli_test stub seam — and keep it CI-portable (no on-disk sibling dependency; see the #191/#181 lesson).

Stage Timeline

Who handled each stage, the time it took (measured), and the model / tokens / cost reported (best-effort) — plus who's on it right now. means the agent didn't report that metric.

  1. Created Designed
    N Ninetales
    Ninetales
    Model
    Duration
    Tokens
    Cost
    Completed Jun 25, 14:48 · 2 days ago
    api
  2. Designed Building
    N Ninetales
    Ninetales
    Model
    claude-opus-4-8
    Duration
    under a minute
    Tokens
    Cost
    Started Jun 25, 14:48
    Completed Jun 25, 14:49 · 2 days ago
    cli
  3. Building Submitted
    N Ninetales
    Ninetales
    Model
    claude-opus-4-8
    Duration
    about 1 hour
    Tokens
    Cost
    Started Jun 25, 14:49
    Completed Jun 25, 15:50 · 1 day ago
    cli
  4. Submitted Reviewed
    C Carl
    Carl primary
    S Shannon
    Shannon light
    Model
    <synthetic>
    Duration
    about 3 hours
    Tokens
    Cost
    Started Jun 25, 15:50
    Completed Jun 25, 18:25 · 1 day ago
    cli
  5. Reviewed Assembled
    S Steffon
    Steffon
    Model
    Duration
    32 minutes
    Tokens
    Cost
    Started Jun 25, 18:25
    Completed Jun 25, 18:57 · 1 day ago
  6. Assembled Shipped
    A Avi
    Avi
    Model
    Duration
    26 minutes
    Tokens
    Cost
    Started Jun 25, 18:57
    Completed Jun 25, 19:24 · 1 day ago
  7. Shipped Archived
    8
    81fad33e-98b5-4075-8ed6-d0efe6cb5804
    Model
    claude-opus-4-8
    Duration
    about 2 hours
    Tokens
    91,909,107
    Cost
    ~$70.81
    Started Jun 25, 19:24
    Completed Jun 25, 21:16 · 1 day ago
    cli

Conversation

QA review feedback, agent handoffs, and follow-up notes for this task.

Comment 1 day ago

Review pair APPROVED: carl (heavy) + shannon (light). gem_version_from_ref reads the gem version at the frozen release SHA (git show <ref>:<version_file>); both publish-decision sites (whats_live + ship gem loop) fixed; dry-run/preflight label now shows the version that will publish. 3 CI-portable regression tests (frozen-ref read, local fallback, end-to-end publish-not-skip), CI green. Non-blocking note (both reviewers): gem_version_from_ref does no fetch before git show — relies on the frozen object being local (same invariant as frozen_sha_for); future hardening comment. Held from release merge until Rails 8.1 RC ships.

Sealed-bid sizing

Edit →

Alex (PM)

Avi (PO)

Dev

Actual