Agents Builders

Release Stage Countdown

Archived
release-stage-countdown

Created

Jul 06, 21:09

Started

Jul 07, 03:49

Completed

Jul 07, 06:03

DevOps handoff

Type

Feature

Shape

ui+db

Worktree Slug

release-stage-countdown

Repositories

mcritchie-studio

Release Slug

Branch

feat/release-stage-countdown

QA URL

Production URL

release-ui deploy-visibility

Acceptance Criteria

  • Active release stage shows average-based countdown
  • Over-average stages display negative elapsed delta
  • Averages use last three completed deployments
  • Inactive stages keep existing compact timing

Expected Test Plan

  • [unit] release tracker computes last-three stage averages and overruns
  • [component] release summary renders the active countdown visibly
  • [integration] board release module refresh carries countdown data
  • [e2e] board happy path shows the active stage timer

Checks Run

  • [unit] bin/rails test test/helpers/application_helper_test.rb test/controllers/tasks_controller_test.rb test/integration/board_blocked_card_drag_test.rb
  • [component] bin/rails test test/helpers/application_helper_test.rb test/controllers/tasks_controller_test.rb
  • [integration] bin/rails test test/integration/board_blocked_card_drag_test.rb
  • [integration] bin/rails test test/controllers/dev/board_controller_test.rb
  • [style] bin/rubocop test/helpers/application_helper_test.rb test/controllers/tasks_controller_test.rb test/integration/board_blocked_card_drag_test.rb
  • [style] bin/rubocop app/controllers/dev/board_controller.rb test/controllers/dev/board_controller_test.rb
  • [e2e] E2E_PORT=3029 npx playwright test e2e/release_ship.spec.js
  • [visual] Playwright viewport audit at 1440, 1024, 390 found zero page overflow and zero tracker overflow
  • [visual] Light-mode overrun computed as red-600 on white card; screenshot tmp/deployments-responsive-light-mobile.png
  • [visual] Browser clicked Advance after merge; POST returned 204 and active tracker shows confirming countdown; screenshot tmp/deployments-advance-active-confirming.png
  • [ci] GitHub CI passed scan_ruby, scan_js, lint, and test on PR #434
  • [full-suite@308203d12f1642366b719d28b726048725b8bedc] bin/rails test green
  • [rubocop@308203d12f1642366b719d28b726048725b8bedc] bin/rubocop clean

Agent Context

Build the Next Release tracker improvement from the July 6 screenshot. Use the last three shipped releases as the prediction baseline per stage. The active stage should show a live countdown while under average and a negative overrun once elapsed exceeds the average. Keep non-active stage timing compact.

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.

