Agents Builders

Conductor cycle driver

Archived
conductor-cycle-driver

Created

Jun 25, 20:44

Started

Jun 25, 20:49

Completed

Jun 25, 21:28

DevOps handoff

Type

Feature

Shape

backend

Worktree Slug

conductor-cycle-driver

Repositories

mcritchie-studio

Release Train

Branch

feat/conductor-cycle-driver

QA URL

Production URL

tooling devops conductor

Acceptance Criteria

  • survey enumerates Deploy queue by stage
  • Reports active release candidate and members
  • plan recommends next deterministic action per stage
  • Orchestrates existing tools; no board reimplementation
  • Ship stays operator-gated; never auto-ships

Expected Test Plan

  • unit
  • integration

Checks Run

  • [unit] conductor_test: ship refuses+exit2, reviewed→merge pipeline-only, non-pipeline flagged, merge dry vs --run
  • [integration] conductor_test: survey enumerates all 5 stages + names RC/members, plan emits per-stage next action, survey/plan never invoke bin/release (release call log empty)
  • [manual] live read-only survey/plan/ship/merge/qa against PROD board — ship exits 2, candidate correctly excludes assembled rolio (non-pipeline)
  • [full-suite@44ca962bc4c3c4f17d7d99846ba1a9dd43067ce0] bin/rails test green
  • [rubocop@44ca962bc4c3c4f17d7d99846ba1a9dd43067ce0] bin/rubocop clean

Agent Context

Create bin/conductor — a DETERMINISTIC driver for the Build-and-Deploy QA Release cycle, codifying the documented SOP. Form (operator-chosen): a bin/ script like bin/release / bin/dor-check / bin/pr-status (more rails, less model judgment). DOC BASIS (read first): docs/agents/system/devops-cycle-design.md section 1 (two-workflow model: Build designed->building->submitted, Deploy submitted->reviewed->assembled->shipped) + docs/agents/modules/parallel-agent-devops.md (the NEW 'Step 0 — assess the queue by stage' subsection just shipped). FIRST RECONCILE WITH EXISTING TOOLING — do NOT duplicate: read bin/devops-cycle (legacy heartbeat planner, legacy stage names), bin/qa-intake (PR<->worktree join + labels), bin/reviewer-select, bin/release (merge/prepare/ship), bin/task. bin/conductor ORCHESTRATES these as a thin layer; it complements qa-intake (don't overlap its PR-join). If bin/devops-cycle can be cleanly updated to the current stage model instead, note that — but a focused new bin/conductor is acceptable. CORE (the gap: a 2026-06-25 miss where the flat bin/task list 20-row recency cap hid actionable tasks): (1) 'bin/conductor' / 'survey' (default, read-only): STEP 0 — enumerate the Deploy queue BY STAGE via 'bin/task list --stage reviewed/assembled/submitted/building/blocked' (NOT the capped flat list), report the active release candidate + members (via bin/release's Release.current read), one-line prod/QA health if cheap. (2) 'plan': survey + the recommended NEXT deterministic action per stage — submitted -> 'review: bin/reviewer-select <slug> + spawn pair' (optionally run reviewer-select to show the picked heavy/light); reviewed -> 'merge: bin/release merge <slugs>' (show overlap planner); assembled+reopened/no qa_url -> 'QA: bin/release prepare'; assembled+QA'd -> 'SHIP GATE (operator): bin/release ship'; flag blocked + non-pipeline (rolio) tasks separately. (3) Optional thin drive subcommands: 'merge' (bin/release merge all reviewed pipeline tasks in overlap order), 'qa' (bin/release prepare). GATES: the 2-senior REVIEW needs agents — a script CANNOT render verdicts, so surface reviewer-select assignments + the handoff, never fabricate reviews. The prod SHIP is operator-gated — bin/conductor NEVER auto-ships (print the command + gate). Default to PROD board like bin/release. ACCURACY: reuse bin/task --stage, bin/release release read, bin/reviewer-select --json; don't reimplement the board API. TESTS (unit+integration): test/commands/conductor_test.rb or test/lib, following bin/pr-status (test/lib/pr_status_test.rb GH_BIN fake-binary stub) + bin/dor-check patterns — stub bin/task/bin/release/bin/reviewer-select, assert survey enumerates each stage, plan emits correct per-stage next-action, ship never auto-invoked; CI-portable (no live board). DOCS: short bin/conductor blurb in parallel-agent-devops.md near Step 0, noting it complements qa-intake. OUT OF SCOPE (note in PR): the hands-off autonomous heartbeat (auto-spawn reviewers, unattended cycle) — separate more-ambitious task.

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
    W Weepinbell
    Weepinbell
    Model
    Duration
    Tokens
    Cost
    Completed Jun 25, 20:44 · 1 day ago
    api
  2. Designed Building
    W Weepinbell
    Weepinbell
    Model
    claude-opus-4-8
    Duration
    6 minutes
    Tokens
    Cost
    Started Jun 25, 20:44
    Completed Jun 25, 20:49 · 1 day ago
    cli
  3. Building Submitted
    W Weepinbell
    Weepinbell
    Model
    claude-opus-4-8
    Duration
    11 minutes
    Tokens
    Cost
    Started Jun 25, 20:49
    Completed Jun 25, 21:00 · 1 day ago
    cli
  4. Submitted Reviewed
    C Carl
    Carl primary
    J Jasper
    Jasper light
    Model
    claude-opus-4-8
    Duration
    4 minutes
    Tokens
    7,579,492
    Cost
    ~$4.94
    Started Jun 25, 21:00
    Completed Jun 25, 21:04 · 1 day ago
    cli
  5. Reviewed Assembled
    S Steffon
    Steffon
    Model
    Duration
    under a minute
    Tokens
    Cost
    Started Jun 25, 21:04
    Completed Jun 25, 21:05 · 1 day ago
  6. Assembled Shipped
    A Avi
    Avi
    Model
    Duration
    24 minutes
    Tokens
    Cost
    Started Jun 25, 21:05
    Completed Jun 25, 21:28 · 1 day ago
  7. Shipped Archived
    Model
    Duration
    about 2 hours
    Tokens
    Cost
    Started Jun 25, 21:28
    Completed Jun 25, 23:00 · 1 day ago

Conversation

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

Comment 1 day ago

Review pair APPROVED: carl (heavy) + jasper (light). Gates airtight — survey/plan read-only (never shell bin/release, proven by empty RELEASE_CALL_LOG assertions), plan --reviewers uses reviewer-select --no-record (non-mutating), merge/qa dry-by-default (--run to execute), ship hard-refuses (exit 2). Stage-scan enumerates by --stage (not the capped flat list). Thin orchestrator (no board API reimpl; rolio correctly excluded via release_repos.yml); complements qa-intake. Tests: 15/92 green, full suite 1717 runs, rubocop clean, CI all green. Non-blocking: active_candidate derives RC name from assembled members' release_slug (no cheap Release.current endpoint) — script is honest about it + defers QA/ship to operator.

Sealed-bid sizing

Edit →

Alex (PM)

Avi (PO)

Dev

Actual