# Plano de levantamento e especificação — `sucesu-cms/V2`

## 0. Estado

Onda 0 (fundação) concluída com este plano:

- `_contrato/TAXONOMIA.md` — contrato do corpus (quatro dimensões, evidência, índices).
- `_contrato/TEMPLATE_{MODULO,SERVICO,UI,ARQUITETURA}.md` — moldes.
- `_contrato/CHECKLIST_EXTRACAO.md` — checklist item a item.
- `_contrato/EXEMPLO_TRECHO.md` — forma esperada de trecho + análise (efeito, abordagem,
  particularidade, integração).
- `00_inventario/manifest.json` — 930 arquivos distribuídos em 56 unidades, com LOC.
- `tools/coverage.py` e `tools/lint_docs.py` — verificações executáveis dos gates.

Nenhum documento de unidade foi escrito. O levantamento começa na Onda 1.

## 1. Objetivo e critério de pronto

Permitir **reimplementação futura sem acesso ao código legado**: uma equipe (ou agente)
constrói o sistema a partir do corpus e obtém paridade funcional, de dados, de UI e de
integração.

Critério final (Onda 5): três **reconstruções cegas** — um agente que só pode ler
`sucesu_analise/` produz, para unidades pequenas e médias, o schema, as rotas e as telas;
o resultado é comparado com o código real e as divergências voltam como correção.

## 2. Foco do corpus: efeito, abordagem, particularidade, integrabilidade

O corpus **não** é um inventário de arquivos. Cada documento de unidade responde, nesta
ordem e com trechos de código reais:

| Dimensão | O que precisa ficar evidente | Como é cobrado |
|---|---|---|
| **Efeito** | o que muda no mundo: telas, linhas de tabela, arquivos, e-mails, índice, cache, log; o que **não** acontece; erros exatos | ficha + §Efeito + `rotas.csv.efeito` + `tabelas.csv.escrita_em` |
| **Abordagem** | mecanismo, fluxo de dados, algoritmo, decisões e porquês | §Abordagem + diagrama + mecânica passo a passo + trechos pivô |
| **Particularidade** | o que só existe ali, invariantes, casos-limite, armadilhas, divergências, dívidas | §Particularidades + `RN-*` + comparação com equivalentes |
| **Integrabilidade** | superfície pública, precondições, ordem de init, contrato de UI/JS/HTTP, extensão, anti-uso | §Integrabilidade + receitas + `servicos.csv` + `componentes.csv` |

Consequências práticas:

- 3–8 trechos de código por documento (5–20 linhas cada, máx. ~120 linhas), sempre
  citados (`caminho:linha`) e explicados. Sem colar arquivos inteiros.
- Toda unidade declara **"se removido, quebra"** e **"como se integra"**.
- Todo elemento isolado relevante (layout, parcial, componente, node do editor, widget,
  middleware, comando) recebe descrição própria de efeito e uso, mesmo dentro do doc da
  unidade.
- `08_matriz/singularidades.md` consolida, por unidade, uma linha de efeito + o que a
  torna única + como se integra. É o índice de leitura para quem vai reimplementar.

## 3. Escopo

**Primário — `sucesu-cms/V2/`** (930 arquivos, 56 unidades):

- `Core/` (48), `Modules/` (488), `Services/` (291), `layouts/` (87), `Seeds/` (15),
  `README.md` (1).

**Satélites necessários à paridade** (documentados na Onda 1, unidade própria):

- `config/*.php` (13 arquivos), `.env.example` (63 chaves), `config/v2.php`.
- `app/Http/Kernel.php` (pilha global e middlewares nomeados), `app/Exceptions/Handler.php`,
  `app/Http/Model/Admin/{User,Role}.php`, `app/Providers/`.
- `composer.json`/`composer.lock` (Laravel 5.5, PHP 7.4, Sentinel 2.0, DomPDF/TCPDF,
  Maatwebsite Excel, Spatie Activitylog).
- `public/assets/` (vendor, CSS do CMS/portal, tema `sucesu`, fontes).
- `tests/Unit/V2` + `tests/Feature/V2` (124 testes) e `tests/api/*.sh` — contratos
  verificáveis.
- `docker-compose.yml`, `phpunit.xml`, `.gitlab-ci.yml`, `ci/`.
- `REFERENCE/` — apenas comparação visual do portal.

**Fora de escopo:** internals de vendor, refatorar/executar o sistema, código V1 residual
que não participa do boot V2, `.bak`.