Sizing Avi · PO Dev MEDIUM Actual XL
  1. Created Designed
    K Krabby
    Krabby
    Model
    Duration
    Tokens
    Cost
    Completed Jul 06, 21:09 · 1 day ago
    api
  2. Designed Building
    K Krabby
    Krabby
    Model
    gpt-5.5
    Duration
    under a minute
    Tokens
    103,476
    Cost
    ~$0.14
    Started Jul 06, 21:09
    Completed Jul 06, 21:09 · 1 day ago
    cli
  3. Building Submitted
    K Krabby
    Krabby
    Model
    gpt-5.5
    Duration
    20 minutes
    Tokens
    10,150,743
    Cost
    ~$7.51
    Started Jul 06, 21:09
    Completed Jul 06, 21:29 · 1 day ago
    cli
  4. Submitted Blocked
    A Avi
    Avi
    Model
    claude-opus-4-8
    Duration
    18 minutes
    Tokens
    1,317,479
    Cost
    ~$1.31
    Started Jul 06, 21:29
    Completed Jul 06, 21:47 · 1 day ago
    cli
  5. Blocked Submitted
    K Krabby
    Krabby
    Model
    gpt-5.5
    Duration
    about 2 hours
    Tokens
    6,175,959
    Cost
    ~$4.47
    Started Jul 06, 21:47
    Completed Jul 06, 23:23 · 1 day ago
    cli
  6. Submitted Blocked
    A Avi
    Avi
    Model
    claude-opus-4-8
    Duration
    about 2 hours
    Tokens
    Cost
    Started Jul 06, 23:23
    Completed Jul 07, 01:16 · 1 day ago
    cli
  7. Blocked Building
    K Krabby
    Krabby
    Model
    gpt-5.5
    Duration
    about 2 hours
    Tokens
    489,217
    Cost
    ~$0.68
    Started Jul 07, 01:16
    Completed Jul 07, 03:05 · 1 day ago
    cli
  8. Building Submitted
    K Krabby
    Krabby
    Model
    gpt-5.5
    Duration
    39 minutes
    Tokens
    13,088,763
    Cost
    ~$9.41
    Started Jul 07, 03:05
    Completed Jul 07, 03:43 · 1 day ago
    cli
  9. Submitted Building
    K Krabby
    Krabby
    Model
    gpt-5.5
    Duration
    5 minutes
    Tokens
    1,674,051
    Cost
    ~$1.79
    Started Jul 07, 03:43
    Completed Jul 07, 03:49 · 1 day ago
    cli
  10. Building Submitted
    K Krabby
    Krabby
    Model
    gpt-5.5
    Duration
    28 minutes
    Tokens
    10,620,589
    Cost
    ~$7.19
    Started Jul 07, 03:49
    Completed Jul 07, 04:16 · 1 day ago
    cli
  11. Submitted Blocked
    A Avi
    Avi
    Model
    gpt-5.5
    Duration
    9 minutes
    Tokens
    1,626,213
    Cost
    ~$1.07
    Started Jul 07, 04:16
    Completed Jul 07, 04:25 · 1 day ago
    cli
  12. Blocked Submitted
    K Krabby
    Krabby
    Model
    gpt-5.5
    Duration
    23 minutes
    Tokens
    1,214,441
    Cost
    ~$1.27
    Started Jul 07, 04:25
    Completed Jul 07, 04:48 · 1 day ago
    cli
  13. Submitted Reviewed Review Activity
    C Carl
    Carl primary
    S Shannon
    Shannon light
    Model
    gpt-5.5
    Duration
    34 minutes
    Tokens
    1,761,778
    Cost
    ~$1.35
    Started Jul 07, 04:48
    Completed Jul 07, 05:21 · 1 day ago
    cli
  14. Evolve
    K Krabby
    Krabby
    K Kingler
    Kingler
    triggered by
    C Carl
    Carl
    Model
    Duration
    34 minutes
    Tokens
    Cost
    Started Jul 07, 04:48
    Completed Jul 07, 05:21 · 1 day ago
  15. Reviewed Assembled
    S Steffon
    Steffon
    Model
    gpt-5.5
    Duration
    18 minutes
    Tokens
    Cost
    Started Jul 07, 05:21
    Completed Jul 07, 05:39 · 1 day ago
  16. Assembled Shipped
    A Avi
    Avi
    Model
    gpt-5.5
    Duration
    24 minutes
    Tokens
    2,365,646
    Cost
    ~$1.81
    Started Jul 07, 05:39
    Completed Jul 07, 06:03 · 1 day ago
  17. Shipped Archived
    Model
    Duration
    1 day
    Tokens
    Cost
    Started Jul 07, 06:03
    Completed Jul 08, 06:32 · about 6 hours ago

Conversation

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

QA Feedback avi 1 day ago

PR #434 is still a draft with the test CI check failing: PrReviewCommandTest#test_fast_mode_launches_multiple_prs_before_resolving_the_wave (Expected 4, Actual 3) at test/commands/pr_review_command_test.rb:320. That is a fast-mode spawn-ordering concurrency test and this PR diff does not touch it (the diff only changes application_helper.rb, the release tracker/ticker partials, e2e seed/spec, and their tests), so it looks flaky/infra rather than a code defect here. Re-run CI to confirm green, mark the PR ready (gh pr ready 434), then resubmit with note --resolves-feedback. A draft PR is not gateable to reviewed regardless of the flake.

Handoff 1 day ago

Resolved QA blocker: PR #434 is ready for review and fresh CI run 28829946040 is green after retrying the unrelated system-test flake. Local full-suite-check and dor-check remain green.

