fix(router): sibling-based merges get a visible label, not a stranded On dev card (backend#1437) - #157
Merged
Merged
Conversation
… On dev card (backend#1437) The '*' fallthrough routed any merged PR with a non-integration base to On dev, where it stranded forever — the parent PR carries the content onward and nothing ever moves the sibling's card again (6 cards in the 2026-08-02 audit). Now: no column move, sibling-merge label instead, so the condition is visible to the weekly board pass. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… writes hard-fail; reconcile mirrors the rule (Bugbot, #157) All three findings real: (1) a skipped Status write let the project's built-in Item-closed automation Cancel shipped-via-parent work - On dev + label is the non-terminal holding state; (2) || echo swallowed label write failures against the PROJECTS_KANBAN_TOKEN write rule - they fail the step now; (3) kanban-reconcile's membership add re-stranded siblings missed by auto-add - it now applies the identical rule + label. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… writes hard-fail; reconcile mirrors the rule (Bugbot, #157) All three findings real: (1) a skipped Status write let the project's built-in Item-closed automation Cancel shipped-via-parent work - On dev + label is the non-terminal holding state; (2) || echo swallowed label write failures against the PROJECTS_KANBAN_TOKEN write rule - they fail the step now; (3) kanban-reconcile's membership add re-stranded siblings missed by auto-add - it now applies the identical rule + label. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…gbot round 2, #157) Label-before-status let a label failure skip the column write via the implicit success() condition, stranding the card in the built-in automation's Cancelled - exactly what round 1 fixed. Order flipped in both files. Reconcile's label write moves inside the wet path: dry runs classify (SIB flag) but mutate nothing. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…gbot round 2, #157) Label-before-status let a label failure skip the column write via the implicit success() condition, stranding the card in the built-in automation's Cancelled - exactly what round 1 fixed. Order flipped in both files. Reconcile's label write moves inside the wet path: dry runs classify (SIB flag) but mutate nothing. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 41f1e7d. Configure here.
…anch (Bugbot round 3, #157) SIB=0 lived inside the merged-PR else-branch, so an issue or open PR visited after a sibling inherited the flag and got mislabeled. Co-Authored-By: Claude Fable 5 <noreply@anthropic.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.

Mechanism 1 of backend#1437, fixed at its source. The router's
*)fallthrough sent every merged PR with a non-integration base to On dev — where it strands forever, because the parent PR carries the content through the pipeline and nothing ever references the sibling again (6 hand-corrected cards in the 2026-08-02 audit).Per the ticket's own proposal ("label the card so the condition is visible instead of silent"): a sibling-based merge now makes no column move and gets a
sibling-mergelabel (auto-created per repo, promote-repo.sh's gate-nudge pattern), flagging it for the weekly board pass. The parent's merge advances the actual content through the normal columns, as it always did.Mechanism 2 of the ticket (repos with no promotion path) was resolved by D1's enrolment — disposition being recorded on the ticket. Closes tracebloc/backend#1437 together with that comment.
🤖 Generated with Claude Code
Note
Low Risk
Changes are limited to kanban GitHub Actions routing and labeling; no application runtime, auth, or data paths are touched.
Overview
Fixes backend#1437 mechanism 1: PRs merged into a sibling feature branch (base other than
develop/staging/main/master) were routed to On dev with no signal that the work only ships via a parent PR, so cards could sit there indefinitely.kanban-closure-router.ymlnow sets asiblingoutput on that merge path, still writes On dev (so project “item closed” automation does not mark them Cancelled), runs Status update before labeling, then applies an auto-createdsibling-mergelabel on the PR.kanban-reconcile.ymlmirrors the same base-branch rule when backfilling missing board items (GraphQL now includesbaseRefName), resets the sibling flag per loop item so issues are not mislabeled, and applies the label only on the non–dry-run path after status is set.Reviewed by Cursor Bugbot for commit c9c508d. Bugbot is set up for automated code reviews on this repo. Configure here.