Created
Jun 25, 14:52
Started
Jun 25, 16:04
Completed
Jun 25, 19:24
DevOps handoff
Type
Feature
Shape
backend
Worktree Slug
dor-check-gem-guard
Repositories
mcritchie-studio
Release Train
—
Branch
feat/dor-check-gem-guard
Local URL
—
QA URL
—
Production URL
—
Acceptance Criteria
Expected Test Plan
Checks Run
Agent Context
From the 2026-06-24/25 enumeral gem-ship session retro. The library/gem seam bit us: mcritchie#157 bumped studio-engine ~>0.9 while 0.9.0 was NOT on RubyGems, so CI went fully red (frozen bundle can't resolve) -> Avi blocked it 'dependency' -> manual publish + relock. dor-check (the deterministic, no-judgment DoR gate) should catch this at SUBMIT. CLEANEST LOCAL CHECK (no network, fits dor-check's offline ethos): when the branch diff bumps a gem constraint in Gemfile (e.g. studio-engine ~>0.9), confirm Gemfile.lock actually resolves a version SATISFYING it; if the lock is behind (still 0.8.0), the new version almost certainly isn't published -> CI will fail 'bundle install --frozen'. Flag at the merge gate with the fix: publish the gem first, or hold the bump / use the git-source bridge. Optional enhancement: cross-check rubygems.org/api/v1/versions for a definitive published signal, but the Gemfile-vs-lock mismatch is sufficient + offline. Tests in test/lib/dor_check_test.rb (a fixture whose diff bumps a constraint past the lock -> gate fails with the gem-seam reason). Would have erased the whole red-CI -> block -> manual-publish detour.
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.
Conversation
QA review feedback, agent handoffs, and follow-up notes for this task.
Review pair APPROVED: carl (heavy) + jasper (light). All 4 acceptance bullets met — Gem::Requirement#satisfied_by? detection; wired merge-gate-only (if gate != build) so it fires before red CI; fully offline (File.read + regex + Gem::Requirement, no network); gem-name-agnostic regex covers studio-engine + solana-studio (verified against live Gemfile/lock, neither false-flagged). False-flag guards sound (path:/git: bridges, untouched Gemfile, new/unlocked gems all skipped). Tests green (56 runs), CI green. Non-blocking nits: only first constraint of a multi-constraint line checked; Gem::Version.new(locked) unrescued; net-new-unpublished-gem intentionally out of scope; a named solana-studio fixture would self-document acceptance #4. Held from release merge until Rails 8.1 RC ships.
Sealed-bid sizing
Edit →Alex (PM)
—
Avi (PO)
—
Dev
—
Actual
—
We emailed a one-tap sign-in link to . It expires shortly and can only be used once.
No email? Check spam, or close this and try again.