Comment shannon 1 day ago

Scout report: request-changes - UI light-mode parity defect on overrun countdown color Reporter: shannon Outcome: request-changes Findings: - Active overrun uses bare text-red-300 (#fca5a5) with no light variant; on white bg-surface at text-[10px] contrast is ~1.9:1, illegible in light mode. Rest of tracker is theme-aware (text-amber-700 dark:text-amber-200). Fix: text-red-600 dark:text-red-300. Questions: - none Checks: - Countdown/negative-delta reads clearly (dark) - Active-vs-inactive styling coherent - No layout/spacing regression (tabular-nums, same slot) - Copy on-brand (Last N deployments avg / over by / left)

Comment carl 1 day ago

Scout report: merge-ready - Deep review PASS: 4/4 acceptance covered; avg/countdown math correct (guards for <3 & div-by-zero); cert tree-equal to PR head; CI green. Reporter: carl Outcome: merge-ready Findings: - All 4 acceptance criteria covered by matching unit/component/integration/e2e tests; last-three avg excludes the 4th oldest in test. - Correctness solid: .limit(3)+COALESCE(shipped_at,created_at) DESC (no off-by-one); values.any? + average.positive? guard div-by-zero & <3 deployments; negative delta renders '-'+abs; elapsed math is absolute-time TZ-agnostic; active anchor == own start stamp so elapsed matches the own-span average basis. - No new write/side-effect path: read-only view helper (Release.where(shipped).limit(3).to_a), so rescue_and_log not required; single query hoisted out of per-stage loop (no N+1). Questions: - none Checks: - CI green: test 3m56s, lint, scan_js, scan_ruby all pass - full-suite + rubocop cert fingerprint e9dc6011... == PR head tree hash (verified by tree equality); dor-check STALE is the primary-checkout-on-main false positive - ui+db required tiers [unit, component, integration, e2e] all present in checks_run; required metadata complete

QA Feedback avi 1 day ago

Light-mode contrast defect on the headline overrun state (Shannon, UI review). In app/views/tasks/_release_tracker.html.erb the over-average countdown uses a bare `data-[overrun=true]:text-red-300` with no light-mode variant — Tailwind red-300 (#fca5a5) on the white bg-surface card at text-[10px] is ~1.9:1 contrast, effectively unreadable in light mode, and it's the feature's headline (over-by) state. Every other token in the tracker is theme-aware (text-amber-700 dark:text-amber-200, text-secondary role token); only this red drops the dark: split. Fix to the codebase's theme-safe red convention: `data-[overrun=true]:text-red-600 dark:text-red-300` (or text-red-700 dark:text-red-300, per _task_card.html.erb), then verify in LIGHT mode on /deployments. Correctness is otherwise approved (Carl, 4/4 acceptance: last-three-shipped average query is guarded against <3 deployments and div-by-zero, negative-delta math is TZ-agnostic, no N+1) — this is a one-line color fix, not a rework of the logic. Resubmit with the light-mode screenshot.

Handoff 1 day ago

Resolved follow-up feedback: deployments page now uses a wider responsive shell, delays the two-column release dashboard until xl, stacks mobile lanes, fits the tracker without overflow, and fixes light-mode overrun contrast with red-600/dark red-300. Evidence: full-suite-check green at f78bd411fbdd, PR CI run 28839773385 green, viewport screenshots in tmp/deployments-responsive-*.png and tmp/deployments-responsive-light-mobile.png.

Comment shannon 1 day ago

Scout report: merge-ready - Follow-up light UI read found no blockers; prior overrun contrast issue is fixed. Reporter: shannon Outcome: merge-ready Findings: - No blocker: active tracker uses last-three shipped release averages, emits countdown payload for the active node, and preserves compact ago/took timing for inactive nodes. - Prior Shannon blocker is resolved: overrun countdown now uses text-red-600 with dark:text-red-300, and the component test asserts both classes. - Non-blocker merge-order note: sibling PR #438 conflicts with this PR in e2e/release_ship.spec.js; #434 itself is clean into origin/release. Questions: - none Checks: - Read AGENTS, pr-review-light SOP, Shannon role, README, and deploy/task-board docs. - Reviewed task metadata, PR body/comments/reviews/files, GitHub CI, and the helper/view/test/e2e diff. - Local preview route http://localhost:3014/deployments returns 200; named tmp screenshot artifacts were not present in this primary checkout. - Read-only merge-tree: #438 conflicts in e2e/release_ship.spec.js; draft #444 auto-merges cleanly.

Comment carl 1 day ago

Scout report: request-changes - Code matches countdown acceptance, but the merge gate is not satisfied. Reporter: carl Outcome: request-changes Findings: - BLOCKER: bin/dor-check release-stage-countdown fails because checks_run lacks [unit], [component], [integration], [e2e], [full-suite@...], and [rubocop@...] task evidence. - MERGE SAFETY: sibling PR #438 conflicts with this PR in e2e/release_ship.spec.js and still asserts the old ago-mode tracker. Questions: - none Checks: - CI green on PR #434: scan_ruby, scan_js, lint, and test passed. - Focused Rails review tests passed locally: 186 runs, 1208 assertions, 0 failures. - Focused e2e passed on clean seeded port 3098: E2E_PORT=3098 npx playwright test e2e/release_ship.spec.js. - Acceptance read: active step renders data-mode=countdown with average payload; overrun flips negative; inactive steps keep existing ago/blank behavior.

QA Feedback avi 1 day ago

pr-review blocked review: carl: request-changes - Code matches countdown acceptance, but the merge gate is not satisfied.; shannon: merge-ready - Follow-up light UI read found no blockers; prior overrun contrast issue is fixed.

Handoff 1 day ago

Resolved pr-review blocker: restored the full tier-tagged checks_run list and fingerprint-bound full-suite/rubocop evidence. bin/dor-check release-stage-countdown now passes; GitHub CI remains green and PR #434 is CLEAN.

Comment shannon 1 day ago

Scout report: merge-ready - Shannon light read found the countdown UI matches acceptance with no blockers. Reporter: shannon Outcome: merge-ready Findings: - Blockers: none. - Non-blocker: PR #438 overlaps e2e/release_ship.spec.js and git merge-tree reports a content conflict if #434 and #438 are batched together; merge order will need a rebase or conflict resolution. Questions: - none Checks: - Read AGENTS, README, RUNBOOK, frontend/theme/deployment/testing docs, Shannon role checklist, and Avi pr-review-light SOP. - Reviewed task metadata, PR body, changed files, helper/view/broadcast/test diffs, comments, CI, and merge safety. - GitHub CI scan_ruby, scan_js, lint, and test are green; PR is open, non-draft, mergeable/clean. - Local URL http://localhost:3014/up returned 200 and /deployments rendered an active countdown with data-mode=countdown, sample_count=3, and overrun=true. - git merge-tree --write-tree --messages origin/release origin/pr/434 completed without conflicts.

Comment carl 1 day ago

Scout report: merge-ready - No blockers found; countdown acceptance is covered and gates are green. Reporter: carl Outcome: merge-ready Findings: - Active tracker stages render countdown data from last-three shipped release stage spans; inactive stages keep ago/blank timing. - Current origin/release has advanced, but local merge-tree simulation reports no conflicts. Questions: - none Checks: - bin/dor-check release-stage-countdown passed: ui+db tiers, full-suite/rubocop cert, and GitHub CI green. - gh pr checks 434 passed scan_ruby, scan_js, lint, and test on b0c9e699. - Countdown-focused Rails tests passed: helper averages/overrun, broadcast payload, dev advance, and board collapse coverage. - curl http://localhost:3014/deployments shows data-mode=countdown with data-average-seconds and data-sample-count=3.

Handoff avi 1 day ago

pr-review moved release-stage-countdown to reviewed after carl + shannon reported merge-ready. Left for Steffon QA. Reports: - carl: merge-ready - No blockers found; countdown acceptance is covered and gates are green. - shannon: merge-ready - Shannon light read found the countdown UI matches acceptance with no blockers.

Sealed-bid sizing

Edit →

Alex (PM)

Avi (PO)

Dev

MEDIUM

Actual

XL