# Validação Interna — /rotina-imperatriz

## Princípio

A skill `/rotina-imperatriz` **NÃO declara conclusão até validar 10 itens obrigatórios**. Cada item tem critério objetivo de aprovação. Se algum falha, a skill **refaz** o componente antes de avisar a mentorada que terminou.

Mentorada nunca vê "pronto" enquanto tem peça quebrada. Isso é padrão Imperatriz.

---

## Quando a validação roda

Ao final da **Fase 5** (geração), antes de mostrar a mensagem de conclusão pra mentorada. A skill executa internamente uma rotina chamada `validar_entrega()` que percorre os 10 checks abaixo.

Se passar nos 10 → mostra mensagem de sucesso + link do dashboard.
Se falhar em N → corrige cada um + roda de novo (até 3 tentativas; se ainda falhar, alerta a mentorada e mostra o que faltou).

---

## Os 10 Checks Obrigatórios

### CHECK 1 — Os 22 arquivos `.md` existem?

**Como valida:** lista o conteúdo da pasta `Rotina-Imperatriz-[Nome]/` (ou da pasta de versão `v2/`, `v3/` em modo revisar) e verifica que cada um dos 22 nomes esperados existe E tem tamanho > 200 bytes (não pode ser arquivo vazio ou placeholder).

**Lista canônica:**
```
00-Diagnostico-Inicial.md
01-Sete-Pilares-Score.md
02-Projeto-Ancora.md
03-Rotina-Diaria.md
04-Rotina-Semanal.md
05-Compromissos-Fixos.md
06-Mapa-do-Arsenal.md
07-Sistema-de-Ondas.md
08-Pulso-Imperatriz-Roteiro.md
09-Calibrador-Esforco.md
10-Tres-Principios.md
11-Indicadores-Semanais.md
12-Bloqueios-Antecipados.md
13-Volume-Por-Pilar.md
14-Receita-Domingo-Sagrado.md
15-Recompensa-Por-Fase.md
16-Plano-90-Dias.md
17-Reposicionamento-Trimestral.md
18-Mantras-Imperatriz.md
19-Bandeiras-Vermelhas.md
20-Index-Mestre.md
21-Apresentacao-Final.md
```

**Mensagem de erro:**
> Faltam [N] arquivos: [lista]. Vou gerar de novo.

**Ação corretiva:** chama de novo a função de geração só dos arquivos faltantes.

---

### CHECK 2 — Dashboard `index.html` foi gerado e abre sem erro de sintaxe?

**Como valida:**
1. Verifica que `index.html` existe na pasta do projeto
2. Lê o conteúdo e roda validação HTML básica:
   - Tem `<!DOCTYPE html>`?
   - Tags `<html>`, `<head>`, `<body>` abrem e fecham?
   - Todas as tags `<div>`, `<section>`, `<header>` têm fechamento correspondente?
   - Nenhum placeholder `{{...}}` sobrou no HTML final?
3. Conta linhas — dashboard tem que ter pelo menos 300 linhas (se tem 50, algo deu errado)

**Mensagem de erro:**
> Dashboard quebrado: [motivo específico — "placeholder não substituído {{NOME}}" ou "tag div sem fechamento na linha 142" ou "arquivo tem só 47 linhas"]. Regerando.

**Ação corretiva:** roda de novo o gerador de dashboard, dessa vez com log detalhado de cada substituição de placeholder.

---

### CHECK 3 — Checklist A4 imprimível existe (PDF ou HTML)?

**Como valida:**
1. Verifica existência de `checklist-imprimivel.html` (ou `.pdf` se tiver gerado em PDF) na pasta `dashboard/` ou raiz
2. HTML tem `@media print` no CSS?
3. Tem os 7 dias da semana?
4. Tem o nome da mentorada substituído (sem `{{NOME}}` cru)?

**Mensagem de erro:**
> Checklist faltando ou incompleto: [motivo]. Regerando.

**Ação corretiva:** chama o template do checklist com os dados da mentorada.

---

### CHECK 4 — Compromissos fixos foram ENCAIXADOS, não ignorados?

**Como valida:**
1. Lê `.estado.json` → pega array `compromissos_fixos`
2. Lê `04-Rotina-Semanal.md` → procura cada compromisso pelo nome
3. Cada compromisso fixo precisa aparecer:
   - No arquivo de rotina semanal (texto)
   - No dashboard `index.html` (grade visual)
   - No checklist imprimível (na coluna do dia certo)
4. Os blocos de **trabalho da rotina** não podem se sobrepor ao horário dos compromissos fixos. Skill checa overlap.

**Exemplo de violação:** mentorada tem "Buscar filho 11:30-12:30 todos os dias" e a rotina sugere "Bloco de criação de conteúdo 11:00-13:00 segunda".

