Created
Jul 05, 22:33
Started
Jul 05, 22:52
Completed
Jul 06, 00:49
DevOps handoff
Type
Feature
Shape
backend
Worktree Slug
deploy-spans-self-report-actions
Repositories
mcritchie-studio
Release Slug
—
Branch
feat/deploy-spans-self-report-actions
Local URL
—
QA URL
—
Production URL
—
Acceptance Criteria
Expected Test Plan
Checks Run
Agent Context
Root cause: bin/release (release.rb) does its real work as subprocesses (git, gh, bin/qa-server, heroku run conductor snippets) inside ONE Claude Bash tool call, and opens/closes its own agent-activity span (open_role_span REMOTE 'sweep -> deploy RC to QA', line ~1066/1404). The PostToolUse capture hook (bin/atomic-capture-hook) only fires on Claude tool calls, so the REMOTE span brackets a period with zero capturable actions -> 'No raw actions attributed'. Also the session's parent WORKFLOW span gets auto-closed when bin/release writes the marker. Fix (operator chose Real rows / self-report): make bin/release's step() best-effort POST an AgentAction to /api/v1/agent_actions attributed to the currently-open activity (agent_activity_id from the local marker read_open_activity), mirroring atomic-capture-hook auth (POST /api/v1/auth {secret} to mint the agent token). Each step (sweep! xN, per-app QA deploy, boot-wait, record qa_url, qa_green! flip) becomes a real row. MUST be best-effort/non-fatal like the existing narration + record_deploy_intent helpers: any error (down endpoint, no token, PG outage) is swallowed and the release continues. Member-flip token usage still rides each member's assembled TaskEvent via qa_green! usage_by_slug (unchanged). Applies to ship's Avi span too. Deploy-side subprocess actions have no LLM token cost, so cost stays 0 on those rows by design.
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.
Conversation
QA review feedback, agent handoffs, and follow-up notes for this task.
Avi review approved (carl primary + jasper light); ready for Steffon's qa-release sweep. Non-fatal guarantee verified at both layers (release.rb agent_activity swallows + system never raises + bounded 2s/5s AgentApi timeouts; CLI run/post rescue StandardError + exit 0). action verb is read-only on the open-activity marker so it cannot clobber/auto-close the parent span; role-span gated; dry-run + no-span no-ops. DoR full-suite STALE is a false-positive: cert tree 021e885a == PR head e0fdcc5724^{tree} (identical), GitHub CI test green at head.
Sealed-bid sizing
Edit →Alex (PM)
—
Avi (PO)
MEDIUM
Dev
MEDIUM
Actual
XL
We emailed a one-tap sign-in link to . It expires shortly and can only be used once.
No email? Check spam, or close this and try again.