Agents Builders

Auto-record deploy lane intents

Archived
auto-record-deploy-lane-intents

Created

Jun 26, 05:32

Started

Jun 26, 13:46

Completed

Jun 26, 16:50

DevOps handoff

Type

Feature

Shape

backend

Worktree Slug

auto-record-deploy-lane-intents

Repositories

mcritchie-studio

Release Train

Branch

feat/auto-record-deploy-lane-intents

Local URL

QA URL

Production URL

deploy-tooling

Acceptance Criteria

  • bin/release prepare auto-records Steffon assembled QA intent
  • bin/release ship auto-records Avi shipped intent
  • deploy crew slots fill without manual intent calls
  • intents idempotent; no-op once stage has landed
  • SOP section 1.4 documents the auto-recorded intents

Expected Test Plan

  • unit
  • integration

Checks Run

  • [unit] release_cli_test: prepare continues when crew-ticker intent write abort!s (best-effort)
  • [unit] release_cli_test: ship continues when crew-ticker intent write abort!s (best-effort)
  • [unit] release_cli_test: real (non-intent) conductor failures still abort prepare (rescue is narrow)
  • [integration] deploy_lane_intents_test: record_deploy_intents! drives the live /deployments crew ticker (existing, green)
  • [suite] bin/rails test green — 1881 runs, 0 failures, 0 errors; rubocop clean on bin/release + test
  • [full-suite@026d1bbba91989f35906f86473bad43b5d1f0aa7] bin/rails test green
  • [rubocop@026d1bbba91989f35906f86473bad43b5d1f0aa7] bin/rubocop clean

Agent Context

Gap found live during a 2026-06-25 QA release: the conductor recorded REVIEW intents (reviewer-select auto-records by default) but had to MANUALLY run 'bin/task intent --to assembled --actor steffon' and '--to shipped --actor avi' for the deploy lane, and missed them — so the QA/ship crew slots on /deployments rendered as empty dashed placeholders (operator caught an unfilled ship slot mid-deploy). Fix: extend the same auto-recording reviewer-select does to the deploy steps — bin/release prepare fires the Steffon assembled intent, bin/release ship fires the Avi shipped intent, both append-only + idempotent + superseded by the real transition. Document in docs/agents/system/devops-cycle-design.md (the Prepare release / Run Deployment building blocks under section 1.4). Role attribution already exists for the completed transition; this is about the OPEN pre-transition intent that drives the live green crew ticker. Relates to memory feedback_record_intent_on_pr_review.

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 SMALL Dev SMALL Actual XL ≠ forecast
  1. Created Designed
    E Eevee
    Eevee
    Model
    Duration
    Tokens
    Cost
    Completed Jun 26, 05:32 · 1 day ago
    api
  2. Designed Building
    E Eevee
    Eevee
    Model
    claude-opus-4-8
    Duration
    25 minutes
    Tokens
    Cost
    Started Jun 26, 05:32
    Completed Jun 26, 05:58 · 1 day ago
    cli
  3. Building Submitted
    E Eevee
    Eevee
    Model
    claude-opus-4-8
    Duration
    15 minutes
    Tokens
    945,226
    Cost
    ~$0.88
    Started Jun 26, 05:58
    Completed Jun 26, 06:12 · 1 day ago
    cli
  4. Submitted Blocked
    Model
    Duration
    29 minutes
    Tokens
    Cost
    Started Jun 26, 06:12
    Completed Jun 26, 06:42 · 1 day ago
    api
  5. Blocked Building
    E Eevee
    Eevee
    Model
    claude-opus-4-8
    Duration
    about 1 hour
    Tokens
    Cost
    Started Jun 26, 06:42
    Completed Jun 26, 07:44 · 1 day ago
    cli
  6. Building Submitted
    E Eevee
    Eevee
    Model
    claude-opus-4-8
    Duration
    23 minutes
    Tokens
    21,938,499
    Cost
    ~$14.64
    Started Jun 26, 07:44
    Completed Jun 26, 08:07 · 1 day ago
    cli
  7. Submitted Blocked
    Model
    Duration
    24 minutes
    Tokens
    Cost
    Started Jun 26, 08:07
    Completed Jun 26, 08:32 · 1 day ago
    api
  8. Blocked Building
    E Eevee
    Eevee
    Model
    claude-opus-4-8
    Duration
    about 5 hours
    Tokens
    19,464,252
    Cost
    ~$23.73
    Started Jun 26, 08:32
    Completed Jun 26, 13:46 · about 20 hours ago
    cli
  9. Building Submitted
    E Eevee
    Eevee
    Model
    claude-opus-4-8
    Duration
    19 minutes
    Tokens
    Cost
    Started Jun 26, 13:46
    Completed Jun 26, 14:05 · about 20 hours ago
    cli
  10. Submitted Reviewed
    J Jasper
    Jasper primary
    S Shannon
    Shannon light
    Model
    claude-opus-4-8
    Duration
    17 minutes
    Tokens
    29,285,589
    Cost
    ~$31.45
    Started Jun 26, 14:05
    Completed Jun 26, 14:22 · about 20 hours ago
    cli
  11. Reviewed Assembled
    S Steffon
    Steffon
    Model
    claude-opus-4-8
    Duration
    1 minute
    Tokens
    1,600,305
    Cost
    ~$1.45
    Started Jun 26, 14:22
    Completed Jun 26, 14:23 · about 20 hours ago
  12. Assembled Shipped
    A Avi
    Avi
    Model
    claude-opus-4-8
    Duration
    about 2 hours
    Tokens
    7,764,777
    Cost
    ~$9.52
    Started Jun 26, 14:23
    Completed Jun 26, 16:50 · about 17 hours ago
  13. Shipped Archived
    Model
    Duration
    about 2 hours
    Tokens
    Cost
    Started Jun 26, 16:50
    Completed Jun 26, 18:43 · about 15 hours ago

