Agents Builders

Deployments board Turbo Streams

Archived
deployments-turbo-streams

Created

Jun 24, 20:13

Started

Jun 24, 20:19

Completed

Jun 24, 22:57

DevOps handoff

Type

Feature

Shape

ui+db

Worktree Slug

deployments-turbo-streams

Repositories

mcritchie-studio

Release Train

2026-06-24-studio-cable

Branch

feat/deployments-turbo-streams

QA URL

Production URL

ui realtime deploy

Acceptance Criteria

  • Adopt studio-engine cable primitive and redis dependency
  • Replace DeploymentsChannel with turbo_stream_from deployments
  • Broadcast task cards via Studio::Broadcastable safe wrappers
  • Card move and insert animate via MutationObserver
  • cable.yml resolves Redis through Studio::Redis TLS config

Expected Test Plan

  • [unit] broadcaster builds replace/remove/prepend per event
  • [integration] a stage move + intent emit turbo broadcasts
  • [component] task card partial renders standalone
  • [e2e] board updates live via Turbo Streams without reload

Checks Run

  • [unit] deployments_broadcaster_test: turbo replace/remove+prepend/prepend/remove + SEV-1 guard green
  • [component] task_card_test partial renders standalone green
  • [integration] task_timeline_test intent API + show page green
  • [e2e] deployments_live.spec.js real Turbo round-trip (intent in-place + move + counts) green
  • full suite 1538 runs 0 failures; rubocop clean; engine 0.10.0 via local path

Agent Context

Shipped to prod 2026-06-24 (mcr d6c3781). studio-engine 0.10.0 published (Studio::Cable + Studio::Redis + Broadcastable primitive). heroku-redis:mini provisioned as cable backend; realtime live on /deployments via turbo_stream_from. SEV-1 ScriptError guard preserved.

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
    G Golem
    Golem
    Model
    Duration
    Tokens
    Cost
    Completed Jun 24, 20:13 · 3 days ago
    api
  2. Designed Building
    G Golem
    Golem
    Model
    claude-opus-4-8
    Duration
    6 minutes
    Tokens
    Cost
    Started Jun 24, 20:13
    Completed Jun 24, 20:19 · 3 days ago
    cli
  3. Building Submitted
    G Golem
    Golem
    Model
    claude-opus-4-8
    Duration
    21 minutes
    Tokens
    3,268,766
    Cost
    ~$1.83
    Started Jun 24, 20:19
    Completed Jun 24, 20:40 · 3 days ago
    cli
  4. Submitted Reviewed
    S Shannon
    Shannon primary
    C Carl
    Carl light
    Model
    claude-opus-4-8
    Duration
    about 2 hours
    Tokens
    85,601,365
    Cost
    ~$67.48
    Started Jun 24, 20:40
    Completed Jun 24, 22:40 · 2 days ago
    cli
  5. Reviewed Shipped
    3
    317190da-2cf6-42fc-9204-eb1706b0e78c
    Model
    claude-opus-4-8
    Duration
    17 minutes
    Tokens
    34,490,661
    Cost
    ~$23.12
    Started Jun 24, 22:40
    Completed Jun 24, 22:57 · 2 days ago
    cli
  6. Shipped Archived
    8
    81fad33e-98b5-4075-8ed6-d0efe6cb5804
    Model
    claude-opus-4-8
    Duration
    about 22 hours
    Tokens
    Cost
    Started Jun 24, 22:57
    Completed Jun 25, 21:16 · 1 day ago
    cli

Conversation

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

Handoff 3 days ago

Converged /deployments to Turbo Streams on the studio-engine cable primitive (PR #179). Retires #171's custom channel + Alpine FLIP. cable.yml via Studio::Redis (TLS), turbo_stream_from + DeploymentsBroadcaster Turbo actions (replace/remove+prepend/prepend/remove) wrapped in Studio::Cable.safe_broadcast (StandardError+ScriptError — the SEV-1 fix, now shared). MutationObserver animates + refreshes counts. Full suite 1538/0, rubocop clean, real Turbo e2e round-trip green, dor-check ✓. BLOCKED on studio-engine#9 publish (Gemfile ~> 0.10; bundle update finalizes the lock). Engine consumed via local path at /Users/alex/projects/studio-engine/.worktrees/cable-redis. Operator: provision Heroku Redis on mcr prod before realtime fires. Engine note: Studio::Cable.safe_broadcast's ErrorLog.capture! can itself raise (e.g. NoDatabaseError) — wrap it (hardening follow-up).

QA Feedback 2 days ago

Both reviewers: code APPROVED. Sole blocker = producer-first dependency — Gemfile ~> 0.10 vs locked 0.9.0, engine 0.10.0 unpublished → CI/frozen build red. Clears when studio-engine#9 merges + publishes, then bundle update studio-engine finalizes the lock. Non-blocking nits to fix in that same pass: stale e2e/seed comments (DeploymentsChannel/ActionCable/FLIP) + PR body overstates the e2e rewrite + says Studio::Broadcastable where impl uses Studio::Cable.safe_broadcast. Holding at submitted.

Sealed-bid sizing

Edit →

Alex (PM)

Avi (PO)

Dev

Actual