diff --git a/docs/investmoz/public-portal-hero-validation.json b/docs/investmoz/public-portal-hero-validation.json new file mode 100644 index 00000000..5f208dd2 --- /dev/null +++ b/docs/investmoz/public-portal-hero-validation.json @@ -0,0 +1,355 @@ +{ + "date": "2026-10-23", + "decision": "Pedido expresso da Tempo: adaptar hero, imagens e pesquisa da referência, preservando a informação e os comportamentos equivalentes do V2.", + "sourceProject": "D:/Projects/Tempo_Investidor/investidor", + "targetProject": "D:/Projects/Tempo_Investidor/Investidor-V2", + "planAndAnalysis": "docs/investmoz/public-portal-sections.md#adequação-do-hero--23102026", + "implementation": [ + "resources/js/components/portal-hero.tsx", + "resources/js/pages/PortalInvestidor.tsx" + ], + "assets": [ + { + "source": "D:\\Projects\\Tempo_Investidor\\investidor\\public\\images\\hero\\hero-1.png", + "original": "public\\images\\hero\\hero-1.png", + "sha256": "3c9246169025b9b1b4d1d10fb51c1f644123984bde56c6c2d9bf869d851024fc", + "bytes": 2315768, + "webpBytes": 94012, + "mobileBytes": 38804 + }, + { + "source": "D:\\Projects\\Tempo_Investidor\\investidor\\public\\images\\hero\\hero-3.jpg", + "original": "public\\images\\hero\\hero-3.jpg", + "sha256": "91377213b6286aca7ee4af90860a7dc7a75fa08a165ef7b3192081db43f92dff", + "bytes": 9875137, + "webpBytes": 140342, + "mobileBytes": 32998 + } + ], + "desktopBytesTotal": 234354, + "mobileBytesTotal": 71802, + "originalBytesTotal": 12190905, + "verification": { + "browser": { + "results": [ + { + "width": 320, + "reducedMotion": "reduce", + "status": "passed" + }, + { + "width": 390, + "reducedMotion": "reduce", + "status": "passed" + }, + { + "width": 768, + "reducedMotion": "reduce", + "status": "passed" + }, + { + "width": 1440, + "reducedMotion": "reduce", + "status": "passed" + }, + { + "width": 1920, + "reducedMotion": "reduce", + "status": "passed" + }, + { + "width": 1440, + "reducedMotion": "no-preference", + "status": "passed" + } + ], + "errors": [], + "requests": [ + "/oportunidades?q=energia%20%26%20Nampula%20%2F%20Mo%C3%A7ambique", + "/oportunidades?q=energia%20%26%20Nampula%20%2F%20Mo%C3%A7ambique", + "/oportunidades?q=", + "/oportunidades", + "/oportunidades?q=energia%20%26%20Nampula%20%2F%20Mo%C3%A7ambique", + "/oportunidades?q=energia%20%26%20Nampula%20%2F%20Mo%C3%A7ambique", + "/oportunidades?q=energia%20%26%20Nampula%20%2F%20Mo%C3%A7ambique", + "/oportunidades?q=energia%20%26%20Nampula%20%2F%20Mo%C3%A7ambique" + ], + "databaseAccess": false + }, + "browserScript": "tools/portal-hero-qa.mjs", + "screenshots": [ + "outputs/portal-hero-20261023/after-1440-no-preference.png", + "outputs/portal-hero-20261023/after-1440-reduce.png", + "outputs/portal-hero-20261023/after-1440-second-image.png", + "outputs/portal-hero-20261023/after-1920-reduce.png", + "outputs/portal-hero-20261023/after-320-reduce.png", + "outputs/portal-hero-20261023/after-390-reduce.png", + "outputs/portal-hero-20261023/after-768-reduce.png", + "outputs/portal-hero-20261023/before-1440-reduce.png", + "outputs/portal-hero-20261023/before-390-reduce.png" + ], + "additionalCases": [ + "pesquisa por Enter e botão", + "ordem do teclado: campo → botão", + "query acentuada e pontuação preservadas", + "remoção de espaços exteriores", + "pesquisa vazia abre catálogo", + "CTA abre oportunidades", + "API indisponível mantém indicadores indeterminados", + "contagens zero preservadas", + "duas imagens carregadas", + "selecção manual", + "pausa e retoma explícitas", + "foco pausa rotação", + "rotação automática após perda de foco", + "movimento reduzido", + "entrada documental e cabeçalho preservados" + ], + "existingFrontendTests": { + "command": "node --test tests/frontend/portal-api.test.mjs tests/frontend/portal-navigation.test.mjs", + "passed": 20 + }, + "typecheck": { + "command": "npm run types:check", + "exitCode": 0 + }, + "lint": { + "files": [ + "resources/js/components/portal-hero.tsx", + "resources/js/pages/PortalInvestidor.tsx", + "tools/portal-hero-qa.mjs" + ], + "exitCode": 0 + }, + "qaBuild": { + "command": "INVESTMOZ_QA_BUILD=1 npm run build", + "exitCode": 0 + }, + "localBuild": { + "command": "npm run build", + "exitCode": 0, + "pageAsset": "assets/PortalInvestidor-MsUeKoJQ.js" + } + }, + "matrix": { + "file": "docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv", + "referencesAdded": [ + "MASTER-9dee08d0-0016", + "MASTER-efd550fd-0104", + "MASTER-55050f60-0001" + ], + "rowCount": 3422, + "criteriaAndStatesPreserved": true + }, + "scope": { + "appliedToLocalCodeAndBuild": true, + "activeDatabaseChanged": false, + "migrationsRun": false, + "externalDeploymentPerformed": false, + "backendSearchReimplemented": false + }, + "limits": "Verificação visual com dados sintéticos; pesquisa continua limitada ao catálogo de oportunidades. Os critérios mais amplos da matriz permanecem no estado anterior.", + "latestRevision": { + "id": "hero-no-controls-20261023", + "date": "2026-10-23", + "decision": "Pedido expresso da Tempo: remover do hero as duas bolinhas e o botão de pausa das imagens.", + "implementation": "Removidos grupo de controlos, ícones Pause/Play e estado de pausa manual. Preservadas troca automática, escrita dinâmica, pesquisa e preferência de movimento reduzido.", + "browser": { + "results": [ + { + "width": 320, + "reducedMotion": "reduce", + "status": "passed" + }, + { + "width": 390, + "reducedMotion": "reduce", + "status": "passed" + }, + { + "width": 768, + "reducedMotion": "reduce", + "status": "passed" + }, + { + "width": 1440, + "reducedMotion": "reduce", + "status": "passed" + }, + { + "width": 1920, + "reducedMotion": "reduce", + "status": "passed" + }, + { + "width": 390, + "reducedMotion": "no-preference", + "status": "passed" + }, + { + "width": 1440, + "reducedMotion": "no-preference", + "status": "passed" + } + ], + "errors": [], + "requests": [ + "/oportunidades?q=energia%20%26%20Nampula%20%2F%20Mo%C3%A7ambique", + "/oportunidades?q=energia%20%26%20Nampula%20%2F%20Mo%C3%A7ambique", + "/oportunidades?q=", + "/oportunidades", + "/oportunidades?q=energia%20%26%20Nampula%20%2F%20Mo%C3%A7ambique", + "/oportunidades?q=energia%20%26%20Nampula%20%2F%20Mo%C3%A7ambique", + "/oportunidades?q=energia%20%26%20Nampula%20%2F%20Mo%C3%A7ambique", + "/oportunidades?q=energia%20%26%20Nampula%20%2F%20Mo%C3%A7ambique", + "/oportunidades?q=", + "/oportunidades", + "/oportunidades?q=energia%20%26%20Nampula%20%2F%20Mo%C3%A7ambique" + ], + "databaseAccess": false + }, + "screenshots": [ + "outputs/portal-hero-no-controls-20261023/after-1440-no-preference.png", + "outputs/portal-hero-no-controls-20261023/after-1440-reduce.png", + "outputs/portal-hero-no-controls-20261023/after-1920-reduce.png", + "outputs/portal-hero-no-controls-20261023/after-320-reduce.png", + "outputs/portal-hero-no-controls-20261023/after-390-no-preference.png", + "outputs/portal-hero-no-controls-20261023/after-390-reduce.png", + "outputs/portal-hero-no-controls-20261023/after-768-reduce.png", + "outputs/portal-hero-no-controls-20261023/second-image-1440.png", + "outputs/portal-hero-no-controls-20261023/second-image-390.png", + "outputs/portal-hero-no-controls-20261023/typed-1440.png", + "outputs/portal-hero-no-controls-20261023/typed-390.png" + ], + "checks": { + "lintExitCode": 0, + "buildExitCode": 0, + "pageAsset": "assets/PortalInvestidor-T0B6aoV_.js" + }, + "scope": { + "appliedLocally": true, + "databaseAccess": false, + "externalDeployment": false + } + }, + "revisionHistory": [ + { + "id": "hero-typing-20261023", + "date": "2026-10-23", + "decision": "Pedido expresso da Tempo: título e frase dinâmicos como na referência; remover Termos de uso do hero.", + "plan": [ + "Analisar a sequência de escrita da referência.", + "Animar o título e depois a frase, mantendo os textos do V2 e reservando a dimensão final.", + "Reiniciar a escrita na troca de imagem e integrar pausa/retoma e preferência de movimento reduzido.", + "Remover o link e o ícone jurídico do hero.", + "Demonstrar comportamento em computador e telemóvel e compilar o pacote local." + ], + "files": [ + "resources/js/components/portal-hero.tsx", + "resources/css/app.css", + "tools/portal-hero-qa.mjs" + ], + "browser": { + "results": [ + { + "width": 320, + "reducedMotion": "reduce", + "status": "passed" + }, + { + "width": 390, + "reducedMotion": "reduce", + "status": "passed" + }, + { + "width": 768, + "reducedMotion": "reduce", + "status": "passed" + }, + { + "width": 1440, + "reducedMotion": "reduce", + "status": "passed" + }, + { + "width": 1920, + "reducedMotion": "reduce", + "status": "passed" + }, + { + "width": 390, + "reducedMotion": "no-preference", + "status": "passed" + }, + { + "width": 1440, + "reducedMotion": "no-preference", + "status": "passed" + } + ], + "errors": [], + "requests": [ + "/oportunidades?q=energia%20%26%20Nampula%20%2F%20Mo%C3%A7ambique", + "/oportunidades?q=energia%20%26%20Nampula%20%2F%20Mo%C3%A7ambique", + "/oportunidades?q=", + "/oportunidades", + "/oportunidades?q=energia%20%26%20Nampula%20%2F%20Mo%C3%A7ambique", + "/oportunidades?q=energia%20%26%20Nampula%20%2F%20Mo%C3%A7ambique", + "/oportunidades?q=energia%20%26%20Nampula%20%2F%20Mo%C3%A7ambique", + "/oportunidades?q=energia%20%26%20Nampula%20%2F%20Mo%C3%A7ambique", + "/oportunidades?q=", + "/oportunidades", + "/oportunidades?q=energia%20%26%20Nampula%20%2F%20Mo%C3%A7ambique" + ], + "databaseAccess": false + }, + "screenshots": [ + "outputs/portal-hero-typing-20261023/after-1440-no-preference.png", + "outputs/portal-hero-typing-20261023/after-1440-reduce.png", + "outputs/portal-hero-typing-20261023/after-1440-second-image.png", + "outputs/portal-hero-typing-20261023/after-1920-reduce.png", + "outputs/portal-hero-typing-20261023/after-320-reduce.png", + "outputs/portal-hero-typing-20261023/after-390-no-preference.png", + "outputs/portal-hero-typing-20261023/after-390-reduce.png", + "outputs/portal-hero-typing-20261023/after-768-reduce.png", + "outputs/portal-hero-typing-20261023/typed-1440.png", + "outputs/portal-hero-typing-20261023/typed-390.png", + "outputs/portal-hero-typing-20261023/typing-1440.png", + "outputs/portal-hero-typing-20261023/typing-390.png" + ], + "demonstrated": [ + "escrita progressiva", + "título antes da frase", + "texto completo no modo de movimento reduzido", + "nome acessível completo durante a escrita", + "pesquisa sem deslocamento durante a escrita", + "reinício na selecção manual e automática de imagem", + "pausa e retoma da escrita", + "cursor com pausa", + "Termos de uso ausente do hero", + "pesquisa, teclado, CTA, API indisponível e contagens zero preservados" + ], + "checks": { + "types": { + "command": "npm run types:check", + "exitCode": 0 + }, + "lint": { + "command": "vp lint resources/js/components/portal-hero.tsx tools/portal-hero-qa.mjs", + "exitCode": 0 + }, + "build": { + "command": "npm run build", + "exitCode": 0, + "pageAsset": "assets/PortalInvestidor-BbVHeTeI.js", + "log": "outputs/portal-hero-typing-20261023/build-local.log" + } + }, + "scope": { + "appliedLocally": true, + "databaseAccess": false, + "externalDeployment": false + } + } + ] +} diff --git a/docs/investmoz/public-portal-sections.md b/docs/investmoz/public-portal-sections.md index 17c0836d..0bef3264 100644 --- a/docs/investmoz/public-portal-sections.md +++ b/docs/investmoz/public-portal-sections.md @@ -48,3 +48,39 @@ Edge headless: 11 páginas públicas/autenticação verificadas a 390×844, com Página inicial também verificada a 1440×1000. Cenário fiscal exercitado no navegador: base 1.000 × taxa 10% × (1 − redução 50%) = 50. Resultados em `public-portal-browser-validation.json`. Antes da migration local foi criado e restaurado o backup de 74 tabelas em `storage/app/private/portal-services-backup-20260927-090641/`. O backup completo anterior permanece em `C:/laragon/backups/portal-investidor-20260927-101224/` e representa o estado anterior a esta entrega. + +## Adequação do hero — 23/10/2026 + +Origem: pedido expresso da Tempo nesta sessão para aproveitar o hero, as imagens e a barra de pesquisa de `D:/Projects/Tempo_Investidor/investidor`, usando a informação existente no V2. Aplicam-se as orientações permanentes do `AGENTS.md`, incluindo a distinção entre decisão da Tempo e escolha técnica, a preservação de dados e a separação de QA e activo. + +Análise prévia: a página de entrada real do V2 é `PortalInvestidor.tsx`, servida por `PortalServicesController::home`. A referência é `domains/investor-portal/components/homepage/homepage-hero.tsx`, montada em `InstitutionalHomepage`. A referência usa Inertia 2, Framer Motion, tradução e navegação diferentes; o V2 usa Inertia 3 e pesquisa de oportunidades. Copiar essas dependências e `/pesquisa` ou `/aviso-legal` directamente criaria incompatibilidades e destinos inexistentes. + +Plano executado: + +1. Registar a apresentação anterior em computador e telemóvel, com os componentes reais e dados sintéticos. +2. Copiar os dois originais efectivamente usados pela referência (`hero-1.png` e `hero-3.jpg`), conferir SHA-256 e gerar derivados WebP para computador e telemóvel. `hero-2.png` não faz parte da rotação da referência. +3. Extrair `components/portal-hero.tsx` e aplicar fotografias em rotação, texto centrado e pesquisa branca com botão vermelho. Preservar os textos do V2, contagens da API, sectores, documentos, apoio, cabeçalho e rodapé. +4. Manter a pesquisa de oportunidades em `/oportunidades?q=`, incluindo pesquisa vazia e caracteres acentuados. Conservar “Consultar oportunidades” e “Planear finanças”. A primeira iteração acrescentou o acesso jurídico `/termos-de-uso` ao hero; foi removido na revisão expressamente pedida pela Tempo abaixo. +5. Verificar apresentação, teclado, imagens, rotação, pausa, movimento reduzido, falha da API, contagens zero, TypeScript, lint e compilação. Compilar primeiro o pacote QA e depois os assets locais em `public/build`. + +Escolhas técnicas desta adaptação: React e transições CSS existentes, sem novas dependências; rotação de oito segundos, pausa por controlo explícito, foco, ponteiro ou separador oculto; apresentação estática quando o utilizador pede movimento reduzido. A primeira iteração apresentou o texto estático; a revisão abaixo introduz a escrita dinâmica pedida pela Tempo. O campo indica pesquisa de oportunidades e conserva exemplos que o catálogo suporta; esta alteração não implementa uma pesquisa global de legislação/licenciamento. + +Evidência reproduzível: `tools/portal-hero-qa.mjs`, com Vite local e Playwright configurável por `HERO_QA_PLAYWRIGHT`/`HERO_QA_CHROMIUM`. Fixtures e capturas em `outputs/portal-hero-20261023/`; síntese persistente em `public-portal-hero-validation.json`. Os testes de interface interceptam a API e a navegação Inertia, sem acesso a Laravel, base de dados ou serviços externos. A compilação local aplica os assets desta pasta; não representa publicação noutro servidor. + +Referências na matriz existente: `MASTER-efd550fd-0104` (composição da página), `MASTER-9dee08d0-0016` (contexto da pesquisa) e `MASTER-55050f60-0001` (entrada documental preservada). Esta prova cobre a adaptação visual e os percursos exercitados; não encerra os critérios funcionais mais amplos dessas linhas. + +### Revisão: escrita dinâmica e remoção do acesso jurídico no hero + +Decisão expressa da Tempo na continuação da sessão de 23/10/2026: animar “INVISTA EM MOÇAMBIQUE” e “Transforme informação em decisões e ideias em negócios reais.” como na página de referência, e remover “Termos de uso” do hero. A anterior apresentação estática e a inclusão desse link eram escolhas de implementação, agora substituídas pelo pedido do proprietário. + +Análise e plano executado: reproduzir a sequência da referência (espera inicial de 250 ms, título a 50 ms por carácter, intervalo de 150 ms e frase a 28 ms por carácter); reiniciar ao trocar de imagem; acrescentar o cursor intermitente; reservar a dimensão final de ambas as linhas para manter a pesquisa imóvel; remover o link e o ícone jurídico do hero; verificar em computador e telemóvel e compilar o pacote local. + +Implementação em `portal-hero.tsx`, com React existente e CSS do cursor em `app.css`, sem dependências novas. A pausa explícita suspende também a escrita, retomando do mesmo ponto. Quando o separador fica oculto a escrita pára; a preferência de movimento reduzido apresenta os dois textos completos. Leitores de ecrã recebem o texto completo uma única vez, independentemente do número de caracteres visíveis. Os temporizadores são limpos ao mudar de imagem ou desmontar o componente. + +O script `tools/portal-hero-qa.mjs` demonstra a escrita progressiva, a ordem título→frase, o reinício manual/automático, a pausa/retoma, a posição estável da pesquisa, o modo sem movimento e a ausência de “Termos de uso” no hero. As capturas e resultados desta revisão ficam em `outputs/portal-hero-typing-20261023/`, preservando a evidência anterior. Síntese e compilação final registadas na revisão de `public-portal-hero-validation.json`; referência acrescentada à linha existente `MASTER-efd550fd-0104`, sem encerrar o seu critério mais amplo. + +### Revisão: remoção dos controlos visíveis das imagens + +Pedido expresso da Tempo na continuação de 23/10/2026: remover do hero o grupo com o botão de pausa e as duas bolinhas de selecção de imagem. Removidos o grupo, os ícones e o estado de pausa manual. A troca automática de imagens e a escrita dinâmica permanecem; conservam-se a pausa da rotação por foco/ponteiro, a suspensão em separador oculto e a preferência de movimento reduzido. Esta decisão substitui os controlos visíveis introduzidos como escolha de implementação nas revisões anteriores. + +O script existente de interface foi adaptado para demonstrar a ausência dos controlos e a continuação da rotação automática, escrita e pesquisa, com capturas em `outputs/portal-hero-no-controls-20261023/`. Evidência e pacote local registados em `public-portal-hero-validation.json`, mantendo o histórico das revisões e os estados dos requisitos da matriz. diff --git a/docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv b/docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv index 36c51a0d..6b2f2979 100644 --- a/docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv +++ b/docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv @@ -405,7 +405,7 @@ MASTER-9dee08d0-0012,"Carteira PII 2026-2030: cada sector deve apresentar oportu MASTER-9dee08d0-0013,"Para transformar o portal num balcão único interoperável, as integrações de sistema devem ser tratadas como uma ambição funcional dependente de acordos institucionais, disponibilidade técnica das entidades públicas e validação jurídica dos fluxos de dados.",portal do investidor\Reformulacao do portal do investidor.docx; SHA 9dee08d0ebbbb262651a01ffc7e0ade97323664bda59fe8ce0b07ead82736ce1; w:p 161,Balcão/orientação,/balcao-virtual/contextos; /balcao-virtual/dossiers; /balcao-virtual/dossiers/{id}; /balcao-virtual/dossiers/{id}/documentos; /balcao-virtual/dossiers/{id}/documentos/{document}; /balcao-virtual/dossiers/{id}/documentos/{document}/conferencia; /balcao-virtual/dossiers/{id}/etapas; /balcao-virtual/dossiers/{id}/fontes; /balcao-virtual/dossiers/{id}/orientacao; /balcao-virtual/dossiers/{id}/pedidos; /balcao-virtual/dossiers/{id}/pressupostos; /balcao-virtual/dossiers/{id}/recomendacoes,"VirtualDesk, pedidos/casos, anexos, contexto dossier e acompanhamento. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,"Pedido contextual→gravar→submeter→nova sessão→gestor→mensagem/documentos/resultado, reaproveitando A/B. Critério individual original preservado; cobertura atual ainda não individualizada.","Perfis próprios do Balcão; serviços/campos e decisões externas aplicáveis, sem inventar destinatário/prazo. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","MASTER-9dee08d0-0013: Para transformar o portal num balcão único interoperável, as integrações de sistema devem ser tratadas como uma ambição funcional dependente de acordos institucionais, disponibilidade técnica das entidades públicas e validação jurídica dos fluxos de dados.",P2,MASTER-9dee08d0-0013: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-9dee08d0-0013,1,"[{""id"":""MASTER-9dee08d0-0013"",""pedido"":""Para transformar o portal num balcão único interoperável, as integrações de sistema devem ser tratadas como uma ambição funcional dependente de acordos institucionais, disponibilidade técnica das entidades públicas e validação jurídica dos fluxos de dados."",""fontes"":[""portal do investidor\\Reformulacao do portal do investidor.docx; SHA 9dee08d0ebbbb262651a01ffc7e0ade97323664bda59fe8ce0b07ead82736ce1; w:p 161""],""aceitacao"":""Para transformar o portal num balcão único interoperável, as integrações de sistema devem ser tratadas como uma ambição funcional dependente de acordos institucionais, disponibilidade técnica das entidades públicas e validação jurídica dos fluxos de dados."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""Balcão/orientação""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.desk_cases: 1 registos; public.desk_requests: 0 registos; public.desk_institutional_links: 0 registos; public.desk_messages: 0 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.","Pedido contextual→gravar→submeter→nova sessão→gestor→mensagem/documentos/resultado, reaproveitando A/B. Critério individual original preservado; cobertura atual ainda não individualizada.","VirtualDesk, pedidos/casos, anexos, contexto dossier e acompanhamento","Perfis próprios do Balcão; serviços/campos e decisões externas aplicáveis, sem inventar destinatário/prazo.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: balcão. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,balcão,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Services/VirtualDesk.php; app/Services/Ai/InvestorGuidance.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,InvestorGuidanceTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.,Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, MASTER-9dee08d0-0014,O conteúdo e os fluxos de trabalho do portal devem refletir rigorosamente o quadro legal vigente em Moçambique:,portal do investidor\Reformulacao do portal do investidor.docx; SHA 9dee08d0ebbbb262651a01ffc7e0ade97323664bda59fe8ce0b07ead82736ce1; w:p 186 | portal do investidor\backup\Reformulacao do portal do investidor 1.docx; SHA efd550fd2a9d2a21785d7b3c140d4608f1ba27c52f156e2709e9fbf388a1a569; w:p 177 | portal do investidor\backup\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 190 | portal do investidor\backup\Reformulacao do portal do investidor v3.docx; SHA 626cae3d584658842ca36b658e7b5b3cc98d87036747e65b29274f0209734e5a; w:p 194,governação/outros,/api/v1/investment/admin/interests/{interest}/status; /management/history; /management/interests; /management/interests/{interest}; /management/interests/{interest}/consent/contact; /management/interests/{interest}/consent/proponent; /management/opportunities; /management/opportunities/create; /management/opportunities/drafts; /management/opportunities/{id}/draft; /management/opportunities/{id}/edit; /management/opportunities/{id}/lifecycle,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.",MASTER-9dee08d0-0014: O conteúdo e os fluxos de trabalho do portal devem refletir rigorosamente o quadro legal vigente em Moçambique: | MASTER-efd550fd-0014: O conteúdo e os fluxos de trabalho do portal devem refletir rigorosamente o quadro legal vigente em Moçambique: | MASTER-9f5719c8-0015: O conteúdo e os fluxos de trabalho do portal devem refletir rigorosamente o quadro legal vigente em Moçambique: | MASTER-626cae3d-0012: O conteúdo e os fluxos de trabalho do portal devem refletir rigorosamente o quadro legal vigente em Moçambique:,P2,MASTER-9dee08d0-0014: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-efd550fd-0014: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-9f5719c8-0015: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-626cae3d-0012: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-9dee08d0-0014 | MASTER-efd550fd-0014 | MASTER-9f5719c8-0015 | MASTER-626cae3d-0012,4,"[{""id"":""MASTER-9dee08d0-0014"",""pedido"":""O conteúdo e os fluxos de trabalho do portal devem refletir rigorosamente o quadro legal vigente em Moçambique:"",""fontes"":[""portal do investidor\\Reformulacao do portal do investidor.docx; SHA 9dee08d0ebbbb262651a01ffc7e0ade97323664bda59fe8ce0b07ead82736ce1; w:p 186""],""aceitacao"":""O conteúdo e os fluxos de trabalho do portal devem refletir rigorosamente o quadro legal vigente em Moçambique:"",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-efd550fd-0014"",""pedido"":""O conteúdo e os fluxos de trabalho do portal devem refletir rigorosamente o quadro legal vigente em Moçambique:"",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor 1.docx; SHA efd550fd2a9d2a21785d7b3c140d4608f1ba27c52f156e2709e9fbf388a1a569; w:p 177""],""aceitacao"":""O conteúdo e os fluxos de trabalho do portal devem refletir rigorosamente o quadro legal vigente em Moçambique:"",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-9f5719c8-0015"",""pedido"":""O conteúdo e os fluxos de trabalho do portal devem refletir rigorosamente o quadro legal vigente em Moçambique:"",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 190""],""aceitacao"":""O conteúdo e os fluxos de trabalho do portal devem refletir rigorosamente o quadro legal vigente em Moçambique:"",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-626cae3d-0012"",""pedido"":""O conteúdo e os fluxos de trabalho do portal devem refletir rigorosamente o quadro legal vigente em Moçambique:"",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor v3.docx; SHA 626cae3d584658842ca36b658e7b5b3cc98d87036747e65b29274f0209734e5a; w:p 194""],""aceitacao"":""O conteúdo e os fluxos de trabalho do portal devem refletir rigorosamente o quadro legal vigente em Moçambique:"",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,Requisito transversal; consultar estado-ativo-after.json,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer","Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: governação e demais cláusulas. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,governação e demais cláusulas,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",AGENTS.md — componentes do domínio encontrados; correspondência integral deste requisito não presumida,; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.,Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, MASTER-9dee08d0-0015,"Instruções claras sobre a obrigatoriedade de registo do capital de entrada junto do Banco de Moçambique para assegurar o direito de transferência de lucros, dividendos e capital investido de volta ao país de origem.",portal do investidor\Reformulacao do portal do investidor.docx; SHA 9dee08d0ebbbb262651a01ffc7e0ade97323664bda59fe8ce0b07ead82736ce1; w:p 191,dashboard/perfis,/api/v1/investment/companies/{id?}; /api/v1/investment/notifications; /api/v1/investment/notifications/{id}/read; /api/v1/investment/profile; /api/v1/investment/submissions/{id}/messages; /api/v1/investment/submissions/{id}/revisions/{version}; /dashboard; /investidor/companies/{id?}; /investidor/manifestacoes/{id}/messages; /investidor/manifestacoes/{id}/revisions/{version}; /investidor/notifications; /investidor/notifications/{id}/read,"Fortify, PortalProfileAdministration/Access, grants, policies, portal_security_approvals e menus atuais. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,"Reutilizar provas existentes; suplementar autorização/revogação/elevação por ação/consumidor, sem sistema paralelo. Critério individual original preservado; cobertura atual ainda não individualizada.","030000→040000 instalados, seis categorias ON; contas/grants reais concluídos. Autorizações por tipo/org e independência mantidas. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","MASTER-9dee08d0-0015: Instruções claras sobre a obrigatoriedade de registo do capital de entrada junto do Banco de Moçambique para assegurar o direito de transferência de lucros, dividendos e capital investido de volta ao país de origem.",P1,MASTER-9dee08d0-0015: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-9dee08d0-0015,1,"[{""id"":""MASTER-9dee08d0-0015"",""pedido"":""Instruções claras sobre a obrigatoriedade de registo do capital de entrada junto do Banco de Moçambique para assegurar o direito de transferência de lucros, dividendos e capital investido de volta ao país de origem."",""fontes"":[""portal do investidor\\Reformulacao do portal do investidor.docx; SHA 9dee08d0ebbbb262651a01ffc7e0ade97323664bda59fe8ce0b07ead82736ce1; w:p 191""],""aceitacao"":""Instruções claras sobre a obrigatoriedade de registo do capital de entrada junto do Banco de Moçambique para assegurar o direito de transferência de lucros, dividendos e capital investido de volta ao país de origem."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""dashboard/perfis""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.investment_accounts: 0 registos; public.investment_company_declarations: 0 registos; public.investment_submissions: 3 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.","Reutilizar provas existentes; suplementar autorização/revogação/elevação por ação/consumidor, sem sistema paralelo. Critério individual original preservado; cobertura atual ainda não individualizada.","Fortify, PortalProfileAdministration/Access, grants, policies, portal_security_approvals e menus atuais","030000→040000 instalados, seis categorias ON; contas/grants reais concluídos. Autorizações por tipo/org e independência mantidas.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: perfis. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,perfis,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Http/Controllers/DashboardController.php; app/Services/CountryCatalogue.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"InvestmentWorkspaceTest, InvestorGuidanceTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, -MASTER-9dee08d0-0016,"Barra de Pesquisa Descontextualizada: O campo de busca deve sugerir temas directamente ligados ao investimento, como “registo de projecto na APIEX”, “benefícios fiscais”, “repatriamento de dividendos”, “Zonas Económicas Especiais” e “licenciamento simplificado”, em vez de exemplos associados a serviços gerais de cidadania.",portal do investidor\Reformulacao do portal do investidor.docx; SHA 9dee08d0ebbbb262651a01ffc7e0ade97323664bda59fe8ce0b07ead82736ce1; w:p 208 | portal do investidor\backup\Reformulacao do portal do investidor 1.docx; SHA efd550fd2a9d2a21785d7b3c140d4608f1ba27c52f156e2709e9fbf388a1a569; w:p 195 | portal do investidor\backup\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 208 | portal do investidor\backup\Reformulacao do portal do investidor v3.docx; SHA 626cae3d584658842ca36b658e7b5b3cc98d87036747e65b29274f0209734e5a; w:p 213,simuladores,/api/v1/questionnaires/{code}; /api/v1/simulation-drafts; /api/v1/simulation-drafts/claim; /api/v1/simulation-drafts/claim-preview; /api/v1/simulation-drafts/current; /api/v1/simulation-drafts/linkable-businesses; /api/v1/simulation-drafts/{id}; /api/v1/simulation-drafts/{id}/business-link; /api/v1/simulation-drafts/{id}/conversions; /api/v1/simulation-drafts/{id}/touch; /api/v1/simulations; /api/v1/simulations/history,"SimulationExecution, resultados/cenários/fontes, rascunhos e dossier existentes. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Cenário→cálculo→gravação→resultado/dossier correto→nova sessão→PDF/derivadas autorizadas. Sem aprovação/score inventado. Critério individual original preservado; cobertura atual ainda não individualizada.,"Regras financeiras/fiscais separadas; fonte oficial aceite, parâmetros/âmbito/período podem faltar; não substituir por0/taxa atual. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","MASTER-9dee08d0-0016: Barra de Pesquisa Descontextualizada: O campo de busca deve sugerir temas directamente ligados ao investimento, como “registo de projecto na APIEX”, “benefícios fiscais”, “repatriamento de dividendos”, “Zonas Económicas Especiais” e “licenciamento simplificado”, em vez de exemplos associados a serviços gerais de cidadania. | MASTER-efd550fd-0016: Barra de Pesquisa Descontextualizada: O campo de busca deve sugerir temas directamente ligados ao investimento, como “registo de projecto na APIEX”, “benefícios fiscais”, “repatriamento de dividendos”, “Zonas Económicas Especiais” e “licenciamento simplificado”, em vez de exemplos associados a serviços gerais de cidadania. | MASTER-9f5719c8-0017: Barra de Pesquisa Descontextualizada: O campo de busca deve sugerir temas directamente ligados ao investimento, como “registo de projecto na APIEX”, “benefícios fiscais”, “repatriamento de dividendos”, “Zonas Económicas Especiais” e “licenciamento simplificado”, em vez de exemplos associados a serviços gerais de cidadania. | MASTER-626cae3d-0014: Barra de Pesquisa Descontextualizada: O campo de busca deve sugerir temas directamente ligados ao investimento, como “registo de projecto na APIEX”, “benefícios fiscais”, “repatriamento de dividendos”, “Zonas Económicas Especiais” e “licenciamento simplificado”, em vez de exemplos associados a serviços gerais de cidadania.",P2,MASTER-9dee08d0-0016: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-efd550fd-0016: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-9f5719c8-0017: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-626cae3d-0014: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-9dee08d0-0016 | MASTER-efd550fd-0016 | MASTER-9f5719c8-0017 | MASTER-626cae3d-0014,4,"[{""id"":""MASTER-9dee08d0-0016"",""pedido"":""Barra de Pesquisa Descontextualizada: O campo de busca deve sugerir temas directamente ligados ao investimento, como “registo de projecto na APIEX”, “benefícios fiscais”, “repatriamento de dividendos”, “Zonas Económicas Especiais” e “licenciamento simplificado”, em vez de exemplos associados a serviços gerais de cidadania."",""fontes"":[""portal do investidor\\Reformulacao do portal do investidor.docx; SHA 9dee08d0ebbbb262651a01ffc7e0ade97323664bda59fe8ce0b07ead82736ce1; w:p 208""],""aceitacao"":""Barra de Pesquisa Descontextualizada: O campo de busca deve sugerir temas directamente ligados ao investimento, como “registo de projecto na APIEX”, “benefícios fiscais”, “repatriamento de dividendos”, “Zonas Económicas Especiais” e “licenciamento simplificado”, em vez de exemplos associados a serviços gerais de cidadania."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""simuladores""},{""id"":""MASTER-efd550fd-0016"",""pedido"":""Barra de Pesquisa Descontextualizada: O campo de busca deve sugerir temas directamente ligados ao investimento, como “registo de projecto na APIEX”, “benefícios fiscais”, “repatriamento de dividendos”, “Zonas Económicas Especiais” e “licenciamento simplificado”, em vez de exemplos associados a serviços gerais de cidadania."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor 1.docx; SHA efd550fd2a9d2a21785d7b3c140d4608f1ba27c52f156e2709e9fbf388a1a569; w:p 195""],""aceitacao"":""Barra de Pesquisa Descontextualizada: O campo de busca deve sugerir temas directamente ligados ao investimento, como “registo de projecto na APIEX”, “benefícios fiscais”, “repatriamento de dividendos”, “Zonas Económicas Especiais” e “licenciamento simplificado”, em vez de exemplos associados a serviços gerais de cidadania."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""simuladores""},{""id"":""MASTER-9f5719c8-0017"",""pedido"":""Barra de Pesquisa Descontextualizada: O campo de busca deve sugerir temas directamente ligados ao investimento, como “registo de projecto na APIEX”, “benefícios fiscais”, “repatriamento de dividendos”, “Zonas Económicas Especiais” e “licenciamento simplificado”, em vez de exemplos associados a serviços gerais de cidadania."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 208""],""aceitacao"":""Barra de Pesquisa Descontextualizada: O campo de busca deve sugerir temas directamente ligados ao investimento, como “registo de projecto na APIEX”, “benefícios fiscais”, “repatriamento de dividendos”, “Zonas Económicas Especiais” e “licenciamento simplificado”, em vez de exemplos associados a serviços gerais de cidadania."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""simuladores""},{""id"":""MASTER-626cae3d-0014"",""pedido"":""Barra de Pesquisa Descontextualizada: O campo de busca deve sugerir temas directamente ligados ao investimento, como “registo de projecto na APIEX”, “benefícios fiscais”, “repatriamento de dividendos”, “Zonas Económicas Especiais” e “licenciamento simplificado”, em vez de exemplos associados a serviços gerais de cidadania."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor v3.docx; SHA 626cae3d584658842ca36b658e7b5b3cc98d87036747e65b29274f0209734e5a; w:p 213""],""aceitacao"":""Barra de Pesquisa Descontextualizada: O campo de busca deve sugerir temas directamente ligados ao investimento, como “registo de projecto na APIEX”, “benefícios fiscais”, “repatriamento de dividendos”, “Zonas Económicas Especiais” e “licenciamento simplificado”, em vez de exemplos associados a serviços gerais de cidadania."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""simuladores""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.simulation_form_drafts: 22 registos; public.simulation_scenarios: 16 registos; public.simulations: 16 registos; public.simulation_tax_rules: tabela ausente,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Cenário→cálculo→gravação→resultado/dossier correto→nova sessão→PDF/derivadas autorizadas. Sem aprovação/score inventado. Critério individual original preservado; cobertura atual ainda não individualizada.,"SimulationExecution, resultados/cenários/fontes, rascunhos e dossier existentes","Regras financeiras/fiscais separadas; fonte oficial aceite, parâmetros/âmbito/período podem faltar; não substituir por0/taxa atual.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: simuladores. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,simuladores,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Services/SimulationTaxParameterResolver.php; resources/js/components/simulation-form.tsx — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"SimulationExecutionTest, SimulationFormDraftTest, SimulationDraftContinuityTest, SimulationTaxRuleGovernanceTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, +MASTER-9dee08d0-0016,"Barra de Pesquisa Descontextualizada: O campo de busca deve sugerir temas directamente ligados ao investimento, como “registo de projecto na APIEX”, “benefícios fiscais”, “repatriamento de dividendos”, “Zonas Económicas Especiais” e “licenciamento simplificado”, em vez de exemplos associados a serviços gerais de cidadania.",portal do investidor\Reformulacao do portal do investidor.docx; SHA 9dee08d0ebbbb262651a01ffc7e0ade97323664bda59fe8ce0b07ead82736ce1; w:p 208 | portal do investidor\backup\Reformulacao do portal do investidor 1.docx; SHA efd550fd2a9d2a21785d7b3c140d4608f1ba27c52f156e2709e9fbf388a1a569; w:p 195 | portal do investidor\backup\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 208 | portal do investidor\backup\Reformulacao do portal do investidor v3.docx; SHA 626cae3d584658842ca36b658e7b5b3cc98d87036747e65b29274f0209734e5a; w:p 213,simuladores,/api/v1/questionnaires/{code}; /api/v1/simulation-drafts; /api/v1/simulation-drafts/claim; /api/v1/simulation-drafts/claim-preview; /api/v1/simulation-drafts/current; /api/v1/simulation-drafts/linkable-businesses; /api/v1/simulation-drafts/{id}; /api/v1/simulation-drafts/{id}/business-link; /api/v1/simulation-drafts/{id}/conversions; /api/v1/simulation-drafts/{id}/touch; /api/v1/simulations; /api/v1/simulations/history,"SimulationExecution, resultados/cenários/fontes, rascunhos e dossier existentes. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Cenário→cálculo→gravação→resultado/dossier correto→nova sessão→PDF/derivadas autorizadas. Sem aprovação/score inventado. Critério individual original preservado; cobertura atual ainda não individualizada.,"Regras financeiras/fiscais separadas; fonte oficial aceite, parâmetros/âmbito/período podem faltar; não substituir por0/taxa atual. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","MASTER-9dee08d0-0016: Barra de Pesquisa Descontextualizada: O campo de busca deve sugerir temas directamente ligados ao investimento, como “registo de projecto na APIEX”, “benefícios fiscais”, “repatriamento de dividendos”, “Zonas Económicas Especiais” e “licenciamento simplificado”, em vez de exemplos associados a serviços gerais de cidadania. | MASTER-efd550fd-0016: Barra de Pesquisa Descontextualizada: O campo de busca deve sugerir temas directamente ligados ao investimento, como “registo de projecto na APIEX”, “benefícios fiscais”, “repatriamento de dividendos”, “Zonas Económicas Especiais” e “licenciamento simplificado”, em vez de exemplos associados a serviços gerais de cidadania. | MASTER-9f5719c8-0017: Barra de Pesquisa Descontextualizada: O campo de busca deve sugerir temas directamente ligados ao investimento, como “registo de projecto na APIEX”, “benefícios fiscais”, “repatriamento de dividendos”, “Zonas Económicas Especiais” e “licenciamento simplificado”, em vez de exemplos associados a serviços gerais de cidadania. | MASTER-626cae3d-0014: Barra de Pesquisa Descontextualizada: O campo de busca deve sugerir temas directamente ligados ao investimento, como “registo de projecto na APIEX”, “benefícios fiscais”, “repatriamento de dividendos”, “Zonas Económicas Especiais” e “licenciamento simplificado”, em vez de exemplos associados a serviços gerais de cidadania.",P2,MASTER-9dee08d0-0016: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-efd550fd-0016: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-9f5719c8-0017: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-626cae3d-0014: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-9dee08d0-0016 | MASTER-efd550fd-0016 | MASTER-9f5719c8-0017 | MASTER-626cae3d-0014,4,"[{""id"":""MASTER-9dee08d0-0016"",""pedido"":""Barra de Pesquisa Descontextualizada: O campo de busca deve sugerir temas directamente ligados ao investimento, como “registo de projecto na APIEX”, “benefícios fiscais”, “repatriamento de dividendos”, “Zonas Económicas Especiais” e “licenciamento simplificado”, em vez de exemplos associados a serviços gerais de cidadania."",""fontes"":[""portal do investidor\\Reformulacao do portal do investidor.docx; SHA 9dee08d0ebbbb262651a01ffc7e0ade97323664bda59fe8ce0b07ead82736ce1; w:p 208""],""aceitacao"":""Barra de Pesquisa Descontextualizada: O campo de busca deve sugerir temas directamente ligados ao investimento, como “registo de projecto na APIEX”, “benefícios fiscais”, “repatriamento de dividendos”, “Zonas Económicas Especiais” e “licenciamento simplificado”, em vez de exemplos associados a serviços gerais de cidadania."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""simuladores""},{""id"":""MASTER-efd550fd-0016"",""pedido"":""Barra de Pesquisa Descontextualizada: O campo de busca deve sugerir temas directamente ligados ao investimento, como “registo de projecto na APIEX”, “benefícios fiscais”, “repatriamento de dividendos”, “Zonas Económicas Especiais” e “licenciamento simplificado”, em vez de exemplos associados a serviços gerais de cidadania."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor 1.docx; SHA efd550fd2a9d2a21785d7b3c140d4608f1ba27c52f156e2709e9fbf388a1a569; w:p 195""],""aceitacao"":""Barra de Pesquisa Descontextualizada: O campo de busca deve sugerir temas directamente ligados ao investimento, como “registo de projecto na APIEX”, “benefícios fiscais”, “repatriamento de dividendos”, “Zonas Económicas Especiais” e “licenciamento simplificado”, em vez de exemplos associados a serviços gerais de cidadania."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""simuladores""},{""id"":""MASTER-9f5719c8-0017"",""pedido"":""Barra de Pesquisa Descontextualizada: O campo de busca deve sugerir temas directamente ligados ao investimento, como “registo de projecto na APIEX”, “benefícios fiscais”, “repatriamento de dividendos”, “Zonas Económicas Especiais” e “licenciamento simplificado”, em vez de exemplos associados a serviços gerais de cidadania."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 208""],""aceitacao"":""Barra de Pesquisa Descontextualizada: O campo de busca deve sugerir temas directamente ligados ao investimento, como “registo de projecto na APIEX”, “benefícios fiscais”, “repatriamento de dividendos”, “Zonas Económicas Especiais” e “licenciamento simplificado”, em vez de exemplos associados a serviços gerais de cidadania."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""simuladores""},{""id"":""MASTER-626cae3d-0014"",""pedido"":""Barra de Pesquisa Descontextualizada: O campo de busca deve sugerir temas directamente ligados ao investimento, como “registo de projecto na APIEX”, “benefícios fiscais”, “repatriamento de dividendos”, “Zonas Económicas Especiais” e “licenciamento simplificado”, em vez de exemplos associados a serviços gerais de cidadania."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor v3.docx; SHA 626cae3d584658842ca36b658e7b5b3cc98d87036747e65b29274f0209734e5a; w:p 213""],""aceitacao"":""Barra de Pesquisa Descontextualizada: O campo de busca deve sugerir temas directamente ligados ao investimento, como “registo de projecto na APIEX”, “benefícios fiscais”, “repatriamento de dividendos”, “Zonas Económicas Especiais” e “licenciamento simplificado”, em vez de exemplos associados a serviços gerais de cidadania."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""simuladores""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.simulation_form_drafts: 22 registos; public.simulation_scenarios: 16 registos; public.simulations: 16 registos; public.simulation_tax_rules: tabela ausente,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global. | 23/10/2026 — adequação do hero por pedido expresso da Tempo. Aplicadas as orientações permanentes AGENTS.md de 12/10 e 22/10/2026: regras da Tempo, escolhas técnicas identificadas e preservação de dados/histórico. Rotação, WebP e composição são escolhas de implementação. Pesquisa mantém o catálogo existente; não constitui pesquisa global de legislação/licenciamento nem nova restrição organizacional.",Cenário→cálculo→gravação→resultado/dossier correto→nova sessão→PDF/derivadas autorizadas. Sem aprovação/score inventado. Critério individual original preservado; cobertura atual ainda não individualizada.,"SimulationExecution, resultados/cenários/fontes, rascunhos e dossier existentes","Regras financeiras/fiscais separadas; fonte oficial aceite, parâmetros/âmbito/período podem faltar; não substituir por0/taxa atual.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: simuladores. Esforço de código adicional só após lacuna reproduzida.,"outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual. | 23/10/2026 — adequação do hero por pedido expresso da Tempo: docs/investmoz/public-portal-hero-validation.json; tools/portal-hero-qa.mjs; outputs/portal-hero-20261023/qa-results.json e capturas. Componentes reais com API/navegação sintéticas, sem base activa. Prova limitada ao hero, pesquisa de oportunidades e preservação da entrada documental; critérios mais amplos não encerrados.",simuladores,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Services/SimulationTaxParameterResolver.php; resources/js/components/simulation-form.tsx — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"SimulationExecutionTest, SimulationFormDraftTest, SimulationDraftContinuityTest, SimulationTaxRuleGovernanceTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, MASTER-9dee08d0-0017,"Falta de Profundidade nos Cards: As descrições dos sectores estratégicos devem abandonar frases genéricas e apresentar informação específica de cada área, incluindo oportunidades, localização, tipo de investidor-alvo, principais incentivos, entidades competentes e documentos necessários para iniciar o processo.",portal do investidor\Reformulacao do portal do investidor.docx; SHA 9dee08d0ebbbb262651a01ffc7e0ade97323664bda59fe8ce0b07ead82736ce1; w:p 209 | portal do investidor\backup\Reformulacao do portal do investidor 1.docx; SHA efd550fd2a9d2a21785d7b3c140d4608f1ba27c52f156e2709e9fbf388a1a569; w:p 196 | portal do investidor\backup\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 209 | portal do investidor\backup\Reformulacao do portal do investidor v3.docx; SHA 626cae3d584658842ca36b658e7b5b3cc98d87036747e65b29274f0209734e5a; w:p 214,oportunidades,/api/v1/business-opportunities; /api/v1/business-opportunities/{slug}; /investidor/terra-duat; /investidor/terra-duat/novo; /investidor/terra-duat/{id}; /investidor/terra-duat/{id}/actualizacoes; /investidor/terra-duat/{id}/documentos; /investidor/terra-duat/{id}/documentos/{attachment}; /investidor/terra-duat/{id}/editar; /investidor/terra-duat/{id}/imprimir; /investidor/terra-duat/{id}/solicitar-apoio; /management/opportunities,"OpportunityManagement, OpportunityCanonicalContract/Response, OpportunityReviewMateriality, PortalProfileAccess, OpportunityResources. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.; SectorInvestment e páginas existentes: conteúdo, oportunidades públicas, associações cadastradas e ações; contexto no mesmo InvestorPath e pré-seleção canónica do setor.","Disponibilizado em 15/10/2026, setores-fintech-QA-d5b4dc354265 DOC01: 16 fontes e compilação; sete entradas setoriais e especialização Fintech no dossier; três artigos publicados (recursos reais 27/28/29), imagem 24 reutilizada por identidade/hash. Flags existentes preservadas; sem migrations/categorias novas. B e COUNTRY02 preservados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Implementado parcialmente — entradas setoriais e três artigos ativos,Reconciliar contrato/cláusula e provas por categoria; completar apenas falha/variante executável identificada. Response normativo não é completo. Critério individual original preservado; cobertura atual ainda não individualizada.,"030000→040000 já instalados; contratos/resources existentes, sessão/MFA, ClamD e worker para ficheiros; gates das seis categorias ON. Variantes modulares/offers continuam separadas. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","MASTER-9dee08d0-0017: Falta de Profundidade nos Cards: As descrições dos sectores estratégicos devem abandonar frases genéricas e apresentar informação específica de cada área, incluindo oportunidades, localização, tipo de investidor-alvo, principais incentivos, entidades competentes e documentos necessários para iniciar o processo. | MASTER-efd550fd-0017: Falta de Profundidade nos Cards: As descrições dos sectores estratégicos devem abandonar frases genéricas e apresentar informação específica de cada área, incluindo oportunidades, localização, tipo de investidor-alvo, principais incentivos, entidades competentes e documentos necessários para iniciar o processo. | MASTER-9f5719c8-0018: Falta de Profundidade nos Cards: As descrições dos sectores estratégicos devem abandonar frases genéricas e apresentar informação específica de cada área, incluindo oportunidades, localização, tipo de investidor-alvo, principais incentivos, entidades competentes e documentos necessários para iniciar o processo. | MASTER-626cae3d-0015: Falta de Profundidade nos Cards: As descrições dos sectores estratégicos devem abandonar frases genéricas e apresentar informação específica de cada área, incluindo oportunidades, localização, tipo de investidor-alvo, principais incentivos, entidades competentes e documentos necessários para iniciar o processo.",P2,MASTER-9dee08d0-0017: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-efd550fd-0017: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-9f5719c8-0018: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-626cae3d-0015: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-9dee08d0-0017 | MASTER-efd550fd-0017 | MASTER-9f5719c8-0018 | MASTER-626cae3d-0015,4,"[{""id"":""MASTER-9dee08d0-0017"",""pedido"":""Falta de Profundidade nos Cards: As descrições dos sectores estratégicos devem abandonar frases genéricas e apresentar informação específica de cada área, incluindo oportunidades, localização, tipo de investidor-alvo, principais incentivos, entidades competentes e documentos necessários para iniciar o processo."",""fontes"":[""portal do investidor\\Reformulacao do portal do investidor.docx; SHA 9dee08d0ebbbb262651a01ffc7e0ade97323664bda59fe8ce0b07ead82736ce1; w:p 209""],""aceitacao"":""Falta de Profundidade nos Cards: As descrições dos sectores estratégicos devem abandonar frases genéricas e apresentar informação específica de cada área, incluindo oportunidades, localização, tipo de investidor-alvo, principais incentivos, entidades competentes e documentos necessários para iniciar o processo."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""oportunidades""},{""id"":""MASTER-efd550fd-0017"",""pedido"":""Falta de Profundidade nos Cards: As descrições dos sectores estratégicos devem abandonar frases genéricas e apresentar informação específica de cada área, incluindo oportunidades, localização, tipo de investidor-alvo, principais incentivos, entidades competentes e documentos necessários para iniciar o processo."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor 1.docx; SHA efd550fd2a9d2a21785d7b3c140d4608f1ba27c52f156e2709e9fbf388a1a569; w:p 196""],""aceitacao"":""Falta de Profundidade nos Cards: As descrições dos sectores estratégicos devem abandonar frases genéricas e apresentar informação específica de cada área, incluindo oportunidades, localização, tipo de investidor-alvo, principais incentivos, entidades competentes e documentos necessários para iniciar o processo."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""oportunidades""},{""id"":""MASTER-9f5719c8-0018"",""pedido"":""Falta de Profundidade nos Cards: As descrições dos sectores estratégicos devem abandonar frases genéricas e apresentar informação específica de cada área, incluindo oportunidades, localização, tipo de investidor-alvo, principais incentivos, entidades competentes e documentos necessários para iniciar o processo."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 209""],""aceitacao"":""Falta de Profundidade nos Cards: As descrições dos sectores estratégicos devem abandonar frases genéricas e apresentar informação específica de cada área, incluindo oportunidades, localização, tipo de investidor-alvo, principais incentivos, entidades competentes e documentos necessários para iniciar o processo."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""oportunidades""},{""id"":""MASTER-626cae3d-0015"",""pedido"":""Falta de Profundidade nos Cards: As descrições dos sectores estratégicos devem abandonar frases genéricas e apresentar informação específica de cada área, incluindo oportunidades, localização, tipo de investidor-alvo, principais incentivos, entidades competentes e documentos necessários para iniciar o processo."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor v3.docx; SHA 626cae3d584658842ca36b658e7b5b3cc98d87036747e65b29274f0209734e5a; w:p 214""],""aceitacao"":""Falta de Profundidade nos Cards: As descrições dos sectores estratégicos devem abandonar frases genéricas e apresentar informação específica de cada área, incluindo oportunidades, localização, tipo de investidor-alvo, principais incentivos, entidades competentes e documentos necessários para iniciar o processo."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""oportunidades""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.opportunities: 6 registos; public.opportunity_images: tabela ausente; public.opportunity_documents: tabela ausente; public.opportunity_location_drafts: tabela ausente,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global. | QA 15/10/2026: setores-fintech-QA-d5b4dc354265; sete entradas comerciais/contexto no dossier e três artigos preparados. B/COUNTRY02/aceitações preservados; sem disponibilização ativa. | Disponibilização expressamente autorizada pela Tempo: «Autorizo a disponibilizar». Executada com backup/restauro fresco verificado; apenas conferência operacional, sem repetir aceitação QA. [RECONCILIACAO-43-20261019] 5: Sem saldo de código no recorte visual aceite.","Reconciliar contrato/cláusula e provas por categoria; completar apenas falha/variante executável identificada. Response normativo não é completo. Critério individual original preservado; cobertura atual ainda não individualizada. | Entrega operacional deste delta concluída. Mercado Financeiro geral vazio e restante acervo mantêm os seus estados. Licenças, requisitos e documentos específicos Fintech por atividade permanecem por determinar; não bloqueiam a preparação independente nem se consideram concluídos. Mantém-se o detalhe integral de incentivos, entidades e documentos específicos por setor por completar. | Recorte QA demonstrado, sem encerrar critérios globais. Histórico económico combinado conservado, fora de novas escolhas; oportunidade6 não inferida como Fintech. Sem fusões por nome. Recuperação existente conferida por leitura e hashes; outra sessão/dispositivo e percursos aceites não reensaiados. Conferência dos anexos pelo utilizador pendente. | Recorte aprovado disponibilizado; requisitos globais permanecem abertos. Atividade historica combinada e oportunidade6 sem reclassificacao. Conferencia dos anexos finais pelo utilizador pendente. Sem repetir testes aceites, formularios ou L1. @@ -1014,7 +1014,7 @@ MASTER-efd550fd-0100,"A migration de opportunities deve conter: id, sector_id co MASTER-efd550fd-0101,"O InterestRequestController deve receber manifestações de interesse públicas, validar os campos, gerar uma referência interna, gravar o pedido e devolver uma resposta segura. A validação deve ser feita preferencialmente num StoreInterestRequestRequest, separando as regras do controller.",portal do investidor\backup\Reformulacao do portal do investidor 1.docx; SHA efd550fd2a9d2a21785d7b3c140d4608f1ba27c52f156e2709e9fbf388a1a569; w:p 1024 | portal do investidor\backup\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 1174,CRM/solicitações,//; /Simulador; /api/v1/documents/recommendations; /api/v1/investment/submissions; /api/v1/investment/submissions/{id}; /api/v1/investment/submissions/{id}/attachments; /api/v1/investment/submissions/{id}/attachments/{attachment}; /api/v1/investment/submissions/{id}/submit; /apoio; /balcao-virtual; /como-investir; /documentos,"investors/contacts/leads/tasks, OpportunityContacts, acompanhamento interno existente. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,"Converter sem duplicar, tarefa/responsável/próxima ação recuperáveis; corrigir apenas falha comprovada. Critério individual original preservado; cobertura atual ainda não individualizada.",Relações mestre/contexto e autorizações; não depende de CRM externo. C131 sóQA. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,"MASTER-efd550fd-0101: O InterestRequestController deve receber manifestações de interesse públicas, validar os campos, gerar uma referência interna, gravar o pedido e devolver uma resposta segura. A validação deve ser feita preferencialmente num StoreInterestRequestRequest, separando as regras do controller. | MASTER-9f5719c8-0126: O InterestRequestController deve receber manifestações de interesse públicas, validar os campos, gerar uma referência interna, gravar o pedido e devolver uma resposta segura. A validação deve ser feita preferencialmente num StoreInterestRequestRequest, separando as regras do controller.",P2,MASTER-efd550fd-0101: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-9f5719c8-0126: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-efd550fd-0101 | MASTER-9f5719c8-0126,2,"[{""id"":""MASTER-efd550fd-0101"",""pedido"":""O InterestRequestController deve receber manifestações de interesse públicas, validar os campos, gerar uma referência interna, gravar o pedido e devolver uma resposta segura. A validação deve ser feita preferencialmente num StoreInterestRequestRequest, separando as regras do controller."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor 1.docx; SHA efd550fd2a9d2a21785d7b3c140d4608f1ba27c52f156e2709e9fbf388a1a569; w:p 1024""],""aceitacao"":""O InterestRequestController deve receber manifestações de interesse públicas, validar os campos, gerar uma referência interna, gravar o pedido e devolver uma resposta segura. A validação deve ser feita preferencialmente num StoreInterestRequestRequest, separando as regras do controller."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""CRM/solicitações""},{""id"":""MASTER-9f5719c8-0126"",""pedido"":""O InterestRequestController deve receber manifestações de interesse públicas, validar os campos, gerar uma referência interna, gravar o pedido e devolver uma resposta segura. A validação deve ser feita preferencialmente num StoreInterestRequestRequest, separando as regras do controller."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 1174""],""aceitacao"":""O InterestRequestController deve receber manifestações de interesse públicas, validar os campos, gerar uma referência interna, gravar o pedido e devolver uma resposta segura. A validação deve ser feita preferencialmente num StoreInterestRequestRequest, separando as regras do controller."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""CRM/solicitações""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.interest_requests: 4 registos; public.leads: 0 registos; public.investors: 3 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.","Converter sem duplicar, tarefa/responsável/próxima ação recuperáveis; corrigir apenas falha comprovada. Critério individual original preservado; cobertura atual ainda não individualizada.","investors/contacts/leads/tasks, OpportunityContacts, acompanhamento interno existente",Relações mestre/contexto e autorizações; não depende de CRM externo. C131 sóQA.,Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: acompanhamento. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,acompanhamento,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Http/Controllers/CrmController.php; app/Services/DeclaredOriginStatistics.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"InterestSubmissionTest, InvestmentWorkspaceTest, PortalOriginCompatibilityTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, MASTER-efd550fd-0102,"Lógica recomendada: receber StoreInterestRequestRequest; obter dados validados; gerar reference no formato IR-YYYY-000001; criar registo em InterestRequest; guardar IP, user_agent e consentimento de privacidade; associar opportunity_id quando a opportunityReference existir; devolver JsonResponse com success true, message, data.reference, data.status, data.nextStep e submittedAt. Em caso de falha, registar o erro no log e devolver mensagem genérica sem expor detalhes internos.",portal do investidor\backup\Reformulacao do portal do investidor 1.docx; SHA efd550fd2a9d2a21785d7b3c140d4608f1ba27c52f156e2709e9fbf388a1a569; w:p 1025 | portal do investidor\backup\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 1175,Balcão/orientação,/balcao-virtual/contextos; /balcao-virtual/dossiers; /balcao-virtual/dossiers/{id}; /balcao-virtual/dossiers/{id}/documentos; /balcao-virtual/dossiers/{id}/documentos/{document}; /balcao-virtual/dossiers/{id}/documentos/{document}/conferencia; /balcao-virtual/dossiers/{id}/etapas; /balcao-virtual/dossiers/{id}/fontes; /balcao-virtual/dossiers/{id}/orientacao; /balcao-virtual/dossiers/{id}/pedidos; /balcao-virtual/dossiers/{id}/pressupostos; /balcao-virtual/dossiers/{id}/recomendacoes,"VirtualDesk, pedidos/casos, anexos, contexto dossier e acompanhamento. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,"Pedido contextual→gravar→submeter→nova sessão→gestor→mensagem/documentos/resultado, reaproveitando A/B. Critério individual original preservado; cobertura atual ainda não individualizada.","Perfis próprios do Balcão; serviços/campos e decisões externas aplicáveis, sem inventar destinatário/prazo. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","MASTER-efd550fd-0102: Lógica recomendada: receber StoreInterestRequestRequest; obter dados validados; gerar reference no formato IR-YYYY-000001; criar registo em InterestRequest; guardar IP, user_agent e consentimento de privacidade; associar opportunity_id quando a opportunityReference existir; devolver JsonResponse com success true, message, data.reference, data.status, data.nextStep e submittedAt. Em caso de falha, registar o erro no log e devolver mensagem genérica sem expor detalhes internos. | MASTER-9f5719c8-0127: Lógica recomendada: receber StoreInterestRequestRequest; obter dados validados; gerar reference no formato IR-YYYY-000001; criar registo em InterestRequest; guardar IP, user_agent e consentimento de privacidade; associar opportunity_id quando a opportunityReference existir; devolver JsonResponse com success true, message, data.reference, data.status, data.nextStep e submittedAt. Em caso de falha, registar o erro no log e devolver mensagem genérica sem expor detalhes internos.",P2,MASTER-efd550fd-0102: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-9f5719c8-0127: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-efd550fd-0102 | MASTER-9f5719c8-0127,2,"[{""id"":""MASTER-efd550fd-0102"",""pedido"":""Lógica recomendada: receber StoreInterestRequestRequest; obter dados validados; gerar reference no formato IR-YYYY-000001; criar registo em InterestRequest; guardar IP, user_agent e consentimento de privacidade; associar opportunity_id quando a opportunityReference existir; devolver JsonResponse com success true, message, data.reference, data.status, data.nextStep e submittedAt. Em caso de falha, registar o erro no log e devolver mensagem genérica sem expor detalhes internos."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor 1.docx; SHA efd550fd2a9d2a21785d7b3c140d4608f1ba27c52f156e2709e9fbf388a1a569; w:p 1025""],""aceitacao"":""Lógica recomendada: receber StoreInterestRequestRequest; obter dados validados; gerar reference no formato IR-YYYY-000001; criar registo em InterestRequest; guardar IP, user_agent e consentimento de privacidade; associar opportunity_id quando a opportunityReference existir; devolver JsonResponse com success true, message, data.reference, data.status, data.nextStep e submittedAt. Em caso de falha, registar o erro no log e devolver mensagem genérica sem expor detalhes internos."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""Balcão/orientação""},{""id"":""MASTER-9f5719c8-0127"",""pedido"":""Lógica recomendada: receber StoreInterestRequestRequest; obter dados validados; gerar reference no formato IR-YYYY-000001; criar registo em InterestRequest; guardar IP, user_agent e consentimento de privacidade; associar opportunity_id quando a opportunityReference existir; devolver JsonResponse com success true, message, data.reference, data.status, data.nextStep e submittedAt. Em caso de falha, registar o erro no log e devolver mensagem genérica sem expor detalhes internos."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 1175""],""aceitacao"":""Lógica recomendada: receber StoreInterestRequestRequest; obter dados validados; gerar reference no formato IR-YYYY-000001; criar registo em InterestRequest; guardar IP, user_agent e consentimento de privacidade; associar opportunity_id quando a opportunityReference existir; devolver JsonResponse com success true, message, data.reference, data.status, data.nextStep e submittedAt. Em caso de falha, registar o erro no log e devolver mensagem genérica sem expor detalhes internos."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""Balcão/orientação""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.desk_cases: 1 registos; public.desk_requests: 0 registos; public.desk_institutional_links: 0 registos; public.desk_messages: 0 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.","Pedido contextual→gravar→submeter→nova sessão→gestor→mensagem/documentos/resultado, reaproveitando A/B. Critério individual original preservado; cobertura atual ainda não individualizada.","VirtualDesk, pedidos/casos, anexos, contexto dossier e acompanhamento","Perfis próprios do Balcão; serviços/campos e decisões externas aplicáveis, sem inventar destinatário/prazo.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: balcão. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,balcão,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Services/VirtualDesk.php; app/Services/Ai/InvestorGuidance.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,InvestorGuidanceTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.,Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, MASTER-efd550fd-0103,"Regras mínimas de validação: fullName obrigatório com 3 a 150 caracteres; email obrigatório e válido; phone opcional até 30 caracteres; investorType obrigatório entre individual, empresa, fundo, entidade_publica, parceiro_tecnico e outro; country obrigatório; sectorInterest obrigatório; opportunityReference opcional e existente quando informado; investmentRange opcional; message obrigatória com 20 a 2000 caracteres; privacyConsent obrigatório e verdadeiro. Aplicar rate limiting por IP e email para reduzir spam.",portal do investidor\backup\Reformulacao do portal do investidor 1.docx; SHA efd550fd2a9d2a21785d7b3c140d4608f1ba27c52f156e2709e9fbf388a1a569; w:p 1026 | portal do investidor\backup\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 1176,negócios,/api/v1/business-opportunities; /api/v1/business-opportunities/{slug}; /api/v1/existing-business/listings; /api/v1/existing-business/listings/{id}; /api/v1/existing-business/listings/{id}/objects; /api/v1/existing-business/listings/{id}/objects/{object}; /api/v1/existing-business/listings/{id}/transitions; /api/v1/existing-business/listings/{id}/verifications; /api/v1/existing-business/reviews; /api/v1/simulation-drafts/linkable-businesses; /api/v1/simulation-drafts/{id}/business-link; /investidor/negocios,"ExistingBusinessDrafts/Policy, anúncio público, InterestSubmission e filtros atuais. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Negócio→revisão/publicação→interesse→origem→estatística única→recuperação; preparar caso existente autorizado sem forçar estado. Critério individual original preservado; cobertura atual ainda não individualizada.,Políticas legadas próprias e docs/mandatos; QA18445zero anúncios publicados; notificaçõesOFF. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,"MASTER-efd550fd-0103: Regras mínimas de validação: fullName obrigatório com 3 a 150 caracteres; email obrigatório e válido; phone opcional até 30 caracteres; investorType obrigatório entre individual, empresa, fundo, entidade_publica, parceiro_tecnico e outro; country obrigatório; sectorInterest obrigatório; opportunityReference opcional e existente quando informado; investmentRange opcional; message obrigatória com 20 a 2000 caracteres; privacyConsent obrigatório e verdadeiro. Aplicar rate limiting por IP e email para reduzir spam. | MASTER-9f5719c8-0128: Regras mínimas de validação: fullName obrigatório com 3 a 150 caracteres; email obrigatório e válido; phone opcional até 30 caracteres; investorType obrigatório entre individual, empresa, fundo, entidade_publica, parceiro_tecnico e outro; country obrigatório; sectorInterest obrigatório; opportunityReference opcional e existente quando informado; investmentRange opcional; message obrigatória com 20 a 2000 caracteres; privacyConsent obrigatório e verdadeiro. Aplicar rate limiting por IP e email para reduzir spam.",P2,MASTER-efd550fd-0103: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-9f5719c8-0128: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-efd550fd-0103 | MASTER-9f5719c8-0128,2,"[{""id"":""MASTER-efd550fd-0103"",""pedido"":""Regras mínimas de validação: fullName obrigatório com 3 a 150 caracteres; email obrigatório e válido; phone opcional até 30 caracteres; investorType obrigatório entre individual, empresa, fundo, entidade_publica, parceiro_tecnico e outro; country obrigatório; sectorInterest obrigatório; opportunityReference opcional e existente quando informado; investmentRange opcional; message obrigatória com 20 a 2000 caracteres; privacyConsent obrigatório e verdadeiro. Aplicar rate limiting por IP e email para reduzir spam."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor 1.docx; SHA efd550fd2a9d2a21785d7b3c140d4608f1ba27c52f156e2709e9fbf388a1a569; w:p 1026""],""aceitacao"":""Regras mínimas de validação: fullName obrigatório com 3 a 150 caracteres; email obrigatório e válido; phone opcional até 30 caracteres; investorType obrigatório entre individual, empresa, fundo, entidade_publica, parceiro_tecnico e outro; country obrigatório; sectorInterest obrigatório; opportunityReference opcional e existente quando informado; investmentRange opcional; message obrigatória com 20 a 2000 caracteres; privacyConsent obrigatório e verdadeiro. Aplicar rate limiting por IP e email para reduzir spam."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""negócios""},{""id"":""MASTER-9f5719c8-0128"",""pedido"":""Regras mínimas de validação: fullName obrigatório com 3 a 150 caracteres; email obrigatório e válido; phone opcional até 30 caracteres; investorType obrigatório entre individual, empresa, fundo, entidade_publica, parceiro_tecnico e outro; country obrigatório; sectorInterest obrigatório; opportunityReference opcional e existente quando informado; investmentRange opcional; message obrigatória com 20 a 2000 caracteres; privacyConsent obrigatório e verdadeiro. Aplicar rate limiting por IP e email para reduzir spam."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 1176""],""aceitacao"":""Regras mínimas de validação: fullName obrigatório com 3 a 150 caracteres; email obrigatório e válido; phone opcional até 30 caracteres; investorType obrigatório entre individual, empresa, fundo, entidade_publica, parceiro_tecnico e outro; country obrigatório; sectorInterest obrigatório; opportunityReference opcional e existente quando informado; investmentRange opcional; message obrigatória com 20 a 2000 caracteres; privacyConsent obrigatório e verdadeiro. Aplicar rate limiting por IP e email para reduzir spam."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""negócios""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.existing_businesses: 2 registos; public.existing_business_revisions: 2 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Negócio→revisão/publicação→interesse→origem→estatística única→recuperação; preparar caso existente autorizado sem forçar estado. Critério individual original preservado; cobertura atual ainda não individualizada.,"ExistingBusinessDrafts/Policy, anúncio público, InterestSubmission e filtros atuais",Políticas legadas próprias e docs/mandatos; QA18445zero anúncios publicados; notificaçõesOFF.,Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: negócios. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,negócios,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Http/Controllers/ExistingBusinessController.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"ExistingBusinessFoundationTest, ExistingBusinessIntakeTest, ExistingBusinessWizardTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, -MASTER-efd550fd-0104,"Código sugerido: importar React, useEffect e useState; definir API_BASE_URL com import.meta.env.VITE_API_URL; criar estado para homeData, loading, error e searchTerm; carregar dados com fetch(`${API_BASE_URL}/api/v1/home?locale=pt`); validar response.ok; guardar JSON em homeData; apresentar loading enquanto carrega; apresentar mensagem de erro se falhar; renderizar Header, hero, botões rápidos, pesquisa, sectores estratégicos, oportunidades em destaque, percurso do investidor, incentivos, estatísticas e footer. A navegação dos botões pode usar window.location.href ou React Router conforme a arquitectura adoptada.",portal do investidor\backup\Reformulacao do portal do investidor 1.docx; SHA efd550fd2a9d2a21785d7b3c140d4608f1ba27c52f156e2709e9fbf388a1a569; w:p 1029 | portal do investidor\backup\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 1179,oportunidades,/api/v1/business-opportunities; /api/v1/business-opportunities/{slug}; /investidor/terra-duat; /investidor/terra-duat/novo; /investidor/terra-duat/{id}; /investidor/terra-duat/{id}/actualizacoes; /investidor/terra-duat/{id}/documentos; /investidor/terra-duat/{id}/documentos/{attachment}; /investidor/terra-duat/{id}/editar; /investidor/terra-duat/{id}/imprimir; /investidor/terra-duat/{id}/solicitar-apoio; /management/opportunities,"OpportunityManagement, OpportunityCanonicalContract/Response, OpportunityReviewMateriality, PortalProfileAccess, OpportunityResources. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Reconciliar contrato/cláusula e provas por categoria; completar apenas falha/variante executável identificada. Response normativo não é completo. Critério individual original preservado; cobertura atual ainda não individualizada.,"030000→040000 já instalados; contratos/resources existentes, sessão/MFA, ClamD e worker para ficheiros; gates das seis categorias ON. Variantes modulares/offers continuam separadas. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","MASTER-efd550fd-0104: Código sugerido: importar React, useEffect e useState; definir API_BASE_URL com import.meta.env.VITE_API_URL; criar estado para homeData, loading, error e searchTerm; carregar dados com fetch(`${API_BASE_URL}/api/v1/home?locale=pt`); validar response.ok; guardar JSON em homeData; apresentar loading enquanto carrega; apresentar mensagem de erro se falhar; renderizar Header, hero, botões rápidos, pesquisa, sectores estratégicos, oportunidades em destaque, percurso do investidor, incentivos, estatísticas e footer. A navegação dos botões pode usar window.location.href ou React Router conforme a arquitectura adoptada. | MASTER-9f5719c8-0129: Código sugerido: importar React, useEffect e useState; definir API_BASE_URL com import.meta.env.VITE_API_URL; criar estado para homeData, loading, error e searchTerm; carregar dados com fetch(`${API_BASE_URL}/api/v1/home?locale=pt`); validar response.ok; guardar JSON em homeData; apresentar loading enquanto carrega; apresentar mensagem de erro se falhar; renderizar Header, hero, botões rápidos, pesquisa, sectores estratégicos, oportunidades em destaque, percurso do investidor, incentivos, estatísticas e footer. A navegação dos botões pode usar window.location.href ou React Router conforme a arquitectura adoptada.",P1,MASTER-efd550fd-0104: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-9f5719c8-0129: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-efd550fd-0104 | MASTER-9f5719c8-0129,2,"[{""id"":""MASTER-efd550fd-0104"",""pedido"":""Código sugerido: importar React, useEffect e useState; definir API_BASE_URL com import.meta.env.VITE_API_URL; criar estado para homeData, loading, error e searchTerm; carregar dados com fetch(`${API_BASE_URL}/api/v1/home?locale=pt`); validar response.ok; guardar JSON em homeData; apresentar loading enquanto carrega; apresentar mensagem de erro se falhar; renderizar Header, hero, botões rápidos, pesquisa, sectores estratégicos, oportunidades em destaque, percurso do investidor, incentivos, estatísticas e footer. A navegação dos botões pode usar window.location.href ou React Router conforme a arquitectura adoptada."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor 1.docx; SHA efd550fd2a9d2a21785d7b3c140d4608f1ba27c52f156e2709e9fbf388a1a569; w:p 1029""],""aceitacao"":""Código sugerido: importar React, useEffect e useState; definir API_BASE_URL com import.meta.env.VITE_API_URL; criar estado para homeData, loading, error e searchTerm; carregar dados com fetch(`${API_BASE_URL}/api/v1/home?locale=pt`); validar response.ok; guardar JSON em homeData; apresentar loading enquanto carrega; apresentar mensagem de erro se falhar; renderizar Header, hero, botões rápidos, pesquisa, sectores estratégicos, oportunidades em destaque, percurso do investidor, incentivos, estatísticas e footer. A navegação dos botões pode usar window.location.href ou React Router conforme a arquitectura adoptada."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""oportunidades""},{""id"":""MASTER-9f5719c8-0129"",""pedido"":""Código sugerido: importar React, useEffect e useState; definir API_BASE_URL com import.meta.env.VITE_API_URL; criar estado para homeData, loading, error e searchTerm; carregar dados com fetch(`${API_BASE_URL}/api/v1/home?locale=pt`); validar response.ok; guardar JSON em homeData; apresentar loading enquanto carrega; apresentar mensagem de erro se falhar; renderizar Header, hero, botões rápidos, pesquisa, sectores estratégicos, oportunidades em destaque, percurso do investidor, incentivos, estatísticas e footer. A navegação dos botões pode usar window.location.href ou React Router conforme a arquitectura adoptada."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 1179""],""aceitacao"":""Código sugerido: importar React, useEffect e useState; definir API_BASE_URL com import.meta.env.VITE_API_URL; criar estado para homeData, loading, error e searchTerm; carregar dados com fetch(`${API_BASE_URL}/api/v1/home?locale=pt`); validar response.ok; guardar JSON em homeData; apresentar loading enquanto carrega; apresentar mensagem de erro se falhar; renderizar Header, hero, botões rápidos, pesquisa, sectores estratégicos, oportunidades em destaque, percurso do investidor, incentivos, estatísticas e footer. A navegação dos botões pode usar window.location.href ou React Router conforme a arquitectura adoptada."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""oportunidades""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.opportunities: 6 registos; public.opportunity_images: tabela ausente; public.opportunity_documents: tabela ausente; public.opportunity_location_drafts: tabela ausente,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Reconciliar contrato/cláusula e provas por categoria; completar apenas falha/variante executável identificada. Response normativo não é completo. Critério individual original preservado; cobertura atual ainda não individualizada.,"OpportunityManagement, OpportunityCanonicalContract/Response, OpportunityReviewMateriality, PortalProfileAccess, OpportunityResources","030000→040000 já instalados; contratos/resources existentes, sessão/MFA, ClamD e worker para ficheiros; gates das seis categorias ON. Variantes modulares/offers continuam separadas.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: oportunidades. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,oportunidades,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Services/OpportunityManagement.php; app/Services/OpportunityResources.php; resources/js/pages/management/opportunity-draft.tsx — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"OpportunityManagementTest, OpportunityResourcesTest, OpportunityOriginReviewTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, +MASTER-efd550fd-0104,"Código sugerido: importar React, useEffect e useState; definir API_BASE_URL com import.meta.env.VITE_API_URL; criar estado para homeData, loading, error e searchTerm; carregar dados com fetch(`${API_BASE_URL}/api/v1/home?locale=pt`); validar response.ok; guardar JSON em homeData; apresentar loading enquanto carrega; apresentar mensagem de erro se falhar; renderizar Header, hero, botões rápidos, pesquisa, sectores estratégicos, oportunidades em destaque, percurso do investidor, incentivos, estatísticas e footer. A navegação dos botões pode usar window.location.href ou React Router conforme a arquitectura adoptada.",portal do investidor\backup\Reformulacao do portal do investidor 1.docx; SHA efd550fd2a9d2a21785d7b3c140d4608f1ba27c52f156e2709e9fbf388a1a569; w:p 1029 | portal do investidor\backup\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 1179,oportunidades,/api/v1/business-opportunities; /api/v1/business-opportunities/{slug}; /investidor/terra-duat; /investidor/terra-duat/novo; /investidor/terra-duat/{id}; /investidor/terra-duat/{id}/actualizacoes; /investidor/terra-duat/{id}/documentos; /investidor/terra-duat/{id}/documentos/{attachment}; /investidor/terra-duat/{id}/editar; /investidor/terra-duat/{id}/imprimir; /investidor/terra-duat/{id}/solicitar-apoio; /management/opportunities,"OpportunityManagement, OpportunityCanonicalContract/Response, OpportunityReviewMateriality, PortalProfileAccess, OpportunityResources. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Reconciliar contrato/cláusula e provas por categoria; completar apenas falha/variante executável identificada. Response normativo não é completo. Critério individual original preservado; cobertura atual ainda não individualizada.,"030000→040000 já instalados; contratos/resources existentes, sessão/MFA, ClamD e worker para ficheiros; gates das seis categorias ON. Variantes modulares/offers continuam separadas. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","MASTER-efd550fd-0104: Código sugerido: importar React, useEffect e useState; definir API_BASE_URL com import.meta.env.VITE_API_URL; criar estado para homeData, loading, error e searchTerm; carregar dados com fetch(`${API_BASE_URL}/api/v1/home?locale=pt`); validar response.ok; guardar JSON em homeData; apresentar loading enquanto carrega; apresentar mensagem de erro se falhar; renderizar Header, hero, botões rápidos, pesquisa, sectores estratégicos, oportunidades em destaque, percurso do investidor, incentivos, estatísticas e footer. A navegação dos botões pode usar window.location.href ou React Router conforme a arquitectura adoptada. | MASTER-9f5719c8-0129: Código sugerido: importar React, useEffect e useState; definir API_BASE_URL com import.meta.env.VITE_API_URL; criar estado para homeData, loading, error e searchTerm; carregar dados com fetch(`${API_BASE_URL}/api/v1/home?locale=pt`); validar response.ok; guardar JSON em homeData; apresentar loading enquanto carrega; apresentar mensagem de erro se falhar; renderizar Header, hero, botões rápidos, pesquisa, sectores estratégicos, oportunidades em destaque, percurso do investidor, incentivos, estatísticas e footer. A navegação dos botões pode usar window.location.href ou React Router conforme a arquitectura adoptada.",P1,MASTER-efd550fd-0104: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-9f5719c8-0129: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-efd550fd-0104 | MASTER-9f5719c8-0129,2,"[{""id"":""MASTER-efd550fd-0104"",""pedido"":""Código sugerido: importar React, useEffect e useState; definir API_BASE_URL com import.meta.env.VITE_API_URL; criar estado para homeData, loading, error e searchTerm; carregar dados com fetch(`${API_BASE_URL}/api/v1/home?locale=pt`); validar response.ok; guardar JSON em homeData; apresentar loading enquanto carrega; apresentar mensagem de erro se falhar; renderizar Header, hero, botões rápidos, pesquisa, sectores estratégicos, oportunidades em destaque, percurso do investidor, incentivos, estatísticas e footer. A navegação dos botões pode usar window.location.href ou React Router conforme a arquitectura adoptada."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor 1.docx; SHA efd550fd2a9d2a21785d7b3c140d4608f1ba27c52f156e2709e9fbf388a1a569; w:p 1029""],""aceitacao"":""Código sugerido: importar React, useEffect e useState; definir API_BASE_URL com import.meta.env.VITE_API_URL; criar estado para homeData, loading, error e searchTerm; carregar dados com fetch(`${API_BASE_URL}/api/v1/home?locale=pt`); validar response.ok; guardar JSON em homeData; apresentar loading enquanto carrega; apresentar mensagem de erro se falhar; renderizar Header, hero, botões rápidos, pesquisa, sectores estratégicos, oportunidades em destaque, percurso do investidor, incentivos, estatísticas e footer. A navegação dos botões pode usar window.location.href ou React Router conforme a arquitectura adoptada."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""oportunidades""},{""id"":""MASTER-9f5719c8-0129"",""pedido"":""Código sugerido: importar React, useEffect e useState; definir API_BASE_URL com import.meta.env.VITE_API_URL; criar estado para homeData, loading, error e searchTerm; carregar dados com fetch(`${API_BASE_URL}/api/v1/home?locale=pt`); validar response.ok; guardar JSON em homeData; apresentar loading enquanto carrega; apresentar mensagem de erro se falhar; renderizar Header, hero, botões rápidos, pesquisa, sectores estratégicos, oportunidades em destaque, percurso do investidor, incentivos, estatísticas e footer. A navegação dos botões pode usar window.location.href ou React Router conforme a arquitectura adoptada."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 1179""],""aceitacao"":""Código sugerido: importar React, useEffect e useState; definir API_BASE_URL com import.meta.env.VITE_API_URL; criar estado para homeData, loading, error e searchTerm; carregar dados com fetch(`${API_BASE_URL}/api/v1/home?locale=pt`); validar response.ok; guardar JSON em homeData; apresentar loading enquanto carrega; apresentar mensagem de erro se falhar; renderizar Header, hero, botões rápidos, pesquisa, sectores estratégicos, oportunidades em destaque, percurso do investidor, incentivos, estatísticas e footer. A navegação dos botões pode usar window.location.href ou React Router conforme a arquitectura adoptada."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""oportunidades""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.opportunities: 6 registos; public.opportunity_images: tabela ausente; public.opportunity_documents: tabela ausente; public.opportunity_location_drafts: tabela ausente,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global. | 23/10/2026 — adequação do hero por pedido expresso da Tempo. Aplicadas as orientações permanentes AGENTS.md de 12/10 e 22/10/2026: regras da Tempo, escolhas técnicas identificadas e preservação de dados/histórico. Rotação, WebP e composição são escolhas de implementação. Pesquisa mantém o catálogo existente; não constitui pesquisa global de legislação/licenciamento nem nova restrição organizacional. | 23/10/2026 — revisão expressa da Tempo: escrita dinâmica do hero e remoção do acesso jurídico no hero substituem as escolhas técnicas da primeira iteração. Pedido do proprietário aplicado segundo AGENTS.md de 12/10 e 22/10/2026; sem criar regras de negócio. Histórico, critérios e estados anteriores preservados. | 23/10/2026 — decisão expressa da Tempo: remover controlos visíveis do hero. Substitui os controlos adicionados como escolha de implementação, segundo as orientações permanentes AGENTS.md de 12/10 e 22/10/2026; dados, histórico e estados preservados.",Reconciliar contrato/cláusula e provas por categoria; completar apenas falha/variante executável identificada. Response normativo não é completo. Critério individual original preservado; cobertura atual ainda não individualizada.,"OpportunityManagement, OpportunityCanonicalContract/Response, OpportunityReviewMateriality, PortalProfileAccess, OpportunityResources","030000→040000 já instalados; contratos/resources existentes, sessão/MFA, ClamD e worker para ficheiros; gates das seis categorias ON. Variantes modulares/offers continuam separadas.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: oportunidades. Esforço de código adicional só após lacuna reproduzida.,"outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual. | 23/10/2026 — adequação do hero por pedido expresso da Tempo: docs/investmoz/public-portal-hero-validation.json; tools/portal-hero-qa.mjs; outputs/portal-hero-20261023/qa-results.json e capturas. Componentes reais com API/navegação sintéticas, sem base activa. Prova limitada ao hero, pesquisa de oportunidades e preservação da entrada documental; critérios mais amplos não encerrados. | 23/10/2026 — revisão expressa da Tempo: escrita dinâmica do hero; remoção de Termos de uso no hero. tools/portal-hero-qa.mjs; outputs/portal-hero-typing-20261023/qa-results.json (sete cenários, sem erros JavaScript); docs/investmoz/public-portal-hero-validation.json:latestRevision. Demonstrados título→frase, reinício manual/automático, pausa/retoma, movimento reduzido e posição estável da pesquisa. TypeScript/lint/build aprovados; dados sintéticos, sem base activa. O critério amplo desta linha não é encerrado. | 23/10/2026 — decisão expressa da Tempo: remover controlos visíveis do hero. Ausência de botão de pausa e bolinhas, rotação automática e escrita dinâmica demonstradas em sete cenários sem erros JavaScript. outputs/portal-hero-no-controls-20261023/qa-results.json; docs/investmoz/public-portal-hero-validation.json:latestRevision. Lint e compilação aprovados. Prova limitada à revisão visual; critério amplo não encerrado.",oportunidades,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Services/OpportunityManagement.php; app/Services/OpportunityResources.php; resources/js/pages/management/opportunity-draft.tsx — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"OpportunityManagementTest, OpportunityResourcesTest, OpportunityOriginReviewTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, MASTER-efd550fd-0105,"O controller deve ser colocado em app/Http/Controllers/Api/V1/HomeController.php. A versão inicial pode devolver um payload estruturado directamente, mas a versão recomendada para produção deve delegar a composição dos dados para um HomeService, permitindo cache, testes unitários e separação da lógica de negócio.",portal do investidor\backup\Reformulacao do portal do investidor 1.docx; SHA efd550fd2a9d2a21785d7b3c140d4608f1ba27c52f156e2709e9fbf388a1a569; w:p 1031 | portal do investidor\backup\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 1181,Balcão/orientação,/balcao-virtual/contextos; /balcao-virtual/dossiers; /balcao-virtual/dossiers/{id}; /balcao-virtual/dossiers/{id}/documentos; /balcao-virtual/dossiers/{id}/documentos/{document}; /balcao-virtual/dossiers/{id}/documentos/{document}/conferencia; /balcao-virtual/dossiers/{id}/etapas; /balcao-virtual/dossiers/{id}/fontes; /balcao-virtual/dossiers/{id}/orientacao; /balcao-virtual/dossiers/{id}/pedidos; /balcao-virtual/dossiers/{id}/pressupostos; /balcao-virtual/dossiers/{id}/recomendacoes,"VirtualDesk, pedidos/casos, anexos, contexto dossier e acompanhamento. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,"Pedido contextual→gravar→submeter→nova sessão→gestor→mensagem/documentos/resultado, reaproveitando A/B. Critério individual original preservado; cobertura atual ainda não individualizada.","Perfis próprios do Balcão; serviços/campos e decisões externas aplicáveis, sem inventar destinatário/prazo. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","MASTER-efd550fd-0105: O controller deve ser colocado em app/Http/Controllers/Api/V1/HomeController.php. A versão inicial pode devolver um payload estruturado directamente, mas a versão recomendada para produção deve delegar a composição dos dados para um HomeService, permitindo cache, testes unitários e separação da lógica de negócio. | MASTER-9f5719c8-0130: O controller deve ser colocado em app/Http/Controllers/Api/V1/HomeController.php. A versão inicial pode devolver um payload estruturado directamente, mas a versão recomendada para produção deve delegar a composição dos dados para um HomeService, permitindo cache, testes unitários e separação da lógica de negócio.",P2,MASTER-efd550fd-0105: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-9f5719c8-0130: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-efd550fd-0105 | MASTER-9f5719c8-0130,2,"[{""id"":""MASTER-efd550fd-0105"",""pedido"":""O controller deve ser colocado em app/Http/Controllers/Api/V1/HomeController.php. A versão inicial pode devolver um payload estruturado directamente, mas a versão recomendada para produção deve delegar a composição dos dados para um HomeService, permitindo cache, testes unitários e separação da lógica de negócio."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor 1.docx; SHA efd550fd2a9d2a21785d7b3c140d4608f1ba27c52f156e2709e9fbf388a1a569; w:p 1031""],""aceitacao"":""O controller deve ser colocado em app/Http/Controllers/Api/V1/HomeController.php. A versão inicial pode devolver um payload estruturado directamente, mas a versão recomendada para produção deve delegar a composição dos dados para um HomeService, permitindo cache, testes unitários e separação da lógica de negócio."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""Balcão/orientação""},{""id"":""MASTER-9f5719c8-0130"",""pedido"":""O controller deve ser colocado em app/Http/Controllers/Api/V1/HomeController.php. A versão inicial pode devolver um payload estruturado directamente, mas a versão recomendada para produção deve delegar a composição dos dados para um HomeService, permitindo cache, testes unitários e separação da lógica de negócio."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 1181""],""aceitacao"":""O controller deve ser colocado em app/Http/Controllers/Api/V1/HomeController.php. A versão inicial pode devolver um payload estruturado directamente, mas a versão recomendada para produção deve delegar a composição dos dados para um HomeService, permitindo cache, testes unitários e separação da lógica de negócio."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""Balcão/orientação""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.desk_cases: 1 registos; public.desk_requests: 0 registos; public.desk_institutional_links: 0 registos; public.desk_messages: 0 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.","Pedido contextual→gravar→submeter→nova sessão→gestor→mensagem/documentos/resultado, reaproveitando A/B. Critério individual original preservado; cobertura atual ainda não individualizada.","VirtualDesk, pedidos/casos, anexos, contexto dossier e acompanhamento","Perfis próprios do Balcão; serviços/campos e decisões externas aplicáveis, sem inventar destinatário/prazo.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: balcão. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,balcão,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Services/VirtualDesk.php; app/Services/Ai/InvestorGuidance.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,InvestorGuidanceTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.,Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, MASTER-efd550fd-0106,"Estrutura lógica recomendada: definir namespace App\Http\Controllers\Api\V1; importar Request, JsonResponse, Cache e modelos públicos; criar método show(Request $request): JsonResponse; validar locale com valores permitidos pt e en; aplicar cache por locale durante 10 a 30 minutos; devolver hero, quickActions, searchSuggestions, sectors, featuredOpportunities, investorJourney, incentivesPreview, legalHighlights, partnershipExchange e stats; limitar os campos expostos para evitar publicação de dados sensíveis.",portal do investidor\backup\Reformulacao do portal do investidor 1.docx; SHA efd550fd2a9d2a21785d7b3c140d4608f1ba27c52f156e2709e9fbf388a1a569; w:p 1032 | portal do investidor\backup\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 1182,Balcão/orientação,/balcao-virtual/contextos; /balcao-virtual/dossiers; /balcao-virtual/dossiers/{id}; /balcao-virtual/dossiers/{id}/documentos; /balcao-virtual/dossiers/{id}/documentos/{document}; /balcao-virtual/dossiers/{id}/documentos/{document}/conferencia; /balcao-virtual/dossiers/{id}/etapas; /balcao-virtual/dossiers/{id}/fontes; /balcao-virtual/dossiers/{id}/orientacao; /balcao-virtual/dossiers/{id}/pedidos; /balcao-virtual/dossiers/{id}/pressupostos; /balcao-virtual/dossiers/{id}/recomendacoes,"VirtualDesk, pedidos/casos, anexos, contexto dossier e acompanhamento. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,"Pedido contextual→gravar→submeter→nova sessão→gestor→mensagem/documentos/resultado, reaproveitando A/B. Critério individual original preservado; cobertura atual ainda não individualizada.","Perfis próprios do Balcão; serviços/campos e decisões externas aplicáveis, sem inventar destinatário/prazo. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","MASTER-efd550fd-0106: Estrutura lógica recomendada: definir namespace App\Http\Controllers\Api\V1; importar Request, JsonResponse, Cache e modelos públicos; criar método show(Request $request): JsonResponse; validar locale com valores permitidos pt e en; aplicar cache por locale durante 10 a 30 minutos; devolver hero, quickActions, searchSuggestions, sectors, featuredOpportunities, investorJourney, incentivesPreview, legalHighlights, partnershipExchange e stats; limitar os campos expostos para evitar publicação de dados sensíveis. | MASTER-9f5719c8-0131: Estrutura lógica recomendada: definir namespace App\Http\Controllers\Api\V1; importar Request, JsonResponse, Cache e modelos públicos; criar método show(Request $request): JsonResponse; validar locale com valores permitidos pt e en; aplicar cache por locale durante 10 a 30 minutos; devolver hero, quickActions, searchSuggestions, sectors, featuredOpportunities, investorJourney, incentivesPreview, legalHighlights, partnershipExchange e stats; limitar os campos expostos para evitar publicação de dados sensíveis.",P2,MASTER-efd550fd-0106: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-9f5719c8-0131: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-efd550fd-0106 | MASTER-9f5719c8-0131,2,"[{""id"":""MASTER-efd550fd-0106"",""pedido"":""Estrutura lógica recomendada: definir namespace App\\Http\\Controllers\\Api\\V1; importar Request, JsonResponse, Cache e modelos públicos; criar método show(Request $request): JsonResponse; validar locale com valores permitidos pt e en; aplicar cache por locale durante 10 a 30 minutos; devolver hero, quickActions, searchSuggestions, sectors, featuredOpportunities, investorJourney, incentivesPreview, legalHighlights, partnershipExchange e stats; limitar os campos expostos para evitar publicação de dados sensíveis."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor 1.docx; SHA efd550fd2a9d2a21785d7b3c140d4608f1ba27c52f156e2709e9fbf388a1a569; w:p 1032""],""aceitacao"":""Estrutura lógica recomendada: definir namespace App\\Http\\Controllers\\Api\\V1; importar Request, JsonResponse, Cache e modelos públicos; criar método show(Request $request): JsonResponse; validar locale com valores permitidos pt e en; aplicar cache por locale durante 10 a 30 minutos; devolver hero, quickActions, searchSuggestions, sectors, featuredOpportunities, investorJourney, incentivesPreview, legalHighlights, partnershipExchange e stats; limitar os campos expostos para evitar publicação de dados sensíveis."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""Balcão/orientação""},{""id"":""MASTER-9f5719c8-0131"",""pedido"":""Estrutura lógica recomendada: definir namespace App\\Http\\Controllers\\Api\\V1; importar Request, JsonResponse, Cache e modelos públicos; criar método show(Request $request): JsonResponse; validar locale com valores permitidos pt e en; aplicar cache por locale durante 10 a 30 minutos; devolver hero, quickActions, searchSuggestions, sectors, featuredOpportunities, investorJourney, incentivesPreview, legalHighlights, partnershipExchange e stats; limitar os campos expostos para evitar publicação de dados sensíveis."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 1182""],""aceitacao"":""Estrutura lógica recomendada: definir namespace App\\Http\\Controllers\\Api\\V1; importar Request, JsonResponse, Cache e modelos públicos; criar método show(Request $request): JsonResponse; validar locale com valores permitidos pt e en; aplicar cache por locale durante 10 a 30 minutos; devolver hero, quickActions, searchSuggestions, sectors, featuredOpportunities, investorJourney, incentivesPreview, legalHighlights, partnershipExchange e stats; limitar os campos expostos para evitar publicação de dados sensíveis."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""Balcão/orientação""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.desk_cases: 1 registos; public.desk_requests: 0 registos; public.desk_institutional_links: 0 registos; public.desk_messages: 0 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.","Pedido contextual→gravar→submeter→nova sessão→gestor→mensagem/documentos/resultado, reaproveitando A/B. Critério individual original preservado; cobertura atual ainda não individualizada.","VirtualDesk, pedidos/casos, anexos, contexto dossier e acompanhamento","Perfis próprios do Balcão; serviços/campos e decisões externas aplicáveis, sem inventar destinatário/prazo.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: balcão. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,balcão,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Services/VirtualDesk.php; app/Services/Ai/InvestorGuidance.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,InvestorGuidanceTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.,Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, MASTER-efd550fd-0107,"Para manter controllers limpos e regras reutilizáveis, os formulários públicos devem usar Form Requests. Os exemplos prioritários para a home são: StoreInterestRequest, StoreContactRequest e SearchOpportunityRequest.",portal do investidor\backup\Reformulacao do portal do investidor 1.docx; SHA efd550fd2a9d2a21785d7b3c140d4608f1ba27c52f156e2709e9fbf388a1a569; w:p 1041 | portal do investidor\backup\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 1191,biblioteca,//; /Simulador; /api/v1/ai/documents; /api/v1/documents/recommendations; /api/v2/investment/admin/legal-sources; /api/v2/investment/admin/legal-sources/{id}/{action}; /apoio; /balcao-virtual; /balcao-virtual/dossiers/{id}/documentos/{document}/conferencia; /como-investir; /documentos; /documentos/{id},"documents, biblioteca, importação autenticada, VerifiedDocumentBinary, jobs/derivadas. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Cobrir consulta/importação/doc/derivada/hash/perfil e revogação; preservar original; divulgação separada. Não inferir relação territorial. Critério individual original preservado; cobertura atual ainda não individualizada.,Scanner/worker/GD/WebP e originais privados; ACL por oportunidade/sala diferente de partilha individual não implementada. LegadoOFF. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,"MASTER-efd550fd-0107: Para manter controllers limpos e regras reutilizáveis, os formulários públicos devem usar Form Requests. Os exemplos prioritários para a home são: StoreInterestRequest, StoreContactRequest e SearchOpportunityRequest. | MASTER-9f5719c8-0132: Para manter controllers limpos e regras reutilizáveis, os formulários públicos devem usar Form Requests. Os exemplos prioritários para a home são: StoreInterestRequest, StoreContactRequest e SearchOpportunityRequest.",P2,MASTER-efd550fd-0107: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-9f5719c8-0132: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-efd550fd-0107 | MASTER-9f5719c8-0132,2,"[{""id"":""MASTER-efd550fd-0107"",""pedido"":""Para manter controllers limpos e regras reutilizáveis, os formulários públicos devem usar Form Requests. Os exemplos prioritários para a home são: StoreInterestRequest, StoreContactRequest e SearchOpportunityRequest."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor 1.docx; SHA efd550fd2a9d2a21785d7b3c140d4608f1ba27c52f156e2709e9fbf388a1a569; w:p 1041""],""aceitacao"":""Para manter controllers limpos e regras reutilizáveis, os formulários públicos devem usar Form Requests. Os exemplos prioritários para a home são: StoreInterestRequest, StoreContactRequest e SearchOpportunityRequest."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""biblioteca""},{""id"":""MASTER-9f5719c8-0132"",""pedido"":""Para manter controllers limpos e regras reutilizáveis, os formulários públicos devem usar Form Requests. Os exemplos prioritários para a home são: StoreInterestRequest, StoreContactRequest e SearchOpportunityRequest."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 1191""],""aceitacao"":""Para manter controllers limpos e regras reutilizáveis, os formulários públicos devem usar Form Requests. Os exemplos prioritários para a home são: StoreInterestRequest, StoreContactRequest e SearchOpportunityRequest."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""biblioteca""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.documents: 4 registos; public.portal_resources: 4 registos; public.portal_resource_links: 19 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Cobrir consulta/importação/doc/derivada/hash/perfil e revogação; preservar original; divulgação separada. Não inferir relação territorial. Critério individual original preservado; cobertura atual ainda não individualizada.,"documents, biblioteca, importação autenticada, VerifiedDocumentBinary, jobs/derivadas",Scanner/worker/GD/WebP e originais privados; ACL por oportunidade/sala diferente de partilha individual não implementada. LegadoOFF.,Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: documentos e legado. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,documentos e legado,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Http/Controllers/PortalServicesController.php; app/Jobs/ScanDocumentForMalware.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"PortalServicesTest, DocumentLibrarySchemaCompatibilityTest, ImportDocumentBatchTest, ClamDScannerIntegrationTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, @@ -3120,7 +3120,7 @@ MASTER-149673c0-0011, Permitir utilização em telemóvel e por teclado.,..\. MASTER-149673c0-0012, Não publicar dados pessoais ou anexos confidenciais automaticamente.,..\..\..\..\..\..\Users\macbook\.codex\attachments\ddd6740c-486e-4ebf-a11e-c9687206178a\Pasted text.txt; SHA 149673c0e35573716086d72f65e1b8e6c805c4f890b44722b839d4ce7e6caf15; linha 140,biblioteca,//; /Simulador; /api/v1/ai/documents; /api/v1/documents/recommendations; /api/v2/investment/admin/legal-sources; /api/v2/investment/admin/legal-sources/{id}/{action}; /apoio; /balcao-virtual; /balcao-virtual/dossiers/{id}/documentos/{document}/conferencia; /como-investir; /documentos; /documentos/{id},"documents, biblioteca, importação autenticada, VerifiedDocumentBinary, jobs/derivadas. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Cobrir consulta/importação/doc/derivada/hash/perfil e revogação; preservar original; divulgação separada. Não inferir relação territorial. Critério individual original preservado; cobertura atual ainda não individualizada.,Scanner/worker/GD/WebP e originais privados; ACL por oportunidade/sala diferente de partilha individual não implementada. LegadoOFF. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,MASTER-149673c0-0012:  Não publicar dados pessoais ou anexos confidenciais automaticamente.,P2,MASTER-149673c0-0012: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-149673c0-0012,1,"[{""id"":""MASTER-149673c0-0012"",""pedido"":"" Não publicar dados pessoais ou anexos confidenciais automaticamente."",""fontes"":[""..\\..\\..\\..\\..\\..\\Users\\macbook\\.codex\\attachments\\ddd6740c-486e-4ebf-a11e-c9687206178a\\Pasted text.txt; SHA 149673c0e35573716086d72f65e1b8e6c805c4f890b44722b839d4ce7e6caf15; linha 140""],""aceitacao"":"" Não publicar dados pessoais ou anexos confidenciais automaticamente."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""biblioteca""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.documents: 4 registos; public.portal_resources: 4 registos; public.portal_resource_links: 19 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Cobrir consulta/importação/doc/derivada/hash/perfil e revogação; preservar original; divulgação separada. Não inferir relação territorial. Critério individual original preservado; cobertura atual ainda não individualizada.,"documents, biblioteca, importação autenticada, VerifiedDocumentBinary, jobs/derivadas",Scanner/worker/GD/WebP e originais privados; ACL por oportunidade/sala diferente de partilha individual não implementada. LegadoOFF.,Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: documentos e legado. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,documentos e legado,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Http/Controllers/PortalServicesController.php; app/Jobs/ScanDocumentForMalware.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"PortalServicesTest, DocumentLibrarySchemaCompatibilityTest, ImportDocumentBatchTest, ClamDScannerIntegrationTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, MASTER-149673c0-0013, Permitir actualizar disponibilidade e solicitar suspensão ou encerramento.,..\..\..\..\..\..\Users\macbook\.codex\attachments\ddd6740c-486e-4ebf-a11e-c9687206178a\Pasted text.txt; SHA 149673c0e35573716086d72f65e1b8e6c805c4f890b44722b839d4ce7e6caf15; linha 141,CRM/solicitações,//; /Simulador; /api/v1/documents/recommendations; /api/v1/investment/submissions; /api/v1/investment/submissions/{id}; /api/v1/investment/submissions/{id}/attachments; /api/v1/investment/submissions/{id}/attachments/{attachment}; /api/v1/investment/submissions/{id}/submit; /apoio; /balcao-virtual; /como-investir; /documentos,"investors/contacts/leads/tasks, OpportunityContacts, acompanhamento interno existente. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,"Converter sem duplicar, tarefa/responsável/próxima ação recuperáveis; corrigir apenas falha comprovada. Critério individual original preservado; cobertura atual ainda não individualizada.",Relações mestre/contexto e autorizações; não depende de CRM externo. C131 sóQA. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,MASTER-149673c0-0013:  Permitir actualizar disponibilidade e solicitar suspensão ou encerramento.,P2,MASTER-149673c0-0013: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-149673c0-0013,1,"[{""id"":""MASTER-149673c0-0013"",""pedido"":"" Permitir actualizar disponibilidade e solicitar suspensão ou encerramento."",""fontes"":[""..\\..\\..\\..\\..\\..\\Users\\macbook\\.codex\\attachments\\ddd6740c-486e-4ebf-a11e-c9687206178a\\Pasted text.txt; SHA 149673c0e35573716086d72f65e1b8e6c805c4f890b44722b839d4ce7e6caf15; linha 141""],""aceitacao"":"" Permitir actualizar disponibilidade e solicitar suspensão ou encerramento."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""CRM/solicitações""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.interest_requests: 4 registos; public.leads: 0 registos; public.investors: 3 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.","Converter sem duplicar, tarefa/responsável/próxima ação recuperáveis; corrigir apenas falha comprovada. Critério individual original preservado; cobertura atual ainda não individualizada.","investors/contacts/leads/tasks, OpportunityContacts, acompanhamento interno existente",Relações mestre/contexto e autorizações; não depende de CRM externo. C131 sóQA.,Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: acompanhamento. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,acompanhamento,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Http/Controllers/CrmController.php; app/Services/DeclaredOriginStatistics.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"InterestSubmissionTest, InvestmentWorkspaceTest, PortalOriginCompatibilityTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, MASTER-149673c0-0014, Registar alterações e exigir nova revisão quando forem modificados dados materiais.,..\..\..\..\..\..\Users\macbook\.codex\attachments\ddd6740c-486e-4ebf-a11e-c9687206178a\Pasted text.txt; SHA 149673c0e35573716086d72f65e1b8e6c805c4f890b44722b839d4ce7e6caf15; linha 142,governação/outros,/api/v1/investment/admin/interests/{interest}/status; /management/history; /management/interests; /management/interests/{interest}; /management/interests/{interest}/consent/contact; /management/interests/{interest}/consent/proponent; /management/opportunities; /management/opportunities/create; /management/opportunities/drafts; /management/opportunities/{id}/draft; /management/opportunities/{id}/edit; /management/opportunities/{id}/lifecycle,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.",MASTER-149673c0-0014:  Registar alterações e exigir nova revisão quando forem modificados dados materiais.,P2,MASTER-149673c0-0014: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-149673c0-0014,1,"[{""id"":""MASTER-149673c0-0014"",""pedido"":"" Registar alterações e exigir nova revisão quando forem modificados dados materiais."",""fontes"":[""..\\..\\..\\..\\..\\..\\Users\\macbook\\.codex\\attachments\\ddd6740c-486e-4ebf-a11e-c9687206178a\\Pasted text.txt; SHA 149673c0e35573716086d72f65e1b8e6c805c4f890b44722b839d4ce7e6caf15; linha 142""],""aceitacao"":"" Registar alterações e exigir nova revisão quando forem modificados dados materiais."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,Requisito transversal; consultar estado-ativo-after.json,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer","Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: governação e demais cláusulas. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,governação e demais cláusulas,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",AGENTS.md — componentes do domínio encontrados; correspondência integral deste requisito não presumida,; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.,Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, -MASTER-55050f60-0001,"Implementar na página inicial do portal uma entrada visível “Documentos e Formulários”, ligada a uma biblioteca central de legislação, procedimentos, formulários, modelos e materiais de apoio.",..\..\..\..\..\..\Users\macbook\.codex\attachments\e1fa9a32-14ae-46f3-ac02-c7115c832175\Pasted text.txt; SHA 55050f60a15d18b119c83799231a0af34b00738f7ae8202a232a07df23f65fd1; linha 3,biblioteca,//; /Simulador; /api/v1/ai/documents; /api/v1/documents/recommendations; /api/v2/investment/admin/legal-sources; /api/v2/investment/admin/legal-sources/{id}/{action}; /apoio; /balcao-virtual; /balcao-virtual/dossiers/{id}/documentos/{document}/conferencia; /como-investir; /documentos; /documentos/{id},"documents, biblioteca, importação autenticada, VerifiedDocumentBinary, jobs/derivadas. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Cobrir consulta/importação/doc/derivada/hash/perfil e revogação; preservar original; divulgação separada. Não inferir relação territorial. Critério individual original preservado; cobertura atual ainda não individualizada.,Scanner/worker/GD/WebP e originais privados; ACL por oportunidade/sala diferente de partilha individual não implementada. LegadoOFF. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,"MASTER-55050f60-0001: Implementar na página inicial do portal uma entrada visível “Documentos e Formulários”, ligada a uma biblioteca central de legislação, procedimentos, formulários, modelos e materiais de apoio.",P2,MASTER-55050f60-0001: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-55050f60-0001,1,"[{""id"":""MASTER-55050f60-0001"",""pedido"":""Implementar na página inicial do portal uma entrada visível “Documentos e Formulários”, ligada a uma biblioteca central de legislação, procedimentos, formulários, modelos e materiais de apoio."",""fontes"":[""..\\..\\..\\..\\..\\..\\Users\\macbook\\.codex\\attachments\\e1fa9a32-14ae-46f3-ac02-c7115c832175\\Pasted text.txt; SHA 55050f60a15d18b119c83799231a0af34b00738f7ae8202a232a07df23f65fd1; linha 3""],""aceitacao"":""Implementar na página inicial do portal uma entrada visível “Documentos e Formulários”, ligada a uma biblioteca central de legislação, procedimentos, formulários, modelos e materiais de apoio."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""biblioteca""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.documents: 4 registos; public.portal_resources: 4 registos; public.portal_resource_links: 19 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Cobrir consulta/importação/doc/derivada/hash/perfil e revogação; preservar original; divulgação separada. Não inferir relação territorial. Critério individual original preservado; cobertura atual ainda não individualizada.,"documents, biblioteca, importação autenticada, VerifiedDocumentBinary, jobs/derivadas",Scanner/worker/GD/WebP e originais privados; ACL por oportunidade/sala diferente de partilha individual não implementada. LegadoOFF.,Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: documentos e legado. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,documentos e legado,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Http/Controllers/PortalServicesController.php; app/Jobs/ScanDocumentForMalware.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"PortalServicesTest, DocumentLibrarySchemaCompatibilityTest, ImportDocumentBatchTest, ClamDScannerIntegrationTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, +MASTER-55050f60-0001,"Implementar na página inicial do portal uma entrada visível “Documentos e Formulários”, ligada a uma biblioteca central de legislação, procedimentos, formulários, modelos e materiais de apoio.",..\..\..\..\..\..\Users\macbook\.codex\attachments\e1fa9a32-14ae-46f3-ac02-c7115c832175\Pasted text.txt; SHA 55050f60a15d18b119c83799231a0af34b00738f7ae8202a232a07df23f65fd1; linha 3,biblioteca,//; /Simulador; /api/v1/ai/documents; /api/v1/documents/recommendations; /api/v2/investment/admin/legal-sources; /api/v2/investment/admin/legal-sources/{id}/{action}; /apoio; /balcao-virtual; /balcao-virtual/dossiers/{id}/documentos/{document}/conferencia; /como-investir; /documentos; /documentos/{id},"documents, biblioteca, importação autenticada, VerifiedDocumentBinary, jobs/derivadas. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Cobrir consulta/importação/doc/derivada/hash/perfil e revogação; preservar original; divulgação separada. Não inferir relação territorial. Critério individual original preservado; cobertura atual ainda não individualizada.,Scanner/worker/GD/WebP e originais privados; ACL por oportunidade/sala diferente de partilha individual não implementada. LegadoOFF. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,"MASTER-55050f60-0001: Implementar na página inicial do portal uma entrada visível “Documentos e Formulários”, ligada a uma biblioteca central de legislação, procedimentos, formulários, modelos e materiais de apoio.",P2,MASTER-55050f60-0001: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-55050f60-0001,1,"[{""id"":""MASTER-55050f60-0001"",""pedido"":""Implementar na página inicial do portal uma entrada visível “Documentos e Formulários”, ligada a uma biblioteca central de legislação, procedimentos, formulários, modelos e materiais de apoio."",""fontes"":[""..\\..\\..\\..\\..\\..\\Users\\macbook\\.codex\\attachments\\e1fa9a32-14ae-46f3-ac02-c7115c832175\\Pasted text.txt; SHA 55050f60a15d18b119c83799231a0af34b00738f7ae8202a232a07df23f65fd1; linha 3""],""aceitacao"":""Implementar na página inicial do portal uma entrada visível “Documentos e Formulários”, ligada a uma biblioteca central de legislação, procedimentos, formulários, modelos e materiais de apoio."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""biblioteca""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.documents: 4 registos; public.portal_resources: 4 registos; public.portal_resource_links: 19 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global. | 23/10/2026 — adequação do hero por pedido expresso da Tempo. Aplicadas as orientações permanentes AGENTS.md de 12/10 e 22/10/2026: regras da Tempo, escolhas técnicas identificadas e preservação de dados/histórico. Rotação, WebP e composição são escolhas de implementação. Pesquisa mantém o catálogo existente; não constitui pesquisa global de legislação/licenciamento nem nova restrição organizacional.",Cobrir consulta/importação/doc/derivada/hash/perfil e revogação; preservar original; divulgação separada. Não inferir relação territorial. Critério individual original preservado; cobertura atual ainda não individualizada.,"documents, biblioteca, importação autenticada, VerifiedDocumentBinary, jobs/derivadas",Scanner/worker/GD/WebP e originais privados; ACL por oportunidade/sala diferente de partilha individual não implementada. LegadoOFF.,Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: documentos e legado. Esforço de código adicional só após lacuna reproduzida.,"outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual. | 23/10/2026 — adequação do hero por pedido expresso da Tempo: docs/investmoz/public-portal-hero-validation.json; tools/portal-hero-qa.mjs; outputs/portal-hero-20261023/qa-results.json e capturas. Componentes reais com API/navegação sintéticas, sem base activa. Prova limitada ao hero, pesquisa de oportunidades e preservação da entrada documental; critérios mais amplos não encerrados.",documentos e legado,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Http/Controllers/PortalServicesController.php; app/Jobs/ScanDocumentForMalware.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"PortalServicesTest, DocumentLibrarySchemaCompatibilityTest, ImportDocumentBatchTest, ClamDScannerIntegrationTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, MASTER-55050f60-0002,"Inspeccionar os documentos, tabelas, armazenamento, fontes jurídicas, anexos e pesquisas existentes. Reutilizar essa infraestrutura, evitando bibliotecas paralelas.",..\..\..\..\..\..\Users\macbook\.codex\attachments\e1fa9a32-14ae-46f3-ac02-c7115c832175\Pasted text.txt; SHA 55050f60a15d18b119c83799231a0af34b00738f7ae8202a232a07df23f65fd1; linha 9,biblioteca,//; /Simulador; /api/v1/ai/documents; /api/v1/documents/recommendations; /api/v2/investment/admin/legal-sources; /api/v2/investment/admin/legal-sources/{id}/{action}; /apoio; /balcao-virtual; /balcao-virtual/dossiers/{id}/documentos/{document}/conferencia; /como-investir; /documentos; /documentos/{id},"documents, biblioteca, importação autenticada, VerifiedDocumentBinary, jobs/derivadas. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Cobrir consulta/importação/doc/derivada/hash/perfil e revogação; preservar original; divulgação separada. Não inferir relação territorial. Critério individual original preservado; cobertura atual ainda não individualizada.,Scanner/worker/GD/WebP e originais privados; ACL por oportunidade/sala diferente de partilha individual não implementada. LegadoOFF. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,"MASTER-55050f60-0002: Inspeccionar os documentos, tabelas, armazenamento, fontes jurídicas, anexos e pesquisas existentes. Reutilizar essa infraestrutura, evitando bibliotecas paralelas.",P2,MASTER-55050f60-0002: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-55050f60-0002,1,"[{""id"":""MASTER-55050f60-0002"",""pedido"":""Inspeccionar os documentos, tabelas, armazenamento, fontes jurídicas, anexos e pesquisas existentes. Reutilizar essa infraestrutura, evitando bibliotecas paralelas."",""fontes"":[""..\\..\\..\\..\\..\\..\\Users\\macbook\\.codex\\attachments\\e1fa9a32-14ae-46f3-ac02-c7115c832175\\Pasted text.txt; SHA 55050f60a15d18b119c83799231a0af34b00738f7ae8202a232a07df23f65fd1; linha 9""],""aceitacao"":""Inspeccionar os documentos, tabelas, armazenamento, fontes jurídicas, anexos e pesquisas existentes. Reutilizar essa infraestrutura, evitando bibliotecas paralelas."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""biblioteca""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.documents: 4 registos; public.portal_resources: 4 registos; public.portal_resource_links: 19 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Cobrir consulta/importação/doc/derivada/hash/perfil e revogação; preservar original; divulgação separada. Não inferir relação territorial. Critério individual original preservado; cobertura atual ainda não individualizada.,"documents, biblioteca, importação autenticada, VerifiedDocumentBinary, jobs/derivadas",Scanner/worker/GD/WebP e originais privados; ACL por oportunidade/sala diferente de partilha individual não implementada. LegadoOFF.,Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: documentos e legado. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,documentos e legado,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Http/Controllers/PortalServicesController.php; app/Jobs/ScanDocumentForMalware.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"PortalServicesTest, DocumentLibrarySchemaCompatibilityTest, ImportDocumentBatchTest, ClamDScannerIntegrationTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, MASTER-55050f60-0003,"Inventariar a documentação já disponibilizada pelo responsável do portal e os ficheiros acessíveis nas pastas de referência. Registar conteúdos inacessíveis como pendentes, sem afirmar que foram analisados.",..\..\..\..\..\..\Users\macbook\.codex\attachments\e1fa9a32-14ae-46f3-ac02-c7115c832175\Pasted text.txt; SHA 55050f60a15d18b119c83799231a0af34b00738f7ae8202a232a07df23f65fd1; linha 11,CRM/solicitações,//; /Simulador; /api/v1/documents/recommendations; /api/v1/investment/submissions; /api/v1/investment/submissions/{id}; /api/v1/investment/submissions/{id}/attachments; /api/v1/investment/submissions/{id}/attachments/{attachment}; /api/v1/investment/submissions/{id}/submit; /apoio; /balcao-virtual; /como-investir; /documentos,"investors/contacts/leads/tasks, OpportunityContacts, acompanhamento interno existente. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,"Converter sem duplicar, tarefa/responsável/próxima ação recuperáveis; corrigir apenas falha comprovada. Critério individual original preservado; cobertura atual ainda não individualizada.",Relações mestre/contexto e autorizações; não depende de CRM externo. C131 sóQA. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,"MASTER-55050f60-0003: Inventariar a documentação já disponibilizada pelo responsável do portal e os ficheiros acessíveis nas pastas de referência. Registar conteúdos inacessíveis como pendentes, sem afirmar que foram analisados.",P2,MASTER-55050f60-0003: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-55050f60-0003,1,"[{""id"":""MASTER-55050f60-0003"",""pedido"":""Inventariar a documentação já disponibilizada pelo responsável do portal e os ficheiros acessíveis nas pastas de referência. Registar conteúdos inacessíveis como pendentes, sem afirmar que foram analisados."",""fontes"":[""..\\..\\..\\..\\..\\..\\Users\\macbook\\.codex\\attachments\\e1fa9a32-14ae-46f3-ac02-c7115c832175\\Pasted text.txt; SHA 55050f60a15d18b119c83799231a0af34b00738f7ae8202a232a07df23f65fd1; linha 11""],""aceitacao"":""Inventariar a documentação já disponibilizada pelo responsável do portal e os ficheiros acessíveis nas pastas de referência. Registar conteúdos inacessíveis como pendentes, sem afirmar que foram analisados."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""CRM/solicitações""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.interest_requests: 4 registos; public.leads: 0 registos; public.investors: 3 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.","Converter sem duplicar, tarefa/responsável/próxima ação recuperáveis; corrigir apenas falha comprovada. Critério individual original preservado; cobertura atual ainda não individualizada.","investors/contacts/leads/tasks, OpportunityContacts, acompanhamento interno existente",Relações mestre/contexto e autorizações; não depende de CRM externo. C131 sóQA.,Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: acompanhamento. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,acompanhamento,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Http/Controllers/CrmController.php; app/Services/DeclaredOriginStatistics.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"InterestSubmissionTest, InvestmentWorkspaceTest, PortalOriginCompatibilityTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, MASTER-55050f60-0004,"Preservar os originais. Detectar duplicados por conteúdo e identidade documental; manter versões e traduções relacionadas, sem as tratar como documentos equivalentes ou diplomas diferentes.",..\..\..\..\..\..\Users\macbook\.codex\attachments\e1fa9a32-14ae-46f3-ac02-c7115c832175\Pasted text.txt; SHA 55050f60a15d18b119c83799231a0af34b00738f7ae8202a232a07df23f65fd1; linha 13,biblioteca,//; /Simulador; /api/v1/ai/documents; /api/v1/documents/recommendations; /api/v2/investment/admin/legal-sources; /api/v2/investment/admin/legal-sources/{id}/{action}; /apoio; /balcao-virtual; /balcao-virtual/dossiers/{id}/documentos/{document}/conferencia; /como-investir; /documentos; /documentos/{id},"documents, biblioteca, importação autenticada, VerifiedDocumentBinary, jobs/derivadas. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Cobrir consulta/importação/doc/derivada/hash/perfil e revogação; preservar original; divulgação separada. Não inferir relação territorial. Critério individual original preservado; cobertura atual ainda não individualizada.,Scanner/worker/GD/WebP e originais privados; ACL por oportunidade/sala diferente de partilha individual não implementada. LegadoOFF. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,"MASTER-55050f60-0004: Preservar os originais. Detectar duplicados por conteúdo e identidade documental; manter versões e traduções relacionadas, sem as tratar como documentos equivalentes ou diplomas diferentes.",P2,MASTER-55050f60-0004: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-55050f60-0004,1,"[{""id"":""MASTER-55050f60-0004"",""pedido"":""Preservar os originais. Detectar duplicados por conteúdo e identidade documental; manter versões e traduções relacionadas, sem as tratar como documentos equivalentes ou diplomas diferentes."",""fontes"":[""..\\..\\..\\..\\..\\..\\Users\\macbook\\.codex\\attachments\\e1fa9a32-14ae-46f3-ac02-c7115c832175\\Pasted text.txt; SHA 55050f60a15d18b119c83799231a0af34b00738f7ae8202a232a07df23f65fd1; linha 13""],""aceitacao"":""Preservar os originais. Detectar duplicados por conteúdo e identidade documental; manter versões e traduções relacionadas, sem as tratar como documentos equivalentes ou diplomas diferentes."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""biblioteca""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.documents: 4 registos; public.portal_resources: 4 registos; public.portal_resource_links: 19 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Cobrir consulta/importação/doc/derivada/hash/perfil e revogação; preservar original; divulgação separada. Não inferir relação territorial. Critério individual original preservado; cobertura atual ainda não individualizada.,"documents, biblioteca, importação autenticada, VerifiedDocumentBinary, jobs/derivadas",Scanner/worker/GD/WebP e originais privados; ACL por oportunidade/sala diferente de partilha individual não implementada. LegadoOFF.,Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: documentos e legado. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,documentos e legado,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Http/Controllers/PortalServicesController.php; app/Jobs/ScanDocumentForMalware.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"PortalServicesTest, DocumentLibrarySchemaCompatibilityTest, ImportDocumentBatchTest, ClamDScannerIntegrationTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,, diff --git a/public/images/hero/hero-1-mobile.webp b/public/images/hero/hero-1-mobile.webp new file mode 100644 index 00000000..36fd5196 Binary files /dev/null and b/public/images/hero/hero-1-mobile.webp differ diff --git a/public/images/hero/hero-1.png b/public/images/hero/hero-1.png new file mode 100644 index 00000000..23cc7f2e Binary files /dev/null and b/public/images/hero/hero-1.png differ diff --git a/public/images/hero/hero-1.webp b/public/images/hero/hero-1.webp new file mode 100644 index 00000000..36ccbc7c Binary files /dev/null and b/public/images/hero/hero-1.webp differ diff --git a/public/images/hero/hero-3-mobile.webp b/public/images/hero/hero-3-mobile.webp new file mode 100644 index 00000000..79e33232 Binary files /dev/null and b/public/images/hero/hero-3-mobile.webp differ diff --git a/public/images/hero/hero-3.jpg b/public/images/hero/hero-3.jpg new file mode 100644 index 00000000..95b1d033 Binary files /dev/null and b/public/images/hero/hero-3.jpg differ diff --git a/public/images/hero/hero-3.webp b/public/images/hero/hero-3.webp new file mode 100644 index 00000000..18466567 Binary files /dev/null and b/public/images/hero/hero-3.webp differ diff --git a/resources/css/app.css b/resources/css/app.css index d5cbc229..76527569 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -9,6 +9,22 @@ @import './tempo-header.css'; +@keyframes portal-hero-caret { + 50% { + opacity: 0; + } +} + +.portal-hero-caret { + animation: portal-hero-caret 0.8s step-end infinite; +} + +@media (prefers-reduced-motion: reduce) { + .portal-hero-caret { + animation: none; + } +} + .tempo-dropdown { z-index: 60; border: 1px solid #e2e8f0; diff --git a/resources/js/components/portal-hero.tsx b/resources/js/components/portal-hero.tsx new file mode 100644 index 00000000..cce0606b --- /dev/null +++ b/resources/js/components/portal-hero.tsx @@ -0,0 +1,305 @@ +import { ArrowRight, Search } from 'lucide-react'; +import { useEffect, useState } from 'react'; +import type { FormEvent } from 'react'; +import type { HomeResponse } from '@/lib/portal-api'; + +const slides = [ + { + image: '/images/hero/hero-1.webp', + mobile: '/images/hero/hero-1-mobile.webp', + }, + { + image: '/images/hero/hero-3.webp', + mobile: '/images/hero/hero-3-mobile.webp', + }, +]; + +const heroTitle = 'INVISTA EM MOÇAMBIQUE'; +const heroSubtitle = + 'Transforme informação em decisões e ideias em negócios reais.'; +const typingStart = 250; +const titleStep = 50; +const subtitleStep = 28; +const subtitleStart = typingStart + heroTitle.length * titleStep + 150; +const typingDuration = subtitleStart + heroSubtitle.length * subtitleStep; + +function TypewriterLine({ + text, + visibleText, + caret = false, + running, +}: { + text: string; + visibleText: string; + caret?: boolean; + running: boolean; +}) { + return ( + + {text} + {/* Reserve the final wrapping before the first character appears. */} +