teqo-backup/docs/plans/ops50-ci-github-para-forgejo.md

76 lines
5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Migrar o CI e o paradigma de agentes do GitHub para o Forgejo
Status: registrado
Atualizado em: 2026-08-16
Issue: #1
Priority: P1
Model: cursor-grok-4.5-medium
Impeccable: A — N/A
Rascunho UI: N/A — sem UI
Appetite: ~2–3 dias eng; um outcome verificável
Responsável: —
## Intenção
O repo já vive no Forgejo (`git.solla.dev`) e o runner da workstation já executa os
workflows — mas por fallback: os YAMLs continuam em `.github/workflows/`, os scripts
`agent-*` falam `gh`→github.com, 59 arquivos de skills/rules descrevem fluxos GitHub,
os docs canônicos pinam GitHub Issues, e o repo GitHub existe defasado. Metade do
paradigma funciona por sorte (Forgejo lê `.github/workflows`), metade está quebrada
(`gh` ausente, tracker canônico apontando para um repo que não recebe push).
Queremos **zero dependência do GitHub**: CI, Issues, PRs, pool e docs rodando
nativamente no Forgejo.
## Persona e fluxo
- **Persona / contexto:** o dev (humano) e os agentes (pool, `work-issue`, claims) — mesa/casa, fluxo diário de entregas.
- **Job principal:** operar o repo de ponta a ponta no Forgejo, como hoje se fazia no GitHub.
- **Fluxo desejado:** push → CI verde no Forgejo Actions; register/claim/ready/status das Issues no Forgejo; PRs no Forgejo com auto-merge; pool supervisor rodando no Forgejo; docs e skills descrevendo o Forgejo.
- **Anti-goals de produto:** manter um meio-termo (tracker em um lugar, CI em outro) que exija dois contextos mentais; republicar o remote GitHub (isso re-dispara os builds Git da Vercel).
## Objetivo e aceite
- Workflows movidos para `.forgejo/workflows/` e verdes no Forgejo Actions (sem fallback do caminho `.github/`).
- Scripts `agent-*` operando contra o Forgejo (Issues/PRs/labels/Actions) — register/claim/ready/status/pool funcionais.
- Skills, rules e docs canônicos (`AGENTS.md`, `docs/AGENT-OPS.md`, `docs/roadmap.md`) descrevendo o Forgejo como fonte única.
- Secrets de CI existentes no Forgejo Actions; branch protection configurado no Forgejo.
- As Issues deste lote (OPS50/51/52) são as primeiras registradas no tracker Forgejo.
- Guardrails de produto: o deploy de produção (Vercel, até o cutover de hospedagem) continua gated pelo CI; o runner não é re-registrado sem necessidade (já operacional); nenhum push volta a acionar builds Git da Vercel.
## Dados (intenção)
- **Vou apresentar dados?** Não
- **Decisões desbloqueadas:** nenhuma de produto — é trabalho de infra/processo.
- **Forma:** N/A
## Direção no codebase (hipótese)
- **Áreas prováveis:** `.github/workflows/*.yml` (8 arquivos, hoje lidos por fallback) → `.forgejo/workflows/`; `scripts/lib/agent-github.mjs` (coração `gh`) + `scripts/agent-*.mjs` + `scripts/lib/agent-pool-*.mjs`; `.agents/skills/**` e `.agents/rules/**` (referências a `gh pr`, github.com, "GitHub Issues" — 59 arquivos); `AGENTS.md`, `docs/AGENT-OPS.md`, `docs/roadmap.md`.
- **Precedente a olhar:** runner Forgejo já executando (workstation-runner v0.2.11, labels `host`/`ubuntu-latest`/`ubuntu-20.04`); MCP Forgejo autenticado no opencode; `docs/plans/agent-pool-orchestrator.md` (pool).
- **Risco de acoplamento:** o pool (Cursor Cloud) depende do tracker — a migração não pode deixar a fila invisível no meio do caminho; os workflows de merge (`agent-pr-ready-automerge`, `issue-done-on-main-merge`, `plan-issue-ready-on-main-merge`) chamam `gh` e precisam de equivalente Forgejo na mesma entrega.
## Dependências
- Nenhuma (fundação das outras duas deste lote; OPS51/OPS52 a declaram como `depends` suave)
## Fora de escopo
- Cutover de hospedagem (Vercel → homeserver, DNS pt.jorgesolla.com.br) — é infra §7.5–7.6, manual, outro lote.
- Migrar o **histórico** de Issues do GitHub para o Forgejo — o passado fica como arquivo; só o tracker daqui para frente é Forgejo.
- Substituir Vercel/Neon/Blob — OPS51/OPS52.
## Rabbit holes de produto
- **Migrar tudo (histórico, releases, wiki).** Se alguém "só completar": semanas de porte de dados sem valor. **Corte neste item:** tracker novo no Forgejo; GitHub congela como arquivo.
- **Suportar os dois trackers por um período.** Meio-termo que duplica bookkeeping e quebra a fila do pool. **Corte neste item:** uma fonte só (Forgejo), com o pool portado na mesma entrega.
## Questões em aberto (produto)
- **Como o agente conversa com o Forgejo?** **Opções:** A) `gh` apontado para `git.solla.dev` via `GH_HOST` | B) API nativa via scripts Node (padrão das libs existentes). **Recomendação:** B — consistente com o pool que já usa PATs, e `gh` não existe nas máquinas de trabalho.
- **O repo GitHub fica como espelho read-only ou morre?** **Opções:** A) arquivar | B) manter espelho. **Recomendação:** A — espelho convida push acidental e re-dispara Vercel. _(assumido — validar)_
## Referências
- Runner verificado 2026-08-16: `workstation-runner` online em git.solla.dev, agent-pool.yml verde a cada 10 min
- infra-solla: `STATE.md`, `plano-implementacao.md` §7.4 (pipeline Forgejo→Runner→registry→homeserver)
- `docs/AGENT-OPS.md` (paradigma de claim/PR/merge), `scripts/lib/agent-github.mjs`