Agents Builders

Agents activities page redesign

Archived
agents-activities-page-redesign

Created

Jul 05, 21:41

Started

Jul 05, 22:54

Completed

Jul 06, 00:49

DevOps handoff

Type

Feature

Shape

ui-only

Worktree Slug

agents-activities-page-redesign

Repositories

mcritchie-studio

Release Slug

Branch

feat/agents-activities-page-redesign

QA URL

Production URL

ui

Acceptance Criteria

  • New /agents/activities page renders activities table
  • Activity column: badge, goal, faded result, key command
  • Expanding activity reveals newest-first action rows inline
  • Action rows carry key-method, raw JSON, inline grades
  • Pokemon-session sidebar multi-selects and filters via URL
  • Mobile collapses cost, details, grades behind per-row expand
  • All activities and actions sorted newest first

Expected Test Plan

  • integration

Checks Run

  • [component] activities_table: 6-col 3-sub-row, fade result, key cmd, inline grades (activity+action), drill-down, bigger activity avatar — 12 tests
  • [integration] /agents/activities: routing, newest-first, drill-down, multi-select filter, mascot fallback, empty states, pager, action-grade clear — 13 tests
  • [integration] heartbeat + helper regression green after ActivityFeed concern + heartbeat_agent_cell size param + #grade clear
  • [manual] Playwright desktop+mobile: bigger activity agent, no column jump on expand, mobile tap-to-open, filter type colors, equal header heights
  • [gate] full-suite + rubocop certified 0f9fc6e; test:system 8 green (CI parity); GitHub CI green
  • [full-suite@3524feeb4d40ac390aa6ab5d12803f46e9a87a87] bin/rails test green
  • [rubocop@3524feeb4d40ac390aa6ab5d12803f46e9a87a87] bin/rubocop clean

Agent Context