## 4. Fatos medidos (base do dimensionamento)

| Métrica | Valor |
|---|---|
| Arquivos em `V2/` | 930 |
| Linhas `.php` (inclui Blade) | 100.480 |
| Linhas `.blade.php` | 46.902 |
| Arquivos `.blade.php` | 386 |
| Migrações | 87 |
| Arquivos de rota | 44 |
| Chamadas `Route::*` | 308 |
| Controllers | 57 |
| Models | 34 |
| Classes sob `Services/` | 270 |
| Serviços compartilhados | 13 |
| Módulos de negócio | 20 (+ grupos vazios) |
| Namespaces de layout | 2 (`v2-cms`, `v2-portal`) |
| Testes PHP | 124 |

Divergências já detectadas (entram como exemplo de "particularidade" nos docs):

- `V2/README.md` anuncia "UUIDv7"; a função
  `V2/Core/Migrations/2026_06_01_000001_create_v2_uuid_function.php:17-37` gera UUID v4
  aleatório.
- `V2/Core/README.md` cita `Controllers/InfraCmsController.php`, que não existe.
- `V2/layouts/cms/layouts/sidebar.blade.php.bak.20260724` é arquivo morto.

## 5. Arquitetura da informação

```text
sucesu_analise/
├── README.md                     # índice, status por onda, como navegar
├── PLANO.md                      # este arquivo
├── _contrato/                    # normativo (não é levantamento)
│   ├── TAXONOMIA.md
│   ├── TEMPLATE_MODULO.md
│   ├── TEMPLATE_SERVICO.md
│   ├── TEMPLATE_UI.md
│   ├── TEMPLATE_ARQUITETURA.md
│   └── CHECKLIST_EXTRACAO.md
├── 00_inventario/
│   ├── INVENTARIO.md             # tabela por unidade (arquivos, LOC, mix)
│   └── manifest.json             # 930 arquivos → 56 unidades
├── 01_arquitetura/               # W1 — 12 docs de mecanismo
├── 02_servicos-base/             # W2 — storage, media, activity-logger, mail,
│                                 #      digital-signature, feed-rss, dashboard
├── 03_servicos-ui/               # W2 — content-rich-editor, landing-sections-editor,
│                                 #      gallery, seo, search, excel-importer
├── 04_ui/                        # W1 — design system CMS/portal, a11y, assets
├── 05_modulos/<Grupo>/<Modulo>/  # W3/W4/W5 — spec, dados, rotas, cms, portal,
│                                 #      servicos-e-fluxos, paridade
├── 07_dados-iniciais/            # W5 — seeders
├── 08_matriz/                    # W5 — permissões, entidades, integrações,
│                                 #      singularidades, flags/navegação
├── 09_reimplementacao/           # W5 — ordem de construção, paridade, riscos
├── _indices/                     # CSVs canônicos + parciais por agente
└── tools/                        # coverage.py, lint_docs.py, merge_indices.py
```

Regra de arquivos por unidade (evita documentos vazios):

- até 8 arquivos: `spec.md` (paridade dentro).
- 9–25 arquivos: `spec.md`, `dados.md` (se houver migration), `rotas.md` (se houver
  `Routes/`), `cms.md` (se houver `Views/cms`), `portal.md` (se houver `Views/portal`).
- >25 arquivos: os acima + `servicos-e-fluxos.md` e `paridade.md`.
- `SVC-*` de UI: `spec.md` + `ui-contrato.md` (+ detalhamento próprio quando grande).

## 6. Dependências medidas e consequência de ordem

Extraídas por análise estática de `use/new/extends/implements` e referências de view
(`v2-*::`, `v2-service-*::`):

- `Core` → `Services/{ActivityLogger,Dashboard,Search,Storage}` e três módulos
  (`UnidadeRegional`, `BasicPage`, `Noticias`) em pontos específicos.
- `Services/Storage` ← `Media`, `Gallery`, `ContentRichEditor` (indireto), `SLE`,
  `SupportConfigs`, `BasicPage`.
- `Services/Media` ← `Gallery`, `ContentRichEditor`, `SLE`, `Noticias`, `Agenda`...
- `Services/Gallery` → importa models de `Associados`, `Parceiros`, `UnidadeRegional`,
  `Agenda`, `Noticias`, `TrabalheConosco` (acoplamento reverso — documentar como
  particularidade).
