@semacode/cli 0.9.0 → 1.1.0

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.
Files changed (46) hide show
  1. package/AGENTS.md +50 -0
  2. package/README.md +24 -3
  3. package/SEMA_BRIEF.curto.txt +9 -0
  4. package/SEMA_BRIEF.md +49 -0
  5. package/SEMA_BRIEF.micro.txt +7 -0
  6. package/SEMA_INDEX.json +501 -0
  7. package/dist/drift.d.ts +15 -0
  8. package/dist/drift.js +496 -5
  9. package/dist/drift.js.map +1 -1
  10. package/dist/importador.d.ts +1 -1
  11. package/dist/importador.js +681 -3
  12. package/dist/importador.js.map +1 -1
  13. package/dist/index.js +1578 -123
  14. package/dist/index.js.map +1 -1
  15. package/dist/projeto.js +49 -1
  16. package/dist/projeto.js.map +1 -1
  17. package/dist/tipos.d.ts +1 -1
  18. package/docs/AGENT_STARTER.md +40 -8
  19. package/docs/como-ensinar-a-sema-para-ia.md +17 -11
  20. package/docs/fluxo-pratico-ia-sema.md +42 -38
  21. package/docs/instalacao-e-primeiro-uso.md +196 -0
  22. package/docs/integracao-com-ia.md +228 -0
  23. package/docs/pagamento-ponta-a-ponta.md +155 -0
  24. package/docs/prompt-base-ia-sema.md +10 -3
  25. package/docs/sintaxe.md +267 -0
  26. package/exemplos/automacao.sema +107 -0
  27. package/exemplos/cadastro_usuario.sema +54 -0
  28. package/exemplos/calculadora.sema +78 -0
  29. package/exemplos/crud_simples.sema +89 -0
  30. package/exemplos/operacao_estrategia.sema +402 -0
  31. package/exemplos/pagamento.sema +222 -0
  32. package/exemplos/pagamento_dominio.sema +35 -0
  33. package/exemplos/testes_embutidos.sema +45 -0
  34. package/exemplos/tratamento_erro.sema +157 -0
  35. package/llms-full.txt +34 -0
  36. package/llms.txt +17 -0
  37. package/node_modules/@sema/gerador-dart/package.json +1 -1
  38. package/node_modules/@sema/gerador-python/dist/index.js +92 -10
  39. package/node_modules/@sema/gerador-python/dist/index.js.map +1 -1
  40. package/node_modules/@sema/gerador-python/package.json +1 -1
  41. package/node_modules/@sema/gerador-typescript/package.json +1 -1
  42. package/node_modules/@sema/nucleo/package.json +1 -1
  43. package/node_modules/@sema/padroes/dist/index.js +47 -1
  44. package/node_modules/@sema/padroes/dist/index.js.map +1 -1
  45. package/node_modules/@sema/padroes/package.json +1 -1
  46. package/package.json +15 -7
