Created
Jul 07, 19:58
Started
Jul 07, 19:58
Completed
Jul 07, 22:41
DevOps handoff
Type
Feature
Shape
ui-only
Worktree Slug
order-session-filter-recency
Repositories
mcritchie-studio
Release Slug
—
Branch
feat/order-session-filter-recency
Acceptance Criteria
Expected Test Plan
Checks Run
Agent Context
Activities session-filter (/agents/activities) polish. Sort source: app/controllers/concerns/activity_feed.rb:34-70 session_filter_options — currently sorts by max(AgentAction.occurred_at, AgentActivity.opened_at) desc (lines 36-38); each option already carries last_at (line 66) but the panel (app/views/agents/_activities_filter.html.erb:23-41) renders only the activity COUNT, never a timestamp, so recency is invisible (e.g. Clefairy '0 activities' sits high on recent raw actions). Change: key ordering strictly on latest action, and RENDER a relative last-active time (e.g. '2m ago') per row so the newest-first order is legible. No persistence.
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.
Scout report: merge-ready - Light read: tight ui-only recency polish; description matches diff, no unrelated churn, well-covered across helper/component/integration tiers. Two nits, no blockers. Reporter: jasper Outcome: merge-ready Findings: - NIT: compact_time_ago renders '0m ago' for the 45-59s window (just-now cutoff 45s vs minute floor 60s); bumping the just-now threshold to 60s closes it. - NIT: helper comment and PR blurb say '(s/m/h/d/w)' but no seconds unit is ever emitted — smallest output is 'just now'. Questions: - none Checks: - Verified activity_feed.rb builds last_at as the MAX-merge union of AgentAction.occurred_at and AgentActivity.opened_at (union sort intact; activity-only sessions retained). - Integration test hits real path and asserts '2m ago' renders + newest-first order — confirms session[:last_at] is populated in production, label is not dead.
Scout report: merge-ready - ui-only recency label: correct, in-scope, union sort preserved w/ regression test; gate green by tree-equality+CI (dor-check STALE is the known false positive from the release checkout). One cosmetic nit: 45-59s window renders '0m ago'. Reporter: shannon Outcome: merge-ready Findings: - NIT app/helpers/application_helper.rb:369 — compact_time_ago 'just now' cutoff is 45s but the minutes branch floor-divides, so 45-59s renders '0m ago'. Fix: return "#{[seconds/60,1].max}m ago" (or bump cutoff to 60). - GOOD union sort untouched: activity-only sessions kept via times.merge(...){max}; regression test present (integration). Questions: - none Checks: - Gate MET: PR head e3dacce0 tree c827cb2ad4b0 == recorded cert tree; CI test/lint/scan_js/scan_ruby all green on head. dor-check STALE = known false positive (review checkout on base release). - Tests span 3 tiers: unit (helper edge cases), integration (order + activity-only kept), component (new filter view test). Theme parity via reused --hb-muted token, no hardcoded color.
Avi review approved (2/2 merge-ready) — ready for Steffon's qa-release sweep. PRIMARY shannon (deep) + LIGHT jasper (light) both approve; CI green on #449 (test/lint/scan_ruby/scan_js). DoR gate genuinely met: head e3dacce0 tree c827cb2ad4b0 == recorded cert tree (dor-check STALE was the known tree-hash false positive). Inclusive union sort verified untouched (activity-only sessions kept, regression-tested); theme parity via --hb-muted; 3-tier coverage. One non-blocking nit both caught: compact_time_ago renders '0m ago' for the 45-59s window (just-now cutoff 45s vs 60s minute floor) — cosmetic, fold into a follow-up push if convenient, not a gate.
Sealed-bid sizing
Edit →Alex (PM)
—
Avi (PO)
SMALL
Dev
SMALL
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.