Agents Builders

Dor-check post-deploy nudge

Archived
dor-check-post-deploy-nudge

Created

Jun 24, 02:39

Started

Jun 24, 02:39

Completed

Jun 24, 03:35

DevOps handoff

Type

Feature

Shape

backend

Worktree Slug

dor-check-post-deploy-nudge

Repositories

mcritchie-studio

Release Train

Branch

feat/dor-check-post-deploy-nudge

Local URL

QA URL

Production URL

tooling

Acceptance Criteria

  • dor-check flags seed or migration diff missing post_deploy_cmd
  • warns when db/seeds or db/migrate touched
  • exempt when task already sets post_deploy_cmd

Expected Test Plan

  • unit
  • integration

Checks Run

  • [unit] ruby -Itest test/lib/dor_check_test.rb — 44 runs, 278 assertions, 0 failures (gate logic via DOR_CHECK_CHANGED_FILES injection)
  • [integration] ruby -Itest test/lib/dor_check_test.rb — real git working-tree migration diff gated/passes (with_git_repo/check_against e2e)
  • [unit] bundle exec rubocop bin/dor-check test/lib/dor_check_test.rb — no offenses

Agent Context

post_deploy_cmd exists end-to-end (bin/task --post-deploy-cmd; bin/release runs it post-prod, aborts on non-zero). But seed/data-migration features dont set it -> manual rake runs post-ship (pokemon seed/resync x3 this session). Make bin/dor-check detect a diff touching db/seeds or db/migrate and WARN/REQUIRE the task carry a post_deploy_cmd. Follow the existing chore-gate pattern in bin/dor-check. Exempt if post_deploy_cmd set. Tests via the dor_check_test.rb tmpdir-repo pattern.

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
    F Flareon
    Flareon
    Model
    Duration
    Tokens
    Cost
    Completed Jun 24, 02:39 · 3 days ago
    api
  2. Designed Building
    F Flareon
    Flareon
    Model
    claude-opus-4-8
    Duration
    under a minute
    Tokens
    Cost
    Started Jun 24, 02:39
    Completed Jun 24, 02:39 · 3 days ago
    cli
  3. Building Submitted
    F Flareon
    Flareon
    Model
    claude-opus-4-8
    Duration
    8 minutes
    Tokens
    Cost
    Started Jun 24, 02:39
    Completed Jun 24, 02:47 · 3 days ago
    cli
  4. Submitted Blocked
    Model
    Duration
    35 minutes
    Tokens
    Cost
    Started Jun 24, 02:47
    Completed Jun 24, 03:22 · 3 days ago
    api
  5. Blocked Reviewed
    Model
    claude-opus-4-8
    Duration
    5 minutes
    Tokens
    42,930,082
    Cost
    ~$29.15
    Started Jun 24, 03:22
    Completed Jun 24, 03:27 · 3 days ago
    cli
  6. Reviewed Assembled
    S Steffon
    Steffon
    Model
    Duration
    under a minute
    Tokens
    Cost
    Started Jun 24, 03:27
    Completed Jun 24, 03:28 · 3 days ago
  7. Assembled Shipped
    A Avi
    Avi
    Model
    Duration
    7 minutes
    Tokens
    Cost
    Started Jun 24, 03:28
    Completed Jun 24, 03:35 · 3 days ago
  8. Shipped Archived
    1
    159aaa24-5db3-4c44-aa05-25c79d2902cd
    Model
    claude-opus-4-8
    Duration
    about 14 hours
    Tokens
    Cost
    Started Jun 24, 03:35
    Completed Jun 24, 17:38 · 3 days ago
    cli

Conversation

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

Comment avi 3 days ago

2-senior review: jasper(light) APPROVE; carl(heavy) BLOCK. Real cross-component bug: the 'none' escape hatch is honored by the dor-check GATE but Release::PostDeploy.plan (post_deploy.rb:51) only skips an EMPTY cmd, not 'none' -> a schema-only migration set to post_deploy_cmd='none' (the DOCUMENTED fix) makes the conductor run 'heroku run none' -> non-zero -> ABORTS the whole release. Common path (most migrations are schema-only). Proven at runtime. Gate test covered 'none' but no consumer test.

QA Feedback avi 3 days ago

Teach the release CONSUMER the 'none' sentinel: in app/models/release/post_deploy.rb#plan, skip it like an empty cmd -> 'next if cmd.empty? || cmd.strip.casecmp?("none")'. Add a unit test in test/models/release/post_deploy_test.rb asserting a member with post_deploy_cmd='none' produces NO plan entry (and a real cmd still does). The gate side already works; only the downstream skip + its test are missing.

Comment avi 3 days ago

Rework VERIFIED (head f436b55): Release::PostDeploy#plan now skips 'none' like empty (post_deploy.rb:58, 'next if cmd.empty? || cmd.casecmp?("none")', strip+case robust) so the documented escape hatch no longer detonates the release; consumer-skip test added (post_deploy_test.rb:70, proven fail-without/pass-with). 56+143 tests 0 failures, rubocop clean, CI green 4/4. Carl(heavy) BLOCK resolved; Jasper(light) already approved. = 2 approvals.

Sealed-bid sizing

Edit →

Alex (PM)

Avi (PO)

Dev

Actual