Agents Builders

Move release assembly to Steffon

Archived
move-release-assembly-to-steffon

Created

Jul 03, 21:28

Started

Jul 04, 02:20

Completed

Jul 04, 04:58

DevOps handoff

Type

Feature

Shape

backend

Worktree Slug

move-release-assembly-to-steffon

Repositories

mcritchie-studio

Release Slug

Branch

feat/move-release-assembly-to-steffon

Local URL

QA URL

Production URL

devops

Acceptance Criteria

  • Avi pr-review is review-only; stops at reviewed
  • Steffon qa-deploy self-heals: sweeps reviewed plus stragglers
  • Tasks flip to assembled only on QA-green
  • merged field drives crash-recovery across nil release main
  • Avi production-deploy fast-forwards to main, sets merged main

Expected Test Plan

  • [unit] Conductor sweep detection, merged-matrix transitions, crash-recovery skips
  • [unit] QA-green flip, block-on-regression, idempotent no-op
  • [integration] qa-deploy sweep->prepare->flip seam; production-deploy ff->shipped seam

Checks Run

  • [unit] bin/rails test test/models/release/conductor_test.rb (96 runs — sweep_candidates/sweep!/qa_green!/eject!/record_merged!/merged-matrix/crash-recovery)
  • [unit] bin/rails test test/models/release/sweep_plan_test.rb (8 runs — pure merge/skip/unmergeable sweep decision)
  • [unit] bin/rails test test/models/release_test.rb (43 runs — add attach-only semantics, abandon keeps merged)
  • [unit] ruby -Itest test/lib/release_cli_test.rb (107 runs — prepare sweep flow, idempotent no-op, pre-QA gate, eject, merged:main stamp, review gate)
  • [unit] ruby -Itest test/lib/conductor_test.rb (16 runs — survey/plan labels)
  • [integration] bin/rails test test/integration/release_flow_test.rb (sweep→QA-green→ship matrix walk end to end)
  • [integration] bin/rails test test/integration/deploy_lane_intents_test.rb (live crew intents across the new reviewed-at-prepare shape)
  • [integration] conductor_test [integration]-tagged: merged matrix nil→release→main, interrupted qa-deploy resume, prepare! self-heal
  • [unit] bin/rubocop on all changed app/test files — no offenses
  • [full-suite@9a45c394683c71b7ca2fca82dc3b79214546fc28] bin/rails test green
  • [rubocop@9a45c394683c71b7ca2fca82dc3b79214546fc28] bin/rubocop clean

Agent Context

