Repository navigation
[RSI Baseline] Close the GitHub Issue-to-Release automation loop #789
Copy link
Copy link
Open
Labels
area:automationScheduled tasks and automationScheduled tasks and automationarea:releaseRelease, tags, updatesRelease, tags, updatesenhancementNew feature or requestNew feature or requestneeds-humanThe agent loop stopped; a person must decide (reason in the last comment)The agent loop stopped; a person must decide (reason in the last comment)
Description
Parent Epic: #784
Why
The baseline must demonstrate a real, end-to-end software delivery loop rather than stop after generating a PR.
Scope
- Connect GitHub Issues, branches/PRs, review verdicts, required checks, merge queue, tags and Releases.
- Bind verification/review evidence to the current head SHA; invalidate a verdict when the PR head changes.
- Reuse GitHub Actions, branch protection and merge queue; never bypass repository rules.
- Enforce risk-tier-specific merge/release policy and explicit human approval for configured sensitive actions.
- Generate/validate changelog fragments and release notes; verify published artifacts and report release status.
- Handle failed CI, review changes, merge conflicts, missing workflow runs and partial release failures.
- Keep actions idempotent and reconcile against GitHub live state before retrying.
Acceptance criteria
- A low-risk pilot progresses from Issue through PR, current-SHA verification, required CI, merge queue and a test release.
- Release artifacts and tag/commit association are verified.
- Failures have actionable reasons; retries do not create duplicate PRs/releases.
- No admin merge, gate bypass or implicit production deployment.
Related
- Release cadence: at least one tag per day, small and stable #351 release pipeline
- [RFC] 跨运行时 Agent 对话与协作:以 OpenCode 为首个试点的目标、需求与两种方案 #198 cross-runtime collaboration
- [Team] Persist a minimal collaboration task lifecycle #54 task lifecycle
Bot identity and review separation
The pilot must use a dedicated, least-privilege GitHub automation identity rather than a maintainer's personal token for routine writes.
- Create/update the PR and post automation status using the configured GitHub App or dedicated bot identity.
- Keep the Developer and Reviewer execution contexts separate. A Developer must not be able to manufacture or edit a valid Reviewer verdict merely by writing PR text.
- Bind the review verdict to the exact head SHA and verify it against GitHub's current PR state before enqueueing.
- Continue to rely on required CI checks, repository rules and the merge queue; never bypass them. Verify whether the chosen App identity and repository rules can perform each required operation before enabling live automation.
- Record the actor, operation, target SHA and outcome for each automated write. Keep maintainer-only operations (App installation, permission changes, policy changes and explicitly sensitive releases) behind human authorization.
Acceptance criteria additions
- A low-risk pilot can create and update its PR without a maintainer's personal GitHub credential.
- Reviewer evidence is produced by a separately controlled execution path and cannot be forged by the Developer role.
- App permissions and any operation that still requires a human are documented; no unsupported GitHub permission is assumed.
Metadata
Metadata
Assignees
Labels
area:automationScheduled tasks and automationScheduled tasks and automationarea:releaseRelease, tags, updatesRelease, tags, updatesenhancementNew feature or requestNew feature or requestneeds-humanThe agent loop stopped; a person must decide (reason in the last comment)The agent loop stopped; a person must decide (reason in the last comment)
Activity
Birfy commentedon Oct 22, 2026
Written-by: Triage
enhancement|area:automation|area:release|needs-human. This loop is not greenfield — it ran end to end today without Grok Bot:#779was triaged and madeagent-ready, Dev claimed it and opened#783, Reviewer judged it, andv0.2.4shipped (177d0ffa, tagv0.2.4, release 21:37Z, 39 changelog entries). The pieces are already named and deterministic:.github/workflows/controller.yml,merge-gate.yml,enqueue-guard.mjs,review-gate.mjs,risk-gate.mjs,pass-label.yml,changelog.mjs,release.yml, and.github/agent/.So the honest scope is the gaps the loop still has, not a second pipeline. The three I can name from the live record:
at <sha>) and byreview-gate/merge-gaterefusing a stale one; nothing invalidates the comment when the head moves, so a person reading the PR sees a green verdict next to a newer commit.#765was enqueued at 11:24:48 and dropped at 11:24:58 with the guard's reason swallowed; it then sat for 20 minutes. Today's#793did it right (re-readisInMergeQueuewithin 60 s) because a person did it by hand. That is a rule in the group notice, not a check.maincan be green on the PR and red inmerge_group(#759: 9/9 on the head, red infollow-through.test.js:264). The rerun is the truth and nothing currently reconciles it back onto the issue.To become
agent-ready, pick one of those three and write the check that fails without the fix. The rest of the loop is already there and should be linked, not rebuilt.