@semacode/cli 1.5.28 → 1.5.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +279 -265
- package/AGENT_CONTEXT_PACK.json +164 -0
- package/README.md +144 -144
- package/SEMA_BRIEF.curto.txt +7 -7
- package/SEMA_BRIEF.md +464 -65
- package/SEMA_BRIEF.micro.txt +6 -6
- package/SEMA_INDEX.json +6723 -669
- package/dist/bridge.d.ts +52 -0
- package/dist/bridge.js +318 -0
- package/dist/bridge.js.map +1 -0
- package/dist/comandos.d.ts +11 -0
- package/dist/comandos.js +110 -0
- package/dist/comandos.js.map +1 -0
- package/dist/contexto.d.ts +34 -0
- package/dist/contexto.js +197 -0
- package/dist/contexto.js.map +1 -0
- package/dist/drift.d.ts +1 -1
- package/dist/drift.js +32 -5
- package/dist/drift.js.map +1 -1
- package/dist/index.js +391 -64
- package/dist/index.js.map +1 -1
- package/dist/lua-symbols.d.ts +0 -6
- package/dist/lua-symbols.js +11 -78
- package/dist/lua-symbols.js.map +1 -1
- package/dist/projeto.js +6 -0
- package/dist/projeto.js.map +1 -1
- package/dist/tipos.d.ts +1 -1
- package/docs/AGENT_STARTER.md +109 -109
- package/docs/api.md +82 -0
- package/docs/cli.md +175 -175
- package/docs/como-ensinar-a-sema-para-ia.md +155 -155
- package/docs/deploy.md +93 -93
- package/docs/documentacao.md +88 -88
- package/docs/env.md +105 -105
- package/docs/extensao-vscode.md +53 -53
- package/docs/fluxo-pratico-ia-sema.md +187 -187
- package/docs/instalacao-e-primeiro-uso.md +134 -134
- package/docs/integracao-com-ia.md +110 -110
- package/docs/mcp.md +292 -292
- package/docs/pagamento-ponta-a-ponta.md +171 -171
- package/docs/persistencia-vendor-first.md +151 -151
- package/docs/prompt-base-ia-sema.md +111 -111
- package/docs/repositories.md +54 -54
- package/docs/rollback.md +49 -49
- package/docs/seguranca.md +126 -126
- package/docs/sintaxe.md +218 -218
- package/exemplos/author_obra_comum.sema +294 -294
- package/exemplos/author_tema_sensivel.sema +264 -264
- package/exemplos/profile_game.sema +114 -114
- package/exemplos/profile_legal.sema +105 -105
- package/exemplos/profile_ops.sema +110 -110
- package/exemplos/profile_research.sema +104 -104
- package/exemplos/profile_software.sema +123 -123
- package/exemplos/profile_workflow_n8n.sema +99 -99
- package/llms-full.txt +10 -9
- package/llms.txt +8 -7
- package/node_modules/@sema/gerador-css/package.json +1 -1
- package/node_modules/@sema/gerador-dart/package.json +1 -1
- package/node_modules/@sema/gerador-html/package.json +1 -1
- package/node_modules/@sema/gerador-javascript/package.json +1 -1
- package/node_modules/@sema/gerador-lua/package.json +1 -1
- package/node_modules/@sema/gerador-python/package.json +1 -1
- package/node_modules/@sema/gerador-typescript/package.json +1 -1
- package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +1 -1
- package/node_modules/@sema/nucleo/dist/index.d.ts +17 -0
- package/node_modules/@sema/nucleo/dist/index.js +28 -0
- package/node_modules/@sema/nucleo/dist/index.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/ir/conversor.js +4 -0
- package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +3 -3
- package/node_modules/@sema/nucleo/dist/parser/parser.js +2 -0
- package/node_modules/@sema/nucleo/dist/parser/parser.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +2 -2
- package/node_modules/@sema/nucleo/dist/semantico/analisador.js +3 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +1 -1
- package/node_modules/@sema/nucleo/package.json +1 -1
- package/node_modules/@sema/padroes/package.json +1 -1
- package/package.json +11 -10
- package/dist/php-symbols.d.ts +0 -24
- package/dist/php-symbols.js +0 -375
- package/dist/php-symbols.js.map +0 -1
|
@@ -1,171 +1,171 @@
|
|
|
1
|
-
# Pagamento Ponta a Ponta na Sema
|
|
2
|
-
|
|
3
|
-
<!-- sema:i18n -->
|
|
4
|
-
> EN: English first. The canonical operational body below may still be in Portuguese until full translation lands.
|
|
5
|
-
> PT: Português depois, com acentos preservados.
|
|
6
|
-
> ES: Español al final; não traduza comandos, rotas nem sómbolos `.sema` sem contrato.
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
Este documento descreve o vertical oficial de pagamento da Sema no fluxo público atual.
|
|
10
|
-
|
|
11
|
-
O objetivo não é mostrar um exemplo fofo. O objetivo e demonstrar que a linguagem já consegue modelar um fluxo de negócio real com:
|
|
12
|
-
|
|
13
|
-
- contrato público
|
|
14
|
-
- segurança e autorizacao
|
|
15
|
-
- classificacao de dados
|
|
16
|
-
- segredos e proibicoes explicitas
|
|
17
|
-
- regras
|
|
18
|
-
- efeitos operacionais
|
|
19
|
-
- execução, idempotencia, retry e compensacao
|
|
20
|
-
- transicoes de estado
|
|
21
|
-
- orquestração
|
|
22
|
-
- erros publicos
|
|
23
|
-
- testes executaveis com saída, status ou erro observavel
|
|
24
|
-
|
|
25
|
-
## Arquivos de referência
|
|
26
|
-
|
|
27
|
-
- `exemplos/pagamento_dominio.sema`
|
|
28
|
-
- `exemplos/pagamento.sema`
|
|
29
|
-
|
|
30
|
-
## Como o vertical foi dividido
|
|
31
|
-
|
|
32
|
-
### `exemplos.pagamento.dominio`
|
|
33
|
-
|
|
34
|
-
Centraliza os contratos compartilhados:
|
|
35
|
-
|
|
36
|
-
- `entity Pagamento`
|
|
37
|
-
- `enum StatusPagamento`
|
|
38
|
-
- `state ciclo_pagamento`
|
|
39
|
-
|
|
40
|
-
### `exemplos.pagamento`
|
|
41
|
-
|
|
42
|
-
Centraliza a operação do vertical:
|
|
43
|
-
|
|
44
|
-
- `task processar_pagamento`
|
|
45
|
-
- `task confirmar_pagamento`
|
|
46
|
-
- `task notificar_falha_pagamento`
|
|
47
|
-
- `task registrar_timeout_pagamento`
|
|
48
|
-
- `flow orquestracao_pagamento`
|
|
49
|
-
- `route processar_pagamento_publico`
|
|
50
|
-
|
|
51
|
-
## Narrativa do caso
|
|
52
|
-
|
|
53
|
-
### Entrada pública
|
|
54
|
-
|
|
55
|
-
A operação entra por:
|
|
56
|
-
|
|
57
|
-
- `route processar_pagamento_publico`
|
|
58
|
-
|
|
59
|
-
Esse contrato pública:
|
|
60
|
-
|
|
61
|
-
- `pagamento_id`
|
|
62
|
-
- `valor`
|
|
63
|
-
- `token`
|
|
64
|
-
|
|
65
|
-
É expoe:
|
|
66
|
-
|
|
67
|
-
- `pagamento`
|
|
68
|
-
- `status`
|
|
69
|
-
- erros publicos coerentes com a `task`
|
|
70
|
-
|
|
71
|
-
### Task interna
|
|
72
|
-
|
|
73
|
-
A `task processar_pagamento` faz o trabalho central:
|
|
74
|
-
|
|
75
|
-
- exige `authz`
|
|
76
|
-
- classifica `dados`
|
|
77
|
-
- declara `segredos`, `audit` e `forbidden`
|
|
78
|
-
- valida entrada
|
|
79
|
-
- consulta o gateway
|
|
80
|
-
- persiste o pagamento
|
|
81
|
-
- emite evento
|
|
82
|
-
- notifica comprovante
|
|
83
|
-
- registra auditoria
|
|
84
|
-
- declara `execucao` com idempotencia, timeout, retry, compensacao e criticidade
|
|
85
|
-
- garante consistencia da saída
|
|
86
|
-
|
|
87
|
-
### Estado e transicoes
|
|
88
|
-
|
|
89
|
-
O `state ciclo_pagamento` ancora o contrato de transicao:
|
|
90
|
-
|
|
91
|
-
- `PENDENTE -> AUTORIZADO`
|
|
92
|
-
- `AUTORIZADO -> PROCESSADO`
|
|
93
|
-
- `PENDENTE -> RECUSADO`
|
|
94
|
-
|
|
95
|
-
A `task` explícita quais transicoes ela realmente usa.
|
|
96
|
-
|
|
97
|
-
### Flow de orquestração
|
|
98
|
-
|
|
99
|
-
O `flow orquestracao_pagamento` demonstra:
|
|
100
|
-
|
|
101
|
-
- passagem de contexto
|
|
102
|
-
- confirmação em caso de sucesso
|
|
103
|
-
- notificação em caso de recusa
|
|
104
|
-
- registro de timeout em caso de indisponibilidade
|
|
105
|
-
- ramificacao por erro tipado
|
|
106
|
-
|
|
107
|
-
### Efeitos operacionais
|
|
108
|
-
|
|
109
|
-
O vertical usa as 5 categorias oficiais da Sema:
|
|
110
|
-
|
|
111
|
-
- `persistencia`
|
|
112
|
-
- `consulta`
|
|
113
|
-
- `evento`
|
|
114
|
-
- `notificacao`
|
|
115
|
-
- `auditoria`
|
|
116
|
-
|
|
117
|
-
Também usa `criticidade` para deixar claro o peso operacional do efeito.
|
|
118
|
-
|
|
119
|
-
### Falhas reais
|
|
120
|
-
|
|
121
|
-
O vertical cobre explicitamente:
|
|
122
|
-
|
|
123
|
-
- autorizacao negada
|
|
124
|
-
- saldo insuficiente
|
|
125
|
-
- timeout de gateway
|
|
126
|
-
|
|
127
|
-
## Fluxo de trabalho recomendado
|
|
128
|
-
|
|
129
|
-
### 1. Escrever ou ajustar os arquivos `.sema`
|
|
130
|
-
|
|
131
|
-
Use o domínio compartilhado em um módulo e a operação em outro módulo.
|
|
132
|
-
|
|
133
|
-
### 2. Aplicar o formato canônico
|
|
134
|
-
|
|
135
|
-
```bash
|
|
136
|
-
sema formatar exemplos
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
### 3. Validar semanticamente
|
|
140
|
-
|
|
141
|
-
```bash
|
|
142
|
-
sema validar exemplos/pagamento.sema
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
### 4. Gerar código
|
|
146
|
-
|
|
147
|
-
```bash
|
|
148
|
-
sema compilar exemplos/pagamento.sema --alvo typescript --saida ./.tmp/pagamento-ts
|
|
149
|
-
sema compilar exemplos/pagamento.sema --alvo python --saida ./.tmp/pagamento-py
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
### 5. Verificar o vertical completo
|
|
153
|
-
|
|
154
|
-
```bash
|
|
155
|
-
sema verificar exemplos/pagamento.sema --json --saida ./.tmp/verificacao-pagamento
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
## O que esse vertical prova
|
|
159
|
-
|
|
160
|
-
Se esse vertical passa, a Sema já consegue demonstrar que:
|
|
161
|
-
|
|
162
|
-
- modela contrato público
|
|
163
|
-
- modela superficie sensível sem deixar segurança invisível
|
|
164
|
-
- modela efeitos operacionais
|
|
165
|
-
- modela falhas reais
|
|
166
|
-
- modulariza domínio com `use`
|
|
167
|
-
- declara idempotencia e execução crítica sem criar sintaxe nova
|
|
168
|
-
- gera artefatos coerentes para TypeScript e Python
|
|
169
|
-
- executa testes gerados sem gambiarra conceitual
|
|
170
|
-
|
|
171
|
-
Esse e o criterio pratico que sustenta o uso público do vertical de pagamento como referência para IA e geracao.
|
|
1
|
+
# Pagamento Ponta a Ponta na Sema
|
|
2
|
+
|
|
3
|
+
<!-- sema:i18n -->
|
|
4
|
+
> EN: English first. The canonical operational body below may still be in Portuguese until full translation lands.
|
|
5
|
+
> PT: Português depois, com acentos preservados.
|
|
6
|
+
> ES: Español al final; não traduza comandos, rotas nem sómbolos `.sema` sem contrato.
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
Este documento descreve o vertical oficial de pagamento da Sema no fluxo público atual.
|
|
10
|
+
|
|
11
|
+
O objetivo não é mostrar um exemplo fofo. O objetivo e demonstrar que a linguagem já consegue modelar um fluxo de negócio real com:
|
|
12
|
+
|
|
13
|
+
- contrato público
|
|
14
|
+
- segurança e autorizacao
|
|
15
|
+
- classificacao de dados
|
|
16
|
+
- segredos e proibicoes explicitas
|
|
17
|
+
- regras
|
|
18
|
+
- efeitos operacionais
|
|
19
|
+
- execução, idempotencia, retry e compensacao
|
|
20
|
+
- transicoes de estado
|
|
21
|
+
- orquestração
|
|
22
|
+
- erros publicos
|
|
23
|
+
- testes executaveis com saída, status ou erro observavel
|
|
24
|
+
|
|
25
|
+
## Arquivos de referência
|
|
26
|
+
|
|
27
|
+
- `exemplos/pagamento_dominio.sema`
|
|
28
|
+
- `exemplos/pagamento.sema`
|
|
29
|
+
|
|
30
|
+
## Como o vertical foi dividido
|
|
31
|
+
|
|
32
|
+
### `exemplos.pagamento.dominio`
|
|
33
|
+
|
|
34
|
+
Centraliza os contratos compartilhados:
|
|
35
|
+
|
|
36
|
+
- `entity Pagamento`
|
|
37
|
+
- `enum StatusPagamento`
|
|
38
|
+
- `state ciclo_pagamento`
|
|
39
|
+
|
|
40
|
+
### `exemplos.pagamento`
|
|
41
|
+
|
|
42
|
+
Centraliza a operação do vertical:
|
|
43
|
+
|
|
44
|
+
- `task processar_pagamento`
|
|
45
|
+
- `task confirmar_pagamento`
|
|
46
|
+
- `task notificar_falha_pagamento`
|
|
47
|
+
- `task registrar_timeout_pagamento`
|
|
48
|
+
- `flow orquestracao_pagamento`
|
|
49
|
+
- `route processar_pagamento_publico`
|
|
50
|
+
|
|
51
|
+
## Narrativa do caso
|
|
52
|
+
|
|
53
|
+
### Entrada pública
|
|
54
|
+
|
|
55
|
+
A operação entra por:
|
|
56
|
+
|
|
57
|
+
- `route processar_pagamento_publico`
|
|
58
|
+
|
|
59
|
+
Esse contrato pública:
|
|
60
|
+
|
|
61
|
+
- `pagamento_id`
|
|
62
|
+
- `valor`
|
|
63
|
+
- `token`
|
|
64
|
+
|
|
65
|
+
É expoe:
|
|
66
|
+
|
|
67
|
+
- `pagamento`
|
|
68
|
+
- `status`
|
|
69
|
+
- erros publicos coerentes com a `task`
|
|
70
|
+
|
|
71
|
+
### Task interna
|
|
72
|
+
|
|
73
|
+
A `task processar_pagamento` faz o trabalho central:
|
|
74
|
+
|
|
75
|
+
- exige `authz`
|
|
76
|
+
- classifica `dados`
|
|
77
|
+
- declara `segredos`, `audit` e `forbidden`
|
|
78
|
+
- valida entrada
|
|
79
|
+
- consulta o gateway
|
|
80
|
+
- persiste o pagamento
|
|
81
|
+
- emite evento
|
|
82
|
+
- notifica comprovante
|
|
83
|
+
- registra auditoria
|
|
84
|
+
- declara `execucao` com idempotencia, timeout, retry, compensacao e criticidade
|
|
85
|
+
- garante consistencia da saída
|
|
86
|
+
|
|
87
|
+
### Estado e transicoes
|
|
88
|
+
|
|
89
|
+
O `state ciclo_pagamento` ancora o contrato de transicao:
|
|
90
|
+
|
|
91
|
+
- `PENDENTE -> AUTORIZADO`
|
|
92
|
+
- `AUTORIZADO -> PROCESSADO`
|
|
93
|
+
- `PENDENTE -> RECUSADO`
|
|
94
|
+
|
|
95
|
+
A `task` explícita quais transicoes ela realmente usa.
|
|
96
|
+
|
|
97
|
+
### Flow de orquestração
|
|
98
|
+
|
|
99
|
+
O `flow orquestracao_pagamento` demonstra:
|
|
100
|
+
|
|
101
|
+
- passagem de contexto
|
|
102
|
+
- confirmação em caso de sucesso
|
|
103
|
+
- notificação em caso de recusa
|
|
104
|
+
- registro de timeout em caso de indisponibilidade
|
|
105
|
+
- ramificacao por erro tipado
|
|
106
|
+
|
|
107
|
+
### Efeitos operacionais
|
|
108
|
+
|
|
109
|
+
O vertical usa as 5 categorias oficiais da Sema:
|
|
110
|
+
|
|
111
|
+
- `persistencia`
|
|
112
|
+
- `consulta`
|
|
113
|
+
- `evento`
|
|
114
|
+
- `notificacao`
|
|
115
|
+
- `auditoria`
|
|
116
|
+
|
|
117
|
+
Também usa `criticidade` para deixar claro o peso operacional do efeito.
|
|
118
|
+
|
|
119
|
+
### Falhas reais
|
|
120
|
+
|
|
121
|
+
O vertical cobre explicitamente:
|
|
122
|
+
|
|
123
|
+
- autorizacao negada
|
|
124
|
+
- saldo insuficiente
|
|
125
|
+
- timeout de gateway
|
|
126
|
+
|
|
127
|
+
## Fluxo de trabalho recomendado
|
|
128
|
+
|
|
129
|
+
### 1. Escrever ou ajustar os arquivos `.sema`
|
|
130
|
+
|
|
131
|
+
Use o domínio compartilhado em um módulo e a operação em outro módulo.
|
|
132
|
+
|
|
133
|
+
### 2. Aplicar o formato canônico
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
sema formatar exemplos
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### 3. Validar semanticamente
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
sema validar exemplos/pagamento.sema
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### 4. Gerar código
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
sema compilar exemplos/pagamento.sema --alvo typescript --saida ./.tmp/pagamento-ts
|
|
149
|
+
sema compilar exemplos/pagamento.sema --alvo python --saida ./.tmp/pagamento-py
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### 5. Verificar o vertical completo
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
sema verificar exemplos/pagamento.sema --json --saida ./.tmp/verificacao-pagamento
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## O que esse vertical prova
|
|
159
|
+
|
|
160
|
+
Se esse vertical passa, a Sema já consegue demonstrar que:
|
|
161
|
+
|
|
162
|
+
- modela contrato público
|
|
163
|
+
- modela superficie sensível sem deixar segurança invisível
|
|
164
|
+
- modela efeitos operacionais
|
|
165
|
+
- modela falhas reais
|
|
166
|
+
- modulariza domínio com `use`
|
|
167
|
+
- declara idempotencia e execução crítica sem criar sintaxe nova
|
|
168
|
+
- gera artefatos coerentes para TypeScript e Python
|
|
169
|
+
- executa testes gerados sem gambiarra conceitual
|
|
170
|
+
|
|
171
|
+
Esse e o criterio pratico que sustenta o uso público do vertical de pagamento como referência para IA e geracao.
|
|
@@ -1,151 +1,151 @@
|
|
|
1
|
-
# Persistência Vendor-First
|
|
2
|
-
|
|
3
|
-
<!-- sema:i18n -->
|
|
4
|
-
> EN: English first. The canonical operational body below may still be in Portuguese until full translation lands.
|
|
5
|
-
> PT: Português depois, com acentos preservados.
|
|
6
|
-
> ES: Español al final; não traduza comandos, rotas nem sómbolos `.sema` sem contrato.
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
Sema 1.5.
|
|
10
|
-
|
|
11
|
-
## Engines publicas
|
|
12
|
-
|
|
13
|
-
- `postgres`
|
|
14
|
-
- `mysql`
|
|
15
|
-
- `sqlite`
|
|
16
|
-
- `mongodb`
|
|
17
|
-
- `redis`
|
|
18
|
-
|
|
19
|
-
## Exemplo PostgreSQL
|
|
20
|
-
|
|
21
|
-
```sema
|
|
22
|
-
database principal_postgres {
|
|
23
|
-
engine: postgres
|
|
24
|
-
schema: public
|
|
25
|
-
consistency: forte
|
|
26
|
-
durability: alta
|
|
27
|
-
transaction_model: mvcc
|
|
28
|
-
query_model: sql
|
|
29
|
-
capabilities {
|
|
30
|
-
joins
|
|
31
|
-
views
|
|
32
|
-
foreign_keys
|
|
33
|
-
}
|
|
34
|
-
table pedidos {
|
|
35
|
-
entity: Pedido
|
|
36
|
-
}
|
|
37
|
-
relationship pedido_cliente {
|
|
38
|
-
from: Pedido
|
|
39
|
-
to: Cliente
|
|
40
|
-
}
|
|
41
|
-
query buscar_pedidos {
|
|
42
|
-
mode: sql
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## Exemplo MySQL
|
|
48
|
-
|
|
49
|
-
```sema
|
|
50
|
-
database principal_mysql {
|
|
51
|
-
engine: mysql
|
|
52
|
-
consistency: forte
|
|
53
|
-
durability: alta
|
|
54
|
-
transaction_model: bloqueio
|
|
55
|
-
query_model: sql
|
|
56
|
-
table faturamento {
|
|
57
|
-
table: faturamento
|
|
58
|
-
}
|
|
59
|
-
index faturamento_status {
|
|
60
|
-
table: faturamento
|
|
61
|
-
}
|
|
62
|
-
query buscar_faturas {
|
|
63
|
-
mode: sql
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
## Exemplo SQLite
|
|
69
|
-
|
|
70
|
-
```sema
|
|
71
|
-
database principal_sqlite {
|
|
72
|
-
engine: sqlite
|
|
73
|
-
consistency: snapshot
|
|
74
|
-
durability: media
|
|
75
|
-
transaction_model: single_thread
|
|
76
|
-
query_model: sql
|
|
77
|
-
table cache_local {
|
|
78
|
-
table: cache_local
|
|
79
|
-
}
|
|
80
|
-
retention limpeza_local {
|
|
81
|
-
retention: "7d"
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
## Exemplo MongoDB
|
|
87
|
-
|
|
88
|
-
```sema
|
|
89
|
-
database principal_mongodb {
|
|
90
|
-
engine: mongodb
|
|
91
|
-
consistency: eventual
|
|
92
|
-
durability: alta
|
|
93
|
-
transaction_model: documento
|
|
94
|
-
query_model: documento
|
|
95
|
-
collection pedidos {
|
|
96
|
-
collection: pedidos
|
|
97
|
-
}
|
|
98
|
-
document pedido_snapshot {
|
|
99
|
-
entity: PedidoSnapshot
|
|
100
|
-
}
|
|
101
|
-
query pipeline_pedido {
|
|
102
|
-
mode: pipeline
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
## Exemplo Redis
|
|
108
|
-
|
|
109
|
-
```sema
|
|
110
|
-
database principal_redis {
|
|
111
|
-
engine: redis
|
|
112
|
-
consistency: eventual
|
|
113
|
-
durability: media
|
|
114
|
-
transaction_model: single_thread
|
|
115
|
-
query_model: chave_valor
|
|
116
|
-
keyspace cache_pedidos {
|
|
117
|
-
ttl: "300s"
|
|
118
|
-
}
|
|
119
|
-
stream eventos_pedido {
|
|
120
|
-
surface: fila
|
|
121
|
-
}
|
|
122
|
-
retention expurgo_cache {
|
|
123
|
-
retention: "300s"
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
## Compatibilidade calculada
|
|
129
|
-
|
|
130
|
-
Cada recurso recebe compatibilidade por engine:
|
|
131
|
-
|
|
132
|
-
- `nativo`
|
|
133
|
-
- `adaptado`
|
|
134
|
-
- `parcial`
|
|
135
|
-
- `invalido`
|
|
136
|
-
|
|
137
|
-
Isso deixa explícito quando o contrato está pedindo portabilidade falsa, por exemplo:
|
|
138
|
-
|
|
139
|
-
- `table` em `redis`
|
|
140
|
-
- `foreign_keys` em engine sem suporte equivalente
|
|
141
|
-
- transação multi-documento tratada como universal
|
|
142
|
-
|
|
143
|
-
## Onde isso aparece
|
|
144
|
-
|
|
145
|
-
- parser e AST
|
|
146
|
-
- IR canonica
|
|
147
|
-
- analisador semântico
|
|
148
|
-
- formatador
|
|
149
|
-
- `sema drift`
|
|
150
|
-
- `sema importar`
|
|
151
|
-
- extensao VS Code
|
|
1
|
+
# Persistência Vendor-First
|
|
2
|
+
|
|
3
|
+
<!-- sema:i18n -->
|
|
4
|
+
> EN: English first. The canonical operational body below may still be in Portuguese until full translation lands.
|
|
5
|
+
> PT: Português depois, com acentos preservados.
|
|
6
|
+
> ES: Español al final; não traduza comandos, rotas nem sómbolos `.sema` sem contrato.
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
Sema 1.5.29 trata banco como superficie semântica de primeira classe. Isso significa assumir diferenças reais entre engines e coloca-las no contrato, no semântico, na IR, no drift, no impact map, na renomeacao assistida, no `verificar` e na extensao. Nesta linha, o `drift` também materializa persistência local real em `Preferences`, `localStorage` e `sessionStorage` quando a task está ancorada no arquivo que usa essas APIs, preservando o framing IA-first da release atual.
|
|
10
|
+
|
|
11
|
+
## Engines publicas
|
|
12
|
+
|
|
13
|
+
- `postgres`
|
|
14
|
+
- `mysql`
|
|
15
|
+
- `sqlite`
|
|
16
|
+
- `mongodb`
|
|
17
|
+
- `redis`
|
|
18
|
+
|
|
19
|
+
## Exemplo PostgreSQL
|
|
20
|
+
|
|
21
|
+
```sema
|
|
22
|
+
database principal_postgres {
|
|
23
|
+
engine: postgres
|
|
24
|
+
schema: public
|
|
25
|
+
consistency: forte
|
|
26
|
+
durability: alta
|
|
27
|
+
transaction_model: mvcc
|
|
28
|
+
query_model: sql
|
|
29
|
+
capabilities {
|
|
30
|
+
joins
|
|
31
|
+
views
|
|
32
|
+
foreign_keys
|
|
33
|
+
}
|
|
34
|
+
table pedidos {
|
|
35
|
+
entity: Pedido
|
|
36
|
+
}
|
|
37
|
+
relationship pedido_cliente {
|
|
38
|
+
from: Pedido
|
|
39
|
+
to: Cliente
|
|
40
|
+
}
|
|
41
|
+
query buscar_pedidos {
|
|
42
|
+
mode: sql
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Exemplo MySQL
|
|
48
|
+
|
|
49
|
+
```sema
|
|
50
|
+
database principal_mysql {
|
|
51
|
+
engine: mysql
|
|
52
|
+
consistency: forte
|
|
53
|
+
durability: alta
|
|
54
|
+
transaction_model: bloqueio
|
|
55
|
+
query_model: sql
|
|
56
|
+
table faturamento {
|
|
57
|
+
table: faturamento
|
|
58
|
+
}
|
|
59
|
+
index faturamento_status {
|
|
60
|
+
table: faturamento
|
|
61
|
+
}
|
|
62
|
+
query buscar_faturas {
|
|
63
|
+
mode: sql
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Exemplo SQLite
|
|
69
|
+
|
|
70
|
+
```sema
|
|
71
|
+
database principal_sqlite {
|
|
72
|
+
engine: sqlite
|
|
73
|
+
consistency: snapshot
|
|
74
|
+
durability: media
|
|
75
|
+
transaction_model: single_thread
|
|
76
|
+
query_model: sql
|
|
77
|
+
table cache_local {
|
|
78
|
+
table: cache_local
|
|
79
|
+
}
|
|
80
|
+
retention limpeza_local {
|
|
81
|
+
retention: "7d"
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Exemplo MongoDB
|
|
87
|
+
|
|
88
|
+
```sema
|
|
89
|
+
database principal_mongodb {
|
|
90
|
+
engine: mongodb
|
|
91
|
+
consistency: eventual
|
|
92
|
+
durability: alta
|
|
93
|
+
transaction_model: documento
|
|
94
|
+
query_model: documento
|
|
95
|
+
collection pedidos {
|
|
96
|
+
collection: pedidos
|
|
97
|
+
}
|
|
98
|
+
document pedido_snapshot {
|
|
99
|
+
entity: PedidoSnapshot
|
|
100
|
+
}
|
|
101
|
+
query pipeline_pedido {
|
|
102
|
+
mode: pipeline
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Exemplo Redis
|
|
108
|
+
|
|
109
|
+
```sema
|
|
110
|
+
database principal_redis {
|
|
111
|
+
engine: redis
|
|
112
|
+
consistency: eventual
|
|
113
|
+
durability: media
|
|
114
|
+
transaction_model: single_thread
|
|
115
|
+
query_model: chave_valor
|
|
116
|
+
keyspace cache_pedidos {
|
|
117
|
+
ttl: "300s"
|
|
118
|
+
}
|
|
119
|
+
stream eventos_pedido {
|
|
120
|
+
surface: fila
|
|
121
|
+
}
|
|
122
|
+
retention expurgo_cache {
|
|
123
|
+
retention: "300s"
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Compatibilidade calculada
|
|
129
|
+
|
|
130
|
+
Cada recurso recebe compatibilidade por engine:
|
|
131
|
+
|
|
132
|
+
- `nativo`
|
|
133
|
+
- `adaptado`
|
|
134
|
+
- `parcial`
|
|
135
|
+
- `invalido`
|
|
136
|
+
|
|
137
|
+
Isso deixa explícito quando o contrato está pedindo portabilidade falsa, por exemplo:
|
|
138
|
+
|
|
139
|
+
- `table` em `redis`
|
|
140
|
+
- `foreign_keys` em engine sem suporte equivalente
|
|
141
|
+
- transação multi-documento tratada como universal
|
|
142
|
+
|
|
143
|
+
## Onde isso aparece
|
|
144
|
+
|
|
145
|
+
- parser e AST
|
|
146
|
+
- IR canonica
|
|
147
|
+
- analisador semântico
|
|
148
|
+
- formatador
|
|
149
|
+
- `sema drift`
|
|
150
|
+
- `sema importar`
|
|
151
|
+
- extensao VS Code
|