@@ -0,0 +1,228 @@
1
+ # Integracao com IA
2
+
3
+ A Sema foi desenhada para IA editar backend vivo com menos chute. O ponto nao e "a IA gera tudo"; o ponto e deixar contrato, vinculo e contexto operacional estruturados o bastante para a IA nao trabalhar igual um bicho tonto. Leitura humana continua possivel, mas nao e o centro do desenho.
4
+
5
+ ## Moldura correta
6
+
7
+ Se uma IA tratar a Sema como enfeite declarativo, ela vai usar mal. A moldura certa e esta:
8
+
9
+ - `impl` liga intencao a simbolo executavel
10
+ - `vinculos` ligam contrato a arquivo, simbolo, recurso e superficie real
11
+ - `execucao` explicita timeout, retry, compensacao e criticidade
12
+ - `drift` mede verdade contra codigo vivo
13
+ - `contexto-ia` empacota briefing operacional antes da edicao
14
+
15
+ Em resumo: a Sema nao serve para a IA adivinhar melhor. Ela serve para a IA precisar adivinhar menos.
16
+
17
+ ## Fluxo recomendado
18
+
19
+ Quando o trabalho cair em projeto vivo, o fluxo canonico agora e:
20
+
21
+ ```bash
22
+ sema inspecionar . --json
23
+ sema resumo contratos/modulo.sema --micro --para mudanca
24
+ sema drift contratos/modulo.sema --json
25
+ sema contexto-ia contratos/modulo.sema --saida ./.tmp/contexto --json
26
+ ```
27
+
28
+ Leitura rapida:
29
+
30
+ 1. `inspecionar` descobre base do projeto, diretorios de codigo, fontes legado e modulos relevantes.
31
+ 2. `resumo` entrega o menor cartao semantico util para a IA atual.
32
+ 3. `drift` mede impls, vinculos, rotas, recursos, score semantico e confianca.
33
+ 4. `contexto-ia` gera o pacote que a IA deveria ler antes de editar.
34
+
35
+ ## Capacidade da IA
36
+
37
+ A Sema agora assume explicitamente que nem toda IA aguenta o pacote completo.
38
+
39
+ - IA pequena ou gratuita: comece em `resumo.micro.txt`, `briefing.min.json` e `prompt-curto.txt`
40
+ - IA media: suba para `resumo.curto.txt`, `briefing.min.json` e `drift.json`
41
+ - IA grande ou com tool use: leia `README.md`, `resumo.md`, `briefing.json`, `drift.json`, `ir.json` e `ast.json`
42
+
43
+ Se voce joga `ast.json` inteiro em modelo pequeno e depois reclama da resposta, foi voce que fez cagada operacional.
44
+
45
+ ## O que a IA deve consumir
46
+
47
+ No minimo, para IA pequena:
48
+
49
+ - `resumo.micro.txt`
50
+ - `briefing.min.json`
51
+
52
+ No minimo, para IA media:
53
+
54
+ - `resumo.curto.txt`
55
+ - `briefing.min.json`
56
+ - `drift.json`
57
+
58
+ No minimo, para IA grande:
59
+
60
+ - `ir.json`
61
+ - `drift.json`
62
+ - `briefing.json`
63
+ - o proprio contrato `.sema`
64
+
65
+ O `briefing.json` agora e a peca mais operacional do pacote. Ele responde perguntas que agente serio precisa responder antes de mexer em codigo:
66
+
67
+ - o que tocar
68
+ - o que validar
69
+ - o que esta frouxo
70
+ - o que foi inferido
71
+ - quais simbolos estao relacionados
72
+ - quais superficies publicas podem ser afetadas
73
+ - quais testes minimos rodar
74
+
75
+ ## Saida relevante do pacote `contexto-ia`
76
+
77
+ Hoje o pacote pode incluir:
78
+
79
+ - `resumo.micro.txt`
80
+ - `resumo.curto.txt`
81
+ - `resumo.md`
82
+ - `briefing.min.json`
83
+ - `prompt-curto.txt`
84
+ - `ast.json`
85
+ - `ir.json`
86
+ - `diagnosticos.json`
87
+ - `drift.json`
88
+ - `briefing.json`
89
+ - `README.md`
90
+ - `impl.<origem>.txt` quando existir implementacao vinculada
91
+
92
+ ## Score, confianca e risco
93
+
94
+ `drift`, `inspecionar` e `contexto-ia` passam a expor sinais que ajudam a IA a nao tratar rascunho como verdade absoluta:
95
+
96
+ - `scoreSemantico`
97
+ - `confiancaVinculo`
98
+ - `riscoOperacional`
99
+ - `lacunas`
100
+ - `vinculos_validos`
101
+ - `vinculos_quebrados`
102
+
103
+ Leitura pratica:
104
+
105
+ - score alto + confianca alta: a IA pode editar com trilha boa
106
+ - score medio: ainda precisa ler contrato e conferir codigo vivo
107
+ - vinculo quebrado: a IA deve reduzir ousadia e consertar rastreabilidade antes de refatorar igual doida
108
+
109
+ ## Superficies que a IA pode esperar
110
+
111
+ A linguagem agora trata estas bordas como primeira classe:
112
+
113
+ - `route`
114
+ - `worker`
115
+ - `evento`
116
+ - `fila`
117
+ - `cron`
118
+ - `webhook`
119
+ - `cache`
120
+ - `storage`
121
+ - `policy`
122
+
123
+ Isso importa porque backend real nao vive so de HTTP. Se a IA vai editar stack viva, ela precisa enxergar job, evento, webhook e recurso assincrono como parte do contrato, nao como sobra esquecida no runtime.
124
+
125
+ ## Contrato operacional
126
+
127
+ Dentro de `task` e superficies, a IA deve prestar atencao em:
128
+
129
+ - `input`
130
+ - `output`
131
+ - `effects`
132
+ - `impl`
133
+ - `vinculos`
134
+ - `execucao`
135
+ - `guarantees`
136
+ - `error`
137
+
138
+ Exemplo minimo:
139
+
140
+ ```sema
141
+ task medir_drift {
142
+ input {
143
+ contrato: Texto required
144
+ }
145
+ output {
146
+ score: Decimal
147
+ }
148
+ impl {
149
+ ts: cli.src.drift.analisarDriftLegado
150
+ }
151
+ vinculos {
152
+ arquivo: "pacotes/cli/src/drift.ts"
153
+ simbolo: cli.src.drift.analisarDriftLegado
154
+ }
155
+ execucao {
156
+ timeout: "30s"
157
+ retry: "3x exponencial"
158
+ criticidade_operacional: alta
159
+ }
160
+ guarantees {
161
+ score existe
162
+ }
163
+ }
164
+ ```
165
+
166
+ ## Comandos que agente serio nao deveria ignorar
167
+
168
+ - `sema ast arquivo.sema --json`
169
+ - `sema ir arquivo.sema --json`
170
+ - `sema validar arquivo.sema --json`
171
+ - `sema diagnosticos arquivo.sema --json`
172
+ - `sema formatar arquivo.sema`
173
+ - `sema inspecionar [arquivo-ou-pasta] --json`
174
+ - `sema drift [arquivo-ou-pasta] --json`
175
+ - `sema contexto-ia arquivo.sema [--saida <diretorio>] --json`
176
+ - `sema verificar [arquivo-ou-pasta] --json`
177
+
178
+ ## Fluxos comuns
179
+
180
+ Quando a tarefa for so modelagem:
181
+
182
+ ```bash
183
+ sema ast contratos/pedidos.sema --json
184
+ sema ir contratos/pedidos.sema --json
185
+ sema formatar contratos/pedidos.sema
186
+ sema validar contratos/pedidos.sema --json
187
+ ```
188
+
189
+ Quando a tarefa envolver codigo derivado:
190
+
191
+ ```bash
192
+ sema inspecionar . --json
193
+ sema drift contratos/pedidos.sema --json
194
+ sema contexto-ia contratos/pedidos.sema --saida ./.tmp/contexto-pedidos --json
195
+ sema compilar contratos/pedidos.sema --alvo typescript --framework nestjs --estrutura backend --saida ./generated/nestjs
196
+ ```
197
+
198
+ Quando a tarefa nasce num legado:
199
+
200
+ ```bash
201
+ sema importar flask ./backend-flask --saida ./sema/importado --json
202
+ sema formatar ./sema/importado
203
+ sema validar ./sema/importado --json
204
+ sema drift ./sema/importado --json
205
+ ```
206
+
207
+ ## Showcase oficial do repo
208
+
209
+ Se voce estiver no monorepo da Sema, o showcase [showcases/ranking-showroom](../showcases/ranking-showroom/) continua sendo a melhor vitrine do fluxo completo:
210
+
211
+ ```bash
212
+ cd showcases/ranking-showroom
213
+ sema inspecionar . --json
214
+ sema drift contratos/ranking_showroom.sema --json
215
+ sema contexto-ia contratos/ranking_showroom.sema --saida ./.tmp/contexto-ranking --json
216
+ ```
217
+
218
+ O valor aqui nao e so "validou". O valor e sair com score, confianca, drift e briefing suficientes para editar o backend Flask real sem sair cavando arquivo a esmo.
219
+
220
+ ## Fechamento operacional
221
+
222
+ Quando a IA terminar a mudanca fora do monorepo:
223
+
224
+ ```bash
225
+ sema formatar contratos/modulo.sema
226
+ sema validar contratos/modulo.sema --json
227
+ sema verificar contratos --json --saida ./.tmp/verificacao-final
228
+ ```
@@ -0,0 +1,155 @@
1
+ # Pagamento Ponta a Ponta na Sema
2
+
3
+ Este documento descreve o vertical oficial de pagamento da Sema no fluxo publico atual.
4
+
5
+ O objetivo nao e mostrar um exemplo fofo. O objetivo e demonstrar que a linguagem ja consegue modelar um fluxo de negocio real com:
6
+
7
+ - contrato publico
8
+ - regras
9
+ - efeitos operacionais
10
+ - transicoes de estado
11
+ - orquestracao
12
+ - erros publicos
13
+ - testes executaveis
14
+
15
+ ## Arquivos de referencia
16
+
17
+ - `exemplos/pagamento_dominio.sema`
18
+ - `exemplos/pagamento.sema`
19
+
20
+ ## Como o vertical foi dividido
21
+
22
+ ### `exemplos.pagamento.dominio`
23
+
24
+ Centraliza os contratos compartilhados:
25
+
26
+ - `entity Pagamento`
27
+ - `enum StatusPagamento`
28
+ - `state ciclo_pagamento`
29
+
30
+ ### `exemplos.pagamento`
31
+
32
+ Centraliza a operacao do vertical:
33
+
34
+ - `task processar_pagamento`
35
+ - `task confirmar_pagamento`
36
+ - `task notificar_falha_pagamento`
37
+ - `task registrar_timeout_pagamento`
38
+ - `flow orquestracao_pagamento`
39
+ - `route processar_pagamento_publico`
40
+
41
+ ## Narrativa do caso
42
+
43
+ ### Entrada publica
44
+
45
+ A operacao entra por:
46
+
47
+ - `route processar_pagamento_publico`
48
+
49
+ Esse contrato publica:
50
+
51
+ - `pagamento_id`
52
+ - `valor`
53
+ - `token`
54
+
55
+ E expoe:
56
+
57
+ - `pagamento`
58
+ - `status`
59
+ - erros publicos coerentes com a `task`
60
+
61
+ ### Task interna
62
+
63
+ A `task processar_pagamento` faz o trabalho central:
64
+
65
+ - valida entrada
66
+ - consulta o gateway
67
+ - persiste o pagamento
68
+ - emite evento
69
+ - notifica comprovante
70
+ - registra auditoria
71
+ - garante consistencia da saida
72
+
73
+ ### Estado e transicoes
74
+
75
+ O `state ciclo_pagamento` ancora o contrato de transicao:
76
+
77
+ - `PENDENTE -> AUTORIZADO`
78
+ - `AUTORIZADO -> PROCESSADO`
79
+ - `PENDENTE -> RECUSADO`
80
+
81
+ A `task` explicita quais transicoes ela realmente usa.
82
+
83
+ ### Flow de orquestracao
84
+
85
+ O `flow orquestracao_pagamento` demonstra:
86
+
87
+ - passagem de contexto
88
+ - confirmacao em caso de sucesso
89
+ - notificacao em caso de recusa
90
+ - registro de timeout em caso de indisponibilidade
91
+ - ramificacao por erro tipado
92
+
93
+ ### Efeitos operacionais
94
+
95
+ O vertical usa as 5 categorias oficiais da Sema:
96
+
97
+ - `persistencia`
98
+ - `consulta`
99
+ - `evento`
100
+ - `notificacao`
101
+ - `auditoria`
102
+
103
+ Tambem usa `criticidade` para deixar claro o peso operacional do efeito.
104
+
105
+ ### Falhas reais
106
+
107
+ O vertical cobre explicitamente:
108
+
109
+ - autorizacao negada
110
+ - saldo insuficiente
111
+ - timeout de gateway
112
+
113
+ ## Fluxo de trabalho recomendado
114
+
115
+ ### 1. Escrever ou ajustar os arquivos `.sema`
116
+
117
+ Use o dominio compartilhado em um modulo e a operacao em outro modulo.
118
+
119
+ ### 2. Aplicar o formato canonico
120
+
121
+ ```bash
122
+ sema formatar exemplos
123
+ ```
124
+
125
+ ### 3. Validar semanticamente
126
+
127
+ ```bash
128
+ sema validar exemplos/pagamento.sema
129
+ ```
130
+
131
+ ### 4. Gerar codigo
132
+
133
+ ```bash
134
+ sema compilar exemplos/pagamento.sema --alvo typescript --saida ./.tmp/pagamento-ts
135
+ sema compilar exemplos/pagamento.sema --alvo python --saida ./.tmp/pagamento-py
136
+ ```
137
+
138
+ ### 5. Verificar o vertical completo
139
+
140
+ ```bash
141
+ sema verificar exemplos/pagamento.sema --json --saida ./.tmp/verificacao-pagamento
142
+ ```
143
+
144
+ ## O que esse vertical prova
145
+
146
+ Se esse vertical passa, a Sema ja consegue demonstrar que:
147
+
148
+ - modela contrato publico
149
+ - modela efeitos operacionais
150
+ - modela falhas reais
151
+ - modulariza dominio com `use`
152
+ - gera artefatos coerentes para TypeScript e Python
153
+ - executa testes gerados sem gambiarra conceitual
154
+
155
+ Esse e o criterio pratico que sustenta o uso publico do vertical de pagamento como referencia para IA e geracao.
@@ -2,7 +2,7 @@
2
2
 