- `Services/Search` → importa models de `Associados`, `UnidadeRegional`, `Noticias`.
- `Services/LandingSectionsEditor` ← `Homepage` (12 referências) e `SobreNos` (7).
- `Support/StructuralLandingEditor` ← `Homepage`, `SobreNos`, `FaleConosco`,
  `SupportConfigs`.
- `Publicacoes/Noticias` é dependência de `UnidadeRegional`, `Homepage`, `Search`,
  `NoticiasImport`.
- `Layouts/Homepage` agrega `Noticias`, `Agenda`, `Parceiros`, `LSE`, `SLE`.
- `Institucional/SobreNos` agrega `LSE`, `SLE`, `Associados`, `UnidadeRegional`.

Como o levantamento é **read-only**, dependência não bloqueia leitura; ela impõe
**contrato primeiro**: o documento da dependência precisa existir antes do documento que
a consome, para que as descrições de API/UI não divirjam.

## 7. Ondas

Máximo simultâneo: 11 agentes de autoria + 2 de QA. Uma unidade tem **um dono**.

### 7.1 Onda 1 — espinha dorsal e UI global (7 agentes)

| Agente | Unidades | Documentos |
|---|---|---|
| `boot-navigation` | `ARCH-OVERVIEW`, `CORE-BOOT`, `MOD-INDEX`, `MOD-_EXEMPLOS-EXEMPLOAPI`, `GRP-API`, `GRP-ATOSOFICIAIS`, `GRP-CONEXOES`, `GRP-INFRAESTRUTURA`, `GRP-LAYOUTS`, `GRP-PUBLICACOES`, `GRP-RELACIONAMENTOS`, `GRP-SUPPORT`, `GRP-UTILITARIOS`, `GRP-_EXEMPLOS` | `01_arquitetura/00-visao-geral.md`, `01-boot-autodiscovery.md`, `02-roteamento.md`, `10-grupos-e-modulos-vazios.md`, `05_modulos/README.md` |
| `core-auth` | `CORE-AUTH` | `03-auth-rbac-sentinel.md`, `04-middlewares-seguranca.md`; `_indices/permissoes.csv` inicial |
| `core-data` | `CORE-DATA` + inventário das 87 migrações | `05-persistencia-uuid.md`, `06-tenancy-regional.md`; `_indices/tabelas.csv` inicial |
| `core-cms` | `CORE-CMS` | `07-controllers-core.md`, `08-helpers-composers.md` |
| `ui-cms` | `UI-CMS` (37) | `04_ui/01-cms-design-system.md`, `02-cms-componentes.md` |
| `ui-portal` | `UI-PORTAL` (50) | `04_ui/03-portal-design-system.md`, `04-acessibilidade.md`, `05-portal-componentes.md` |
| `runtime-satelites` | `CORE-RUNTIME` + satélites | `09-cache-csp-minify-maintenance.md`, `11-satelites-build-config.md` |

O `MOD-_EXEMPLOS-EXEMPLOAPI` vai aqui porque é o **molde canônico de módulo**; serve de
referência para todos os agentes seguintes.

### 7.2 Onda 2 — serviços (9 agentes)

| Agente | Unidades | Documentos |
|---|---|---|
| `svc-cre` | `SVC-CONTENTRICHEDITOR` (85) | `03_servicos-ui/content-rich-editor/{spec,ast-e-renderers,ui-contrato}.md` |
| `svc-lse` | `SVC-LANDINGSECTIONSEDITOR` (86) | `03_servicos-ui/landing-sections-editor/{spec,widgets-e-schemas,ui-contrato}.md` |
| `svc-storage-media` | `SVC-STORAGE`, `SVC-MEDIA` | `02_servicos-base/storage.md`, `03_servicos-ui/media/{spec,ui-contrato}.md` |
| `svc-gallery` | `SVC-GALLERY` | `03_servicos-ui/gallery/{spec,ui-contrato}.md` |
| `svc-seo` | `SVC-SEO` | `03_servicos-ui/seo/{spec,contrato}`.md |
| `svc-search-dash` | `SVC-SEARCH`, `SVC-DASHBOARD`, `SVC-INDEX` | `03_servicos-ui/search/{spec,indexacao}.md`, `02_servicos-base/dashboard.md` |
| `svc-excel` | `SVC-EXCELIMPORTER` | `03_servicos-ui/excel-importer/{spec,ui-contrato}.md` |
| `svc-signature` | `SVC-DIGITALSIGNATURE` | `02_servicos-base/digital-signature/{spec,assinatura-pdf}.md` |
| `svc-mail-ops` | `SVC-MAILSERVICE`, `SVC-FEEDRSS`, `SVC-ACTIVITYLOGGER` | `02_servicos-base/{mail-service,feed-rss,activity-logger}.md` |

