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
Acceptance Criteria
Expected Test Plan
Checks Run
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.
Conversation
QA review feedback, agent handoffs, and follow-up notes for this task.
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.
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.
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)
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
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.
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.
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.
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.
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.
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.
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.
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.
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
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.