release: promote develop → main (kanban drift reconciler + .kanban.yml override)#56
Merged
Conversation
Two enhancements to harden the kanban automation against silent stalls:
1. **kanban-reconcile.yml** (new) — nightly cron at 04:00 UTC scans the kanban
for non-terminal columns and self-heals four classes of drift:
- Merged PRs whose SHA is on the repo's prod branch → Prod
- Merged release-vehicle PRs ("Release: …", "Dev to staging", "Staging to prod") → Prod
- Closed-not-merged PRs in any non-terminal column → Cancelled
- Open issues sitting in post-merge columns → Backlog
Safety cap: aborts if a single run would move more than 100 items (treats
that as a bug, not real drift). Supports `dry-run` via workflow_dispatch.
2. **advance-deploy-env.yml** — added `.kanban.yml` per-repo override. Repos
that deploy out-of-band (e.g. averaging-service ships Docker images from
staging, no main push) can declare:
# .kanban.yml
branch_status_map:
staging: Prod
The override merges with the default mapping (develop→FR-on-dev,
staging→FR-on-staging, master|main→Prod). This was the root cause of
19 averaging-service items getting stuck in Ready-for-prod today —
main was never pushed because the deploy convention doesn't require it.
Catches everything we hand-cleaned today (≈109 items). Layer 2 (stuck-in-
column nudge bot) coming as a follow-up PR.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…branch-override feat(kanban): nightly drift reconciler + per-repo .kanban.yml override
Contributor
Author
|
👋 Heads-up — Code review queue is at 13 / 8 Above the WIP limit. The team convention is to review existing PRs before opening new work. Open PRs currently in Code review (oldest first):
Pull from review before opening new work. (This is a nudge from the kanban WIP check, not a block.) |
3 tasks
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.
Summary
Promote
develop → mainfor the.githubrepo. Ships the nightly kanban drift reconciler to production.What's included (2 commits)
feat(kanban): nightly drift reconciler + per-repo .kanban.yml overridekanban-reconcile.ymlworkflow: nightly 04:00 UTC self-heal of the engineer kanban — moves shipped items to Prod, release vehicles to Prod, closed-not-merged PRs to Cancelled, and misplaced open issues back to Backlog. 100-move safety cap + dry-run mode.advance-deploy-env.yml: adds per-repo.kanban.ymloverride so repos that deploy out-of-band (e.g. averaging-service ships Docker images from staging) map the right branch → Prod.Why merge to main
.githubis a process-only repo (2-stage: develop → main, no staging). The reusable workflows only take effect once they're onmain— that's where every other repo's caller workflows reference them (@main). Until this promotion, the reconciler exists on develop but never runs.Impact once live
The nightly reconciler eliminates the manual drift sweeps we've been doing all week — shipped-but-not-moved items auto-advance within 24h instead of accumulating.
Test plan
Kanban reconcileappears in the Actions tabworkflow_dispatchwithdry-run: trueto sanity-check classification before the first live 04:00 UTC run🤖 Generated with Claude Code