Cada doc de serviço entrega, obrigatoriamente: API pública com assinaturas, efeitos,
consumidores, 2–5 receitas de uso, anti-uso e (quando houver views) contrato de UI.

### 7.3 Onda 3 — plataforma de páginas (4 agentes)

| Agente | Unidades | Documentos |
|---|---|---|
| `page-supportconfigs` | `MOD-SUPPORT-SUPPORTCONFIGS` | `05_modulos/Support/SupportConfigs/{spec,dados,rotas,cms}.md` |
| `page-sle` | `MOD-SUPPORT-STRUCTURALLANDINGEDITOR` (53) | `.../StructuralLandingEditor/{spec,editores-temas-e-assets,ui}.md` |
| `page-import` | `MOD-SUPPORT-NOTICIASIMPORT` | `.../NoticiasImport/{spec,contrato-api}.md` |
| `page-basicpage` | `MOD-LAYOUTS-BASICPAGE` | `05_modulos/Layouts/BasicPage/{spec,runtime-e-seo}.md` |

`StructuralLandingEditor` e `BasicPage` são a base do portal dinâmico; `SupportConfigs`
define tema, flags, e-mail e manutenção usados por todos.

### 7.4 Onda 4 — domínios (10 agentes)

| Agente | Unidades | Observação |
|---|---|---|
| `noticias-a` | `MOD-PUBLICACOES-NOTICIAS` (fatia dados/import/API) | dono do `spec.md`; consolida `noticias-b` |
| `noticias-b` | mesma unidade (fatia controllers/views) | `cms.md`, `portal.md`, contrato do editor |
| `agenda` | `MOD-PUBLICACOES-AGENDA` | |
| `trabalhe` | `MOD-PUBLICACOES-TRABALHECONOSCO` | inclui candidaturas, e-mail, PDF |
| `associados` | `MOD-CONEXOES-ASSOCIADOS` | tags, token de API, galeria |
| `parceiros` | `MOD-CONEXOES-PARCEIROSINSTITUCIONAIS` | |
| `regional` | `MOD-CONEXOES-UNIDADEREGIONAL` | API OpenAPI, token, tenancy |
| `institucional-a` | `MOD-INSTITUCIONAL-HISTORIA`, `MOD-INSTITUCIONAL-FALECONOSCO` | |
| `institucional-b` | `MOD-INSTITUCIONAL-ASSOCIESE` | planos, leads, e-mail |
| `infra` | `MOD-INFRAESTRUTURA-CERTIFICADODIGITAL`, `MOD-INFRAESTRUTURA-GESTAOPERMISSOES`, `MOD-INFRAESTRUTURA-MAILAUDIT`, `MOD-INFRAESTRUTURA-FEEDRSS` | 4 módulos, 1 dono |

Divisão do `Noticias`: `noticias-a` cobre `Models/`, `Migrations/`, `Requests/`,
`Services/`, `Console/`, `Routes/` e escreve `spec.md` + `dados.md` + `rotas.md`;
`noticias-b` cobre `Controllers/` e `Views/` e escreve `cms.md` + `portal.md`.
O dono consolida e valida citações cruzadas.

### 7.5 Onda 5 — composição, dados e síntese (5 agentes)

| Agente | Unidades | Documentos |
|---|---|---|
| `homepage` | `MOD-LAYOUTS-HOMEPAGE` (71) | `.../Homepage/{spec,dados,cms,portal,integradores}.md` |
| `sobrenos` | `MOD-INSTITUCIONAL-SOBRENOS` (49) | `.../SobreNos/{spec,editores-e-widgets,cms,portal}.md` |
| `seeds` | `DATA-SEEDS-BASICPAGES`, `DATA-SEEDS-CONTENT`, `DATA-SEEDS-SLE` | `07_dados-iniciais/*.md`, `dados-iniciais.csv` |
| `matriz` | — | `08_matriz/{singularidades,permissoes-e-papeis,entidades-e-propriedade,integracoes-e-contratos,flags-e-navegacao}.md` |
| `reimplementacao` | — | `09_reimplementacao/{ordem-de-construcao,paridade,riscos,migracao-de-dados}.md` |

