Repository navigation
fix(work-items): re-point blocked items before closing one - #12929
Conversation
Closing an item resolved every edge where it blocked another item, so a duplicate close freed dependents still waiting on the surviving work (#12727 closed as a duplicate, #12621 admitted before its prerequisite). The close paths in triage's apply-outcome and track done now run one shared step, "Dependents on close" in reference/issue-conventions.md: list the open items the closing item blocks, add a blocked-by edge to the item that now carries the work through the seam's link-blocks, then remove the edge to the closing item, and only then close. A delivered close keeps its edges; a won't-fix with no carrier keeps them and names the dependents for re-triage. The GitHub adapter README carries the REST listing and the edge removal under "Close item". Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01MWmASMaG92q8enDXFa5Doc
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b8061fede1
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
claude-security-review reviewed Security review (incremental): PR #12929,
|
|
claude-review reviewed Code review (incremental): PR #12929, b8061fe → 2343cc4Result: no findings. I read every hunk in both files in scope: What changed since the last review
Prior findings and settled threads
Other notes
|
The dependents listing piped through tr, so a failed or partial REST read exited 0 with an empty list and the close went ahead. The recipe now sets pipefail and a non-zero exit stops the close. The cloud-session refusal now covers only a close that must move an edge to a carrier; a close that keeps its edges goes ahead. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01MWmASMaG92q8enDXFa5Doc
No related issue: lesson L121 from the #12727 close that unblocked #12621
Summary
Closing an item resolves every edge where it blocks another item. When
#12727 closed as a duplicate
of the wave issues, #12621
lost its only open blocker and the issue lane admitted it before its prerequisite existed
(stop comment).
Both work-items close paths now move each dependent's wait onto the item that carries the work
before they close.
Fix
plugins/work-items/reference/issue-conventions.md: new "Dependents on close" section, the oneshared, provider-neutral step. List the open items the closing item blocks, name the carrier
(duplicate: the surviving item; superseded or split: the carrying item; delivered: none), add
each new edge through the seam's existing
link-blocksverb, then remove the edge to the closingitem, then close. A won't-fix with no carrier keeps its edges and names its dependents in the
closing comment for re-triage. Any failed add or removal stops the close.
blocking (
CONTRACT.mdblocked_by_count), so a kept edge would hold a re-pointed dependent offthe frontier for good. It runs only after the new edge lands, so no dependent passes through a
moment with no open blocker.
plugins/work-items/skills/triage/context/apply-outcome.md: every close outcome runs that stepfirst.
plugins/work-items/skills/track/actions/done.md: every direct close runs it first; acompletedclose is the delivered case.plugins/work-items/tools/work-item-tracker/adapters/github/README.md"Close item": the GitHubrecipe, the REST
list dependencies an issue is blocking
read (it works in cloud sessions and keeps cross-repo dependents) and
gh issue edit --remove-blocked-by, with a pointer record.link-blocksfor adding an edge; it has no verb to listdependents or remove an edge, so those stay provider mechanics in the adapter README rather than
new adapter ops.
Verification
gh api --paginate repos/melodic-software/claude-code-plugins/issues/12727/dependencies/blockingreturned 12620, 12621, 12622 and 12623, the dependents the incident named.
scripts/check-changelog-fragments.sh --check-required origin/main: pass.scripts/check-changed-skills.sh origin/main: track and triage pass, 0 errors (warnings areexisting size warnings).
check-affected: pass.plugins/work-items/skills/triage/evals/should cover a duplicateclose whose item blocks open work, checking that the edge moves before the close.
Related
too early
🤖 Generated with Claude Code
https://claude.ai/code/session_01MWmASMaG92q8enDXFa5Doc