4.3 KiB
4.3 KiB
Reexecução do prompt — anexos D/E — 29/09/2026
- 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.
- Diagnóstico: os nomes históricos são
001_mne_schema.sqle002_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. - 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.
- Ficheiros: criados
005_mne_compatibility_guards.sqle respectivo DOWN; alteradosBackfillMneCompatibility,ReconcileMneCompatibilityetools/test-mne-compatibility.php. Documentação actualizada. Nenhum ficheiro removido; nenhum commit Git criado. - 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.
- Impacto: nenhuma mudança de API, interface, integração externa ou autoridade de escrita.
publicpermanece mestre. Nenhuma pessoa ou negócio canónico criado. - 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.
- Evidência: backup integral com restauro de 210 tabelas em
storage/app/private/mne-integrity-backup-20260929-194732/; aplicação emstorage/app/private/mne-guards-20260929-194806/; contagens de 97 tabelas anterioresmne/investmozpreservadas. Execução local de dry-run: 1 identidade, 12 sectores, 0 negócios, rollback confirmado. Reconciliação com--fail-on-differencedevolveu 1, conforme esperado. - 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.
- 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.
- 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.
- 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.