[arch-question] CI-Guard für Close-Keyword-Convention in Merge-Commits #406
Labels
No labels
app/archiv
app/einkaufslisten
app/imap-client
app/wissensbasis
arch-answered
arch-question
area/api
area/auth
area/infra
area/mobile
area/shared
area/ui
area/web
portfolio-status
prio/high
prio/low
prio/medium
roadmap/public
size/l
size/m
size/s
size/xl
size/xs
status/blocked
status/needs-info
type/bug
type/chore
type/docs
type/feature
type/idea
type/refactor
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
admin-mrrm/mrrmlabapp#406
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Kontext
Wir hatten bereits vier dokumentierte Convention-Fallen in den letzten 6 Tagen, wo PRs gemerged wurden ohne
Closes #N/Fixes #Nim Merge-Commit-Title:Folge: Milestone-Counts stimmen nicht, Velocity-Statistik verzerrt, Status-Reports erzeugen Diskrepanzen zwischen PM und Dev-Team (siehe gestriges GF-Gespräch). Manuelles PM-Housekeeping wird zur Dauerlast.
Die PM-Convention liegt in der Memory (
convention_commit_close_keywords.md), aber Memory-Awareness allein reicht nicht — Devs (Mensch UND arch-bot) übersehen es konsequent.Konkrete Entscheidung die gebraucht wird
Ein CI-Guard der PRs blockt, deren Merge keinen
Closes #N/Fixes #NReference enthält — wenn dieser PR ein Issue erledigt (Issue-Nummer im Branch-Namen oder PR-Title).Optionen die PM sieht
A) Pre-Merge-Hook in Drone/Woodpecker: Step in der PR-Pipeline der den PR-Title oder die Commits prüft. Failt wenn (Issue-Ref im PR-Title) AND (kein Close-Keyword in PR-Body/-Title). Vorteil: Self-hosted, kein externes Tool.
B) Gitea Server-side Hook: Repo-Settings → require Close-Keyword via pre-receive hook. Aggressiver (blockt schon push), aber Gitea-API für solche Hooks ist in 1.22 limitiert.
C) PR-Template + Linter:
.gitea/pull_request_template.mdmit „Closes #" Vorgabe + ein Lint-Step der den ausgefüllten Wert verifiziert. Sanftere Variante — Dev bekommt Erinnerung statt Wand.D) Reine PM-Reconciler-Strategie: Kein CI-Guard, stattdessen Reconciler im PM-Workflow (siehe state-reconciler.py). Macht das Problem sichtbar, fixt es aber nicht vorher.
Constraints
Optionen mit PM-Empfehlung
Empfehlung: A + C kombiniert.
Aber Tech-Call beim Architekten: welche Variante ist in Drone/Woodpecker am robustesten implementierbar? Gibt es vielleicht ein fertiges Plugin (
plugins/labelso.ä.)?Dringlichkeit
Mittel. Nicht produktions-kritisch, aber jeden Tag erzeugt es zusätzliches PM-Housekeeping und potentielle Status-Diskrepanzen. Antwort gerne bis 2026-06-07.
Folge-Aktion sobald entschieden
PM eröffnet ein neues Implementierungs-Ticket im v0.5-Milestone (Infra-Block) basierend auf der gewählten Variante.
Implementiert via #434 / PR #435 (gemerged). Lösung: Empfehlung A+C — Drone-Step
pr-convention-checkals Hard-Guard + bestehendes PR-Template als UX-Schicht. Self-Test grün (der PR selbst nutzt den Check viaFixes #434).Manueller Folge-Schritt fehlt noch (nur Repo-Admin): Gitea Repo-Settings → Branch Protection auf
main:continuous-integration/drone/prrequiredOhne diesen Toggle bleibt der Bypass via direkten Merge bei rotem Build möglich.
pm-bot referenced this issue2026-06-06 15:42:30 +02:00