Agents Builders

Release mascot and timer

Archived
release-mascot-and-timer

Created

Jun 25, 21:51

Started

Jun 25, 21:51

Completed

Jun 25, 22:58

DevOps handoff

Type

Feature

Shape

ui+db

Worktree Slug

release-mascot-and-timer

Repositories

mcritchie-studio

Release Train

Branch

feat/release-mascot-and-timer

QA URL

Production URL

ui conductor deploy-board

Acceptance Criteria

  • Release cards show conductor session's Pokemon avatar
  • Next release shows elapsed time since beginning
  • Last release shows total time it took
  • Conductor stamps session mascot at release open
  • Mascot persists in release metadata, swaps on handoff

Expected Test Plan

  • [unit] Release sync_session_mascot stamps and swaps handoff
  • [unit] release timing helpers: elapsed and total-taken
  • [integration] /deployments renders mascot avatar plus duration

Checks Run

  • [unit] Release mascot stamp/swap/idempotent + #mascot/#devops_field (release_test.rb)
  • [unit] release_timing_label + elapsed_seconds (application_helper_test.rb)
  • [unit] with_conductor_session payload prefix, claude+codex+none (release_cli_test.rb)
  • [component] _release_summary renders mascot avatar + timing (application_helper_test.rb)
  • [integration] conductor stamps session mascot at adopt + ship/handoff (release/conductor_test.rb)
  • [integration] /deployments renders mascot avatar + in-progress/took timing (tasks_controller_test.rb)
  • [e2e] npx playwright test release_mascot.spec.js — Next+Last cards mascot+timing
  • [suite] full mcritchie-studio suite green: 1736 runs, 0 failures, 0 errors
  • [lint] rubocop clean (516 files); brakeman adds 0 new warnings
  • [full-suite@b2a948e44eb0da2bfa6005fbc4146ca814789790] bin/rails test green
  • [rubocop@b2a948e44eb0da2bfa6005fbc4146ca814789790] bin/rubocop clean

Agent Context

Mirror the per-task/per-session Pokemon mascot onto Release records on the /deployments board (Next Release + Last Release cards). Owner decisions: (1) mascot = the CONDUCTOR's SESSION mascot (the agent that ran bin/release), not a dedicated draw; (2) timing = Next/active release shows elapsed since it began (created_at), Last/shipped release shows total time it took (created_at -> shipped_at) alongside the existing 'Shipped X ago'. Implementation map: SessionMascot.for(session_id) is the centralized race-safe lookup/draw. Release.current_or_open! -> Release.open! is the create seam reached via Release::Conductor.adopt!. bin/release runs conductor snippets on PROD via 'heroku run rails runner' (Base64 payload in conductor_payload/batch_adopt_ruby) so local CLAUDE_CODE_SESSION_ID does NOT cross the boundary — bin/release must READ it locally and PASS it into the payload, then adopt!(task, session_id:) -> open!(session_id:) -> a before_create sync_session_mascot stamps metadata.devops.mascot + mascot_session from SessionMascot.for(sid), with handoff-swap (reassign if blank or session differs), mirroring Task#sync_session_mascot (task.rb ~755-780). Add Release devops/devops_field accessor; mascot/mascot_session are the only persisted scalars (color/emoji derived on render). Render in app/views/tasks/_release_summary.html.erb (shared by _current_release + _last_release) using the Pokemon sprite_url + name like task cards (MascotAgent pattern in stage_agents_helper.rb, or a small inline avatar). Timing helpers near application_helper.rb release_state_label (lines ~77-85). Test gotchas: Nokogiri can't read Alpine @click — assert rendered HTML/data-test attrs; partials use strict locals (rel:/release:); worktree test DB env. Graceful fallback: no mascot -> render card as today.

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
    K Kingler
    Kingler
    Model
    Duration
    Tokens
    Cost
    Completed Jun 25, 21:51 · 1 day ago
    api
  2. Designed Building
    K Kingler
    Kingler
    Model
    claude-opus-4-8
    Duration
    under a minute
    Tokens
    Cost
    Started Jun 25, 21:51
    Completed Jun 25, 21:51 · 1 day ago
    cli
  3. Building Submitted
    K Kingler
    Kingler
    Model
    claude-opus-4-8
    Duration
    28 minutes
    Tokens
    Cost
    Started Jun 25, 21:51
    Completed Jun 25, 22:19 · 1 day ago
    cli
  4. Submitted Reviewed
    C Carl
    Carl primary
    J Jasper
    Jasper light
    Model
    claude-opus-4-8
    Duration
    22 minutes
    Tokens
    Cost
    Started Jun 25, 22:19
    Completed Jun 25, 22:41 · 1 day ago
    cli
  5. Reviewed Assembled
    S Steffon
    Steffon
    Model
    Duration
    2 minutes
    Tokens
    Cost
    Started Jun 25, 22:41
    Completed Jun 25, 22:43 · 1 day ago
  6. Assembled Shipped
    A Avi
    Avi
    Model
    Duration
    15 minutes
    Tokens
    Cost
    Started Jun 25, 22:43
    Completed Jun 25, 22:58 · 1 day ago
  7. Shipped Archived
    Model
    Duration
    about 3 hours
    Tokens
    Cost
    Started Jun 25, 22:58
    Completed Jun 26, 01:51 · 1 day ago

Conversation

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

No task feedback has been recorded yet.

Sealed-bid sizing

Edit →

Alex (PM)

Avi (PO)

Dev

Actual