teqo/docs/plans/ops50-ci-github-para-forgejo.md
Francisco Solla 8d16b8a0cb
Some checks failed
Agent PR Ready + auto-merge / ready-automerge (pull_request) Has been skipped
CI (PR) / scope (pull_request) Failing after 4s
CI (PR) / lint (pull_request) Failing after 3s
CI (PR) / format (pull_request) Failing after 4s
CI (PR) / docs-guards (pull_request) Failing after 3s
CI (PR) / plans-only-closes (pull_request) Failing after 4s
CI (PR) / typecheck (pull_request) Has been skipped
CI (PR) / knip (pull_request) Has been skipped
CI (PR) / cycles (pull_request) Has been skipped
CI (PR) / unit (pull_request) Has been skipped
CI (PR) / int (pull_request) Has been skipped
CI (PR) / build (pull_request) Has been skipped
CI (PR) / e2e (pull_request) Has been skipped
CI (PR) / checks (pull_request) Failing after 2s
Agent pool supervisor / tick (pull_request) Failing after 5s
Main merge flips claimed issues to done + in-prod / issue-done (pull_request) Failing after 3s
Promote plan-issue Related on main merge / plan-issue-ready (pull_request) Failing after 3s
CI / static (push) Failing after 3s
CI / int (push) Failing after 4s
CI / build (push) Failing after 3s
CI / e2e (2) (push) Failing after 3s
CI / checks (push) Failing after 2s
CI / deploy (push) Has been skipped
CI / requeue (push) Failing after 4s
CI / e2e (1) (push) Failing after 4s
plan(OPS50-52): planos de intenção — CI Forgejo, DB Neon→homeserver, Blob→Garage
Related #1 #2 #3
2026-08-16 21:54:25 -03:00

5 KiB
Raw Blame History

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