3
3
  Este arquivo serve como prompt-base oficial para qualquer IA que precise ler, escrever, revisar ou transformar arquivos `.sema`.
4
4
 
5
- O objetivo nao e fazer a IA "improvisar bonito". O objetivo e fazer a IA operar a linguagem com previsibilidade.
5
+ O objetivo nao e fazer a IA "improvisar bonito". O objetivo e fazer a IA operar a linguagem com previsibilidade. A Sema nao foi desenhada para ergonomia humana como prioridade; ela foi desenhada para IA.
6
6
 
7
7
  ## Prompt-base
8
8
 
@@ -11,7 +11,7 @@ Use o texto abaixo como base:
11
11
  ```text
12
12
  Voce esta trabalhando com Sema, um Protocolo de Governanca de Intencao para IA e backend vivo.
13
13
 
14
- Tecnicamente, a Sema funciona como linguagem de intencao orientada a contrato. Operacionalmente, ela existe para governar semantica acima da stack, nao para substituir arquitetura, design ou curadoria humana.
14
+ Tecnicamente, a Sema funciona como linguagem de intencao orientada a contrato. Operacionalmente, ela existe para governar semantica acima da stack e reduzir ambiguidade para IA, nao para substituir arquitetura, design ou curadoria humana.
15
15
 
16
16
  Trate a Sema como linguagem de especificacao executavel e protocolo de governanca semantica. Nao invente sintaxe, palavras-chave ou blocos fora da gramatica e dos exemplos oficiais.
17
17
 
@@ -20,7 +20,8 @@ Fontes de verdade, em ordem:
20
20
  2. gramatica e documentacao de sintaxe da Sema
21
21
  3. especificacao semantica da linguagem
22
22
  4. exemplos oficiais, com prioridade para o vertical de pagamento
23
- 5. AST, IR e diagnosticos exportados pela CLI em JSON
23
+ 5. `sema resumo` e `briefing.min.json` quando a IA for pequena
24
+ 6. AST, IR e diagnosticos exportados pela CLI em JSON quando a capacidade aguentar
24
25
 
25
26
  Regras de operacao:
26
27
  - preserve o significado semantico
@@ -57,6 +58,12 @@ Se voce quiser um prompt menor para uso frequente:
57
58
  Trabalhe com Sema como DSL semantica orientada a contrato. Nao invente sintaxe. Use os exemplos oficiais e a gramatica como referencia de escrita. Use `ir --json` como fonte de verdade semantica, `diagnosticos --json` como fonte de correcao e `sema formatar` como fonte unica de estilo. Antes de encerrar, rode validacao e verificacao.
58
59
  ```
