Story
As a OrganizationAdmin who cuts releases for first-party reusables,
I want use the same cut-release.sh tooling and a documented standard to version any first-party reusable, not only dev-lead/pr-review,
so that ci-failure-analyst (and future reusables) get release + channel tags through the existing, tested mechanism instead of bespoke per-workflow handling.
Acceptance Criteria
scripts/cut-release.sh valid_agent accepts ci-failure-analyst in addition to pr-review and dev-lead, and the usage/error strings list the expanded set.
tests/test_cut_release.bats is updated so the case currently asserting ci-failure-analyst is REJECTED instead asserts it is accepted, plus release_ref/channel_ref cases for it (e.g. ci-failure-analyst/v0.1.0, ci-failure-analyst/stable); the bats suite passes.
docs/release/versioning.md is extended to state the channel/version scheme applies to all first-party reusables (keeping <name>/stable + <name>/vMAJOR.MINOR.PATCH) and adds ci-failure-analyst to the 'what is versioned' table with its reusable + key scripts.
AGENTS.md section 'Release channel tags & the mutable-ref exception' is generalized so the documented exception and compliance guidance cover all first-party reusable channel tags (not only pr-review/dev-lead).
- The chosen channel convention (one convention for all:
<name>/stable + <name>/vX.Y.Z) is stated explicitly so downstream stories and the compliance test can rely on it.
shellcheck scripts/cut-release.sh passes and the script's source-guard still lets tests source the pure helpers without executing main.
Tasks / Subtasks
Dev Notes
- CRITICAL existing-test trap:
tests/test_cut_release.bats line ~28 currently asserts valid_agent ci-failure-analyst RETURNS FAILURE ('unknown agent is rejected'). Extending the script WILL break that test unless it is updated in the same PR — do not just add the agent and leave the suite red.
- cut-release.sh is structured so pure helpers (
valid_agent, validate_version, release_ref, channel_ref) are sourced by tests without running main (source-guard at the bottom). Preserve that structure; the helpers already build <agent>/vX.Y.Z and <agent>/<channel> generically, so only valid_agent needs the new name.
- Channel convention decision (discussion open question): adopt ONE convention for all reusables —
<name>/stable + <name>/vMAJOR.MINOR.PATCH — matching what versioning.md already defines. Do not invent a per-tier scheme; surface that tradeoff to humans rather than guessing.
- This story is tooling + docs only; it does NOT cut any tag and does NOT touch the ruleset (those are admin/Phase-2). It unblocks story id 4.
- Testing standard: shell changes are covered by
tests/test_cut_release.bats (bats) and shellcheck; run both. No GitHub mutations occur here.
Project Structure Notes
Edits existing files only: scripts/cut-release.sh, tests/test_cut_release.bats, docs/release/versioning.md, AGENTS.md. No new files.
References
Likely target surface
scripts/cut-release.sh
tests/test_cut_release.bats
docs/release/versioning.md
AGENTS.md
Story prepared by the BMAD Scrum Master (Bob) for epic #684. Status: ready-for-dev.
Story
As a OrganizationAdmin who cuts releases for first-party reusables,
I want use the same cut-release.sh tooling and a documented standard to version any first-party reusable, not only dev-lead/pr-review,
so that ci-failure-analyst (and future reusables) get release + channel tags through the existing, tested mechanism instead of bespoke per-workflow handling.
Acceptance Criteria
scripts/cut-release.shvalid_agentacceptsci-failure-analystin addition topr-reviewanddev-lead, and the usage/error strings list the expanded set.tests/test_cut_release.batsis updated so the case currently assertingci-failure-analystis REJECTED instead asserts it is accepted, plus release_ref/channel_ref cases for it (e.g.ci-failure-analyst/v0.1.0,ci-failure-analyst/stable); the bats suite passes.docs/release/versioning.mdis extended to state the channel/version scheme applies to all first-party reusables (keeping<name>/stable+<name>/vMAJOR.MINOR.PATCH) and adds ci-failure-analyst to the 'what is versioned' table with its reusable + key scripts.AGENTS.mdsection 'Release channel tags & the mutable-ref exception' is generalized so the documented exception and compliance guidance cover all first-party reusable channel tags (not onlypr-review/dev-lead).<name>/stable+<name>/vX.Y.Z) is stated explicitly so downstream stories and the compliance test can rely on it.shellcheck scripts/cut-release.shpasses and the script's source-guard still lets tests source the pure helpers without executing main.Tasks / Subtasks
ci-failure-analystto thecaseinvalid_agent(scripts/cut-release.sh).expected: pr-review | dev-leaderror strings and the header usage examples.tests/test_cut_release.batsthe 'unknown agent is rejected' case currently usesci-failure-analyst— switch it to a genuinely-unknown name and add an acceptance case for ci-failure-analyst.bats tests/test_cut_release.batsto confirm green..github/workflows/ci-failure-analyst-reusable.yml).pr-review/dev-leadpair to 'first-party reusable workflows' generally, preserving the ruleset/bypass caveats.Dev Notes
tests/test_cut_release.batsline ~28 currently assertsvalid_agent ci-failure-analystRETURNS FAILURE ('unknown agent is rejected'). Extending the script WILL break that test unless it is updated in the same PR — do not just add the agent and leave the suite red.valid_agent,validate_version,release_ref,channel_ref) are sourced by tests without runningmain(source-guard at the bottom). Preserve that structure; the helpers already build<agent>/vX.Y.Zand<agent>/<channel>generically, so onlyvalid_agentneeds the new name.<name>/stable+<name>/vMAJOR.MINOR.PATCH— matching what versioning.md already defines. Do not invent a per-tier scheme; surface that tradeoff to humans rather than guessing.tests/test_cut_release.bats(bats) andshellcheck; run both. No GitHub mutations occur here.Project Structure Notes
Edits existing files only: scripts/cut-release.sh, tests/test_cut_release.bats, docs/release/versioning.md, AGENTS.md. No new files.
References
Likely target surface
scripts/cut-release.shtests/test_cut_release.batsdocs/release/versioning.mdAGENTS.mdStory prepared by the BMAD Scrum Master (Bob) for epic #684. Status: ready-for-dev.