Skip to content

chore(promote): develop → main — kanban closure-routing reliability fix - #100

Merged
LukasWodka merged 1 commit into
mainfrom
develop
Jul 28, 2026
Merged

chore(promote): develop → main — kanban closure-routing reliability fix#100
LukasWodka merged 1 commit into
mainfrom
develop

Conversation

@LukasWodka

@LukasWodkaLukasWodka commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Promotion hop (merge commit). Carries #99 (closure-router reads timeline closer; reconcile terminalizes stranded closed issues) to main where the reusables are referenced as @main.


Note

Medium Risk
Changes promotion-gate-related board automation (where cards sit vs fr-gate); mis-routing could affect visibility of review state until reconcile runs, though comments assert gate safety via commit→PR attribution.

Overview
Kanban closure routing now reads the issue timeline’s most recent ClosedEvent.closer instead of closedByPullRequestsReferences, which is often empty when the close webhook fires. PR closers still mirror Status from the closing PR’s base; commit-based “Closes #N” closers go to On dev; manual closes still leave Status unchanged.

Weekly reconcile adds a closed-issue terminalize pass: any CLOSED issue in a non-terminal column moves to Cancelled (NOT_PLANNED / DUPLICATE) or Prod (completed / unspecified). The sweep also includes planning columns Ready and North Stars, and open issues in those columns are left alone while misplaced open issues in post-merge columns still go to Backlog.

Reviewed by Cursor Bugbot for commit 08d1411. Bugbot is set up for automated code reviews on this repo. Configure here.

…e backstop) (#99)
* fix(kanban-closure-router): read closer from timeline, not lagging closedByPullRequestsReferences
closedByPullRequestsReferences is eventually-consistent and EMPTY at the instant
the issues:closed event fires, so the router missed the closing PR and no-oped —
completed issues stayed stuck in their pre-close column (confirmed on backend#979:
timeline had closer PR #1289->develop, closedByPullRequestsReferences empty).
Read timelineItems(CLOSED_EVENT).closer instead — present immediately, and it
distinguishes a PR closer (mirror base), a Commit closer (On dev), and a manual
close (leave to reconcile).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* fix(kanban-reconcile): terminalize closed issues stranded in non-terminal columns
Adds category 5: any CLOSED issue in a non-terminal column is routed by
state_reason (not_planned/duplicate -> Cancelled, else -> Prod). Backstops the
closure-router's close-time race and the hand-closed case that it deliberately
leaves. Widens the pull to the planning columns (Ready/North Stars) so no closed
issue hides. Safe now that fr-gate attributes via commits->PRs (a card in Prod
can't satisfy the gate).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* fix(kanban-closure-router): use the latest close's closer (Bugbot: reopen+reclose)
Take the most recent ClosedEvent unconditionally instead of filtering to non-null
closers; otherwise a reopen followed by a manual re-close reused the stale PR/commit
closer instead of treating the current close as manual.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
@LukasWodkaLukasWodka self-assigned this Jul 28, 2026
@LukasWodka
LukasWodka merged commit 1318c4c into mainJul 28, 2026
6 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@LukasWodka