59
60
 
61
+ Se voce quiser um prompt ainda mais curto e pronto para colar, use:
62
+
63
+ ```bash
64
+ sema prompt-curto caminho/arquivo.sema --curto --para mudanca
65
+ ```
66
+
60
67
  ## Variacao para revisao
61
68
 
62
69
  Use esta versao quando a IA for revisar `.sema` em vez de criar:
@@ -0,0 +1,267 @@
1
+ # Sintaxe Canonica
2
+
3
+ A Sema usa blocos declarativos com chaves e forma previsivel. A regra aqui nao e "ficar bonitinho para humano"; e reduzir ambiguidade para parser, IR, drift e contexto de IA.
4
+
5
+ ## Regras basicas
6
+
7
+ - um arquivo `.sema` contem um `module` principal
8
+ - cada bloco abre com palavra-chave e fecha com `}`
9
+ - campos usam `nome: valor`
10
+ - linhas declarativas continuam validas para regra, efeito, garantia, transicao e etapa de flow
11
+ - `tests` contem blocos `caso`
12
+ - quando uma palavra reservada aparece seguida de `:`, ela continua sendo campo, nao bloco
13
+
14
+ ## Blocos de primeira classe
15
+
16
+ - `module`
17
+ - `use`
18
+ - `type`
19
+ - `entity`
20
+ - `enum`
21
+ - `state`
22
+ - `task`
23
+ - `flow`
24
+ - `route`
25
+ - `worker`
26
+ - `evento`
27
+ - `fila`
28
+ - `cron`
29
+ - `webhook`
30
+ - `cache`
31
+ - `storage`
32
+ - `policy`
33
+ - `tests`
34
+ - `docs`
35
+ - `comments`
36
+
37
+ ## Subblocos mais usados
38
+
39
+ - `input`
40
+ - `output`
41
+ - `rules`
42
+ - `effects`
43
+ - `impl`
44
+ - `vinculos`
45
+ - `execucao`
46
+ - `guarantees`
47
+ - `error`
48
+ - `fields`
49
+ - `invariants`
50
+ - `transitions`
51
+ - `given`
52
+ - `when`
53
+ - `expect`
54
+
55
+ ## Tipos compostos
56
+
57
+ A Sema agora aceita formas canonicas para payload mais denso sem empurrar tudo para `Json`.
58
+
59
+ ```sema
60
+ input {
61
+ ids: Lista<Id> required
62
+ metadata: Mapa<Texto, Texto>
63
+ responsavel: Opcional<Usuario>
64
+ chave_publica: Texto|Id
65
+ }
66
+ ```
67
+
68
+ Formas suportadas:
69
+
70
+ - `Lista<T>`
71
+ - `Mapa<K, V>`
72
+ - `Opcional<T>`
73
+ - `T1|T2`
74
+ - `T?`
75
+
76
+ ## Task com contrato operacional
77
+
78
+ ```sema
79
+ task processar_pedido {
80
+ input {
81
+ pedido_id: Id required
82
+ itens: Lista<Texto> required
83
+ }
84
+ output {
85
+ protocolo: Id
86
+ status: Texto
87
+ }
88
+ impl {
89
+ ts: app.pedidos.processar
90
+ }
91
+ vinculos {
92
+ arquivo: "src/pedidos/processar.ts"
93
+ simbolo: app.pedidos.processar
94
+ fila: pedidos_processamento
95
+ }
96
+ execucao {
97
+ idempotencia: verdadeiro
98
+ timeout: "30s"
99
+ retry: "3x exponencial"
100
+ compensacao: "reverter_reserva"
101
+ criticidade_operacional: alta
102
+ }
103
+ effects {
104
+ persistencia pedidos criticidade = alta
105
+ auditoria pedidos criticidade = media
106
+ }
107
+ guarantees {
108
+ protocolo existe
109
+ status existe
110
+ }
111
+ error {
112
+ pedido_invalido {
113
+ mensagem: "payload invalido"
114
+ categoria: dominio
115
+ recuperabilidade: permanente
116
+ acao_chamador: corrigir_input
117
+ impacta_estado: falso
118
+ requer_compensacao: falso
119
+ }
120
+ }
121
+ tests {
122
+ caso "processa pedido valido" {
123
+ given {
124
+ pedido_id: "ped_1"
125
+ }
126
+ expect {
127
+ sucesso: verdadeiro
128
+ }
129
+ }
130
+ }
131
+ }
132
+ ```
133
+
134
+ ## `impl`
135
+
136
+ `impl` liga a task ou a superficie ao simbolo real do runtime.
137
+
138
+ ```sema
139
+ impl {
140
+ ts: app.pedidos.processar
141
+ py: services.orders.processar
142
+ cs: Pedidos.Api.Controllers.PedidosController.Processar
143
+ }
144
+ ```
145
+
146
+ Regras:
147
+
148
+ - cada origem aparece no maximo uma vez por bloco
149
+ - o caminho aponta para simbolo, nao para chamada com `()`
150
+ - `ts|typescript`, `py|python`, `dart`, `cs|csharp|dotnet`, `java`, `go|golang`, `rust|rs`, `cpp|cxx|cc|c++` sao origens validas
151
+
152
+ ## `vinculos`
153
+
154
+ `vinculos` nao substitui `impl`. Ele complementa o contrato com rastros operacionais que ajudam IA e drift a mapear o sistema vivo.
155
+
156
+ Campos comuns:
157
+
158
+ - `arquivo`
159
+ - `simbolo`
160
+ - `rota`
161
+ - `superficie`
162
+ - `recurso`
163
+ - `tabela`
164
+ - `fila`
165
+ - `worker`
166
+ - `evento`
167
+ - `cron`
168
+ - `webhook`
169
+ - `cache`
170
+ - `storage`
171
+ - `policy`
172
+
173
+ Exemplo:
174
+
175
+ ```sema
176
+ vinculos {
177
+ arquivo: "pacotes/cli/src/index.ts"
178
+ simbolo: cli.src.index.gerarContextoIa
179
+ webhook: "/interno/contexto-ia"
180
+ }
181
+ ```
182
+
183
+ ## `execucao`
184
+
185
+ `execucao` explicita comportamento operacional em vez de deixar isso espalhado pelo codigo ou pela cabeca da IA.
186
+
187
+ ```sema
188
+ execucao {
189
+ idempotencia: verdadeiro
190
+ timeout: "15s"
191
+ retry: "fila"
192
+ compensacao: "nenhuma"
193
+ criticidade_operacional: media
194
+ }
195
+ ```
196
+
197
+ Campos canonicos:
198
+
199
+ - `idempotencia`
200
+ - `timeout`
201
+ - `retry`
202
+ - `compensacao`
203
+ - `criticidade_operacional`
204
+
205
+ ## Superficies modernas
206
+
207
+ A Sema nao fica presa em HTTP. As bordas abaixo sao blocos irmaos de `route`, com shape minimo compativel com `task`, `impl`, `vinculos`, `execucao` e `effects`.
208
+
209
+ ```sema
210
+ worker preparar_briefing {
211
+ task: medir_drift
212
+ vinculos {
213
+ arquivo: "pacotes/cli/src/index.ts"
214
+ worker: contexto_ia
215
+ }
216
+ execucao {
217
+ retry: "fila_contexto"
218
+ criticidade_operacional: alta
219
+ }
220
+ }
221
+
222
+ webhook confirmar_contexto {
223
+ task: mapear_projeto
224
+ vinculos {
225
+ webhook: "/interno/contexto-ia"
226
+ }
227
+ execucao {
228
+ timeout: "15s"
229
+ criticidade_operacional: media
230
+ }
231
+ }
232
+ ```
233
+
234
+ ## Flow com dependencia explicita
235
+
236
+ ```sema
237
+ flow operar_contexto_ia {
238
+ entrada: Texto
239
+ etapa mapear usa mapear_projeto com entrada = entrada
240
+ etapa drift usa medir_drift com contrato = entrada depende_de mapear
241
+ etapa briefing usa preparar_briefing com entrada = entrada depende_de drift
242
+ effects {
243
+ auditoria contexto_ia criticidade = alta
244
+ }
245
+ vinculos {
246
+ simbolo: cli.src.index.comandoContextoIa
247
+ }
248
+ }
249
+ ```
250
+
251
+ ## Forma canonica
252
+
253
+ O formatador passa a preferir:
254
+
255
+ - `vinculos` com `arquivo` antes de `simbolo`
256
+ - `execucao` com `idempotencia`, `timeout`, `retry`, `compensacao` e `criticidade_operacional`
257
+ - strings operacionais como `arquivo`, `timeout`, `retry` e `compensacao` com aspas
258
+ - tipos compostos sem espacos quebrados em `Lista<T>` e `Mapa<K, V>`
259
+
260
+ ## Resumo pratico
261
+
262
+ Se a duvida for "isso vai ajudar a IA a editar com menos chute?", a sintaxe nova aponta para quatro coisas:
263
+
264
+ - contrato rico
265
+ - vinculo rastreavel
266
+ - execucao explicita
267
+ - superficie moderna de primeira classe