EPIC (build in a FRESH dedicated session — most ship-critical code in the system). Rewrite the conductor so the souls bookend: Avi reviews + ships; Steffon owns the whole middle (assemble + QA). DEPENDS ON add-task-merged-field. NEW FLOW: (Avi pr-review) REVIEW-ONLY submitted→reviewed, NO merge (reverses the 2026-07-02 fold-merge-into-pr-review; ok because Steffon assembles promptly). (Steffon qa-deploy, SELF-HEALING) 1. detect work = tasks in reviewed + any assembled stragglers not in the current RC; nothing → idempotent no-op. 2. ensure a next release (Release.open! if none, else use in-progress). 3. sweep+merge each detected task's PR into its repo's release branch across all repos, set merged:release. 4. pre-QA gate: tier tests (integration + e2e smoke) on origin/release BEFORE deploying; regression → block the offending task (out of RC), keep the rest. 5. deploy QA (bin/release prepare), wait-for-boot, smoke /up. 6. on QA-green → flip swept tasks stage→assembled (merged stays release); QA-deploy failure → tasks stay reviewed for the next self-healing run. (Avi production-deploy) ship QA-green assembled release: ff release→main per repo (set merged:main), deploy prod, smoke, seal, notes; success → shipped. MERGED FIELD matrix (see add-task-merged-field): reviewed+nil=not swept; reviewed+release=swept/QA-in-flight; assembled+release=QA-green waiting Avi; assembled+main=ff'd/prod-in-flight; shipped+main=done. Self-healing: interrupted Steffon skips re-merging merged:release; interrupted Avi skips re-ff'ing merged:main. TOUCHES: Release::Conductor (move reviewed→assembled from adopt!/merge into prepare; add sweep + create-release-if-none + on-QA-green flip + block-on-regression); bin/release (prepare grows sweep/merge; merge → the per-task primitive prepare loops, or deprecate; pr-review drops merge); heartbeats.md §1-2 (NOTE: a submitted reorder PR #348 already reordered Avi/Steffon acts downstream-first — coordinate); devops-cycle-design.md §1.4 + §1.2 lanes; qa-release SKILL; board should show the merged state on cards (deferred from the foundation to avoid the in-flight insight-pipeline board conflict). HEAVY tests.

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 XL Dev XL Actual XL
  1. Created Designed
    C Caterpie
    Caterpie
    Model
    Duration
    Tokens
    Cost
    Completed Jul 03, 21:28 · 5 days ago
    api
  2. Designed Building
    F Fearow
    Fearow
    Model
    claude-fable-5
    Duration
    about 5 hours
    Tokens
    Cost
    Started Jul 03, 21:28
    Completed Jul 04, 02:20 · 4 days ago
    cli
  3. Building Submitted
    F Fearow
    Fearow
    Model
    claude-fable-5
    Duration
    about 1 hour
    Tokens
    487,176
    Cost
    Started Jul 04, 02:20
    Completed Jul 04, 03:43 · 4 days ago
    cli
  4. Submitted Blocked
    A Avi
    Avi
    Model
    claude-fable-5
    Duration
    16 minutes
    Tokens
    Cost
    Started Jul 04, 03:43
    Completed Jul 04, 03:59 · 4 days ago
    cli
  5. Blocked Submitted
    F Fearow
    Fearow
    Model
    claude-fable-5
    Duration
    32 minutes
    Tokens
    245,645
    Cost
    Started Jul 04, 03:59
    Completed Jul 04, 04:30 · 4 days ago
    cli
  6. Submitted Reviewed Review Activity
    J Jasper
    Jasper primary
    S Shannon
    Shannon light
    Model
    claude-fable-5
    Duration
    5 minutes
    Tokens
    10,158,562
    Cost
    ~$22.21
    Started Jul 04, 04:30
    Completed Jul 04, 04:35 · 4 days ago
    cli
  7. Reviewed Assembled
    S Steffon
    Steffon
    Model
    claude-fable-5
    Duration
    under a minute
    Tokens
    Cost
    Started Jul 04, 04:35
    Completed Jul 04, 04:36 · 4 days ago
  8. Assembled Shipped
    A Avi
    Avi
    Model
    claude-fable-5
    Duration
    22 minutes
    Tokens
    9,052,223
    Cost
    ~$13.86
    Started Jul 04, 04:36
    Completed Jul 04, 04:58 · 4 days ago
  9. Shipped Archived
    Model
    Duration
    about 16 hours
    Tokens
    Cost
    Started Jul 04, 04:58
    Completed Jul 04, 20:46 · 4 days ago

Conversation

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

Handoff 4 days ago

EPIC built + certified: souls bookend the pipeline — Avi pr-review is review-only (stops at reviewed); Steffon's bin/release prepare is now the self-healing sweep (detect reviewed+stragglers → ensure RC → gh-merge with merged:release crash-skip → pre-QA gate (qa_test_cmd, eject on regression) → deploy QA → qa_green! flips members assembled ONLY on green); ship stamps merged:main per repo at each ff. New: Conductor.sweep!/sweep_candidates/qa_green!/eject!/record_merged!, pure Release::SweepPlan, bin/release eject verb. Docs: devops-cycle-design §1.1/1.2/1.4, heartbeats §1-2 + merged matrix, qa-release SKILL, pr-review-sop, avi role, parallel-agent-devops, /stages vocabulary + tripwires. Full suite (2638 runs) + rubocop certified; dor-check green. PR #362 (base release). NOTE: doc overlap with open PR #351 — second merger rebases. Post-merge: bin/install-agent-docs to sync the SKILL.

QA Feedback avi 4 days ago

PR #362 cannot merge as-is — two verified issues after round-1 siblings landed on release: (1) CONFLICTING/DIRTY against current origin/release (overlaps #351's share-insights rename in heartbeats.md, docs/agents/skills/qa-release/SKILL.md, and devops-cycle-design.md §1.4) — rebase on freshly-fetched origin/release resolving those conflicts in favor of the rename; (2) the diff's new heartbeats.md act row (~line 1740 of the diff) uses the retired act name 'propagate-insights' — update it to 'share-insights'. After the rebase the suite cert is STALE by definition: re-run bin/full-suite-check AND bin/dor-check back-to-back from the same worktree (no commands in between), commit nothing after cert, then move submitted and post a note --resolves-feedback. Product direction itself fits the deploy-flow redesign epic — this send-back is freshness/naming only; full deep review (primary=jasper, light=shannon, alex shadowing suggested) runs on the resubmit.

QA Feedback jasper 4 days ago

REVIEW-ONE verdict (primary=jasper, light=shannon) on PR #362 @ cbb24ca9: architecture + state machine SOUND — merged matrix, crash-recovery idempotency (sweep! early-return / SweepPlan skip / pr_merged? fallback / ensure-batched record), override paper trail, pre-QA-gate honesty + ensure-restore, best-effort merged:main with ship! re-stamp, and the retargeted tripwires all verified against the tests. No stranding path found. Fix WITH the in-flight rebase rework (same cycle): (1) prepare --task <slug> silently DROPS a missing/ineligible named slug — sweep_detect_ruby filters candidates by only_slugs so screen_merge never sees a blocked/missing status, yet the run ends "Assembled rel-x" (operator believes the named task rode QA); screen the RAW --task list or warn per unmatched slug, and fix the bin/release.rb ~1076 comment claiming the gate "guards the --task list". (2) bin/release.rb ~1368 prints "then hand off to Avi: bin/release ship" unconditionally even after the QA-NOT-green summary — gate it on qa_green. (3) Reconcile sweep! docstring "never regresses a merged:main member": a CROSS-RELEASE assembled+merged:main straggler hits member=nil -> release.add overwrites merged to "release" (release.rb ~253); either guard it or soften the claim to current-release members. SHOULD-FIX same pass: (4) docs/agents/agents/steffon/role.md is stale — still "after the two seniors merge into release", no sweep/merge/eject ownership; update + consider adding to REVIEW_DOCS tripwire list. (5) Release::CleanCheck copy says "already assembled" but status now feeds it reviewed+merged:release too. NITS: vocabulary Assemble-lane step label "Merge Review" vs its new "Pre-QA gate:" expectation; merge summary "stages stay reviewed" is wrong for an assembled straggler. Deep review of cbb24ca9 is DONE — the resubmit needs only a DELTA review (rebase resolution in the 3 overlap docs + propagate-insights rename + these fixes + fresh cert).

Handoff carl 4 days ago

Rebased on origin/release, conflicts resolved in favor of share-insights, act row renamed, re-certified green

Handoff carl 4 days ago

activity-729 delta addressed: --task loud-fail, conditional Avi handoff, add no-downgrade guard for merged:main stragglers, steffon role.md sweep contract, CleanCheck copy, Merge Review->Pre-QA Gate + merge summary nits; 6 new tests, re-certified green

Sealed-bid sizing

Edit →

Alex (PM)

Avi (PO)

XL

Dev

XL

Actual

XL