**Mensagem de erro:**
> Conflito: bloco "Criação de Conteúdo segunda 11h-13h" se sobrepõe ao compromisso fixo "Buscar filho 11:30-12:30". Vou reposicionar o bloco.

**Ação corretiva:** recalcula a rotina semanal respeitando os blocos travados, regera 04-Rotina-Semanal.md, dashboard e checklist.

---

### CHECK 5 — Os 3 princípios fundadores aparecem nos arquivos relevantes?

**Os 3 princípios:**
1. **Volume mata ansiedade** (rotina entrega volume previsível → tira ansiedade)
2. **Compromisso fixo é sagrado** (família/saúde nunca é encaixado, sempre é travado primeiro)
3. **Pulso semanal é inegociável** (sem o ritual de domingo, rotina vira papel de parede)

**Como valida:** lê o conteúdo dos arquivos:
- `10-Tres-Principios.md` — tem que ter os 3 nomeados explicitamente, cada um com seção própria + explicação
- `00-Diagnostico-Inicial.md` — tem que mencionar pelo menos 1 dos 3 no contexto
- `04-Rotina-Semanal.md` — princípio 2 (compromisso fixo) tem que aparecer aplicado
- `08-Pulso-Imperatriz-Roteiro.md` — princípio 3 tem que aparecer como justificativa
- `13-Volume-Por-Pilar.md` — princípio 1 tem que aparecer como justificativa

**Como detecta:** busca textual case-insensitive pelas frases-chave:
- "volume mata ansiedade" OU "volume previsível"
- "compromisso fixo é sagrado" OU "inegociável"
- "pulso semanal" + "inegociável" OU "papel de parede"

**Mensagem de erro:**
> Princípio "[X]" não aparece em [arquivo Y]. Vou incluir.

**Ação corretiva:** regera o arquivo com o princípio explicitado.

---

### CHECK 6 — Calibrador de Esforço foi aplicado nos 5 momentos?

**Os 5 momentos do Calibrador:**
1. Antes de definir o Projeto Âncora (Fase 2)
2. Antes de definir o volume semanal por pilar (Fase 3)
3. Antes de aceitar compromisso novo (regra da rotina)
4. Antes de subir de onda (Fase 4)
5. No Pulso de domingo (semanal)

**Como valida:** o arquivo `09-Calibrador-Esforco.md` tem que ter:
- Seção pra cada um dos 5 momentos (com título `## Momento 1`, `## Momento 2`, ...)
- Cada seção tem a pergunta-chave do calibrador (literal)
- Cada seção tem a tabela de 3 níveis (LEVE / MÉDIO / PESADO)
- Cada seção indica em qual outro arquivo o calibrador é aplicado

**Mensagem de erro:**
> Calibrador de Esforço incompleto: faltam momentos [lista]. Regerando arquivo 09.

---

### CHECK 7 — Pulso Imperatriz tem roteiro completo (não placeholder)?

**Como valida:** lê `08-Pulso-Imperatriz-Roteiro.md` e checa que tem:
- 5 etapas (Cumprimento, Indicadores, 3 Perguntas, Calibração, Ata + Recompensa)
- As 3 perguntas literais do Pulso ("O que funcionou?", "O que não funcionou?", "Onde eu travei?")
- Duração estimada de cada etapa (em minutos)
- Template da ata pra mentorada copiar/colar
- Pelo menos 1 exemplo preenchido com dados fictícios (não placeholder cru)

**Mensagem de erro:**
> Arquivo 08 (Pulso) tem placeholder não preenchido OU faltam etapas [lista]. Regerando com dados da mentorada.

---

### CHECK 8 — Mapa do Arsenal tem 1+ skill-mãe E 5+ filhas indicadas?

**Como valida:** lê `06-Mapa-do-Arsenal.md` e checa que:
- Identifica explicitamente pelo menos 1 **skill-mãe** (ex: `/maestro-de-conteudo`, `/imperatriz-das-vendas`, `/processo-imperatriz`)
- Lista pelo menos 5 **skills-filhas** com nome e descrição curta
- Cada filha tem indicação de QUANDO usar (ex: "use no início da semana", "use só depois de gravar")
- Tem seção "Skills pra evitar agora" (anti-arsenal — o que NÃO usar nesse nível)

**Mensagem de erro:**
> Mapa do Arsenal incompleto: [tem só 3 filhas / não tem skill-mãe / falta anti-arsenal]. Regerando.

---

### CHECK 9 — Sistema de Ondas tem as 3 ondas do nível identificado?

**Como valida:** lê `.estado.json` → pega `nivel` (Sobrevivente/Tático/Inteligente/Império).

