mirror of
https://github.com/fsolla/teqo.git
synced 2026-11-14 08:53:11 +00:00
docs(plans): OPS43 — migration-lock bloqueia PRs sem schema por colateral (#721)
This commit is contained in:
parent
99a3a5f590
commit
4202462e17
1 changed files with 45 additions and 0 deletions
45
docs/plans/migration-lock-colateral-pr-sem-schema.md
Normal file
45
docs/plans/migration-lock-colateral-pr-sem-schema.md
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
# OPS43: migration-lock do CI bloqueia PRs sem schema quando 2+ PRs com schema estão abertos
|
||||
|
||||
Status: registrado
|
||||
Atualizado em: 2026-08-12
|
||||
Issue: #723 (a registrar)
|
||||
|
||||
## Intenção
|
||||
|
||||
O check `migration-lock` do `ci-pr.yml` conta **todos os PRs abertos** que tocam `src/migrations/` ou `payload-types.ts` e falha quando o total é >1 — **inclusive para PRs que não tocam schema nenhum**. Observado em 2026-08-12: o PR #720 (OPS42, 100% test-infra, zero migrations) ficou `BLOCKED` por colateral — seus 12 checks próprios verdes, o merge só esperando o lock global segurar por 2+ PRs de schema (#709 C129 e #701 C115) que estavam travados entre si.
|
||||
|
||||
## Objetivo e aceite
|
||||
|
||||
- Um PR **sem** mudanças em schema passa no `migration-lock` independente de quantos PRs com schema estão abertos.
|
||||
- A serialização entre PRs com schema permanece (a proteção original: no máximo 1 cadeia de migração aberta).
|
||||
- Aceite verificável: com 2 PRs de schema abertos, um PR de teste/UI (sem schema) fica `MERGEABLE`; e um PR de schema continua `BLOCKED` quando outro PR de schema está aberto.
|
||||
|
||||
## Dados (intenção)
|
||||
|
||||
N/A — CI workflow.
|
||||
|
||||
## Direção no codebase (hipótese)
|
||||
|
||||
- `ci-pr.yml`, job `migration-lock`: hoje conta o total global e falha se `count > 1`. Deve falhar **só quando o PR que dispara o workflow** toca schema **e** o total global é >1 (ou alternativamente: falhar quando `count > 1` **e** o PR atual está no conjunto). A forma exata (jq com `github.event.pull_request` + o mesmo `test`) fica para o impl.
|
||||
|
||||
## Dependências
|
||||
|
||||
- Nenhuma (não depende do OPS42; observado na sessão dele).
|
||||
|
||||
## Fora de escopo
|
||||
|
||||
- Repensar o mecanismo de serialização em si (fila, lock por milestone etc.) — o fix mínimo restaura a intenção do guard.
|
||||
- PRs antigos de schema já abertos.
|
||||
|
||||
## Rabbit holes
|
||||
|
||||
- **Blindar demais:** deixar 2 PRs de schema mergearem por corrida (o guard global pega ambos no push-time). **Corte:** o fix condiciona a falha ao PR atual tocar schema — o guard original segue intacto para quem toca schema.
|
||||
|
||||
## Questões em aberto
|
||||
|
||||
- Nenhuma — infra de CI.
|
||||
|
||||
## Referências
|
||||
|
||||
- `ci-pr.yml` job `migration-lock` (falha global `count > 1`).
|
||||
- PR #720 observado `BLOCKED` com checks próprios verdes (2026-08-12 00:30–01:05 UTC-3).
|
||||
Loading…
Reference in a new issue