Files
Investidor-V2/docs/investmoz/existing-business/annex-de-execution.md
T
nala 3dc7c5c649
tests / ci (push) Canceled after 0s
commit 30/9
2026-09-30 09:05:43 +02:00

4.3 KiB
Raw Blame History

Reexecução do prompt — anexos D/E — 29/09/2026

  1. Fase e estado: correcção incremental dos comandos de validação e do bloqueio de leitura canónica, aplicada localmente. O módulo completo e os anexos D/E continuam parcialmente implementados.
  2. Diagnóstico: os nomes históricos são 001_mne_schema.sql e 002_mne_existing_territories.sql, não os nomes ilustrados no novo anexo. Os SHA-256 de 001–004 foram comparados com os SQL conservados nas quatro evidências de aplicação e coincidem. Não foram renomeados, divididos ou reescritos ficheiros já aplicados.
  3. Plano aplicado: adicionar simulação transaccional ao backfill; dar código de saída não-zero à reconciliação bloqueada; criar 005 para recusar activação/rollout canónico; testar com papel sem superuser.
  4. Ficheiros: criados 005_mne_compatibility_guards.sql e respectivo DOWN; alterados BackfillMneCompatibility, ReconcileMneCompatibility e tools/test-mne-compatibility.php. Documentação actualizada. Nenhum ficheiro removido; nenhum commit Git criado.
  5. Migrations/reversão: 005 acrescenta somente uma constraint aos controlos; exige 004 e recusa um controlo canónico já activo em vez de o desligar silenciosamente. Usa transacção e advisory lock próprio. DOWN remove apenas essa constraint. UP repetido, DOWN e reaplicação passaram em QA. Depois de 005, não reaplicar 004 como se fosse uma migration pendente: a sua verificação de estrutura detectará a constraint adicional.
  6. Impacto: nenhuma mudança de API, interface, integração externa ou autoridade de escrita. public permanece mestre. Nenhuma pessoa ou negócio canónico criado.
  7. Testes: teste SQL de compatibilidade aprovado, incluindo dry-run sem persistência e activação canónica recusada; 11 testes MNE / 91 verificações aprovados. Papel sintético NOLOGIN/NOSUPERUSER conseguiu inserir auditoria e teve 12 mutações de históricos e duas operações DDL recusadas. Papel e dados de teste revertidos integralmente. Não equivale à mudança das credenciais runtime reais.
  8. Evidência: backup integral com restauro de 210 tabelas em storage/app/private/mne-integrity-backup-20260929-194732/; aplicação em storage/app/private/mne-guards-20260929-194806/; contagens de 97 tabelas anteriores mne/investmoz preservadas. Execução local de dry-run: 1 identidade, 12 sectores, 0 negócios, rollback confirmado. Reconciliação com --fail-on-difference devolveu 1, conforme esperado.
  9. Lacunas: continuam a faltar convergência de todas as colunas do anexo D, histórico persistente de migrations SQL, instalador da cadeia com ordem/idempotência completas, testes de concorrência em duas sessões, navegador, SLA/notificações e deduplicação. O runtime real ainda é superuser, a identidade permanece pendente e não existem negócios reais reconciliados. Não se considera a cadeia 001–005 integralmente certificada.
  10. Rastreabilidade: D.3/E.1 dry-run → comando de backfill → teste de rollback; E.1 fail-on-difference → comando de reconciliação → saída local 1; D.1 canonical_read desactivado → 005 → dois testes negativos; E.2 privilégios → papel isolado → 14 recusas. Separação efectiva dos papéis de operação permanece pendente.
  11. Decisão: Go condicionado para este incremento técnico local; No-Go para leitura/escrita canónica, publicação ou produção. Os controlos shadow/canonical_read locais continuam desligados.
  12. Próxima fase proposta, não iniciada neste incremento: completar o registo e o executor da cadeia SQL preservando os checksums históricos, seguido da separação efectiva de owner/migrator/runtime e dos testes de concorrência. As aprovações de desenvolvimento existentes não são consideradas prova de identidade ou reconciliação dos dados.

Comandos disponíveis:

php artisan mne:backfill-compatibility --batch=100 --dry-run
php artisan mne:reconcile-compatibility --fail-on-difference

O dry-run executa as mesmas validações numa transacção exterior e reverte tudo; pode adquirir locks durante a simulação. Sem --dry-run, continua a gravar apenas vínculos/checkpoints/rejeições. --fail-on-difference é estrito: enquanto os gates de activação estiverem abertos, devolve falha mesmo com contagens e checksums iguais.