User story
Como operador do iris analisando múltiplos repos, eu quero que a ingestão de PRs capture o mergeCommitSha (e os parents desse commit) para que o engine tenha um sinal de ground-truth da estratégia de merge usada em cada PR (merge commit vs squash vs rebase), hoje impossível de inferir com confiança.
Acceptance criteria
Scope / non-goals
Dentro: só coleta + modelo. Adicionar merge_commit_sha, parent count do merge commit, e subjects dos commits do PR.
Fora: a lógica de classificação da estratégia de merge em si (isso é a issue de métrica [METRIC] Merge strategy detection, que consome este campo). Sem mudança de UI aqui.
Stage
Stage 2 (refinamento da plataforma atual) — melhora a confiabilidade do pipeline de ingestão CLI → engine.
Implementation notes
- Pré-requisito / enabler de
[METRIC] Merge strategy detection per repo.
- Dado já parcialmente disponível:
commit_refs (hashes dos commits do PR) e o parent count de commits do main (%P em git_reader.py:23, flag is_merge). O que falta é só amarrar o PR ao commit que de fato aterrissou no main via mergeCommitSha.
- GraphQL:
pullRequest { mergeCommit { oid parents(first:0){ totalCount } } }.
User story
Como operador do iris analisando múltiplos repos, eu quero que a ingestão de PRs capture o
mergeCommitSha(e os parents desse commit) para que o engine tenha um sinal de ground-truth da estratégia de merge usada em cada PR (merge commit vs squash vs rebase), hoje impossível de inferir com confiança.Acceptance criteria
iris/ingestion/github_reader.pypassa a buscarmergeCommit { oid, parents { totalCount } }no GraphQL de PRs (campos_PR_FIELDS_*, hoje em ~github_reader.py:74-81).iris/models/pull_request.pyganha campo opcionalmerge_commit_sha: str | None(e, se barato,merge_commit_parent_count: int | None)._parse_pull_requests()popula o novo campo; ausência (PR não-mergeado / dado faltando) →None, sem quebrar.CommitRef, habilitando o match do padrão(#<número>)do squash default do GitHub.None(repos antigos / sem API).Scope / non-goals
Dentro: só coleta + modelo. Adicionar
merge_commit_sha, parent count do merge commit, e subjects dos commits do PR.Fora: a lógica de classificação da estratégia de merge em si (isso é a issue de métrica
[METRIC] Merge strategy detection, que consome este campo). Sem mudança de UI aqui.Stage
Stage 2 (refinamento da plataforma atual) — melhora a confiabilidade do pipeline de ingestão CLI → engine.
Implementation notes
[METRIC] Merge strategy detection per repo.commit_refs(hashes dos commits do PR) e o parent count de commits domain(%Pemgit_reader.py:23, flagis_merge). O que falta é só amarrar o PR ao commit que de fato aterrissou nomainviamergeCommitSha.pullRequest { mergeCommit { oid parents(first:0){ totalCount } } }.