Reimagine /alex/heartbeat/activities as a new /agents/activities page (collection route on agents resource; param :slug would otherwise swallow it). Operator decisions: (1) KEEP the old heartbeat pages untouched, add new alongside. (2) Mobile = priority columns: agent+activity always visible, cost/details/grades collapse behind a per-row expand on narrow screens. (3) Filter = multi-select OR, URL-saved (?sessions=slug1,slug2; empty=all). (4) Action rows: clean key-method chip in Action column bottom, raw tool-input JSON in Details column bottom. ACTIVITIES TABLE — 6 cols x 3 sub-rows: [Agent] avatar+name stacked (reuse heartbeat_agent_cell: soul face over base Pokemon mascot). [Activity] top=category badge (Explore/Verify...) + goal (reason_slug e.g. 'Read qa-release SOP before sweep'); middle=arrow + result (outcome_slug) wrapped in components/overflow_fade (fade/marquee); bottom=key command chip (key_method) if present. [Cost] top=cost, middle=model, bottom=tokens (in/out). [Details] top=timestamp (Jul 5, 20:24) + done/open badge; middle=task slug; bottom='X actions' + spinner if activity still open (closed_at nil). [Alex grade] + [McRitchie grade] identical: Good/Not radio + (x) nullify; notes occupy bottom two sub-rows. Reuse ActionGrade (grader alex/mcr), existing grade endpoints + _activity_inline_grade/_activity_grade_mark partials. ACTION DRILL-DOWN (click activity to expand, Alpine, preloaded) — mirrors activities but: [Agent] same. [Action] TWO sub-sections: top = '#<seq> <KIND>' badge LEFT of summary (e.g. 'Search deployments view for wrap-related classes'); bottom = primary command = clean key_method chip. [Cost] TWO sub-sections: top cost, bottom tokens (DROP model). [Details] top='#<seq> <KIND>' + [ok] outcome badge; bottom = raw tool-input JSON (input field, Image #4). [Alex]+[McRitchie] grade cells persist on actions too (ActionGrade agent_action_id target already supported; render inline, no migration). SORT: activities AND actions newest->oldest in all views (actions currently chronological in expand — reverse). FILTER SIDEBAR: opens a panel listing all Pokemon sessions (SessionMascot: session_id, mascot_slug; use session_mascot_labels + pokemon avatars). Click to add/remove session filters; multi-select OR; state in ?sessions= URL param. Combines cross-session all_activities + per-session filtering into one UI. Shape ui-only (no migration; grades already persist). Reuse AgentActivity/AgentAction/ActionGrade models, heartbeat helpers, overflow_fade component. Build in ONE worktree with parallel agents on disjoint partials: A=_activities_table, B=_action_row, C=_activities_filter, D=responsive CSS. Tests: integration (route renders, ?sessions filter narrows, action expand) + view-component (table + action-row partials) + helper unit.

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 LARGE Dev LARGE Actual XL ≠ forecast
  1. Created Designed
    T Tyrogue
    Tyrogue
    Model
    Duration
    Tokens
    Cost
    Completed Jul 05, 21:41 · 3 days ago
    api
  2. Designed Building
    T Tyrogue
    Tyrogue
    Model
    claude-opus-4-8
    Duration
    under a minute
    Tokens
    612,445
    Cost
    ~$1.50
    Started Jul 05, 21:41
    Completed Jul 05, 21:42 · 3 days ago
    cli
  3. Building Submitted
    T Tyrogue
    Tyrogue
    Model
    claude-opus-4-8
    Duration
    about 1 hour
    Tokens
    70,608,995
    Cost
    ~$55.29
    Started Jul 05, 21:42
    Completed Jul 05, 22:36 · 3 days ago
    cli
  4. Submitted Building
    T Tyrogue
    Tyrogue
    Model
    claude-opus-4-8
    Duration
    18 minutes
    Tokens
    3,341,967
    Cost
    ~$2.04
    Started Jul 05, 22:36
    Completed Jul 05, 22:54 · 3 days ago
    cli
  5. Building Submitted
    T Tyrogue
    Tyrogue
    Model
    claude-opus-4-8
    Duration
    14 minutes
    Tokens
    31,459,295
    Cost
    ~$20.02
    Started Jul 05, 22:54
    Completed Jul 05, 23:09 · 3 days ago
    cli
  6. Submitted Reviewed Review Activity
    S Shannon
    Shannon primary
    C Carl
    Carl light
    Model
    claude-opus-4-8
    Duration
    about 1 hour
    Tokens
    1,987,219
    Cost
    ~$3.38
    Started Jul 05, 23:09
    Completed Jul 06, 00:26 · 2 days ago
    cli
  7. Evolve
    T Tyrogue
    Tyrogue
    H Hitmonlee
    Hitmonlee
    triggered by
    S Shannon
    Shannon
    Model
    Duration
    about 1 hour
    Tokens
    Cost
    Started Jul 05, 23:09
    Completed Jul 06, 00:26 · 2 days ago
  8. Reviewed Assembled
    S Steffon
    Steffon
    Model
    claude-opus-4-8
    Duration
    8 minutes
    Tokens
    2,778,105
    Cost
    ~$2.97
    Started Jul 06, 00:26
    Completed Jul 06, 00:34 · 2 days ago
  9. Assembled Shipped
    A Avi
    Avi
    Model
    claude-opus-4-8
    Duration
    15 minutes
    Tokens
    5,605,411
    Cost
    ~$5.04
    Started Jul 06, 00:34
    Completed Jul 06, 00:49 · 2 days ago
  10. Shipped Archived
    Model
    Duration
    about 15 hours
    Tokens
    Cost
    Started Jul 06, 00:49
    Completed Jul 06, 15:43 · 2 days ago

Conversation

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

Handoff shannon 2 days ago

Avi review APPROVED (shannon primary UI + carl light backend) → reviewed; ready for Steffon qa-release sweep. All 7 acceptance bullets met on HEAD 7c677a36. Backend PASS (Carl): collection route beats :slug member (assert_routing green), newest-first ordering enforced in the query at BOTH levels (activities + grouped actions), multi-select ?sessions= parse is safe/parameterized (empty=all), action-grade intent=clear mirrors the shipped activity clear (idempotent, grader-guarded, rescue_and_log), heartbeat regression clean (6 methods MOVED verbatim into ActivityFeed concern, no shadowing; only heartbeat_controller.rb/heartbeat_helper.rb/routes.rb touched — no heartbeat views/routes changed). UI PASS: strong primitive reuse (heartbeat_agent_cell +size param, components/overflow_fade, key_method_chip), Alpine clean (double-quoted x-data, x-show owns display, no <template x-if>, action-row inherits parent open via stacked scope, @click.stop on grade cells, filter uses @click backdrop not @click.outside), table-layout:fixed kills the expand column-jump, mobile .aa-collapsible hides cost/details/grades behind the row-tap reveal. NOTE (non-blocking): bin/dor-check reads STALE because the local full-suite cert tree (3524feeb) predates patches 3-5; GitHub CI test job (full rails test + test:system, superset of local full-suite which skips the system lane) is GREEN on the exact HEAD 7c677a36, which supersedes the stale local fingerprint — builder may re-stamp the cert but the sweep re-verifies on QA. Optional test top-ups Carl flagged: intent=clear invalid-grader 422, idempotent clear (no grade), and the sessions[]= array-param filter form (only comma form tested). Minor UI polish for a later pass: drill-down/mobile-detail rows lack x-cloak so all rows briefly render expanded pre-Alpine-hydrate (transient FOUC); session_filter_options runs unscoped GROUP BY on every load (fine at ops scale).

Sealed-bid sizing

Edit →

Alex (PM)

Avi (PO)

LARGE

Dev

LARGE

Actual

XL