`Homepage` e `SobreNos` vêm por último porque **agregam** Notícias, Agenda, Parceiros,
Associados, Unidade Regional, LSE e SLE; suas descrições precisam dos contratos já
fechados.

Somatório por onda: **20 + 14 + 4 + 13 + 5 = 56 unidades**; nenhuma unidade fica sem onda.

### 7.6 QA por gate (2 agentes)

- `reviewer`: amostra de 25% dos docs da onda; confere citações, trechos, quatro
  dimensões, receitas, paridade e consistência entre docs dependentes.
- `security-reviewer`: obrigatório em G1 (auth/RBAC/middlewares) e G4 (APIs, tokens,
  assinatura digital, uploads). Verifica se o documento descreve corretamente
  autenticação, autorização, escopo regional, segredos e validação.

## 8. Protocolo de execução por agente

Prompt canônico (adaptar apenas o bloco `UNIDADE`):

```text
Papel: documentador read-only do legado V2.

UNIDADE: <ID>
FONTES: <prefixos do manifest>
SAÍDA: <arquivos .md sob sucesu_analise/>
ÍNDICES: sucesu_analise/_indices/parcial-<ID>/<nome>.csv

Leia primeiro:
1. sucesu_analise/_contrato/TAXONOMIA.md
2. sucesu_analise/_contrato/TEMPLATE_<tipo>.md
3. sucesu_analise/_contrato/CHECKLIST_EXTRACAO.md
4. sucesu_analise/00_inventario/manifest.json (só a fatia da unidade)
5. Docs das dependências já concluídos

Regras:
- Não altere nada em sucesu-cms/. Nenhum artisan/migration/seeder.
- Toda afirmação técnica com citação caminho:linha.
- Foco em EFEITO, ABORDAGEM, PARTICULARIDADE, INTEGRABILIDADE.
- 3–8 trechos de código pivô (5–20 linhas), literais e citados.
- Inclua 2–5 receitas de uso e 1–3 anti-usos.
- Marque [C], [I], [L]; lacunas viram LG-*.
- Responda o checklist inteiro; use "não se aplica" com justificativa.
- Emita as linhas de índice (rotas/tabelas/componentes/permissoes/config) em
  _indices/parcial-<ID>/{rotas,tabelas,componentes,permissoes,config}.csv;
  não edite os arquivos canônicos.
- Ao terminar: status: revisao e relatório curto com arquivos, contagens e lacunas.
```

Sequência interna do agente:

1. Ler `module.json`? Não — ler `ModuleProvider`, rotas, controllers, models, migrations.
2. Escrever a ficha e o efeito **antes** do inventário.
3. Extrair rotas e tabelas para os índices enquanto lê (evita esquecimento).
4. Escrever abordagem com os trechos pivô.
5. Escrever particularidades comparando com unidades semelhantes (indicadas pelo
   coordenador).
6. Escrever integrabilidade com assinaturas e receitas.
7. Preencher inventário operacional e paridade.
8. Rodar `lint_docs.py` no próprio arquivo; corrigir.

## 9. Escrita, concorrência e handoff

- Cada agente escreve apenas na pasta da sua unidade e em `_indices/parcial-<ID>/`.
- Coordenador da onda consolida índices e atualiza `README.md` (status).
- Conflito de conteúdo entre unidades é resolvido pelo coordenador, com a fonte citada;
  nunca por média de descrições.
- Handoff: o doc de unidade termina com "Evidências consultadas" e aponta dependências
  com IDs, não com links relativos frágeis.
- Antes de encerrar a onda: `git -C sucesu-cms status --porcelain V2` deve ser vazio.

## 10. Gates e verificação

| Gate | Após | Critério executável |
|---|---|---|
| G0 | Onda 0 | `coverage.py --strict` reconhece 930/930 arquivos e 56 unidades; `lint_docs.py` sem erro nos docs existentes |
| G1 | Onda 1 | `coverage.py --docs` cobre as 20 unidades da onda; todo middleware de `app/Http/Kernel.php` citado em `04-*`; 44 arquivos de rota enumerados; 87 arquivos de layout catalogados; `security-reviewer` aprova auth |
| G2 | Onda 2 | 13 serviços com API pública, efeitos, consumidores e ≥2 receitas; `servicos.csv` com 13 linhas; UI services com `ui-contrato.md` |
| G3 | Onda 3 | Support/Layouts com contratos de tema, editor e fallback; citações cruzadas consistentes |
| G4 | Onda 4 | 20 módulos concluídos; `rotas.csv` concilia as 308 `Route::*`; `tabelas.csv` cobre 87 migrações; `componentes.csv` cobre 386 blades (ou justifica morto/gerado); `security-reviewer` aprova APIs |
| G5 | Onda 5 | `coverage.py --docs --complete` verde (56/56), 930/930 arquivos cobertos; matriz e seeds completos; 3 reconstruções cegas com relatório de divergência |

