From 71551deb73f29d5b4f208d78e875bfed5aa8bfd2 Mon Sep 17 00:00:00 2001
From: Paulo Massingue
Date: Mon, 26 Oct 2026 16:02:04 +0200
Subject: [PATCH] restaturacao da cor nornmal de porque incvestir em Mocambique
---
.../Controllers/PortalServicesController.php | 1 +
.../Controllers/PublicPortalController.php | 4 +-
app/Services/SectorInvestment.php | 11 ++
.../unification/traceability-and-manual.md | 17 ++
.../v2/auditoria-portal/matriz-requisitos.csv | 10 +-
.../components/educational-article-card.tsx | 7 +-
resources/js/components/sector-content.tsx | 112 +++++++++++++
resources/js/components/sector-entry.tsx | 23 ++-
resources/js/pages/portal/services.tsx | 157 ++++++------------
resources/js/pages/portal/why-invest.tsx | 2 +-
tests/Feature/SectorCatalogueContentTest.php | 95 +++++++++++
11 files changed, 315 insertions(+), 124 deletions(-)
create mode 100644 resources/js/components/sector-content.tsx
create mode 100644 tests/Feature/SectorCatalogueContentTest.php
diff --git a/app/Http/Controllers/PortalServicesController.php b/app/Http/Controllers/PortalServicesController.php
index 81bfc3f3..d0d4dda8 100644
--- a/app/Http/Controllers/PortalServicesController.php
+++ b/app/Http/Controllers/PortalServicesController.php
@@ -71,6 +71,7 @@ class PortalServicesController extends Controller
$props = ['section' => $page, 'filters' => $filters, 'countries' => app(CountryCatalogue::class)->all()];
if ($page === 'sectors') {
$props['sectors'] = \App\Services\SectorOrganization::catalog();
+ $props['sectorDetails'] = $props['sectors']->map(fn (Sector $sector) => app(\App\Services\SectorInvestment::class)->page($sector))->values();
}
if (in_array($page, ['documents', 'legislation'], true)) {
$query = $this->resources();
diff --git a/app/Http/Controllers/PublicPortalController.php b/app/Http/Controllers/PublicPortalController.php
index 328d50ea..a38ff0d2 100644
--- a/app/Http/Controllers/PublicPortalController.php
+++ b/app/Http/Controllers/PublicPortalController.php
@@ -25,9 +25,7 @@ class PublicPortalController extends Controller
if ($slug === 'mercado-financeiro/fintech') $slug = 'fintech';
$sector = Sector::where('slug', $slug)->where('is_active', true)->whereNotNull('published_at')->firstOrFail();
- return Inertia::render('portal/services', ['section' => 'sector', 'sector' => $sector->only(['id', 'name', 'slug', 'description', 'short_description']),
- 'sectorEntry' => array_key_exists($sector->slug, SectorInvestment::CONTENT) ? app(SectorInvestment::class)->publicView($sector) : null,
- 'opportunities' => \App\Services\SectorOrganization::opportunities($sector)->latest('published_at')->limit(12)->get(['id', 'title', 'slug', 'province', 'summary'])]);
+ return Inertia::render('portal/services', ['section' => 'sector', ...app(SectorInvestment::class)->page($sector)]);
}
public function opportunity(string $slug): Response
diff --git a/app/Services/SectorInvestment.php b/app/Services/SectorInvestment.php
index 796d33ca..cf9a4c8e 100644
--- a/app/Services/SectorInvestment.php
+++ b/app/Services/SectorInvestment.php
@@ -34,6 +34,17 @@ final class SectorInvestment
return [...$sector->only(['id', 'name', 'slug']), 'href' => SectorOrganization::href($sector->slug)];
}
+ /** Public detail shared by the catalogue and the individual sector page. */
+ public function page(Sector $sector): array
+ {
+ return [
+ 'sector' => $sector->only(['id', 'name', 'slug', 'description', 'short_description']),
+ 'sectorEntry' => $this->publicView($sector),
+ 'opportunities' => SectorOrganization::opportunities($sector)->latest('published_at')
+ ->limit(12)->get(['id', 'title', 'slug', 'province', 'summary']),
+ ];
+ }
+
public function publicView(Sector $sector): array
{
$query = SectorOrganization::opportunities($sector);
diff --git a/docs/investmoz/unification/traceability-and-manual.md b/docs/investmoz/unification/traceability-and-manual.md
index eb8e7b7b..07f64e35 100644
--- a/docs/investmoz/unification/traceability-and-manual.md
+++ b/docs/investmoz/unification/traceability-and-manual.md
@@ -6471,3 +6471,20 @@ Fontes e inventário8143 reutilizados dos cotejos aceitesCBF16 eDecreto72/2013ar
### Porquê investir — fundo azul, 26/10/2026
Pedido expresso da Tempo: ajustar o fundo para azul bebé ou azul IBM. Escolha de apresentação: IBM Blue 20, #D0E2FF, da paleta oficial https://www.carbondesignsystem.com/building-blocks/foundations/color/code. Substitui #BBC0C6 apenas no bloco dos cinco parágrafos; a decisão anterior fica no histórico. Inventário do delta: mantidos texto escuro, geometria compacta, cinco parágrafos editoriais, 12 anteriores, sete cartões, 15 links e a disposição aprovada, sem perda confirmada. Sem alteração de schema, dados, configuração, permissões ou cálculos. Registo em V2-01 na matriz existente. Verificação deste azul concluída: build e diff passaram; prévia isolada em 1440 e 390 px confirmou rgb(208, 226, 255), equivalente a #D0E2FF, sem alteração da geometria, 17 parágrafos ou 15 links e sem transbordo. Captura de computador inspeccionada. Recibo em outputs/why-invest-blue-20261026/layout.json. Sem prova do activo; alteração local sem publicação.
+
+
+### Porquê investir — retirar o fundo, 26/10/2026
+
+[SEM-FUNDO-EDITORIAL-20261026] Pedido expresso da Tempo: remover o fundo dos cinco parágrafos e deixar a apresentação normal. Retirados fundo azul e arredondamento do bloco, mantendo texto, disposição e espaçamentos compactos. Decisões anteriores conservadas no histórico. Sem alteração de dados, permissões ou cálculos. Verificação concluída: build e diff passaram; prévia isolada em 1440/390 px confirmou fundo transparente, geometria idêntica e preservação dos 17 parágrafos/15 links. Recibo em outputs/why-invest-no-background-20261026/. Alteração local, sem publicação.
+
+
+## Conteúdo completo dos sectores no catálogo — 26/10/2026
+
+[REPOSICAO-SECTORES-20261026-RESULTADO] Decisão expressa da Tempo: mostrar o conteúdo completo de cada sector na própria página /sectores. Inventário público de onze fichas: dez já tinham o bloco integral, Agronegócio conservava guia e 12 oportunidades, e Economia Azul omitia sectorEntry por depender do mapa editorial CONTENT (condição técnica desde 6a76aac8). cf003c86/3258a25f preservam as fichas; ec4b2f2a altera o índice visual. O catálogo de resumos não demonstra eliminação de dados. Implementado conjunto de dados/componente único para catálogo e ficha, dez secções completas com âncoras/retorno e cobertura comum de Economia Azul sem exigir artigo. Preservados publicação, especialização Fintech, páginas, originais e relações existentes; nenhuma escrita/publicação no activo. QA exclusivo sector_catalog_restore_20261026_test, 127.0.0.1:55441, cópia de QA local: dois testes/173 asserções passaram, com rollback e equivalência catálogo/ficha, exclusão de sectores/oportunidades não públicos e ausência de escritas por consulta. TypeScript, build e diff passaram; prévia isolada dos componentes reais com dados públicos/ponte QA da Economia Azul em 1440/390/320 px confirmou dez secções, acções, âncoras/retorno e ausência de transbordo. Recibos em outputs/sector-restoration-20261026/. Entrega local, sem disponibilização no destino; critérios globais permanecem no estado anterior.
+
+Guia: abrir /sectores → escolher o sector no índice de cartões → consultar, na mesma página, preparação da ideia, cadastro na modalidade existente, guias públicos, âncoras/território e oportunidades. Abrir página do sector conserva a ficha individual; Voltar à lista de sectores regressa ao índice. Guias ou relações ausentes permanecem identificados, sem associações inferidas. Origem do âmbito: pedido expresso confirmado pela Tempo nesta conversa; partilha de componente e dados é escolha de implementação. Não há novo perfil, requisito de autenticação, migração ou cálculo. Os recibos de preservação/reposição da carteira de 23/10 foram consultados e mantêm a aceitação anterior, sem repetir ou declarar nova reposição dessa carteira.
+
+
+### Fundo branco do texto editorial — 26/10/2026
+
+[FUNDO-BRANCO-20261026] Pedido expresso da Tempo: fundo branco puro #FFFFFF no bloco dos cinco parágrafos de Porquê investir. Aplicado bg-white, conservando texto, geometria, espaços compactos e restantes entregas; sem perda funcional ou alteração de dados/permissões. Compilação e diff conferidos; alteração local sem publicação.
diff --git a/docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv b/docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv
index e08f8d47..11aaa804 100644
--- a/docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv
+++ b/docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv
@@ -353,7 +353,7 @@ V2-01,"Menu comum por grupos e submenus, teclado/Escape/foco, toque e adaptaçã
[RECONCILIACAO-43-20261019] 3: Fluxos instalados; fechar observação com dossier legítimo quando disponível. Não reconstruir nem repetir percurso aceite. | 5: Sem saldo de código no recorte visual aceite.
-[DESCOBERTA-20261026] Decisão expressa da Tempo: Porquê investir em Moçambique → Partir de uma ideia → Consultar oportunidades → Simulador Fiscal → Sectores de investimento, no menu e nos atalhos iniciais. Inventário do delta: páginas existentes reutilizadas; ordem anterior ideia/porquê/oportunidades/sectores e simulador em Realização; atalhos iniciais anteriores oportunidades/simulador. Sem perda funcional confirmada neste recorte; destinos restantes e contexto fiscal conservados. Código alterado sem schema, dados, configuração ou permissões. Verificação local: seis testes de navegação, ordem/destinos/contexto, TypeScript, build e diff passaram; traduções dos rótulos conservadas. Sem conferência visual nova ou disponibilização no destino. Manual: docs/investmoz/unification/traceability-and-manual.md, Descoberta — 26/10/2026. Não encerra critérios globais. Correcção expressa da Tempo: Porquê investir em Moçambique? no menu, atalho, título, caminho e traduções; cinco atalhos compactados (px-3/py-1.5/gap-2, mínimo 36 px em desktop e 44 px no telemóvel). Preservados ordem, destinos, contexto e acessos. Verificação deste ajuste: build e diff passaram; sem nova conferência visual ou publicação. Reestruturação expressa da Tempo a partir do texto fornecido em 26/10/2026: cinco parágrafos editoriais à esquerda abaixo do título; conteúdo anterior à direita, cartões verticais enquanto acompanham o texto e horizontais abaixo. Leitura sequencial no telemóvel. Inventário do delta: preservados os sete cartões temáticos, introdução, condições/documentação, apoio e todos os destinos anteriores. Sem perda funcional confirmada; sem mudança de schema, dados, configuração, permissões ou cálculos. Verificação local: TypeScript, build e diff passaram; cinco parágrafos fornecidos íntegros e 12 parágrafos/15 links anteriores conservados. Prévia isolada do componente com CSS compilado em 1440/1024/820/390 px, sem transbordo; texto/colunas e linhas horizontais conferidos. Recibo: outputs/why-invest-layout-20261026/layout.json. Sem prova no activo ou publicação. Compactação expressa da Tempo: margens, intervalos, preenchimento dos cartões, títulos e botões reduzidos apenas na página Porquê investir. Preservados os cinco parágrafos fornecidos, 12 anteriores, sete cartões, 15 links e a disposição aprovada; sem perda confirmada ou mudança de dados/permissões. Verificação desta compactação: TypeScript, build, diff e comparação isolada antes/depois em 1440/1024/820/390/320 px passaram; 17 parágrafos e 15 links íntegros, sem transbordo. Altura reduzida cerca de 15% em computador e 16% no telemóvel, com corpo a 16 px. Capturas inspeccionadas; recibo em outputs/why-invest-spacing-20261026/layout.json. Sem prova no activo ou publicação. [FUNDO-EDITORIAL-20261026] Pedido expresso da Tempo: fundo #BBC0C6 apenas no bloco dos cinco parágrafos de Porquê investir. Inventário preservado: texto, disposição compacta, sete cartões e 15 links; reutilizada prova anterior em outputs/why-invest-spacing-20261026/. Código conservado; notas recentes ausentes no final do manual após conflitos não revogam aceitação. Sem perda funcional confirmada ou alteração de dados/permissões. Verificação deste fundo concluída: build, formato e diff passaram; prévia isolada em 1440 e 390 px confirmou rgb(187, 192, 198), equivalente a #BBC0C6, sem alteração da geometria, dos 17 parágrafos ou dos 15 links e sem transbordo. Captura de computador inspeccionada; recibo em outputs/why-invest-background-20261026/layout.json. Não é prova do activo; sem publicação. [FUNDO-AZUL-20261026] Pedido da Tempo: azul bebé ou IBM no fundo editorial. Escolha de apresentação: #D0E2FF, IBM Blue 20, paleta oficial Carbon; substitui o cinzento anterior conservando histórico, geometria, conteúdo, sete cartões e 15 links. Sem perda funcional confirmada ou alteração de dados/permissões. Verificação deste azul concluída: build e diff passaram; prévia isolada em 1440 e 390 px confirmou rgb(208, 226, 255), equivalente a #D0E2FF, sem alteração da geometria, 17 parágrafos ou 15 links e sem transbordo. Captura de computador inspeccionada. Recibo em outputs/why-invest-blue-20261026/layout.json. Sem prova do activo; sem publicação.","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. | NAVEGACAO-QA-20261016: avaliação visual do protótipo pendente. Sem encerramento funcional global: vínculo genérico oportunidade/território, troca persistente e invalidação transversal, resumo integral de oportunidade/etapa e página Porquê investir por consolidar. Prévia não grava alterações de negócio. Manual aguarda avaliação e consolidação. | NAVEGACAO-CONSOLIDACAO-QA-20261016: os limites de persistência/entre dispositivos/Porquê investir do protótipo ficam superados neste recorte QA. A organização foi avaliada e ajustada tecnicamente; decisão visual e disponibilização pela Tempo continuam separadas. Não é prova volumétrica nem homologação fiscal/regulatória. Não encerra outros critérios deste requisito. Não repete os testes de navegação já aceites. | Cinco pontos do pedido consolidados neste recorte QA; confirmar da candidata funcional persiste, protótipo18534 fica histórico. Avaliação técnica visual executada, aceitação pela Tempo não presumida. Sem ativação. Não encerra outros critérios dos requisitos. Dois clientes simulados por sessões independentes, não dois equipamentos físicos. | RECTIFICAÇÃO: a revisão dos quatro formulários é parcial3/4. Preparar manifestação de interesse não mostra pré-preenchimento no percurso actual: manifestação não vinculada ao dossier. Presença de chaves na API/resumo global não encerra este critério. Resolver vínculo explícito/recuperável ao mesmo dossier e demonstrar o quarto formulário antes da decisão. Utilizador não abriu candidata nem conferiu novos anexos. | Actualização do critério anteriormente aberto da manifestação: concluído neste recorte QA; três formulários aceites conservam provas anteriores, sem repetição. Acesso directo sem dossier mantido; nenhum dossier/processo duplicado criado. Não encerra critérios globais nem presume conferência dos anexos pelo utilizador. Disponibilização separada. | 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.
+[DESCOBERTA-20261026] Decisão expressa da Tempo: Porquê investir em Moçambique → Partir de uma ideia → Consultar oportunidades → Simulador Fiscal → Sectores de investimento, no menu e nos atalhos iniciais. Inventário do delta: páginas existentes reutilizadas; ordem anterior ideia/porquê/oportunidades/sectores e simulador em Realização; atalhos iniciais anteriores oportunidades/simulador. Sem perda funcional confirmada neste recorte; destinos restantes e contexto fiscal conservados. Código alterado sem schema, dados, configuração ou permissões. Verificação local: seis testes de navegação, ordem/destinos/contexto, TypeScript, build e diff passaram; traduções dos rótulos conservadas. Sem conferência visual nova ou disponibilização no destino. Manual: docs/investmoz/unification/traceability-and-manual.md, Descoberta — 26/10/2026. Não encerra critérios globais. Correcção expressa da Tempo: Porquê investir em Moçambique? no menu, atalho, título, caminho e traduções; cinco atalhos compactados (px-3/py-1.5/gap-2, mínimo 36 px em desktop e 44 px no telemóvel). Preservados ordem, destinos, contexto e acessos. Verificação deste ajuste: build e diff passaram; sem nova conferência visual ou publicação. Reestruturação expressa da Tempo a partir do texto fornecido em 26/10/2026: cinco parágrafos editoriais à esquerda abaixo do título; conteúdo anterior à direita, cartões verticais enquanto acompanham o texto e horizontais abaixo. Leitura sequencial no telemóvel. Inventário do delta: preservados os sete cartões temáticos, introdução, condições/documentação, apoio e todos os destinos anteriores. Sem perda funcional confirmada; sem mudança de schema, dados, configuração, permissões ou cálculos. Verificação local: TypeScript, build e diff passaram; cinco parágrafos fornecidos íntegros e 12 parágrafos/15 links anteriores conservados. Prévia isolada do componente com CSS compilado em 1440/1024/820/390 px, sem transbordo; texto/colunas e linhas horizontais conferidos. Recibo: outputs/why-invest-layout-20261026/layout.json. Sem prova no activo ou publicação. Compactação expressa da Tempo: margens, intervalos, preenchimento dos cartões, títulos e botões reduzidos apenas na página Porquê investir. Preservados os cinco parágrafos fornecidos, 12 anteriores, sete cartões, 15 links e a disposição aprovada; sem perda confirmada ou mudança de dados/permissões. Verificação desta compactação: TypeScript, build, diff e comparação isolada antes/depois em 1440/1024/820/390/320 px passaram; 17 parágrafos e 15 links íntegros, sem transbordo. Altura reduzida cerca de 15% em computador e 16% no telemóvel, com corpo a 16 px. Capturas inspeccionadas; recibo em outputs/why-invest-spacing-20261026/layout.json. Sem prova no activo ou publicação. [FUNDO-EDITORIAL-20261026] Pedido expresso da Tempo: fundo #BBC0C6 apenas no bloco dos cinco parágrafos de Porquê investir. Inventário preservado: texto, disposição compacta, sete cartões e 15 links; reutilizada prova anterior em outputs/why-invest-spacing-20261026/. Código conservado; notas recentes ausentes no final do manual após conflitos não revogam aceitação. Sem perda funcional confirmada ou alteração de dados/permissões. Verificação deste fundo concluída: build, formato e diff passaram; prévia isolada em 1440 e 390 px confirmou rgb(187, 192, 198), equivalente a #BBC0C6, sem alteração da geometria, dos 17 parágrafos ou dos 15 links e sem transbordo. Captura de computador inspeccionada; recibo em outputs/why-invest-background-20261026/layout.json. Não é prova do activo; sem publicação. [FUNDO-AZUL-20261026] Pedido da Tempo: azul bebé ou IBM no fundo editorial. Escolha de apresentação: #D0E2FF, IBM Blue 20, paleta oficial Carbon; substitui o cinzento anterior conservando histórico, geometria, conteúdo, sete cartões e 15 links. Sem perda funcional confirmada ou alteração de dados/permissões. Verificação deste azul concluída: build e diff passaram; prévia isolada em 1440 e 390 px confirmou rgb(208, 226, 255), equivalente a #D0E2FF, sem alteração da geometria, 17 parágrafos ou 15 links e sem transbordo. Captura de computador inspeccionada. Recibo em outputs/why-invest-blue-20261026/layout.json. Sem prova do activo; sem publicação. [SEM-FUNDO-EDITORIAL-20261026] Pedido expresso da Tempo: remover o fundo dos cinco parágrafos e deixar a apresentação normal. Retirados fundo azul e arredondamento do bloco, mantendo texto, disposição e espaçamentos compactos. Decisões anteriores conservadas no histórico. Sem alteração de dados, permissões ou cálculos. Verificação concluída: build/diff e prévia em 1440/390 px passaram; fundo transparente, geometria e 17 parágrafos/15 links preservados. Recibo em outputs/why-invest-no-background-20261026/. Alteração local, sem publicação. [FUNDO-BRANCO-20261026] Pedido expresso da Tempo: fundo branco puro #FFFFFF no bloco dos cinco parágrafos de Porquê investir. Aplicado bg-white, conservando texto, geometria, espaços compactos e restantes entregas; sem perda funcional ou alteração de dados/permissões. Compilação e diff conferidos; alteração local sem publicação.","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. | NAVEGACAO-QA-20261016: avaliação visual do protótipo pendente. Sem encerramento funcional global: vínculo genérico oportunidade/território, troca persistente e invalidação transversal, resumo integral de oportunidade/etapa e página Porquê investir por consolidar. Prévia não grava alterações de negócio. Manual aguarda avaliação e consolidação. | NAVEGACAO-CONSOLIDACAO-QA-20261016: os limites de persistência/entre dispositivos/Porquê investir do protótipo ficam superados neste recorte QA. A organização foi avaliada e ajustada tecnicamente; decisão visual e disponibilização pela Tempo continuam separadas. Não é prova volumétrica nem homologação fiscal/regulatória. Não encerra outros critérios deste requisito. Não repete os testes de navegação já aceites. | Cinco pontos do pedido consolidados neste recorte QA; confirmar da candidata funcional persiste, protótipo18534 fica histórico. Avaliação técnica visual executada, aceitação pela Tempo não presumida. Sem ativação. Não encerra outros critérios dos requisitos. Dois clientes simulados por sessões independentes, não dois equipamentos físicos. | RECTIFICAÇÃO: a revisão dos quatro formulários é parcial3/4. Preparar manifestação de interesse não mostra pré-preenchimento no percurso actual: manifestação não vinculada ao dossier. Presença de chaves na API/resumo global não encerra este critério. Resolver vínculo explícito/recuperável ao mesmo dossier e demonstrar o quarto formulário antes da decisão. Utilizador não abriu candidata nem conferiu novos anexos. | Actualização do critério anteriormente aberto da manifestação: concluído neste recorte QA; três formulários aceites conservam provas anteriores, sem repetição. Acesso directo sem dossier mantido; nenhum dossier/processo duplicado criado. Não encerra critérios globais nem presume conferência dos anexos pelo utilizador. Disponibilização separada. | 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.
[UTILIZACAO-HOMOLOGACAO-20261019] 3: Disponibilidade condicionada conforme limite registado — Início, contexto e navegação abrem; gravação/recuperação aceites em QA reutilizadas. Sem dossier real no destino. | 5: Disponibilidade condicionada conforme limite registado — Ecrã aberto: dez sectores principais, especialização Fintech sem cartão principal duplicado; 12 registos conservados.","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. | NAVEGACAO-QA-20261016: reutiliza cinco fases/19 etapas, permissões e dossiers existentes; base anterior dos parques130000, sem incorporar L1 pendente. Confirmação futura do escopo funcional e autorização ativa separadas; zero migrations/grants/publicação/alterações no ativo. L1, duplicados e Fintech mantêm estados. | NAVEGACAO-CONSOLIDACAO-QA-20261016: ação autenticada nominal 150000 preparada e demonstrada somente no clone55441 *_test; uma tabela de preferência por conta, associações no dossier existente. Manifesto/compilação e reversão parcial compatível preservam dados após utilização. Backup/restauro fresco do ativo e autorização de ativação continuam futuros. B, COUNTRY02, L1 dos parques, duplicados, regulação Fintech e demais estados preservados; origem das restrições: instrução expressa da Tempo e controlos de acesso aprovados, sem novos grants. | Candidata reconciliada com fonte L1 instalada, sem repetir140000; nenhuma alteração ativa.150000 permanece somenteQA. Pacotes/reversão anteriores não usar directamente no ativo actualizado: futura disponibilização requer decisão própria, hashes/preflight/backup-restauro fresco e reversão reconciliada. Sem nova regra organizacional; B/COUNTRY02/ficha integral e demais estados preservados. | Disponibilização parcial: apenas150000 pendente. Prévia confirma investemoz:5432/revisão correta; aplicação exige MFA nesta sessão e botão desativado. Sem POST/DDL150000; utilizador deve concluir autenticação habitual, sem nova autorização.140000/L1 preservada e sem reensaios. Reversão reconciliada comL1,20fontes/buildcompatível, dados/schema/histórico retidos. | Pendência MFA/instalação anterior resolvida; nenhuma ação restante para disponibilizar este recorte.140000 preservada uma vez; sem repetir L1 ou três formulários aceites. Reversão parcial compatível20fontes/build, schema/vínculos/histórico conservados. Critérios globais e ficha integral dos parques mantêm estado próprio. | Origem: pedido expresso da Tempo de18/10. IDs, especialização por leitura e ponte histórica são escolhas técnicas; sem nova regra organizacional. Ativo inalterado; disponibilização separada. Sem migration/instalação140000/150000; reversão retém somente a rota nova Fintech além dos dados/histórico e associação2→8. Estados e critérios anteriores preservados. | Origem: autorizacao expressa Tempo18/10/2026. Backup/restauro e execucao autenticada concluidos; 140000/150000 presentes uma vez, sem migrations. Reversao parcial preserva dados/auditoria/esquemas e rota compativel Fintech. Matriz/manual/backlog atuais preservados. Ficha integral dos parques separada.",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. | NAVEGACAO-QA-20261016: protótipo de organização em clone isolado, mapa52 ligações condicionais e vistas do catálogo; Descoberta/Realização/Suporte; área de trabalho separada; quatro entradas no mesmo UUID/v3, preenchimento autorizado preservando edição, cancelamento/confirmação apenas da prévia, novo login, teclado e móvel390. Evidência em outputs/investmoz-navegacao-QA-20261016/RELATORIO-QA.md. Origem: instrução expressa da Tempo nesta conversa; não é nova regra organizacional. | NAVEGACAO-CONSOLIDACAO-QA-20261016: substitui o saldo funcional da prévia histórica. Associações versionadas de oportunidade/sector/território no mesmo dossier encriptado; confirmação transacional com prévia e idempotência; foco/etapa recuperados entre sessões independentes; preservação de edições e preenchimento de vazios em formulários existentes; página Porquê investir dedicada. Prova positiva com cálculos locais reais (40 unidades; lacuna de financiamento 13000 MZN), duas submissões sintéticas reais pelo Balcão e recibo inalterado após troca. Resultados afetados conservados como históricos; rascunho anterior exige revisão explícita. Relatório: outputs/investmoz-navegacao-consolidacao-QA-20261016/RELATORIO-QA.md. | 18/10/2026: consolidação QA posterior ao protótipo revista; três menus com explicação/destinos, página Porquê investir dedicada melhorada, captura desktop/móvel390px e Escape/foco. Associações e contexto recuperados em duas sessões independentes autenticadas/MFA; quatro consumidores,19etapas, resultados para revisão e pedidos históricos recuperados. Provas transacionais40condições de16/10 reutilizadas. Relatório/pacote: outputs/investmoz-navegacao-consolidacao-20261018/para-revisao/. | Revisão visível18/10: candidata b1c98ec7140c, quatro entradas no mesmoUUID/próxima acção; prévia mantém/actualiza/revisão3resultados e9etapas, confirmação contexto3→4 e recuperação após logout/login/MFA observadas. Simulador, Terra/DUAT e Balcão mostram pré-preenchimento/comparação preservando edições. Relatório REVISAO-VISIVEL-DOC01.md e recibo em outputs/investmoz-navegacao-consolidacao-20261018/para-revisao/. | 18/10: integração da manifestação QA 73f8bd1347ca observada: vínculo opcional explícito no dossier existente, objectivo/localização preenchidos e sector editado preservado, recuperação em nova sessão/MFA, uma submissão e recibo IR-2026-01M576QMSKV91Q53GZCHKM61P0; dois reenvios com o mesmo protocolo.18 checksHTTP e15 de leitura;28 outros dossiers iguais. RELATORIO-MANIFESTACAO-QA.md na mesma entrega. | 18/10: Tempo autorizou disponibilização da candidata73f8bd1347ca. Código40fontes/build167 trocados por hash, manutenção terminada, cache de dados preservada. Backup fresco/restauro QA:295tabelas,31sequências,1320ficheiros, arranque/decifragem conferidos. Relatório operacional em outputs/investmoz-navegacao-ativacao-20261018/para-revisao/. | 18/10: disponibilização concluída73f8bd1347ca. MFA regularizado e150000 instalada pela conta2, reciboda1cae7b-a403-4256-9fd8-98ff2a69918d. Ledger/tabela=1, zero preferências importadas. Prévia e sucesso observados; Codex não repetiuPOST.290tabelas iguais ao backup e zero diferenças inesperadas. Relatório/recibo finais na mesma entrega. | 18/10: sectores-duplicacoes-QA-9b6097f97121, organização sectorial/duplicações apenas QA. Energia8/Mineração7; Fintech9 especialização de Mercado6; oportunidade2 reclassificada2→8 sem duplicação; 56HTTP,30serviço,3SQL e5reversão observados. Relatório e manifesto exatos em outputs/investmoz-sectores-duplicacoes-QA-20261018/para-revisao/. | 18/10/2026: disponibilizada sectores-duplicacoes-QA-e9f7d821b6f7 em investemoz:5432, procedimento DOC02. Backup/restauro fresco validado. 34 fontes/167 build. Conta2 com permissao/MFA; oportunidade2 sector2 para8; evento/recibo unicos, operacao27e6a658-d8bc-4d94-ab7b-b977ba56d141. Mesma transacao/ligacao e limpeza SET LOCAL observadas. Provas em outputs/investmoz-sectores-duplicacoes-ativacao-20261018/CONFERENCIA-FINAL.json e para-revisao/RECIBO-EXECUCAO.json. | Homologação teste-investidor 19/10/2026: Navegação contextual e manifestação de interesse=Ausente; Sectores e duplicação visual=Instalado mas desabilitado. Saldo derivado e limites em outputs/investmoz-disponibilizacao-integral-20261019/SALDO-E-ACTUALIZACAO-CONSOLIDADA.md. Não substitui estado/provas do activo; trecho documental encerrado, vínculo dossier aberto. | Proposta integral fdcb31f1b5b9: aplicação activa local completa + R2/DOC01/destino reconciliados; schema/build/recuperação de contexto e reversão de apresentação ensaiados no clone isolado. Não instalado remotamente. Inc. QA territoriais/Inhambane/programas separados. Limites e decisões em outputs/investmoz-disponibilizacao-integral-20261019/PROPOSTA-INTEGRAL-PARA-DECISAO.md. | Execução autorizada fdcb31f1b5b9 concluída em teste-investidor: Navegação contextual e manifestação de interesse=Disponível; Sectores e duplicação visual=Disponível. 1080 hashes iguais, schema171/88, custódia/scan/recuperação reais. Sem publicação ou papéis novos. Vínculo dossier legítimo pendente; incrementos QA separados. Limites em outputs/investmoz-disponibilizacao-integral-20261019/RESULTADO-DISPONIBILIZACAO-INTEGRAL.md; não encerra critérios globais não demonstrados.
@@ -1085,7 +1085,9 @@ MASTER-efd550fd-0190,"A pesquisa deve aparecer antes dos sectores, com sugestõe
MASTER-9f5719c8-0001,"Para melhorar a leitura e facilitar a execução do projecto, o documento deve passar a organizar o conteúdo em capítulos próprios, separando a fundamentação estratégica, o diagnóstico do portal, as recomendações de UX, os modelos funcionais e a implementação técnica. Toda a programação em React e Laravel deve ficar concentrada no capítulo técnico, em sequência lógica de desenvolvimento.",portal do investidor\backup\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 87,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-9f5719c8-0001: Para melhorar a leitura e facilitar a execução do projecto, o documento deve passar a organizar o conteúdo em capítulos próprios, separando a fundamentação estratégica, o diagnóstico do portal, as recomendações de UX, os modelos funcionais e a implementação técnica. Toda a programação em React e Laravel deve ficar concentrada no capítulo técnico, em sequência lógica de desenvolvimento.",P2,MASTER-9f5719c8-0001: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-9f5719c8-0001,1,"[{""id"":""MASTER-9f5719c8-0001"",""pedido"":""Para melhorar a leitura e facilitar a execução do projecto, o documento deve passar a organizar o conteúdo em capítulos próprios, separando a fundamentação estratégica, o diagnóstico do portal, as recomendações de UX, os modelos funcionais e a implementação técnica. Toda a programação em React e Laravel deve ficar concentrada no capítulo técnico, em sequência lógica de desenvolvimento."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 87""],""aceitacao"":""Para melhorar a leitura e facilitar a execução do projecto, o documento deve passar a organizar o conteúdo em capítulos próprios, separando a fundamentação estratégica, o diagnóstico do portal, as recomendações de UX, os modelos funcionais e a implementação técnica. Toda a programação em React e Laravel deve ficar concentrada no capítulo técnico, em sequência lógica de desenvolvimento."",""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-9f5719c8-0063,"Organização do capítulo: todo o código React e Laravel, exemplos de payload JSON, migrations, controllers, services, componentes, testes e instruções de integração devem ficar concentrados neste Capítulo 9. Para evitar dispersão, os exemplos práticos devem ser separados da documentação técnica explicativa, mantendo primeiro a arquitectura e depois os blocos de implementação copiáveis.",portal do investidor\backup\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 702,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-9f5719c8-0063: Organização do capítulo: todo o código React e Laravel, exemplos de payload JSON, migrations, controllers, services, componentes, testes e instruções de integração devem ficar concentrados neste Capítulo 9. Para evitar dispersão, os exemplos práticos devem ser separados da documentação técnica explicativa, mantendo primeiro a arquitectura e depois os blocos de implementação copiáveis.",P2,MASTER-9f5719c8-0063: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-9f5719c8-0063,1,"[{""id"":""MASTER-9f5719c8-0063"",""pedido"":""Organização do capítulo: todo o código React e Laravel, exemplos de payload JSON, migrations, controllers, services, componentes, testes e instruções de integração devem ficar concentrados neste Capítulo 9. Para evitar dispersão, os exemplos práticos devem ser separados da documentação técnica explicativa, mantendo primeiro a arquitectura e depois os blocos de implementação copiáveis."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 702""],""aceitacao"":""Organização do capítulo: todo o código React e Laravel, exemplos de payload JSON, migrations, controllers, services, componentes, testes e instruções de integração devem ficar concentrados neste Capítulo 9. Para evitar dispersão, os exemplos práticos devem ser separados da documentação técnica explicativa, mantendo primeiro a arquitectura e depois os blocos de implementação copiáveis."",""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-9f5719c8-0065,"Esta subsecção deve reunir a explicação conceptual da arquitectura, o papel dos módulos, a estrutura de pastas, o desenho dos endpoints, as regras de validação, os princípios de segurança, as responsabilidades dos componentes e o fluxo técnico-funcional entre React, Laravel e a base de dados.",portal do investidor\backup\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 706,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-9f5719c8-0065: Esta subsecção deve reunir a explicação conceptual da arquitectura, o papel dos módulos, a estrutura de pastas, o desenho dos endpoints, as regras de validação, os princípios de segurança, as responsabilidades dos componentes e o fluxo técnico-funcional entre React, Laravel e a base de dados.",P2,MASTER-9f5719c8-0065: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-9f5719c8-0065,1,"[{""id"":""MASTER-9f5719c8-0065"",""pedido"":""Esta subsecção deve reunir a explicação conceptual da arquitectura, o papel dos módulos, a estrutura de pastas, o desenho dos endpoints, as regras de validação, os princípios de segurança, as responsabilidades dos componentes e o fluxo técnico-funcional entre React, Laravel e a base de dados."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 706""],""aceitacao"":""Esta subsecção deve reunir a explicação conceptual da arquitectura, o papel dos módulos, a estrutura de pastas, o desenho dos endpoints, as regras de validação, os princípios de segurança, as responsabilidades dos componentes e o fluxo técnico-funcional entre React, Laravel e a base de dados."",""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-9f5719c8-0077,"Esta subsecção deve concentrar os blocos práticos de implementação: HomePage.jsx, HeroSection.jsx, SectorGrid.jsx, SectorCard.jsx, PortalStats.jsx, FeaturedOpportunities.jsx, homeService.js, opportunityService.js, HomeController.php, SectorController.php, OpportunityController.php, InterestRequestController.php, Form Requests, migrations, seeders, factories, testes e exemplos JSON de resposta da API.",portal do investidor\backup\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 906,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-9f5719c8-0077: Esta subsecção deve concentrar os blocos práticos de implementação: HomePage.jsx, HeroSection.jsx, SectorGrid.jsx, SectorCard.jsx, PortalStats.jsx, FeaturedOpportunities.jsx, homeService.js, opportunityService.js, HomeController.php, SectorController.php, OpportunityController.php, InterestRequestController.php, Form Requests, migrations, seeders, factories, testes e exemplos JSON de resposta da API.",P2,MASTER-9f5719c8-0077: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-9f5719c8-0077,1,"[{""id"":""MASTER-9f5719c8-0077"",""pedido"":""Esta subsecção deve concentrar os blocos práticos de implementação: HomePage.jsx, HeroSection.jsx, SectorGrid.jsx, SectorCard.jsx, PortalStats.jsx, FeaturedOpportunities.jsx, homeService.js, opportunityService.js, HomeController.php, SectorController.php, OpportunityController.php, InterestRequestController.php, Form Requests, migrations, seeders, factories, testes e exemplos JSON de resposta da API."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 906""],""aceitacao"":""Esta subsecção deve concentrar os blocos práticos de implementação: HomePage.jsx, HeroSection.jsx, SectorGrid.jsx, SectorCard.jsx, PortalStats.jsx, FeaturedOpportunities.jsx, homeService.js, opportunityService.js, HomeController.php, SectorController.php, OpportunityController.php, InterestRequestController.php, Form Requests, migrations, seeders, factories, testes e exemplos JSON de resposta da API."",""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. | 23/10/2026 — adaptação de sectores do tempo-dashboard e títulos vermelhos, pedido da Tempo. Aplicadas AGENTS.md de 12/10 e 22/10/2026: referência e estrutura expressamente indicadas pelo proprietário; componentes, WebP e estilos partilhados são escolhas técnicas. Dados, contagens, descrições, classificação, especializações, URLs, permissões, histórico e estados preservados; sem importar regras de negócio ou dados de outro projecto.",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. | 23/10/2026 — adaptação de sectores do tempo-dashboard e títulos vermelhos, pedido da Tempo: docs/investmoz/public-portal-sectors-validation.json; tools/portal-home-sectors-qa.mjs; outputs/home-sectors-20261023/qa-results.json e capturas. Nove cenários, seis larguras, cinco/dez sectores, dez fichas, Fintech, regresso, imagens alternativas, catálogo vazio e seis títulos uniformes; sem erros JavaScript. Vinte testes frontend existentes, TypeScript/lint/build aprovados. Dados sintéticos; critério amplo não encerrado.",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-9f5719c8-0077,"Esta subsecção deve concentrar os blocos práticos de implementação: HomePage.jsx, HeroSection.jsx, SectorGrid.jsx, SectorCard.jsx, PortalStats.jsx, FeaturedOpportunities.jsx, homeService.js, opportunityService.js, HomeController.php, SectorController.php, OpportunityController.php, InterestRequestController.php, Form Requests, migrations, seeders, factories, testes e exemplos JSON de resposta da API.",portal do investidor\backup\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 906,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-9f5719c8-0077: Esta subsecção deve concentrar os blocos práticos de implementação: HomePage.jsx, HeroSection.jsx, SectorGrid.jsx, SectorCard.jsx, PortalStats.jsx, FeaturedOpportunities.jsx, homeService.js, opportunityService.js, HomeController.php, SectorController.php, OpportunityController.php, InterestRequestController.php, Form Requests, migrations, seeders, factories, testes e exemplos JSON de resposta da API.",P2,MASTER-9f5719c8-0077: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-9f5719c8-0077,1,"[{""id"":""MASTER-9f5719c8-0077"",""pedido"":""Esta subsecção deve concentrar os blocos práticos de implementação: HomePage.jsx, HeroSection.jsx, SectorGrid.jsx, SectorCard.jsx, PortalStats.jsx, FeaturedOpportunities.jsx, homeService.js, opportunityService.js, HomeController.php, SectorController.php, OpportunityController.php, InterestRequestController.php, Form Requests, migrations, seeders, factories, testes e exemplos JSON de resposta da API."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 906""],""aceitacao"":""Esta subsecção deve concentrar os blocos práticos de implementação: HomePage.jsx, HeroSection.jsx, SectorGrid.jsx, SectorCard.jsx, PortalStats.jsx, FeaturedOpportunities.jsx, homeService.js, opportunityService.js, HomeController.php, SectorController.php, OpportunityController.php, InterestRequestController.php, Form Requests, migrations, seeders, factories, testes e exemplos JSON de resposta da API."",""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. | 23/10/2026 — adaptação de sectores do tempo-dashboard e títulos vermelhos, pedido da Tempo. Aplicadas AGENTS.md de 12/10 e 22/10/2026: referência e estrutura expressamente indicadas pelo proprietário; componentes, WebP e estilos partilhados são escolhas técnicas. Dados, contagens, descrições, classificação, especializações, URLs, permissões, histórico e estados preservados; sem importar regras de negócio ou dados de outro projecto.
+
+[REPOSICAO-SECTORES-20261026-RESULTADO] Decisão expressa da Tempo: mostrar o conteúdo completo de cada sector na própria página /sectores. Inventário público de onze fichas: dez já tinham o bloco integral, Agronegócio conservava guia e 12 oportunidades, e Economia Azul omitia sectorEntry por depender do mapa editorial CONTENT (condição técnica desde 6a76aac8). cf003c86/3258a25f preservam as fichas; ec4b2f2a altera o índice visual. O catálogo de resumos não demonstra eliminação de dados. Implementado conjunto de dados/componente único para catálogo e ficha, dez secções completas com âncoras/retorno e cobertura comum de Economia Azul sem exigir artigo. Preservados publicação, especialização Fintech, páginas, originais e relações existentes; nenhuma escrita/publicação no activo. QA exclusivo sector_catalog_restore_20261026_test, 127.0.0.1:55441, cópia de QA local: dois testes/173 asserções passaram, com rollback e equivalência catálogo/ficha, exclusão de sectores/oportunidades não públicos e ausência de escritas por consulta. TypeScript, build e diff passaram; prévia isolada dos componentes reais com dados públicos/ponte QA da Economia Azul em 1440/390/320 px confirmou dez secções, acções, âncoras/retorno e ausência de transbordo. Recibos em outputs/sector-restoration-20261026/. Entrega local, sem disponibilização no destino; critérios globais permanecem no estado anterior.",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. | 23/10/2026 — adaptação de sectores do tempo-dashboard e títulos vermelhos, pedido da Tempo: docs/investmoz/public-portal-sectors-validation.json; tools/portal-home-sectors-qa.mjs; outputs/home-sectors-20261023/qa-results.json e capturas. Nove cenários, seis larguras, cinco/dez sectores, dez fichas, Fintech, regresso, imagens alternativas, catálogo vazio e seis títulos uniformes; sem erros JavaScript. Vinte testes frontend existentes, TypeScript/lint/build aprovados. Dados sintéticos; critério amplo não encerrado.",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-9f5719c8-0078,"Cada exemplo prático deve indicar o caminho do ficheiro, a finalidade do ficheiro e o código completo em formato copiável. Sempre que possível, separar frontend, backend, base de dados, testes e payloads JSON em subsecções próprias para facilitar a implementação pela equipa técnica.",portal do investidor\backup\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 908,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-9f5719c8-0078: Cada exemplo prático deve indicar o caminho do ficheiro, a finalidade do ficheiro e o código completo em formato copiável. Sempre que possível, separar frontend, backend, base de dados, testes e payloads JSON em subsecções próprias para facilitar a implementação pela equipa técnica.",P2,MASTER-9f5719c8-0078: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-9f5719c8-0078,1,"[{""id"":""MASTER-9f5719c8-0078"",""pedido"":""Cada exemplo prático deve indicar o caminho do ficheiro, a finalidade do ficheiro e o código completo em formato copiável. Sempre que possível, separar frontend, backend, base de dados, testes e payloads JSON em subsecções próprias para facilitar a implementação pela equipa técnica."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 908""],""aceitacao"":""Cada exemplo prático deve indicar o caminho do ficheiro, a finalidade do ficheiro e o código completo em formato copiável. Sempre que possível, separar frontend, backend, base de dados, testes e payloads JSON em subsecções próprias para facilitar a implementação pela equipa técnica."",""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-9f5719c8-0079,"Os novos componentes React da área de oportunidades devem ser tratados como blocos reutilizáveis da página principal e de páginas internas do Portal do Investidor. A sua função é apresentar oportunidades de investimento de forma clara, acessível, responsiva e integrada com os dados fornecidos pela API Laravel.",portal do investidor\backup\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 912,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-9f5719c8-0079: Os novos componentes React da área de oportunidades devem ser tratados como blocos reutilizáveis da página principal e de páginas internas do Portal do Investidor. A sua função é apresentar oportunidades de investimento de forma clara, acessível, responsiva e integrada com os dados fornecidos pela API Laravel.",P2,MASTER-9f5719c8-0079: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-9f5719c8-0079,1,"[{""id"":""MASTER-9f5719c8-0079"",""pedido"":""Os novos componentes React da área de oportunidades devem ser tratados como blocos reutilizáveis da página principal e de páginas internas do Portal do Investidor. A sua função é apresentar oportunidades de investimento de forma clara, acessível, responsiva e integrada com os dados fornecidos pela API Laravel."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 912""],""aceitacao"":""Os novos componentes React da área de oportunidades devem ser tratados como blocos reutilizáveis da página principal e de páginas internas do Portal do Investidor. A sua função é apresentar oportunidades de investimento de forma clara, acessível, responsiva e integrada com os dados fornecidos pela API Laravel."",""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-9f5719c8-0080,"O componente FeaturedOpportunities apresenta oportunidades prioritárias ou editorialmente destacadas. Deve receber uma lista de oportunidades, renderizar cada item através do OpportunityCard e incluir título, descrição, ligação para ver todas as oportunidades e estado vazio quando não existirem projectos destacados.",portal do investidor\backup\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 914,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-9f5719c8-0080: O componente FeaturedOpportunities apresenta oportunidades prioritárias ou editorialmente destacadas. Deve receber uma lista de oportunidades, renderizar cada item através do OpportunityCard e incluir título, descrição, ligação para ver todas as oportunidades e estado vazio quando não existirem projectos destacados.",P2,MASTER-9f5719c8-0080: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-9f5719c8-0080,1,"[{""id"":""MASTER-9f5719c8-0080"",""pedido"":""O componente FeaturedOpportunities apresenta oportunidades prioritárias ou editorialmente destacadas. Deve receber uma lista de oportunidades, renderizar cada item através do OpportunityCard e incluir título, descrição, ligação para ver todas as oportunidades e estado vazio quando não existirem projectos destacados."",""fontes"":[""portal do investidor\\backup\\Reformulacao do portal do investidor v2.docx; SHA 9f5719c8b0cf78855f727d980b77a8f9409fc7f93e303e25d355d009a07d5734; w:p 914""],""aceitacao"":""O componente FeaturedOpportunities apresenta oportunidades prioritárias ou editorialmente destacadas. Deve receber uma lista de oportunidades, renderizar cada item através do OpportunityCard e incluir título, descrição, ligação para ver todas as oportunidades e estado vazio quando não existirem projectos destacados."",""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.",,,
@@ -10509,7 +10511,9 @@ AUD-LEG-04,Consulta pública sem login; autenticação apenas para guardar/acomp
[Reconciliação geral 20/10/2026 423bd512d8c5] b0 preservada; commits 97a08df2/50738750 compostos com menus/formulários/editorial e provas anteriores. Identidade InvesteMoz, propriedade da Tempo. Reserva Nginx independente e reversão sequenciada passaram em QA. Zero escrita remota; preflight fresco de todos os fontes do build e vhost obrigatório, recusar divergências dos programadores. Ver PROPOSTA-CONSOLIDADA-QA.json. Não encerra outros critérios nem autoriza abertura externa.",documentos e legado,15/10/2026 — fecho do piloto ativo e preparação por leitura dos restantes setores; sem novos testes funcionais.,,,"Consulta pública/proteção privada dos setores demonstradas. Disponibilização ativa,C37/QA18,A/B e aceitações manuais adicionais permanecem separadas. | Histórico anterior: Nenhum critério pendente na consulta e proteção do piloto QA demonstrado. C37/QA18 no navegador do utilizador e disponibilização ativa são requisitos/ações independentes, não fechados por este ensaio.",Biblioteca/documentos existentes; Balcão+09/190000 para dossier. Expansão cartográfica exige correspondências fundamentadas. C37/A-B/SLA/perfis e ativação mantêm âmbito próprio.,"Artigo, imagem, biblioteca e pesquisa respondem sem login; início/associação ao dossier requer sessão verificada. Outra conta403, contexto privado ausente em leitura pública/alheia.","[Interface legado QA 10/10/2026] Chromium instalado, contextos isolados, desktop 1440 px / móvel 390 px: fotografia/fontes/paleta, pesquisa hit/miss, Enter/foco de 3 px, links carteira/zonas/biblioteca/oportunidade. Promotor QA21: login→MFA→dossier→fonte→retorno→logout→novo contexto/MFA→recuperação/F5→associação repetida. Conta23:403 e artigo público sem título privado; anónimo sem contexto privado. UI observada; referência/evento únicos e originais/hash/scan confirmados em leitura QA. legacy-content-browser-qa.json; legacy-content-browser-persistence-qa.json; legado-piloto-qa.md. | Evidência anterior preservada: legado-piloto-qa.md; legacy-content-http-qa.json: recursos6/5 públicos, hashes verificados, pesquisa, login/MFA21, criação/continuação, logout/nova sessão, recuperação, replay único e isolamento. Interface não observada. | [Confirmação manual recebida 10/10/2026] Responsável confirmou leitura pública → autenticação → criar/escolher dossier → guardar referência → nova sessão → recuperar dossier e abrir artigo. Confirmação declarada, sem conta/perfil/dispositivo/data de execução identificados. Não comprova MFA específico, ensaios móveis, acessibilidade, outros perfis, deduplicação, C37/QA18 ou A/B. Ver legado-piloto-qa.md, confirmação manual. | [Setores QA após C71 10/10/2026] 22 originais importados privadamente após prévia renovada, hashes recuperados,22 scans ClamD reais e replay sem novos documentos/recursos/auditoria/scans. Divulgação autenticada separada:16 artigos com texto+5 imagens públicos; Mercado Financeiro privado, vazio confirmado na origem HTML e Inertia200. Chromium desktop:16 artigos, pesquisa/imagens, Energia e Mineração distintas, C72 título preservado; QA21 criou4 dossiers, retorno, logout/novaMFA/F5/replay; QA23 negado403 e anónimo sem contexto. Persistência READ ONLY:8 dossiers HTTP/Chromium, uma referência/evento cada,22 hashes únicos,0 relações geográficas automáticas. legacy-sectors-{apply,replay,http,browser,persistence}-qa.json; legacy-financial-origin-20261010/proof.json. C37/QA18,A/B,móvel/acessibilidade/cobertura integral não encerrados.","GET públicos e escritas autenticadas no servidor18097, alvo real55441 confirmado; publicação separada do importador. | [Setores QA após C71 10/10/2026] 22 originais importados privadamente após prévia renovada, hashes recuperados,22 scans ClamD reais e replay sem novos documentos/recursos/auditoria/scans. Divulgação autenticada separada:16 artigos com texto+5 imagens públicos; Mercado Financeiro privado, vazio confirmado na origem HTML e Inertia200. Chromium desktop:16 artigos, pesquisa/imagens, Energia e Mineração distintas, C72 título preservado; QA21 criou4 dossiers, retorno, logout/novaMFA/F5/replay; QA23 negado403 e anónimo sem contexto. Persistência READ ONLY:8 dossiers HTTP/Chromium, uma referência/evento cada,22 hashes únicos,0 relações geográficas automáticas. legacy-sectors-{apply,replay,http,browser,persistence}-qa.json; legacy-financial-origin-20261010/proof.json. C37/QA18,A/B,móvel/acessibilidade/cobertura integral não encerrados.",,,"Fecho exclusivo do piloto agronegócio; não cobre todo o acervo, versões, URLs, anexos ou setores. Mercado Financeiro vazio continua separado.",0 h de repetição sem regressão concreta.,,,
AUD-LEG-05,"Fonte única associada a setores, territórios e etapas com fundamento; artigo não vira oportunidade concreta","Pedido direto do responsável,10/10/2026, integração do legado emQA §5; https://investemoz.tempo.co.mz/; legado-piloto-qa.md",biblioteca / conteúdo público / percurso do investidor,/explorar/agronegocio; /agronegocio; /documentos/6; /investimentos/a-partir-de/agronegocio; /investimentos/{id}/conteudos,"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.","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.","QA aceite reutilizada; execução ativa com backup/restauro, scan real, publicação expressa e HTTP anónimo200. Sem repetir percurso. outputs/investmoz-legado-ativacao-20261015/RESULTADO-FINAL.json; FINAL-READONLY.json; ANONYMOUS-HTTP.json; RECIBO-INTEGRIDADE-FINAL.json; outputs/investmoz-legado-restantes-setores-preparacao-20261015/INVENTARIO-E-RECORTE.json",Implementado parcialmente — entradas setoriais e três artigos ativos,Lote ativo mantém conteúdo educativo separado de oportunidades e referências territoriais; imagens genéricas e índice curto identificados. Associações restantes dependem de fundamento individual.,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.,Mesma fonte/versionamento reutilizados; relações têm citação/âmbito; cadastros reais e artigos distintos; ausência de relação é apresentada explicitamente.,P1,"Legado post171985 modificado2026-04-20; categoria Oportunidades preservada como metadado, entidade guia. Metadados/sitemapInfopublica e área de investimento distintos; não remapear por nome.",USR-LEG-20261010-05,1,"[{""id"":""USR-LEG-20261010-05"",""pedido"":""Fonte única associada a setores, territórios e etapas com fundamento; artigo não vira oportunidade concreta"",""fontes"":[""Pedido direto10/10/2026 §5""],""aceitacao"":""Mesma fonte/versionamento reutilizados; relações têm citação/âmbito; cadastros reais e artigos distintos; ausência de relação é apresentada explicitamente."",""estado"":""parcial"",""variantes"":""IntegraçãoprogressivaQA, sem substituição de pendências anteriores"",""modulo"":""legado/biblioteca/percurso"",""incremento_setores_qa_20261010"":{""atualizado_em"":""2026-10-10T16:23:25.695297+00:00"",""ambito"":""QA18097;base55441isolada"",""evidencia"":""22 originais importados privadamente após prévia renovada, hashes recuperados,22 scans ClamD reais e replay sem novos documentos/recursos/auditoria/scans. Divulgação autenticada separada:16 artigos com texto+5 imagens públicos; Mercado Financeiro privado, vazio confirmado na origem HTML e Inertia200. Chromium desktop:16 artigos, pesquisa/imagens, Energia e Mineração distintas, C72 título preservado; QA21 criou4 dossiers, retorno, logout/novaMFA/F5/replay; QA23 negado403 e anónimo sem contexto. Persistência READ ONLY:8 dossiers HTTP/Chromium, uma referência/evento cada,22 hashes únicos,0 relações geográficas automáticas. legacy-sectors-{apply,replay,http,browser,persistence}-qa.json; legacy-financial-origin-20261010/proof.json. C37/QA18,A/B,móvel/acessibilidade/cobertura integral não encerrados."",""estado_requisito_atual"":""parcial"",""exclusoes"":[""ativação"",""C37/QA18"",""A/B"",""móvel"",""acessibilidade"",""cobertura integral""]}}]","[Interface legado QA 10/10/2026] Render/cliques observados no Chromium QA, com recuperação noutra sessão/F5 e negação à conta23. Não é o navegador pessoal do utilizador nem o ensaio C37/QA18. | Evidência anterior preservada: React preparado e buildQA; dados Inertia recuperados. Navegador indisponível; roteiro manual em legado-piloto-qa.md. Aceitação visual pendente. | [Setores QA após C71 10/10/2026] 22 originais importados privadamente após prévia renovada, hashes recuperados,22 scans ClamD reais e replay sem novos documentos/recursos/auditoria/scans. Divulgação autenticada separada:16 artigos com texto+5 imagens públicos; Mercado Financeiro privado, vazio confirmado na origem HTML e Inertia200. Chromium desktop:16 artigos, pesquisa/imagens, Energia e Mineração distintas, C72 título preservado; QA21 criou4 dossiers, retorno, logout/novaMFA/F5/replay; QA23 negado403 e anónimo sem contexto. Persistência READ ONLY:8 dossiers HTTP/Chromium, uma referência/evento cada,22 hashes únicos,0 relações geográficas automáticas. legacy-sectors-{apply,replay,http,browser,persistence}-qa.json; legacy-financial-origin-20261010/proof.json. C37/QA18,A/B,móvel/acessibilidade/cobertura integral não encerrados.","GET públicos e escritas autenticadas no servidor18097, alvo real55441 confirmado; publicação separada do importador. | [Setores QA após C71 10/10/2026] 22 originais importados privadamente após prévia renovada, hashes recuperados,22 scans ClamD reais e replay sem novos documentos/recursos/auditoria/scans. Divulgação autenticada separada:16 artigos com texto+5 imagens públicos; Mercado Financeiro privado, vazio confirmado na origem HTML e Inertia200. Chromium desktop:16 artigos, pesquisa/imagens, Energia e Mineração distintas, C72 título preservado; QA21 criou4 dossiers, retorno, logout/novaMFA/F5/replay; QA23 negado403 e anónimo sem contexto. Persistência READ ONLY:8 dossiers HTTP/Chromium, uma referência/evento cada,22 hashes únicos,0 relações geográficas automáticas. legacy-sectors-{apply,replay,http,browser,persistence}-qa.json; legacy-financial-origin-20261010/proof.json. C37/QA18,A/B,móvel/acessibilidade/cobertura integral não encerrados.","Dois recursos na biblioteca existente e referências no payload cifrado do dossier; sem nova tabela/cadastro paralelo. | [Setores QA após C71 10/10/2026] 22 originais importados privadamente após prévia renovada, hashes recuperados,22 scans ClamD reais e replay sem novos documentos/recursos/auditoria/scans. Divulgação autenticada separada:16 artigos com texto+5 imagens públicos; Mercado Financeiro privado, vazio confirmado na origem HTML e Inertia200. Chromium desktop:16 artigos, pesquisa/imagens, Energia e Mineração distintas, C72 título preservado; QA21 criou4 dossiers, retorno, logout/novaMFA/F5/replay; QA23 negado403 e anónimo sem contexto. Persistência READ ONLY:8 dossiers HTTP/Chromium, uma referência/evento cada,22 hashes únicos,0 relações geográficas automáticas. legacy-sectors-{apply,replay,http,browser,persistence}-qa.json; legacy-financial-origin-20261010/proof.json. C37/QA18,A/B,móvel/acessibilidade/cobertura integral não encerrados.","[Interface legado QA 10/10/2026] Render/cliques observados no Chromium QA, com recuperação noutra sessão/F5 e negação à conta23. Não é o navegador pessoal do utilizador nem o ensaio C37/QA18. | Evidência anterior preservada: Logout/nova sessão FortifyMFA21: fonte/versão/hashes recuperados; outra conta negada e projeto independente sem referência. | [Setores QA após C71 10/10/2026] 22 originais importados privadamente após prévia renovada, hashes recuperados,22 scans ClamD reais e replay sem novos documentos/recursos/auditoria/scans. Divulgação autenticada separada:16 artigos com texto+5 imagens públicos; Mercado Financeiro privado, vazio confirmado na origem HTML e Inertia200. Chromium desktop:16 artigos, pesquisa/imagens, Energia e Mineração distintas, C72 título preservado; QA21 criou4 dossiers, retorno, logout/novaMFA/F5/replay; QA23 negado403 e anónimo sem contexto. Persistência READ ONLY:8 dossiers HTTP/Chromium, uma referência/evento cada,22 hashes únicos,0 relações geográficas automáticas. legacy-sectors-{apply,replay,http,browser,persistence}-qa.json; legacy-financial-origin-20261010/proof.json. C37/QA18,A/B,móvel/acessibilidade/cobertura integral não encerrados.",Piloto ativo encerrado; restante legado pendente.,Piloto agronegócio: ativo e entrega encerrada. Integração integral do legado: pendente nos mesmos IDs.,parcial,Não disponibilizado; guarda QA/flagfalse. Nenhuma escrita ou divulgação ativa autorizada.,"15/10/2026: entrega do piloto encerrada; dados/B/COUNTRY02/build preservados. Não equivale a integração integral do legado. | Lote setorial disponibilizado por autorização expressa da Tempo; integração integral continua pendente. | 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. | 8: Outras identidades do legado exigem lotes e eventual adaptação por tipo. Não há autorização genérica para publicar todo o acervo.","Lote ativo mantém conteúdo educativo separado de oportunidades e referências territoriais; imagens genéricas e índice curto identificados. Associações restantes dependem de fundamento individual. | 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. | 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.
+[RECONCILIACAO-43-20261019] 5: Sem saldo de código no recorte visual aceite. | 8: Outras identidades do legado exigem lotes e eventual adaptação por tipo. Não há autorização genérica para publicar todo o acervo.
+
+[REPOSICAO-SECTORES-20261026-RESULTADO] Decisão expressa da Tempo: mostrar o conteúdo completo de cada sector na própria página /sectores. Inventário público de onze fichas: dez já tinham o bloco integral, Agronegócio conservava guia e 12 oportunidades, e Economia Azul omitia sectorEntry por depender do mapa editorial CONTENT (condição técnica desde 6a76aac8). cf003c86/3258a25f preservam as fichas; ec4b2f2a altera o índice visual. O catálogo de resumos não demonstra eliminação de dados. Implementado conjunto de dados/componente único para catálogo e ficha, dez secções completas com âncoras/retorno e cobertura comum de Economia Azul sem exigir artigo. Preservados publicação, especialização Fintech, páginas, originais e relações existentes; nenhuma escrita/publicação no activo. QA exclusivo sector_catalog_restore_20261026_test, 127.0.0.1:55441, cópia de QA local: dois testes/173 asserções passaram, com rollback e equivalência catálogo/ficha, exclusão de sectores/oportunidades não públicos e ausência de escritas por consulta. TypeScript, build e diff passaram; prévia isolada dos componentes reais com dados públicos/ponte QA da Economia Azul em 1440/390/320 px confirmou dez secções, acções, âncoras/retorno e ausência de transbordo. Recibos em outputs/sector-restoration-20261026/. Entrega local, sem disponibilização no destino; critérios globais permanecem no estado anterior.","Lote ativo mantém conteúdo educativo separado de oportunidades e referências territoriais; imagens genéricas e índice curto identificados. Associações restantes dependem de fundamento individual. | 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. | 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.
[UTILIZACAO-HOMOLOGACAO-20261019] 5: Disponibilidade condicionada conforme limite registado — Ecrã aberto: dez sectores principais, especialização Fintech sem cartão principal duplicado; 12 registos conservados. | 8: Disponibilidade condicionada conforme limite registado — Adaptador habilitado; artigos/imagens transportados privadamente, sem os publicar.","documents, biblioteca, importação autenticada, VerifiedDocumentBinary, jobs/derivadas","Dependências operacionais desta entrega resolvidas: hashes, backup/restauro fresco, conta autenticada, scans e publicações. Dependências regulatórias específicas e editoriais restantes preservadas no critério atual. | Origem: pedido expresso da Tempo de18/10. IDs, especialização por leitura e ponte histórica são escolhas técnicas; sem nova regra organizacional. Ativo inalterado; disponibilização separada. Sem migration/instalação140000/150000; reversão retém somente a rota nova Fintech além dos dados/histórico e associação2→8. Estados e critérios anteriores preservados. | Origem: autorizacao expressa Tempo18/10/2026. Backup/restauro e execucao autenticada concluidos; 140000/150000 presentes uma vez, sem migrations. Reversao parcial preserva dados/auditoria/esquemas e rota compativel Fintech. Matriz/manual/backlog atuais preservados. Ficha integral dos parques separada.","Autorização Tempo para setores-fintech-QA-d5b4dc354265 DOC01 executada, limitada a 16 fontes/compilação e três artigos. Decisões fora deste recorte mantêm-se; nenhuma publicação do restante acervo.",Delta disponibilizado; pendências fora do recorte continuam na mesma matriz.,"Saldo operacional desta entrega: zero. A faixa 1h30–3h era estimativa, não saldo atual. Esforço das lacunas remanescentes depende de delimitação concreta; não repetir aceitações.","outputs/investmoz-legado-ativacao-20261015/RESULTADO-FINAL.json; FINAL-READONLY.json; ANONYMOUS-HTTP.json; RECIBO-INTEGRIDADE-FINAL.json; outputs/investmoz-legado-restantes-setores-preparacao-20261015/INVENTARIO-E-RECORTE.json | 15/10/2026: outputs/investmoz-legado-setores-ativacao-20261015/FINAL-READONLY.json; ANONYMOUS-HTTP.json; SOURCE-DELIVERY.json; FRESH-BACKUP.json. 20 importados privados, scan clean e publicados pela sessão Osmane Nala (2); registos de negócio anteriores preservados. | outputs/investmoz-fintech-investimento-QA-20261015/RESULTADO-QA.md; PROVA-DELTA-QA.json; HTTP-DELTA-QA.json; PROVA-FINAL-DELTA-QA.json; HTTP-RECUPERACAO-FINAL-QA.json; MANIFESTO-ENTREGA.json | outputs/investmoz-setores-fintech-ativacao-20261015/RELATORIO-ENTREGA.md; PUBLISHED.json; PRESERVACAO-FINAL.json; HTTP-OPERACIONAL.json; FRESH-BACKUP.json; RECIBO-FINAL.json | 18/10: sectores-duplicacoes-QA-9b6097f97121, organização sectorial/duplicações apenas QA. Energia8/Mineração7; Fintech9 especialização de Mercado6; oportunidade2 reclassificada2→8 sem duplicação; 56HTTP,30serviço,3SQL e5reversão observados. Relatório e manifesto exatos em outputs/investmoz-sectores-duplicacoes-QA-20261018/para-revisao/. | 18/10/2026: disponibilizada sectores-duplicacoes-QA-e9f7d821b6f7 em investemoz:5432, procedimento DOC02. Backup/restauro fresco validado. 34 fontes/167 build. Conta2 com permissao/MFA; oportunidade2 sector2 para8; evento/recibo unicos, operacao27e6a658-d8bc-4d94-ab7b-b977ba56d141. Mesma transacao/ligacao e limpeza SET LOCAL observadas. Provas em outputs/investmoz-sectores-duplicacoes-ativacao-20261018/CONFERENCIA-FINAL.json e para-revisao/RECIBO-EXECUCAO.json. | 19/10/2026 — Inhambane v1, lote QA separado a2b47f486332c78926202eb462c5238fac15ffc8afb2fe391e47b091541e2058. Fonte32c6ab160c50… comparada com anterior9f628cd57eb8…; 39 itens+5 condições reconciliados em30 rascunhos privados/30 locais,2 originais privados com scan real ClamAV. Repetição sem duplicação, fontes/intervalos/agregados preservados, nenhum total financeiro do lote. Backend de recuperação e confidencialidade demonstrado; login real/edição visual/publicação/percurso positivo destas fichas pendentes. Lacunas concretas: dados do promotor/contacto/taxonomia/local, proveniência documental no snapshot do dossier e reutilização biblioteca→anexo canónico. Sem novos papéis, migrations, alteração activa ou incorporação na HML01. outputs/investmoz-inhambane-v1-QA-20261019/RELATORIO-QA.md. Não encerra requisito global.
diff --git a/resources/js/components/educational-article-card.tsx b/resources/js/components/educational-article-card.tsx
index f4215425..3d7d0d36 100644
--- a/resources/js/components/educational-article-card.tsx
+++ b/resources/js/components/educational-article-card.tsx
@@ -13,9 +13,12 @@ export type EducationalArticle = {
export default function EducationalArticleCard({
article,
+ headingLevel = 3,
}: {
article: EducationalArticle;
+ headingLevel?: 3 | 4;
}) {
+ const Heading = headingLevel === 3 ? 'h3' : 'h4';
const focus =
'focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-emerald-800';
return (
@@ -34,11 +37,11 @@ export default function EducationalArticleCard({