- Evolucao: Round 14 (Agency Engineering)
- Fonte: agency-agents/engineering/engineering-git-workflow-master.md
- Categoria: agency/engineering
- Versao: 1.0.0
Motor de validacao de fluxo de trabalho Git. Analisa nomes de branches, mensagens de commit (Conventional Commits), estrategias de merge e atomicidade de commits. Opera offline com stdlib Python 3.12.
- Dado: nome de branch como
feat/SCRUM-123-add-login - Quando:
engine.validate_branch_name(branch_name)e chamado - Entao: retorna
BranchValidationcomvalid=True,category="feat",ticket="SCRUM-123"
- Dado: mensagem
fix(auth): resolve token expiry on refresh - Quando:
engine.validate_commit_message(message)e chamado - Entao: retorna
CommitValidationcomvalid=True,type="fix",scope="auth",breaking=False
- Dado: 5 commits onde 3 tocam multiplos dominios (>3 arquivos em modulos distintos)
- Quando:
engine.detect_non_atomic(commits)e chamado - Entao: retorna
AtomicityReportcomnon_atomiccontendo commits suspeitos escore(0-1)
- Dado: historico com merge commits e fast-forwards
- Quando:
engine.analyze_merge_strategy(git_log)e chamado - Entao: retorna
MergeStrategyReportcomstrategy_detected,recommendationeissues
from dataclasses import dataclass, field
from typing import Optional
@dataclass
class BranchValidation:
valid: bool
category: str # feat, fix, chore, docs, refactor, test, etc.
ticket: str
errors: list[str]
available: bool = True
@dataclass
class CommitValidation:
valid: bool
type: str
scope: str
breaking: bool
description: str
errors: list[str]
available: bool = True
@dataclass
class AtomicityReport:
non_atomic: list[dict] # [{hash, files_count, domains, reason}]
score: float # 0.0-1.0, 1.0 = all atomic
available: bool = True
@dataclass
class MergeStrategyReport:
strategy_detected: str # merge, squash, rebase, mixed
recommendation: str
issues: list[str]
available: bool = True
class GitWorkflowEngine:
@property
def available(self) -> bool: ...
def validate_branch_name(self, branch_name: str) -> BranchValidation: ...
def validate_commit_message(self, message: str) -> CommitValidation: ...
def detect_non_atomic(self, commits: list[dict]) -> AtomicityReport: ...
def analyze_merge_strategy(self, git_log: str) -> MergeStrategyReport: ...