OPS75 — Re-home do C141 no GitHub main (mergeado só no Forgejo no cutover) + push mirror Forgejo→GitHub para prevenir a classe #127
Labels
No labels
blocked
done
in-prod
in-progress
kind:chore
prio:P1
prio:P2
ready
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Depends on
Reference: fsolla/teqo#127
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Plano: —
Contexto (descoberto na execução do C142, Issue #107)
O C141 (perfis de permissão por assessor) está
done+in-prodno tracker (PR #110 do Forgejo, merge 2026-08-20T01:24:56Z), mas o código dele nunca chegou ao GitHub main — o remote vivo pós-cutover OPS71:campaignAdvisorProfile.tsnão existe no GitHub main (verificado via API:404).20260819_214755_add_campaign_user_advisor_permission_profilenão existe no GitHub main.CampaignUser.tsno GitHub main não temvisibility/editing(grep: 0 ocorrências).C141/permissao/perfil/advisor: 0), nenhuma branch, nenhum commit.c319995e(feat) e81e322a5(changelog, rebase sobre S10) existem só emforgejo/maine na branchforgejo/C141-perfis-de-permissao-por-assessor-visao-edicao-configura.Causa raiz: o agente do C141 operou o fluxo Forgejo (PR + merge no Forgejo) na janela do cutover, e o OPS73 só re-homou S8/S9 (+ S10 pendente na #126). O C141 caiu no mesmo buraco sem ninguém registrar.
Impacto: C142 (#107,
in-progress) está bloqueado — o modelo de permissão sobre o qual a interface deve ser construída não existe no base do worktree (cortado deorigin/main).Fases
F1 — Re-home do C141 no GitHub main (mesma mecânica do re-home S8/S9 do OPS73)
60857ad3(commit original do C141, branchforgejo/C141-..., base pré-S10) — aplica direto sobre o main atual sem depender do S10; ouc319995e+81e322a5(versão rebaseada sobre S10 emforgejo/main) — só depois do re-home do S10 (#126).src/lib/campaignAdvisorProfile.ts+src/collections/CampaignUser.ts(camposvisibility/editing) + migration20260819_214755_...(.ts/.json + entrada noindex.ts) + eixos de escrita (advisorEditingAccess,resolveProfileScopedRead,assertPersonContactWritable) + UI de/campanha/assessores+ testes (campaignAdvisorPermission.int.spec.ts,campaignAdvisorProfile.unit.spec.ts,accessShared.unit.spec.ts) + changelog.pnpm pushcompleto + e2e da superfície assessores no CI./campanha/assessorescom coluna Permissão; perfil resolvido para assessor comediting: somente_leitura.F2 — Sincronização automática Forgejo → GitHub (prevenir a classe inteira)
O usuário pediu (2026-08-20): "o push no Forgejo deve enviar automaticamente uma cópia pro GitHub, do lado do Forgejo mesmo". O Forgejo suporta isso nativamente:
POST /api/v1/repos/fsolla/teqo/push_mirrors): remote URLhttps://github.com/fsolla/teqo.git, usuário GitHub + fine-grained PAT (permissões Contents + Workflows no repo),sync_on_commit: true(dispara a cada push), branch filter (ex.:mainou vazio = todas).forgejo/maine GitHubmainestão divergentes (cada lado tem commits que o outro não tem — OPS71-OPS74/S11/C143 só no GitHub; S10/C141/C144 só no Forgejo). Um push mirror sobre refs divergentes pode sobrescrever a história do GitHub main (comportamento force de mirror) ou falhar. Sequência segura: (1) convergirmain(F1 + re-home do S10 da #126 + re-home dos plans C141/C143/C142/C144), (2) só então armar o mirror commainno branch filter, (3) validar em repo de teste antes (a semântica force/não-force do push mirror do Forgejo precisa de confirmação empírica).git remote set-url --add --pushcom Forgejo como origin principal e push para os dois — não recomendada: inverte a decisão do OPS71 (CI/PR/deploy vivem no GitHub) e reintroduz dupla fonte de verdade; o mirror server-side cobre o caso sem inverter o fluxo.Aceite
sync_on_commit, validado (push no Forgejo → commit aparece no GitHub) e commainconvergido antes.docs/ops/teqo-1313-deploy.mdanotado com a falha conhecida "PR mergeado no Forgejo não chega ao GitHub main".Não escopo
Referências
done+in-prod) e C142 (#107,in-progress).F1 — Re-home do C141 no GitHub main: CONCLUÍDO (2026-08-20, na sessão de execução do C142).
===
OPS75-rehome-c141-github-main→ mergeado via auto-merge nativo em3f74b696(required checkCI (PR) / checksverde).60857ad3(branchforgejo/C141-...), aplicado sobre o GitHub main; fusão com o C143 (já no main) resolvida em 3 arquivos:src/utilities/access/demands.ts— mantém a regra C143 (responsáveis explícitos) na leitura; adiciona o eixo de edição do C141 (somente_leiturafecha updates) sobre o escopo do C143.src/migrations/index.ts— registra APENAS a migration do C141 (20260819_214755_...); S10 NÃO entrou (pending #126).src/payload-types.ts— mantémresponsibles(C143) +visibility/editing(C141).60857ad3idêntico em todos os não-conflitantes), sem S10; gates locais verdes (tsc, lint, format, knip exit 0, cycles, unit 2451, int 815 comcampaignAdvisorPermission.int.spec.ts, build); importMap com handler S3 intacto (sem regressão OPS69).3f74b696) — o modelo de permissão está disponível.F2 — Push mirror Forgejo→GitHub: segue pendente (req. fine-grained PAT + convergência do
main— S10 da #126 ainda pendente). Ver notas da fase no body.F1 (convergência) — CONCLUÍDO.
e7b47455("merge(OPS75): convergência dos mains Forgejo + GitHub").9ae34b68) e GitHub main (3f74b696) — ambos são ancestrais → convergido de verdade: nenhum commit de nenhuma linhagem se perde, em qualquer direção de force-push do mirror.migrations/index.ts(5 migrations dos dois lados),demands.ts(C143 leitura + eixo C141), newsletter (S10/pixel),importMap.js(restaurado com handler S3 — classe OPS69),CHANGELOG-AGENTS.md(regenerado, 46 entradas).teoq_test.Mirror Forgejo→GitHub: agora é SEGURO criar (a convergência elimina o risco de force-push destruir história). Recriar pela UI:
git@github.com:fsolla/teqo.git(SSH).e7b47455.⚠️ Recomendo branch filter com
main(senão o mirror usagit push --mirrore força TODAS as refs, incluindo branches de trabalho).Resolução final (2026-08-21): GITHUB como fonte única — engenharia de dois repos encerrada.
O mirror Forgejo→GitHub foi removido (a direção estava invertida: GitHub principal = branches, main, PRs, CI via Actions). A convergência foi aplicada ao GitHub main:
c723d6ac, árvore9d030639= idêntica à convergência Forgejoe7b47455(diff 0).20260819_213947_...,campaignHomeTracking.ts), C144 (docs/plans/escopo-formularios-escrita-perfil.md,*Options.ts), variantes C141/S8/S9 já cobertas.CI (PR) / checks); merge validado no Forgejo antes (tsc/lint/format/knip/cycles/unit 2457/int 815/build).c723d6ac; branches de teste e temporárias limpas.Estado final dos mains (mesmo conteúdo):
c723d6ac(árvore9d030639)e7b47455(árvore9d030639)Pendência (nova decisão): migrar o issue tracker do Forgejo para o GitHub (issues ativas, flips pós-merge,
pnpm issue/agent:*, docs AGENTS/AGENT-OPS). O Forgejo deixa de ser canal ativo.Tracker migrado para o GitHub — continue em #gh759 (github.com/fsolla/teqo/issues/759). Esta Issue Forgejo está fechada.