Skip to content

feat(harness): milestone-gated release cycle + auto-filed rollout/feedback companion (#176) - #193

Merged
robercano-ghbot merged 2 commits into
mainfrom
feat/issue-176-release-rollout-conventions
Jul 24, 2026
Merged

feat(harness): milestone-gated release cycle + auto-filed rollout/feedback companion (#176)#193
robercano-ghbot merged 2 commits into
mainfrom
feat/issue-176-release-rollout-conventions

Conversation

@robercano-ghbot

Copy link
Copy Markdown
Collaborator

Closes #176.

Formalizes the release cycle as a milestone-gated convention that reuses the existing #97 blocking graph as the release gate — no new state machine.

What ships

  • Release-issue template (.github/ISSUE_TEMPLATE/release.md) — a Release vX.Y.Z issue whose Blocked-by line = every sibling issue in the milestone, plus a helper query to keep that list current. (Template prose uses non-numeric placeholders so cockpit.sh --parse-blocking yields no phantom blocking edges.)
  • Release driver (.claude/scripts/release.sh) — bumps the version in plugin.json + marketplace.json (via node), prepends a dated Keep-a-Changelog entry to CHANGELOG.md from merged PR titles since the last tag (handles the first-release / no-prior-tag case), tags vX.Y.Z, commits/pushes and prints the manual /plugin marketplace update follow-up (no real registry publish), closes the milestone, and auto-files a Rollout & feedback: vX.Y.Z issue (no milestone, no planned, label feedback) with the reDeploy/reDeFi consumer-sync checklist (via /orchestrator:sync v2, /orchestrator:sync v2 — one sanctioned migration path to bring consumer repos current #141), test-focus areas from the milestone's issue titles, and a feedback back-reference section. --dry-run performs the pure file transforms and prints every git/gh side effect without executing any of them.
  • Offline test (.claude/scripts/release.test.sh) — 44 checks: dry-run transforms plus a real (non-dry-run) path exercised against a local bare-repo origin + a fake bot-gh.sh stub (commit/tag/push land; milestone-close/label-create/rollout-issue-file gh calls fire with correct args), and the no---issue warn-and-skip path. Fully offline.
  • Docsdocs/USAGE.md "Release cycle" section: the milestone-gated release issue, driver steps, rollout companion, label conventions (feedback + from:redeploy/from:redefi + version in body; feedback issues carry no milestone/no planned until owner triage — a census-invisible inbox), and the hotfix path (vX.Y.Z+1 micro-milestone). Supersedes the ad-hoc Release 0.2.2 — published plugin cache lacks the #131 driver working-directory fix #136 pattern.

Gates & review

  • SELF adapter (GATES_FILE=.claude/self/gates.json): build / lint / test all green (44 checks + fan-out smoke, offline).
  • Reviewed by two adversarial lenses (correctness, tests; consensus=all). First round rejected (phantom blocking-graph edges in the template; real mutating path untested; commit-step gpgsign asymmetry); all three fixed and both lenses approved on re-review. The tests lens mutation-tested the new real-path assertions to confirm they're load-bearing.

🤖 Generated with Claude Code

robercano and others added 2 commits July 24, 2026 21:59
…ut companion (issue #176)

Adds the release-cycle machinery: a `Release vX.Y.Z` issue template that reuses
issue #97's "Blocked by #N" blocking-graph gate against every other issue in the
milestone (no new state machine), a `.claude/scripts/release.sh` driver that
bumps plugin.json/marketplace.json, generates a dated CHANGELOG entry from
merged PR titles since the last tag (or full history on a first release),
tags/commits/pushes, closes the milestone, and auto-files a census-invisible
`Rollout & feedback: vX.Y.Z` companion issue with a consumer-sync checklist for
reDeploy/reDeFi (sync v2, issue #141). `--dry-run` performs the real file
transforms but only prints every git/gh side effect, covered by an offline
release.test.sh fixture suite (with-tag, no-prior-tag, and Unreleased-scaffold
cases). Documents the whole convention, including the hotfix path, in
docs/USAGE.md -> "Release cycle", superseding the ad-hoc pattern from #136.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
…path, fix commit gpgsign (issue #176)

Fix round addressing three review-blocking defects:

1. release.md rewritten so no "blocked by" phrase is ever adjacent to a real
   digit anywhere except the one editable Blocked-by field — prose issue
   references drop the leading `#` (issue 97/136/141) and the worked example
   uses non-numeric #AAA/#BBB/#CCC placeholders. Verified empty template
   yields blockedBy=[] via `cockpit.sh --parse-blocking`, and a filled-in
   field still extracts exactly the real numbers.
2. release.test.sh gains real (non-dry-run) coverage: a local
   `git init --bare` origin stands in for the network and a fake bot-gh.sh
   stub (installed at the fixture's own .claude/scripts/bot-gh.sh, since
   release.sh's gh() always shells out to its sibling, never $PATH) stands in
   for gh. Asserts the version-bump commit landed, the tag was created, the
   push reached the bare origin (branch + tag), and the milestone-close /
   label-create / rollout-issue-create gh calls fired with the right args
   (including the rollout body's derived test-focus titles) — plus the
   no-`--issue` warn-and-skip variant. 44 checks total (was 27).
3. The real commit step now disables gpgsign the same way the tag step
   already did (`git -c commit.gpgSign=false commit ...`), so an unattended
   run with `commit.gpgsign=true` and no agent configured can't hang.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
@robercano-ghbot robercano-ghbot added the needs-human Loop escalated: attempt budget exhausted, manual triage required label Jul 24, 2026
@robercano-ghbot

Copy link
Copy Markdown
Collaborator Author

feat(harness): milestone-gated release cycle + auto-filed rollout/feedback companion (#176) (not yet reviewed)

@robercano-ghbot robercano-ghbot removed the needs-human Loop escalated: attempt budget exhausted, manual triage required label Jul 24, 2026
@robercano-ghbot
robercano-ghbot merged commit 86f41cb into main Jul 24, 2026
9 checks passed
@robercano-ghbot
robercano-ghbot deleted the feat/issue-176-release-rollout-conventions branch July 24, 2026 21:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Release + rollout/feedback conventions: milestone-gated release issue, auto-filed rollout companion

2 participants