Conversation

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

QA Feedback 1 day ago

PR #229 does not meet acceptance: bin/release prepare still does not record a visible Steffon QA intent in the standard reviewed -> merged -> prepare flow. Merged members already have an assembled transition, and Task#record_intent_event(to_stage: "assembled") no-ops after that transition exists, so the new prepare step records zero members and /deployments does not show Steffon live. Please fix the standard flow and add a regression test that starts with Release::Conductor.adopt! / bin/release merge semantics, then runs the prepare intent path and proves the deploy board shows Steffon QA live without a manual bin/task intent.

QA Feedback 1 day ago

Heavy (Jasper): BLOCK — feature is functionally complete and idempotency/supersession/board-render are all correct and well-tested, BUT the two new intent writes are FATAL, not best-effort. bin/release prepare (step 1b ~line 803) and ship (step 2c ~line 1443) call conductor('...record_deploy_intents!...') with no rescue; conductor() (bin/release:304-317) abort!s on any non-zero heroku-run exit. So a transient prod-board failure (the documented essential-PG 'too many connections' incidents, 2026-06-25) on a COSMETIC crew-ticker write would abort a production deploy — exactly what the cited precedents avoid: bin/reviewer-select records its intent best-effort (rescue→warn, lines 325-326) and post_release_notes swallows failure. FIX (small): wrap each new conductor(...) call to warn-and-continue (local rescue SystemExit/StandardError), or add a best_effort: option to conductor(); in ship, rescue LOCALLY so it does not trip the outer partial-ship handler (bin/release:1495). Light (Shannon): APPROVE (board-render side). CI green at head 970daa5. Also the checks_run cites task_intent_test for the qa: marker but that behavior is actually covered by the conductor + helper tests — fix the tag. Re-stamp checks after rework.

Sealed-bid sizing

Edit →

Alex (PM)

Avi (PO)

SMALL

Dev

SMALL

Actual

XL