gh-cli: implement the six release operations so /dev:promote can run on GitHub #69
Labels
No labels
component:adapters
component:lifecycle
component:qa
component:setup
component:shared
component:worktrees
phase/accepted
phase/backlog
phase/deployed
phase/developing
phase/integrating
phase/planning
phase/qa
phase/requirements
phase/uat
priority:critical
priority:critical
priority:high
priority:high
priority:low
priority:low
priority:medium
priority:medium
type:bug
type:chore
type:docs
type:feature
type:infra
type:tech-debt
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
jbr870/devwork-skills#69
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
PREQ: gh-cli — implement the six release operations so /dev:promote can run on GitHub
Created: 2026-08-25
Problem
/dev:promotecannot run on a GitHub project at all. Thegh-cliadapter implements none of thesix release operations the forge contract defines:
glab-clilocal-fstea-cligh-clipr_createpr_statuspr_mergecomment_on_prpipeline_statusrelease_creategh-cli/SKILL.md's capability manifest lists fourteen operations and does not mention the release opsat all — not even as
unsupported, which it does use for the two wiki ops. So the gap is invisible inthe one place a reader would look for it.
The contract states that declaring a release op
unsupported"is caught at/dev:setupwhen the projectdeclares a
release:block — or when it declaresuat: { open_pr: true }", which putspr_create,pr_statusandcomment_on_pron/dev:integrate's review path as well. That means the gap is notconfined to
/dev:promote: a GitHub project that declaresopen_pr: trueloses/dev:integrate's reviewpath too.
Why now: most repositories on the Forgejo instance are being migrated to GitHub (decided
2026-08-25). Today the gap is theoretical because no project declares
forge.adapter: gh-cliwith arelease:block. After the migration it is the first thing a release run hits.Users:
/dev:promote(and/dev:integrate's review path) on a GitHub-hostedproject after the migration.
Current state: untested — no GitHub project has reached a release run. Whatever the failure looks like,
it happens at the moment someone is trying to ship.
Proposed Solution
Implement the six release primitives for
gh-cliagainst theghCLI / GitHub REST API, declare them inthe adapter's capability manifest, and prove them with a live smoke test against a real GitHub repository —
the same shape as
glab-cli/test/release-smoke.sh.Scope: to be assessed when this is picked up. The natural split is the
/dev:integratereview-paththree (
pr_create,pr_status,comment_on_pr) versus the/dev:promoterelease three (pr_merge,pipeline_status,release_create), which may be worth shipping as two slices — GitHub Actions is adifferent enough model from GitLab pipelines that
pipeline_statusdeserves its own design pass.Notes
release-pipeline-status— an answer that says what it is an answer about). Filedout of that feature's requirements session on 2026-08-25 rather than folded into it: #47 is honesty
work in the shared tier (make an absent capability expressible), this is implementation work in one
adapter. Doing
gh-cli'spipeline_statusslice inside #47 would mean designing GitHub's releasesurface twice.
pipeline_status's answer shape: #47 adds commit identity to theresponse and separates "no pipeline yet" from "no CI", so a
gh-cliimplementation written before itwould be written against a shape that is about to change.
/dev:requirements --issue=<this>when it is picked up.
nonebranch unreachable #55