Story
As a release engineer,
I want teach cut-release.sh and its tests to cut releases for ci-failure-analyst (and future non-agent reusables),
so that the same audited release primitive cuts tags for every first-party reusable, not just the two agents.
Acceptance Criteria
scripts/cut-release.sh ci-failure-analyst 1.0.0 --channel stable --dry-run succeeds (the name is accepted by valid_agent).
release_ref/channel_ref emit ci-failure-analyst/v1.0.0 and ci-failure-analyst/stable.
tests/test_cut_release.bats covers the new name (valid + dry-run path) and still rejects an unknown name with a non-zero exit.
docs/release/versioning.md "What is versioned" table gains a ci-failure-analyst row (reusable workflow + any scripts it carries — currently none beyond the reusable).
Tasks / Subtasks
Dev Notes
valid_agent() currently hardcodes pr-review | dev-lead (scripts/cut-release.sh). The pure helpers (valid_agent, validate_version, release_ref, channel_ref) are source-guarded so tests/test_cut_release.bats can source the file without running main — preserve that guard.
- Do NOT change
--dry-run/--push semantics or remove the immutable-tag overwrite refusal.
- versioning.md currently scopes versioning to dev-lead/pr-review only; generalize the table and prose minimally without contradicting the agent-specific channel docs.
- Testing standard: bats lives under
tests/, run with bats tests/test_cut_release.bats; keep cases hermetic (use --dry-run, no real git push).
Project Structure Notes
Edits scripts/cut-release.sh, tests/test_cut_release.bats, docs/release/versioning.md. No new files.
References
- scripts/cut-release.sh#valid_agent
- tests/test_cut_release.bats
- docs/release/versioning.md#what-is-versioned
Likely target surface
scripts/cut-release.sh
tests/test_cut_release.bats
docs/release/versioning.md
Story prepared by the BMAD Scrum Master (Bob) for epic #667. Status: ready-for-dev.
Story
As a release engineer,
I want teach cut-release.sh and its tests to cut releases for ci-failure-analyst (and future non-agent reusables),
so that the same audited release primitive cuts tags for every first-party reusable, not just the two agents.
Acceptance Criteria
scripts/cut-release.sh ci-failure-analyst 1.0.0 --channel stable --dry-runsucceeds (the name is accepted byvalid_agent).release_ref/channel_refemitci-failure-analyst/v1.0.0andci-failure-analyst/stable.tests/test_cut_release.batscovers the new name (valid + dry-run path) and still rejects an unknown name with a non-zero exit.docs/release/versioning.md"What is versioned" table gains aci-failure-analystrow (reusable workflow + any scripts it carries — currently none beyond the reusable).Tasks / Subtasks
valid_agent()inscripts/cut-release.shto includeci-failure-analyst(prefer a single source-of-truth list of releasable names). (AC: test issue from agent #1, Go-live improvements for PR review agent #2)ci-failure-analystdry-run, correct ref names, and unknown-name rejection. (AC: test issue from agent #1, Go-live improvements for PR review agent #2, Add @claude delegation, auto-merge, and rebase handling #3)Dev Notes
valid_agent()currently hardcodespr-review | dev-lead(scripts/cut-release.sh). The pure helpers (valid_agent,validate_version,release_ref,channel_ref) are source-guarded sotests/test_cut_release.batscansourcethe file without runningmain— preserve that guard.--dry-run/--pushsemantics or remove the immutable-tag overwrite refusal.tests/, run withbats tests/test_cut_release.bats; keep cases hermetic (use--dry-run, no realgit push).Project Structure Notes
Edits
scripts/cut-release.sh,tests/test_cut_release.bats,docs/release/versioning.md. No new files.References
Likely target surface
scripts/cut-release.shtests/test_cut_release.batsdocs/release/versioning.mdStory prepared by the BMAD Scrum Master (Bob) for epic #667. Status: ready-for-dev.