105 lines
27 KiB
Python
105 lines
27 KiB
Python
"""Reconcile the existing executive report/backlog; preserve every historical block."""
|
||
from pathlib import Path
|
||
import json
|
||
ROOT=Path(__file__).resolve().parent.parent
|
||
DOC=ROOT/'docs/investmoz/v2/auditoria-portal'
|
||
PRIVATE=ROOT/'storage/app/private/investmoz-v2/portal-audit'
|
||
packet=json.loads((PRIVATE/'next-consumers-finalize-20261010/criterion-evidence.json').read_text(encoding='utf-8'))
|
||
preserved=json.loads((PRIVATE/'next-consumers-finalize-20261010/preservation-verification.json').read_text(encoding='utf-8'))
|
||
assert preserved['result']=='passed'
|
||
scope=packet['scope'];stamp=scope['at'];revision=scope['increment_revision_sha256']
|
||
def prepend(name,marker,content):
|
||
p=DOC/name;old=p.read_text(encoding='utf-8-sig');assert marker not in old,'Do not overwrite an existing historical increment'
|
||
p.write_text(f'<!-- {marker}:begin -->\n{content.strip()}\n\n<!-- {marker}:end -->\n\n'+old,encoding='utf-8')
|
||
report=f'''
|
||
## País mestre, categorias, revogação e acessibilidade — {stamp}
|
||
|
||
**Código preparado e incremento demonstrado exclusivamente em QA18097. A/B internos e C37 QA18 conservam o fecho anterior, sem repetição. Ativação separada.** Base QA `desk_restore_20261009_174726_test:55441` conferida antes de escritas. Este retrato supera pendências históricas somente nos critérios abaixo; não encerra a auditoria global.
|
||
|
||
| Requisito / consumidor | Percurso e resultado demonstrado | Critério ainda em falta |
|
||
| --- | --- | --- |
|
||
| COUNTRY02 — `/investidor/profile` e manifestação | QA21 guarda paísFR no **organizations existente**, v2; reutiliza explicitamente na declaração; prepara manifestaçãoFR com cópia da origem/v2. Mestre muda paraZA/v3; nova sessão conserva declaraçãoFR, manifestação anteriorMZ/v1 e novaFR/v2. QA23 não vê nem altera a organização(403). `source_system`, `external_id` e histórico preservados; origem da solicitação e residência não são usadas como constituição. | Funcionalidade QA demonstrada; **implementado mas não ativado**. Ativo sem050000/colunas e sem organizações cadastradas. Reutilizar/importar dados e representações autorizados pelo cadastro existente; não inferir vínculos por nome nem inventar titulares. |
|
||
| OP03/04 — imobiliário31, fundiário32, venda33, parceria34 e franquia35 | UI→preparar alteração material→editar/guardar→submeter→QA24 iniciar revisão/pareceres→aprovar→QA25 publicar ou disponibilizar restritamente. Hash aprovado=publicado; projeção publicada anterior preservada enquanto a alteração estava por aprovar. | **32 permanece aprovado internamente e publicação422** por dependência externa concreta. Não foi inventado ato competente. Restam condições semânticas específicas, Response/§27 e variantes documentais. |
|
||
| OP03/04 — concessão42, financiamento44, fornecimento46, outros48 | Mesma alteração/revisão independente/republicação visual usando os contratos QA existentes. Concessão=intenção/chamada; financiamento=procura; fornecimento=pedido de compra; outros=subtipo sintético QA identificado. Disponibilização **restrita**, sem catálogo público nem divulgação de anexos. | Direito atribuído43 e ofertas45/47 conservam provas API, mas a interface dessas modalidades ainda precisa de demonstração. Contratos experimentais QA não designam pessoas reais nem substituem decisões ativas sobre módulos/SLA. |
|
||
| OP03 — suspensão31 | Publicador25 suspende; Promotor21 recupera estado/visibilidade, solicita revisão e resubmete **sem editar conteúdo**; Validador24 revê/aprova; Publicador25 republica. Ciclo de submissão separado da versão de conteúdo, tarefa nova; tarefa concluída anterior e publicação histórica preservadas. | Outros perfis/atribuições, suspensão por consumidor e arquivo/restauração conforme regra explícita. |
|
||
| OP03 — rejeição/recurso34 | Rejeição fundamentada24→Promotor21 apresenta recurso→instância sintética independente29 reabre→nova submissão→revisão/aprovação24→republicação25. Decisão e rejeição recuperadas no histórico. Teste de política confirma403 ao próprio rejeitante **mesmo quando tem responsabilidade de recurso**. | A interface da acumulação de papéis, atribuições/coordenação/pareceres e revisões afetadas por materialidade continuam com critérios próprios. |
|
||
| PART01; SCAN01 — sala1 | QA21 autoriza e revoga PDF/PNG/JPG. QA22 recupera200/hash antes; os mesmos URLs devolvem404 **sem logout** após revogação e também numa sessão nova. Listagem remove os ficheiros; proprietário mantém200/originais/hash exato. Scans próprios anteriores continuam clean e ligados ao hash. | Não equivale a revogação em todas as organizações, biblioteca, Balcão, zonas, URLs assinadas ou derivados. Nenhum novo ficheiro, scan fictício ou duplicado criado. |
|
||
| UI01 — cinco rotas delimitadas | Chromium: teclado, atalho para conteúdo, menuEnter/Escape/foco, nomes distintos dos países, origem da cópia visível, erro associado/focado no mestre, estados nomeados. Axe e inspeção das capturas ligados ao recibo de cada página. | Leitor de ecrã, todas as rotas/condições, PDF etiquetado, móvel deste lote e dispositivos reais permanecem distintos. **Não declarar acessibilidade integral.** |
|
||
|
||
**Falhas deste lote:** C97 país ausente no cadastro mestre; C98 foco de validação antes da atualização React; C99 razão completa gravada num resumo CRM80, causando503; C100 nomes de países/erros e estados acessíveis; C101 tarefa antiga concluída reutilizada após resubmissão sem edição, causando409; C102 resumo canónico reenviado no contrato legado500, causando422; C103 main aninhado na sala de parceria, causando três violações automáticas de landmarks. C99 conserva a fundamentação completa no workflow/auditoria e limita apenas o resumo CRM. C102 conserva o texto canónico integral e limita apenas a apresentação legada. Passos/causas/provas em [casos-reproducao.md](casos-reproducao.md).
|
||
|
||
**Provas por critério:** `next-organization`, `next-sharing`, `next-workflow-categories`, `next-workflow-modular`, `next-workflow-suspension`, `next-workflow-appeal`, `next-accessibility`, `next-installer-preview` — recibos `*-chromium-20261010.json`. `next-final-persistence-qa.json` liga leituraSQL READ ONLY a cópias, tarefas, decisões, hashes e revogação; comprova preservação das provas originais A/B e oportunidade52. `next-final-scope-qa.json` liga fontes/build/recibos ao incremento **`{revision}`**. Regressão consolidada por caso único: {scope['regression']['tests']} testes/{scope['regression']['assertions']} asserções; reúne 50 casos da execução ampla e a última execução dos dois casos documentais, preservando os resultados anteriores. Estes dois ensaios usaram ClamD real e GD: três derivadas WebP320/640/1280 com scans próprios, originais preservados, exclusão lógica/recuperação e recusa404 de derivada adulterada; quarentena continua423. É prova técnica isolada, distinta da partilha visual PDF/PNG/JPG. TypeScript, buildQA, Pint, PHPStan e formatação/lint passaram; originais das alterações de formatação foram guardados e valores JSON comparados sem alteração. Essas contagens apoiam os percursos, não substituem as evidências da tabela. Tentativas interrompidas do harness foram preservadas; não são atribuídas ao portal.
|
||
|
||
**Mesma matriz:** {preserved['requirements']} requisitos/{preserved['rows']} linhas/{preserved['source_occurrences']} ocorrências;11 requisitos atualizados, referências/versões e demais células preservadas. Estados atuais: **3234 parciais,145 não implementados,5 dependentes de decisão concreta,2 implementados mas não ativados,7 concluídos e demonstrados**. Única mudança de estado: COUNTRY02 parcial→implementado mas não ativado. Os sete fechos existentes permanecem. Podem encerrar-se os **subcritérios QA** de país mestre, revogação destes três tipos e transições dos casos descritos; OP/PART/UI globais continuam parciais pelos critérios enumerados no [backlog](backlog.md).
|
||
|
||
Leitura ativa nova **21:23:40UTC**: `investemoz:5432`, transação READ ONLY/ROLLBACK;030000/040000/09-190000/050000 ausentes, organizations=0 e duas colunas país ausentes. Manifesto ativo permanece `75352185c2a85c34ab726613db864a598e301a5b342ebbc80ac8e678eed17a94`. **Zero escritas ativas; backup ativo não renovado.** Extensão050000 instalada somenteQA:2colunas/0tabelas/0organizações/0contas. O instalador autenticado exige dependências/hash/prova correspondente/MFA, regista auditoria e permite repetição sem DDL ou duplicações; ensaio de instalação a frio é política unitária isolada, não backup ativo. Preservar030000→040000→09/190000;050000 é extensão independente. Ver [plano-ativacao.md](plano-ativacao.md).
|
||
|
||
Mercado Financeiro permanece privado. Fontes oficiais aceites,408 correspondências e173 pendências territoriais (Mandie/Guro ambíguo) conservam âmbito anterior. Não foi feita importação cartográfica neste lote; não atribuir a localidades sem geometria o limite do pai.
|
||
'''
|
||
remaining=f'''
|
||
## Consumidores e critérios restantes — {stamp}
|
||
|
||
**A/B internos e C37 QA18 conservam fecho; não repetir.** País mestre e as transições/partilhas deste lote estão demonstrados no âmbito do relatório. As linhas abaixo são uma projeção legível da **mesma matriz**, não uma segunda matriz de requisitos. Ausência de prova por consumidor não é declarada falha funcional sem reprodução.
|
||
|
||
| Req. | Rota / perfil | Ação | Critério em falta / próximo trabalho executável |
|
||
| --- | --- | --- | --- |
|
||
| COUNTRY02 / OPS01 | `/investidor/profile`; representanteadmin/manager/officer, viewer e Auditor | Guardar/reutilizar país do mestre | QA encerrada nos critérios datados; falta futura instalação050000 e dados/representações reais pelo cadastro existente. Policies viewer/revogação provadas em testes isolados; Auditor31 com múltiplos papéis e representação teve campos/ações desabilitados na interface. Ativo tem0organizações; não criar cadastros paralelos nem selecionar titulares reais. |
|
||
| COUNTRY03/04; STATS01; DESK01 | `/investidor/manifestacoes/{{id}}`, `/balcao-virtual/pedidos/{{id}}`; investidor/representante/gestor | Submeter, recuperar, filtrar, mensagens/anexos/estado | País/origem e uma submissão Balcão sem duplicação já provados. Executar serviços/condições restantes, origem desconhecida, cancelamento/arquivo e filtros combinados; provar UI→persistência→estatística do conjunto próprio e recusas por perfil. Cópia de constituição não substitui origem da solicitação. |
|
||
| COUNTRY06; STATS01 | `/negocios/{{slug}}/manifestar-interesse`, `/investidor/negocios/{{id}}`, `/api/v1/existing-business/listings/{{id}}/transitions`, `/management/negocios`; público/investidor/revisor | Interesse público, revisão/publicação/mandato | Wizard e PT/FR submetidos/replay/estatística já provados. Faltam interesse ligado ao anúncio público, condições de representação/mandatos, recuperação/revisão e efeito estatístico desse consumidor. Não reutilizar a prova de Negócios como investidor único. |
|
||
| COUNTRY07; LAND01; STATS01 | `/investidor/terra-duat/{{id}}/editar`, `POST /investidor/terra-duat/{{id}}/solicitar-apoio`; proprietário/gestor autorizado | Converter apoio, recuperar, rever | PDF já provado; executar apoio→manifestação sem duplicação, quatro níveis/limpeza de descendentes, origem/país/filtros/estatística após submissão, anexos e recusas. Não inferir direito fundiário ou decisão externa. |
|
||
| COUNTRY03/04; CRM01; STATS01 | `/management/crm/leads`, `/management/interests`; gestor/Auditor | Filtrar/converter/arquivar | Ver combinações de origem/desconhecido/estado, conversão sem duplicar investidor, tarefas/responsável/próxima ação e leitura Auditor; confrontar listagem e total de cada conjunto. Não somar conjuntos como pessoas únicas. |
|
||
| GEO01/02/03 | `/management/investment/zones/{{id}}`, `/zonas/{{id}}`, `/api/v2/investment/zone-map`; gestorMFA/público | Selecionar/guardar/validar/publicar mapa | Provar cada selector, limpeza de descendentes, recuperação, geometria própria versus contexto, publicação/retirada e permissões; camada publicada não prova direito disponível. Preservar408associações;173pendentes=26distritos/147postos. Mandie/Guro continua ambíguo; localidades sem shape explícitas. |
|
||
| GEO01/03; OP02 | `/carteira/{{id}}`, `/oportunidades/{{slug}}`, `/minhas-oportunidades/{{id}}/resources`; público/Promotor/Validador | Mapas/locais/camadas/relações | Oportunidade51 e quatro níveis em projetos/clusters/corredores já demonstrados. Restam variantes de pai/nível/perfil/relações, outros mapas e tiles externos. Não repetir seletores concluídos para compensar consumidores ainda não ensaiados. |
|
||
| OP03/04 | `/minhas-oportunidades/43/view`, `/45/view`, `/47/view`; Promotor21/Validador24/Publicador25 | Direito atribuído, oferta financeira, oferta fornecimento | Provas API anteriores preservadas; verificar editor/erros/transições na interface dessas modalidades. Contratos QA42/44/46/48 e nove categorias visuais conservam âmbito. Não aplicar “pedido≤necessidade” às ofertas nem chamar intenção de direito atribuído. |
|
||
| OP03/04; perfis | `/minhas-oportunidades/{{id}}/workflow`, `/canonical-response`; Promotor/coeditor/Validador/coordenador/recurso/Publicador | Parecer/atribuição/materialidade/Response | Completar Response/§27 e condições/coleções restantes; demonstração de múltiplos papéis/coedição, fila/pareceres e tarefas por responsável; reabrir apenas revisões afetadas por alterações substantivas. Correção ortográfica não deve reiniciar tudo. Autoriza-se coedição pelos outros Promotores da organização conforme decisão anterior; não reabrir essa decisão. |
|
||
| OP01/03; perfis | `/minhas-oportunidades/{{id}}/workflow`, `/lifecycle`; Promotor/Publicador | Solicitar arquivo/arquivar/restaurar | Pergunta concreta pendente: **quem restaura uma oportunidade arquivada e para qual estado volta?** Não conceder restauração ao Promotor por inferência nem apagar histórico. Suspensão/republicação31 e recurso34 já provados, sem repetir. |
|
||
| PART01; OP02; SCAN01 | `/parcerias/salas/{{id}}/documentos/{{attachment}}`, `/partilha`; proprietário/contraparte/representante | Partilhar/retirar/recuperar | PDF/PNG/JPG sala1:200→404 na mesma sessão e sessão nova demonstrado; originais preservados. Restam outros âmbitos/organizações/perfis, candidatura/retirada/consentimento, acordo/marcos e documentação de outros consumidores. |
|
||
| LIB02; SCAN01; OP02; LAND01; DESK01 | `/documentos/{{id}}/download`, `/management/portal-services/resources/{{id}}`, `/balcao-virtual/dossiers/{{id}}/documentos/{{document}}`, `/investidor/terra-duat/{{id}}/documentos/{{attachment}}`, `/zonas/{{zone}}/anexos/{{attachment}}`; público/dono/gestor | Retirar divulgação, exportar, gerar derivada, revogar | Demonstrar antigos URLs negados após retirada/revogação em cada consumidor, PDFs/exports com hash/scan próprios, recuperação/perfis e originais preservados. Scans realClamD anteriores não são repetidos nem transferidos para ficheiros novos; pendência do scanner específica por operação. |
|
||
| UI01 | Cinco rotas do recibo atual e demais rotas; perfis autorizados | Teclado/foco/rótulos/erros/estados | Critérios delimitados revistos; faltam leitor de ecrã, condições de outros formulários, todos os controlos/mapas/contrastes, PDF etiquetado, apresentação móvel deste lote e dispositivos reais. A/B320/390px não prova dispositivos reais. |
|
||
| OPS01 | Prévia050000 e instaladores030000/040000/09-190000; titulares designados/gestorMFA | Preparar candidata global/backup/restauro | Incremento`{revision}` delimitado. Completar P0/P1 restantes; renovar backup/restauro do ativo em clone QA correspondente, compatibilidade/reversão e fingerprints antes de ação ativa. Não repetir instalações QA. |
|
||
|
||
Próximo lote independente: **apoio fundiário e interesse público→estatísticas**, zonas/consumidores territoriais restantes, retirada/revogação documental dos outros âmbitos, modalidades43/45/47 e Response/§27/materialidade, acessibilidade restante. Executar por critério com evidências e caso de reprodução somente quando falhar.
|
||
|
||
Decisões humanas separadas: arquivo/restauração acima; aprovação funcional ativa dos perfis modulares e responsabilidades; calendário/responsáveis/suplentes/pausas/escalamento do SLA **interno**, incidentes críticos imediatos versus triagem comum. Não escolher pessoas reais nem transformar prazos internos em compromisso de entidades externas. Nenhuma dessas decisões bloqueia os trabalhos independentes listados.
|
||
|
||
Mesma matriz3393requisitos/3393linhas/6845ocorrências;11linhas atualizadas. COUNTRY02→implementado mas não ativado; demais estados/versões e sete fechos existentes preservados. `next-consumers-finalize-20261010/preservation-verification.json` e `next-final-scope-qa.json` ligam critérios/provas/hashes. DOC01 é reconciliação documental; operações de documentos ligam-se a PART/LIB/SCAN/OP/LAND/DESK. Mercado Financeiro privado; sem importação ou escrita ativa.
|
||
'''
|
||
cases=f'''
|
||
## C97–C103 — casos novos deste incremento QA — {stamp}
|
||
|
||
**Ativo fora da escrita. A/B e C37 preservados.** Provas sanitizadas omitem cookies, X-XSRF-TOKEN, passwords, segredos e códigos MFA; contextos separados e alvo conferido antes de mutações. Tentativas do harness que falharam por navegação/seletor/compilação não são casos do portal.
|
||
|
||
| Caso / prioridade / requisito | Reprodução e operação afetada | Esperado / observado / causa | Correção e prova |
|
||
| --- | --- | --- | --- |
|
||
| C97 P1 COUNTRY02 | Abrir perfil como representante de uma organização existente; procurar país de constituição no cadastro mestre e reutilizar numa manifestação. | Esperado: ISO/fonte/versionamento no mestre e cópia identificada. Antes: organizations não tinha campos nem ação; declaração privada não era mestre. | Extensão050000:2colunas opcionais e serviço existente memberships/audit_events. QA21FR→cópia→ZA→nova sessão preservaMZ/FR e fontes; QA23PUT403; viewer/revogado/Auditor/múltiplos papéis unitários. `next-organization-chromium-20261010.json`; ativo ausente, não ativado. |
|
||
| C98 P1 UI01 | No editor do mestre submeter país/referência vazios; observar os erros e foco. | Esperado: erros associados e foco no primeiro campo inválido. Observado: erros renderizados depois do callback/RAF, foco não chega ao campo. Causa: atualização React ainda não comprometida. Label envolvendo textarea incluía o seu valor no nome acessível. | useEffect após atualização dos erros; htmlFor/id separado na referência; aria-invalid/describedby e alertas. Tentativas anteriores preservadas; `next-accessibility-chromium-20261010.json` valida erro/foco na revisão final. Pedido inválido não alterou o mestre. |
|
||
| C99 P0 OP03/CRM | QA21,31publicada: “Preparar alteração material”, fundamentação>80caracteres. | Esperado200, task concluída e razão completa rastreável. Observado503; stack SQLSTATE22001: tasks.outcomeVARCHAR80 recebeu a fundamentação integral. | Resumo CRM limitado80caracteres Unicode; motivo integral conserva-se no workflow/decisão/evento/auditoria. Cinco categorias completaram alteração/revisão/publicação aplicável no Chromium; teste preserva razão completa e resumo80. `next-workflow-categories-chromium-20261010.json`; SQLfinal. |
|
||
| C100 P1 UI01/COUNTRY | Abrir manifestação com três países, Balcão/negócio/fundiário e estados do workflow; consultar nomes acessíveis/erros. | Esperado: residência/constituição/origem distintas e erro associado; estado legível. Antes: vários selects tinham nome genérico“País”, erros sem referência no campo e códigos de estados sem leitura própria. | CountrySelecterror/aria-describedby, nomes distintos por consumidor e estados nomeados/traduzidos. RevisãoChromium/axe/teclado em cinco rotas delimitadas; não encerra todas as rotas/leitor de ecrã/dispositivos reais. |
|
||
| C101 P0 OP03/CRM | Suspender31; Promotor prepara revisão e resubmete **sem editar conteúdo**; Validador inicia revisão. | Esperado: tarefa aberta no novo ciclo. Observado409“Tarefa não pertence à versão aberta”; ensure reutilizou tarefa concluída porque chave só incluía conteúdo/tipo. | review_cycle separado de content_revision, chave nova por submissão; recupera vínculo concluído do caso legado só para a mesma oportunidade/tipo, guardando vínculo anterior e tarefa original. Navegador concluiu revisão→aprovação→republicação; teste before409/after25asserções preserva tarefas/conteúdo; SQLconfirma histórico. |
|
||
| C102 P0 OP04 | QA21/42: abrir editor após aprovação, alterar necessidade e guardar contrato com resumo canónico>500caracteres. | Esperado: texto integral válido e rascunho recuperável. Observado422“summary…500”; UI reenviou alias legado, validado antes de o contrato canónico ser usado. | Campos canónicos comuns são fonte única; aliases redundantes não impõem validação incompatível. Resumo legado limitado500, texto integral conserva-se no JSON canónico. Validação legada500 mantém-se quando não há contrato. Teste11asserções e quatro módulos no Chromium; SQL comprimentos/fontes/publicações. |
|
||
| C103 P1 UI01 | Abrir `/parcerias/salas/1` e executar auditoria axe de landmarks. | Esperado: um main principal único. Observado: landmark-main-is-top-level, landmark-no-duplicate-main e landmark-unique; Frame reutilizava o main do portfolio dentro do main do AppLayout. | Layout portfolio permite container sem novo main; Frame de parceria usa essa opção, preservando navegação e permissões. Reteste final: zero violações automáticas nas cinco rotas; captura/teclado/estados preservados. Não equivale a acessibilidade integral. |
|
||
|
||
Âmbito de fecho: falhas técnicas acima corrigidas e critérios QA ligados aos recibos; requisitos globais ainda parciais/instalação ativa ausente conforme [matriz-requisitos.csv](matriz-requisitos.csv) e [backlog.md](backlog.md). C37QA18 e A/B não foram reabertos.
|
||
'''
|
||
activation=f'''
|
||
## Incremento delimitado e extensão050000 — {stamp}
|
||
|
||
**Revisão QA do incremento`{revision}`; não é autorização/candidata global de ativação.** `next-final-scope-qa.json` liga fontes/build/recibos/SQL. Leitura ativa21:23:40UTC READ ONLY/ROLLBACK:030000/040000/2026_10_09_190000/050000 ausentes; organizações=0, colunas país ausentes; manifesto ativo intacto. **Backup/restauro ativo não foi renovado.** Não transportar fixtures, contas, designações ou grants QA.
|
||
|
||
| Ordem / componente | Dependências e efeito | Contagem prevista / reversão |
|
||
| --- | --- | --- |
|
||
| 1 Código/build compatíveis | Fixar candidata global, completar critérios restantesP0/P1, conferir configurações/flags, schema ativo READ ONLY e fingerprints atuais. Consumidor do mestre devolve estado controlado se050000 ausente; não presume organizações preenchidas. | Código/build; conservar revisão anterior e alterações locais. Reverter hunks/bundle conhecido, sem reset ou apagar dados/histórico. |
|
||
| 2 Backup/restauro/compatibilidade | Dump ativo e acervo privado/originais/permissões/chave estável, restauro em clone QA fresco ligado à candidata; verificar hash/extração/URLs/perfis/reversão. Provas históricas têm data/fingerprint próprio, insuficientes para este código. | Contagens reais devem sair da prévia do clone/ativo. Não declarar ready a partir de teste unitário com readiness simulado. |
|
||
| 3 030000 → 040000 → **2026_10_09_190000_prepare_investor_path** | Recursos privados→perfis/políticas→extensão do percurso. 09/190000 continua necessária e ausente; não substituída pelo Balcão07/190000. Prévia/aplicação autenticadas, somente ausentes após dependências/provas atuais. | QA já instalada: não repetir. Contagens ativas serão fixadas na prévia correspondente; não escolher os dois titulares reais nem remover privilégios ativos. Preservar cinco fases/19etapas e entidades/IDs/URLs. |
|
||
| 4 **2026_10_10_050000_extend_organization_country** | Extensão independente do mestre organizations; depende de organizations/memberships/audit_events e código compatível. Auth `/management/opportunity-resources-install/organization-country`, titular autorizado/MFA para aplicar, hash/prova atual/UUID/reason, lock/idempotência/auditoria; incoerêncialedger/schema409. Não requer nem substitui190000, não muda flags/cálculos/publicação. | Ativo: **2colunas opcionais,0tabelas,0organizações,0contas/grants**. QA já instalada; no repetirDDL. Não apagar colunas/histórico no down. Desabilitar/reverter consumidor preserva os dados; restauro verificado somente no clone e depois numa ação autorizada se necessário. |
|
||
| 5 Dados/representações do mestre | Ativo organizations=0: usar acervo/cadastros/importação autorizada e memberships existentes. País registado com fonte/versionamento; cópia explícita, anteriores preservados. Fonte oficial aceite não pede recertificação; declaração do representante não afirma decisão externa. | Não inventar dados/vínculos nem ligar por nome. Prévia futura determina organizações/associações efetivas. Cadastros ausentes não são preenchidos pela migration. |
|
||
| 6 Importação cartográfica / divulgação | Prévia/correspondências/hash/idempotência/auditoria/reversão por lote, preservando408associações e173pendentes; Mandie/Guro ambíguo. Publicar camadas/artigos/oportunidades é ação separada. Direitos externos/documentos privados continuam separados da aprovação interna/release restrito. | Nenhuma importação deste lote. Não atribuir limite do pai à localidade/parcelas. Scans realClamD comprovam só ficheiros/derivadas identificados; outras operações mantêm pendência específica. |
|
||
| 7 Disponibilização do percurso | Após instalações/dados/provas por consumidor, manter acesso direto, cinco fases19etapas e contextos retornados ao dossier. C99/C101 usam tasks existentes; C102 não cria outro contrato. | Código; tarefas antigas, razões completas, publicações/cópias anteriores preservadas. A/B/C37QA fechados não certificam automaticamente o ativo. |
|
||
|
||
Instalador050000: ensaio isolado a frio/idempotência/auditoria/MFA/dependências/recuperação de incoerência testa políticas e mecanismo. **Não é ensaio de restauro do ativo.** `ready=true` indica somente preparação correspondente; instalado e resultado funcional continuam critérios diferentes. Bootstrap/substituição/recuperação dos titulares040000 conservam provas QA e exigem designação real para habilitação ativa; nada foi alterado no ativo.
|
||
|
||
Candidata global fica pendente dos critérios do [backlog](backlog.md) e das verificações do clone. Autorização atual cobre somente implementação/testes QA. Não regenerar chaves, desativar MFA, remover cadastros/relações ou mudar valores históricos para simular sucesso.
|
||
'''
|
||
for name,marker,body in [('relatorio-executivo.md','qa-next-consumers-results-20261010',report),('backlog.md','qa-next-consumers-remaining-20261010',remaining),('casos-reproducao.md','qa-next-consumers-cases-20261010',cases),('plano-ativacao.md','qa-next-consumers-activation-20261010',activation)]:prepend(name,marker,body)
|
||
print(json.dumps({'updated_documents':4,'same_matrix':True,'active_writes':0}))
|