Lê `07-Sistema-de-Ondas.md` e checa que tem **3 ondas mapeadas** pra esse nível, cada uma com:
- Nome da onda (ex: "Onda 1: do Sobrevivente ao Tático")
- Duração estimada (em dias ou semanas)
- O que entra (3-5 movimentos concretos)
- O que sai (1-2 coisas a abandonar)
- Critério de virada de onda (quando saber que terminou)

**Mensagem de erro:**
> Sistema de Ondas tem [N] ondas, esperado 3. OU Onda [X] não tem critério de virada definido. Regerando.

---

### CHECK 10 — `.estado.json` foi atualizado pra fase_atual=5 (completo)?

**Como valida:**
1. Lê `.estado.json`
2. Verifica `fase_atual == 5`
3. Verifica que `arquivos_gerados` (array) tem os 22 nomes
4. Verifica que `dashboard_gerado == true`
5. Verifica que `checklist_a4_gerado == true`
6. Verifica que `data_conclusao` foi setado
7. Verifica que `nivel`, `projeto_ancora`, `urgencia` e `tempo_disponivel_horas_semana` não são null

**Mensagem de erro:**
> Estado incompleto: [lista de campos null]. Atualizando.

**Ação corretiva:** preenche os campos faltantes lendo dos `respostas` armazenados.

---

## Fluxo da validação

```
Skill gera os 22 .md + dashboard + checklist (Fase 5)
                    │
                    ▼
        validar_entrega() chamada
                    │
                    ▼
    Roda CHECK 1 → CHECK 10 em ordem
                    │
        ┌───────────┴───────────┐
        ▼                       ▼
   TODOS PASSAM            ALGUM FALHA
        │                       │
        ▼                       ▼
  Mostra sucesso        Lista falhas + roda
  pra mentorada         correção pra cada uma
                                │
                                ▼
                        Re-roda validar_entrega()
                                │
                        ┌───────┴───────┐
                        ▼               ▼
                  Passa todos       Falha de novo
                        │               │
                        ▼               ▼
                   Sucesso       Tentativa 2 (até 3)
                                        │
                                        ▼
                              Se chegou na 3ª e ainda
                              falha: alerta mentorada
                              com lista do que faltou
                              e oferece intervenção manual
```

---

## Mensagens da skill em cada cenário

### Cenário A — tudo passou

```
Carolina, sua Rotina Imperatriz está pronta. ✓

22 arquivos gerados + dashboard interativo + checklist A4 pra impressão.

Onde ver:
- Dashboard: file:///Users/.../Rotina-Imperatriz-Carolina/index.html
- Checklist pra imprimir: file:///Users/.../Rotina-Imperatriz-Carolina/dashboard/checklist-imprimivel.html
- Vault Obsidian: 03 - Projetos/Rotina-Imperatriz-Carolina/

Seu nível: Tático
Projeto Âncora: Estruturar linha editorial + 30 posts
Próxima Onda: Tático → Inteligente (~60 dias)

Próximos passos:
1. Imprime o checklist A4 (gruda na parede)
2. Domingo de manhã, roda /rotina-imperatriz pulso
3. Em 90 dias (20/08/2026), roda /rotina-imperatriz revisar
```

### Cenário B — falha na primeira rodada, corrigiu na segunda

```
[interno, mentorada não vê:]
Validação rodada 1: falhou CHECK 4 (conflito de horário) e CHECK 8 (mapa de arsenal só com 3 filhas).
Corrigindo...
Validação rodada 2: tudo OK.

[mentorada vê:]
Carolina, sua Rotina Imperatriz está pronta. ✓
[... mesma mensagem do Cenário A]
```

### Cenário C — falhou 3 vezes seguidas

```
Carolina, gerei sua rotina mas detectei [N] inconsistências que não consegui
corrigir sozinha:

1. [Item específico — ex: "O bloco 'Criação de Conteúdo segunda 11h-13h' continua
   sobrepondo o compromisso 'Buscar filho 11:30-12:30'. Provável conflito mais
   profundo no cálculo de blocos."]
2. [...]

A rotina está 90% pronta e usável. Sugiro:
- Você pode abrir o arquivo 04-Rotina-Semanal.md e ajustar manualmente os blocos
  conflitantes
- OU me chamar de novo com `/rotina-imperatriz` modo principal, fase 3, pra
  refazer só a construção da rotina

O que prefere?
```

---

## Por que 10 checks e não 3

**3 checks** garantem só que o arquivo existe — não que o conteúdo serve.

**10 checks** garantem que cada componente faz seu trabalho:
- Os arquivos existem (1, 2, 3)
- Os compromissos da mentorada foram respeitados (4)
- Os princípios fundadores estão aplicados (5, 6)
- Os artefatos operacionais funcionam (7, 8, 9)
- O estado interno está coerente (10)

Sem os 10, a skill entrega papel bonito que não vive na vida da mentorada. Com os 10, entrega rotina que ela consegue executar segunda de manhã sem mais nenhuma pergunta.
