Repository navigation
fix(issue-deps): pick the client by environment, gh 2.94.0 first - #133
Merged
Merged
Conversation
gh reaches the whole issue-relationship graph from 2.94.0 (cli/cli#13057), both directions of blocked-by included. The skill said the MCP reached sub-issues and closed_by_pull_requests and the script reached the rest; the reporter's MCP reached neither, and gh was not in the table at all. Now the table has three columns and a probe picks one: gh >= 2.94.0 where present, the script where there is a token and no gh (every web worker), and the MCP alone gets a plain statement that the graph is counts-only there and, on the older server, not writable. Kept: the PR read that answers empty rather than refusing (gh does not close it), and the propose-and-confirm rule. Added: the pipe that eats gh's exit status. Expiry widened from "when the MCP exposes the endpoints" to "when the environment the script serves stops existing". Closes #129. Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_01GD6mX5vZRcuFi9DiWv9Gtm
Contributor
Projected releases
Changelog preview0.18.1 (2026-09-09)Bug Fixes
Matched files
Projected for |
jmcvetta
commented
Sep 9, 2026
jmcvetta
left a comment
Owner
Author
There was a problem hiding this comment.
Code review (medium effort). Docs-only PR — scripts/issue-deps.sh changes are comment-only, so the review is about whether the documented gh path is accurate enough to act on. Three findings, all in skills/issue-deps/SKILL.md, verified against gh's trunk source rather than memory.
make check-manifests and make check-step-names pass. The --parent spelling (rather than the --set-parent proposed in cli/cli#13057) is correct against current gh, and closedByPullRequestsReferences, blockedBy, blocking, subIssues all check out as real --json fields.
Generated by Claude Code
Three corrections, all measured against cli/cli v2.100.0 source: --remove-parent is a BoolVar and takes no argument, so it is not one of the "--remove- pairs" and is not covered by "every flag takes a number or a URL". Written the old way, a session runs `--remove-parent 150`, aborts on argument count, and reads the failure as a too-old gh. The client probe tested the version and not the credential. An image shipping gh with no token passed branch 1 and failed every call, with branch 2 unreachable. It now probes `gh auth status` and falls through. `gh --json blockedBy` wraps the field in its own key. Documented without the wrapper, `jq '.totalCount'` is null, and null read as zero is the false-empty answer that paragraph exists to warn about. Co-Authored-By: Claude Opus 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01GD6mX5vZRcuFi9DiWv9Gtm
jmcvetta
marked this pull request as ready for review
September 9, 2026 21:40
jmcvetta
pushed a commit
that referenced
this pull request
Sep 9, 2026
🤖 I have created a release *beep* *boop* --- ## [0.18.1](v0.18.0...v0.18.1) (2026-09-09) ### Bug Fixes * **issue-deps:** pick the client by environment, gh 2.94.0 first ([#133](#133)) ([1ec2d0b](1ec2d0b)) * **undertake:** the ready gate refuses a branch behind its base ([#135](#135)) ([9506f91](9506f91)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: daily-driver-release-bot[bot] <326106134+daily-driver-release-bot[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Three clients for the issue graph, chosen by a probe: gh 2.94.0, the script, the MCP.
Three roads lead to the same graph;
the probe, not the wish, decides.
Where gh is new it walks alone,
where none is here, say so and wait.
Summary
ghreaches the whole issue-relationship graph from 2.94.0 on, both directions of blocked-by included. Theissue-depsskill did not know this: it named the script as the only way to a blocking edge and the MCP as the way to everything else, and the session that reported #129 had an MCP that reached none of it. This change rewrites the skill's client matrix as three columns and adds the probe that picks one, so a session uses the best client its environment has and says plainly what the worst one cannot do.Details
The floor is 2.94.0, not 2.100.0. The issue measured on 2.100.0. Bisecting
pkg/cmd/issue/edit/edit.goacross the cli/cli tags puts the--add-blocked-by,--add-blocking,--add-sub-issueand--parentflags, and theblockedBy,blocking,subIssues,parentandissueTypeJSON fields, all in 2.94.0 (cli/cli#13057);closedByPullRequestsReferencespredates it. The skill states that floor and the two unhelpful errors an olderghgives instead of naming its version.Three branches, in order.
ghat the floor or later uses the flags. A token without a usablegh, which is every Claude Code web worker, usesscripts/issue-deps.sh, now described as load-bearing rather than a gap-filler. The MCP alone gets a plain statement: both generations of the server return counts with no members for blocked-by, and the older generation, the one withget_issuerather thanissue_read, reaches neither sub-issues norclosed_by_pull_requestsand writes nothing into the graph. The tool list is the probe for which generation is present.Kept from the old text. The propose-from-evidence rule, unchanged. The pull-request read that answers empty rather than refusing, now noted for
ghas well as REST, sinceghdoes not close that trap. The from-the-blocked-side rule, now stated as REST's constraint and the script's, withghinverting--add-blockingclient-side.Added. The pipe that eats
gh's exit status:gh issue edit … | tailreportstail's$?. Theghrefusals, all honest and non-zero.Expiry widened. The script's header and the skill's
Expirysection now retire it when the environment it serves stops existing, not when the MCP grows the endpoints, because the capability arrived throughghinstead and the MCP still has not caught up.The script's logic is untouched; only its header comments change.
Issues
🤖 Generated with Claude Code
https://claude.ai/code/session_01GD6mX5vZRcuFi9DiWv9Gtm
Generated by Claude Code