Agents Builders

Agent intent timeline events

Archived
agent-intent-timeline

Created

Jun 24, 04:50

Started

Jun 24, 04:51

Completed

Jun 24, 13:45

DevOps handoff

Type

Feature

Shape

ui+db

Worktree Slug

agent-intent-timeline

Repositories

mcritchie-studio

Release Train

2026-06-23-devops-intent-ui

Branch

feat/agent-intent-timeline

QA URL

Production URL

migration ui devops

Acceptance Criteria

  • TaskEvent gains a kind: transition or intent
  • Intent events record the agent starting a stage
  • Live ticker shows in-progress review and QA agents
  • Steffon and Avi appear on assembled and shipped
  • Stage crew and timeline merge into one visual
  • Each timeline block shows agent, time, tokens, cost

Expected Test Plan

  • [unit] TaskEvent kind scope + intent recording
  • [unit] stage_agent_groups resolves Steffon/Avi + open intents
  • [component] consolidated timeline partial renders blocks
  • [integration] move/intent API writes events with kind
  • [e2e] task detail timeline shows intent then completion

Checks Run

  • [unit] task_event_test + task_intent_test (kind, intent, spine) green
  • [unit] stage_agents_helper_test (timeline, in_progress, Steffon/Avi) green
  • [component] views/consolidated_timeline_test partial render green
  • [integration] task_timeline_test + api/v1/tasks_controller_test intent endpoint green
  • [e2e] playwright e2e/task_timeline.spec.js live-block green (booted test server)
  • full suite: 1393 runs, 0 failures, 0 errors; rubocop clean

Agent Context

Operator-driven DevOps cycle upgrade. Three decisions locked with the operator: (1) 'agentic intent' (the agent that STARTS a stage's work, for the live ticker) is stored as a new kind ('transition'|'intent') on the existing append-only TaskEvent spine — NOT a separate table or task.metadata. One unified event log powers the consolidated timeline; live tickers read OPEN intent rows (an intent whose stage has not yet produced its transition). (2) Live /deployments updates use a custom ActionCable channel + the existing Alpine kanbanBoard() for animated, non-jumpy updates — that is the SEPARATE follow-up task on this same release train. (3) Split into 2 flat tasks: THIS one = intent model + consolidated timeline + Steffon/Avi fix; the websockets task depends on this one. ROOT CAUSE of Steffon/Avi missing from Stage Crew: bin/release writes the reviewed->assembled and assembled->shipped TaskEvents with a BLANK actor/source, so stage_agent_groups emits nothing for those stages. Fix is two-pronged: stamp actor=steffon on reviewed->assembled and actor=avi on assembled->shipped at the conductor (bin/release), AND make the crew helper fall back to each stage's canonical owner when the actor is blank/unresolved. Intent owners by stage: build lane = the task's pokemon mascot (already assigned at create); submitted->review = the ReviewerSelector pair (carl/shannon heavy/light) recorded when the 'Review submitted PRs' workflow starts; reviewed->assembled QA = steffon; assembled->shipped e2e = avi. seconds_in_from duration math must look back to the last TRANSITION event, ignoring intent rows. Key files: app/models/task_event.rb, app/models/task.rb (stage_event creation ~L520-600), app/helpers/stage_agents_helper.rb, app/views/components/_stage_agent_avatars.html.erb, app/views/tasks/show.html.erb (L207-258 crew+timeline), bin/task, bin/release, bin/reviewer-select, app/controllers/api/v1/tasks_controller.rb.

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
    P Ponyta
    Ponyta
    Model
    Duration
    Tokens
    Cost
    Completed Jun 24, 04:50 · 3 days ago
    api
  2. Designed Building
    P Ponyta
    Ponyta
    Model
    claude-opus-4-8
    Duration
    under a minute
    Tokens
    Cost
    Started Jun 24, 04:50
    Completed Jun 24, 04:51 · 3 days ago
    cli
  3. Building Submitted
    P Ponyta
    Ponyta
    Model
    claude-opus-4-8
    Duration
    about 1 hour
    Tokens
    Cost
    Started Jun 24, 04:51
    Completed Jun 24, 05:57 · 3 days ago
    cli
  4. Submitted Reviewed
    S Shannon
    Shannon primary
    C Carl
    Carl light
    Model
    claude-opus-4-8
    Duration
    about 1 hour
    Tokens
    Cost
    Started Jun 24, 05:57
    Completed Jun 24, 06:55 · 3 days ago
    cli
  5. Reviewed Assembled
    S Steffon
    Steffon
    Model
    Duration
    4 minutes
    Tokens
    Cost
    Started Jun 24, 06:55
    Completed Jun 24, 06:59 · 3 days ago
  6. Assembled Shipped
    A Avi
    Avi
    Model
    Duration
    about 7 hours
    Tokens
    Cost
    Started Jun 24, 06:59
    Completed Jun 24, 13:45 · 3 days ago
  7. Shipped Archived
    1
    159aaa24-5db3-4c44-aa05-25c79d2902cd
    Model
    claude-opus-4-8
    Duration
    about 4 hours
    Tokens
    69,470,129
    Cost
    ~$58.25
    Started Jun 24, 13:45
    Completed Jun 24, 17:38 · 3 days ago
    cli

Conversation

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

Handoff 3 days ago

Increment 1 of 2 (websockets is the follow-up on this release train). Agentic intent on the TaskEvent spine (kind=intent), consolidated /tasks/:id timeline, Steffon/Avi role-owner backfill, + intent wiring (reviewer-select --record, bin/task intent, POST /tasks/:slug/intent). All tiers green (1393 runs, 0 fail), rubocop clean, dor-check ✓. Review locally: http://localhost:3004/tasks/intent-timeline-demo (full crew + tokens/cost), /tasks/intent-live-demo (live review ticker), /deployments (board).

Comment avi 3 days ago

Review cascade: shannon[heavy] APPROVE (migration safe/reversible/indexed, duration-spine protected, no N+1, ui+db coverage complete) + carl[light] APPROVE. Non-blocking nits deferred (kind filters in reviewer_selector/retro). CI green.

Sealed-bid sizing

Edit →

Alex (PM)

Avi (PO)

Dev

Actual