Comandos:

```bash
python3 sucesu_analise/tools/coverage.py --strict        # integridade do manifest
python3 sucesu_analise/tools/coverage.py --docs          # unidades com documento
python3 sucesu_analise/tools/coverage.py --docs --complete  # gate final
python3 sucesu_analise/tools/lint_docs.py                # forma e evidência
python3 sucesu_analise/tools/merge_indices.py --check    # índices parciais
git -C sucesu-cms status --porcelain V2                  # deve sair vazio
```

Regra de gate: **cobertura antes de profundidade**. Se uma unidade grande não couber no
detalhamento, primeiro garantir todas as rotas, tabelas, telas e contratos públicos; o
aprofundamento fica registrado como `LG-*` com prioridade — nunca como omissão silenciosa.

## 11. Por que esta ordem

1. **Core primeiro:** boot, rotas, auth, dados e UI global são citados por todos; erros
   aqui contaminam o corpus inteiro.
2. **Serviços antes de módulos:** módulos consomem `SVC-*`; o contrato de UI desses
   serviços (props, eventos, DOM) é pré-requisito das telas.
3. **Plataforma antes de domínio:** `SupportConfigs` define tema/flags; `SLE` define
   layout e componentes; `BasicPage` define o fallback de portal.
4. **Notícias antes de Unidade Regional e Homepage:** ambos dependem do contrato de
   notícia (estados, categoria regional, feed, busca).
5. **Composições por último:** `Homepage` e `SobreNos` agregam vários módulos; só fazem
   sentido com os contratos fechados.
6. **Seeds, matriz e reimplementação no fim:** dependem de todos os schemas e contratos.

## 12. Limites de documento (qualidade, não tempo)

- `spec.md`: 150–400 linhas; acima disso, dividir em arquivos temáticos.
- Docs de apoio: 60–200 linhas.
- Trechos de código: ≤120 linhas por documento.
- Tabelas em vez de prosa para inventário; prosa apenas para mecanismo e julgamento.
- Nenhum `[PREENCHER]`, nenhum "ver código" como resposta.

## 13. Riscos e mitigação

| Risco | Mitigação |
|---|---|
| Unidades grandes (`Noticias` 9.954 LOC, `LSE` 7.067, `SLE` 6.812, `CRE` 6.219, `UR` 6.699) | fatiar por área com um dono; contrato público primeiro; docs temáticos |
| Comportamento em JS (nodes Tiptap, managers da galeria, LSE, SLE) | `ui-contrato.md` obrigatório: DOM, eventos, estado, init/teardown, dependências |
| Rotas/algoritmos dinâmicos (fallback `/{slug}`, autodiscovery) | documentar o algoritmo e os pontos de extensão, não só a lista |
| Divergência README × código | regra de evidência; registrar as duas fontes em Particularidades |
| Acoplamento reverso (`Gallery`/`Search` importando models de módulos) | mapear em `08_matriz/integracoes-e-contratos.md`; não "corrigir" no doc |
| Dados que só existem no banco (roles, categorias, configs, páginas) | seeds + migrations + fluxo de admin; snapshot SQL somente leitura se o banco estiver disponível, marcado como `[C]` com data |
| Arquivos mortos (`.bak`, duplicatas) | linha em `arquivos.csv` com papel `morto`, sem especificação |
| Editores concorrentes (`CRE`, `LSE`, `SLE`, `BasicPage`, `Homepage`) | `08_matriz/singularidades.md` com comparação explícita de responsabilidade |
| Violação de read-only | checklist do agente + `git status` no gate |

## 14. Próxima ação

Disparar a **Onda 1** com os 7 agentes da seção 7.1, em paralelo, cada um com o prompt
canônico e a fatia do manifest. O primeiro entregável verificável é
`01_arquitetura/01-boot-autodiscovery.md` + `_indices/rotas.csv` inicial + catálogo dos 87
arquivos de layout.
