Skip to content

fix(kanban): fr-pass author check, kill Release-title auto-promote, prod-branch probe, drop auto-classify - #76

Merged
LukasWodka merged 1 commit into
developfrom
fix/phase1-board-automation-hardening
Jul 26, 2026
Merged

fix(kanban): fr-pass author check, kill Release-title auto-promote, prod-branch probe, drop auto-classify#76
LukasWodka merged 1 commit into
developfrom
fix/phase1-board-automation-hardening

Conversation

@LukasWodka

@LukasWodkaLukasWodka commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

Four solo .github board-automation hardening items — all mergeable without colleague review.

TicketChangeWhy
#1271 (D30)/fr-pass refuses the PR author; requires MEMBER/OWNER (drops COLLABORATOR)FR is a second pair of eyes — a self-pass was one comment away, and a read-only outside collaborator could pass too. Functional reviewer was set on 0 of 100 items.
#1267 (D27-L4)Remove the Release:-title auto-promoteA PR titled Release: … merged to develop made reconcile set Status=Prod (rank 10 → satisfies every gate). The drift-to-prod path (SHA actually on the prod branch) is the sound mechanism and stays.
#1267 (D27-L4)Resolve prod branch by probing main/master, not a repo-controlled .kanban.ymlA repo could commit branch_status_map: {develop: Prod} and self-grant prod status to every develop merge.
#1279 (D21)Delete auto-classify.ymlRan every 10 min to populate Squad (deleted by D4) and rewrite Deploy environment with junk values; also what made updatedAt useless for archiving. No callers.

actionlint + shellcheck clean; no dangling auto-classify references; yq dependency dropped from reconcile.

Promote to main after merge (callers read @main) — the /fr-pass and reconcile changes only take effect once on main.


Note

Medium Risk
Changes gate who can advance kanban status and how reconcile auto-moves items to Prod; misconfiguration could block legitimate FR sign-offs or leave drift uncorrected until SHA-based promotion applies.

Overview
Hardens engineer kanban GitHub automation around who can advance FR and how items reach Prod.

/fr-pass now requires MEMBER or OWNER (no COLLABORATOR) and blocks the PR/issue author from signing off their own functional review.

kanban-reconcile no longer auto-promotes merged PRs whose titles look like release vehicles; Prod moves rely on merge SHA on the prod branch only. Prod branch resolution probes main then master instead of reading repo-controlled .kanban.yml, closing self-grant paths via branch map overrides.

Removes the auto-classify.yml cron that synced Squad/Area and Deploy environment every 10 minutes.

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

…ssify cron
Four solo .github hardening items from RFC-BACKEND-0008, all board-automation:
- D30 (#1271): /fr-pass must be a real second pair of eyes. Refuse when the
commenter is the PR author, and require MEMBER/OWNER (drop COLLABORATOR, which
includes read-only outside collaborators). The Functional-reviewer field was
set on 0 of 100 items; a self-pass was one comment away.
- D27-L4 (#1267a): remove the Release:-title auto-promote. A PR titled
'Release: anything' merged to develop made kanban-reconcile set Status=Prod —
rank 10, satisfying every future gate. Deleted; the drift-to-prod path (SHA
actually on the prod branch) is the sound mechanism and stays.
- D27-L4 (#1267b): resolve the prod branch by probing main/master, not by
reading a repo-controlled .kanban.yml from the default branch. A repo could
commit 'branch_status_map: {develop: Prod}' and self-grant prod status to
every develop merge. Ground truth now comes from the repo's branch list.
- D21 (#1279): delete auto-classify.yml. It ran every 10 min to populate Squad
(deleted by D4) and rewrite Deploy environment with junk values; it is also
what made updatedAt useless as a staleness signal. No callers.
actionlint + shellcheck clean; no dangling auto-classify references.
Refs tracebloc/backend#1271 #1267 #1279
@LukasWodkaLukasWodka self-assigned this Jul 26, 2026
@LukasWodka

Copy link
Copy Markdown
ContributorAuthor

bugbot run

@LukasWodka

Copy link
Copy Markdown
ContributorAuthor

👋 Heads-up — Code review queue is at 40 / 30

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.)

@cursorcursorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit a52a23b. Configure here.

@LukasWodka
LukasWodka merged commit 99d840d into developJul 26, 2026
5 checks passed
@LukasWodka

Copy link
Copy Markdown
ContributorAuthor

bugbot run

@cursorcursorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit a52a23b. Configure here.

LukasWodka added a commit that referenced this pull request Jul 26, 2026
.github hosts the reusable advance-deploy-env.yml (workflow_call only) but had
no push-triggered caller of its own — the only repo without one — so its kanban
items never advanced when code shipped: feature PRs stranded at 'FR on dev'
while the promotion PR alone reached Prod.
(This was meant to land in #76 but the commit was orphaned — pushed after #76
had already merged. Re-landing cleanly here.)
Adds the same push-triggered caller the other 14 repos have.
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