# 🔌 FADAP PROTOCOL — O Motor de Sincronização

O **FADAP Protocol** (Fastapp Data & Architecture Protocol) rege a sincronia entre as três camadas do sistema: Metadados, Manifesto e Storage.

---

## 🧩 O Problema das Três Camadas

1.  **Desejo (Metadata Layer)**: O JSON editado no Schema Manager (`App.objects`).
2.  **Percepção (Manifest Layer)**: O arquivo estático `static-manifest.ts` para performance.
3.  **Realidade (Storage Layer)**: As tabelas físicas e colunas no PostgreSQL.

O FADAP garante que a **Realidade** siga o **Desejo**.

---

## 🔄 O Ciclo de Sincronização (Fadap Sync)

Sempre que uma mudança estrutural ocorre, o motor executa:

1.  **Metadados (Desejo - Sovereign Patch)**: O JSON editado via `PATCH /api/app/[id]`. É a semente de toda mudança.
2.  **Manifesto (Percepção - Snapshot Sync)**: Gerado via `POST /api/system/snapshot`. O motor bloqueia execuções de DDL se o manifesto não estiver em sincronia.
3.  **Storage (Realidade - DDL Automation)**: O motor Nuxt analisa a tabela física e executa migrações (`ALTER TABLE`). **Este passo ocorre automaticamente através da API, nunca manualmente.**

> [!WARNING]
> A **Realidade** deve sempre seguir o **Desejo** através da API. Edições manuais no banco ou no manifesto causam "Esquizofrenia de Arquitetura", onde o motor não consegue mais prever o comportamento do dado.

---

## 🛠️ Heurísticas de Mapeamento (DDL Generator)

O motor traduz tipos de metadados para tipos SQL reais:

| Tipo Meta | SQL (Postgres) | Motivo |
| :--- | :--- | :--- |
| `string`, `enum` | `TEXT` | Flexibilidade máxima. |
| `number` | `DOUBLE PRECISION` | Precisão decimal. |
| `boolean` | `BOOLEAN` | Nativo. |
| `array` / `json` | `JSONB` | Performance em dados semi-estruturados. |
| `date` / `datetime`| `TIMESTAMP TZ` | Melhor prática global. |

---

## 🧬 Ontologia v3 e o FADAP

Com a Ontologia v3, o FADAP sincroniza não apenas campos e tabelas, mas também:
- **Semântica de campo** (`semantic: asset | money | phone`): persistida no JSON de `objects`
- **Topologia de módulo** (`topology: focal | connected`): persistida no JSON de `modules`
- **Temporal type** (`temporal_type: event`): persistida para ativar agendas automáticas

> [!TIP]
> O FADAP garante que as extensões semânticas da Ontologia v3 viagem do **Agent → Architect → Snapshot → Motor** sem perda de informação. É o protocolo que habilita a **Auto-Evolução**.

---

> "O Protocolo Fadap é a garantia de que o sistema é evoluível sem medo de quebra de banco de dados. Ele é o elo entre a intenção (Agent) e a realidade (Storage)."

