@semacode/cli 3.13.1 → 4.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 (76) hide show
  1. package/dist/cliGrammar.js +16 -5
  2. package/dist/cliHelpTexto.js +4 -3
  3. package/dist/contextPack.d.ts +75 -0
  4. package/dist/contextPack.js +133 -0
  5. package/dist/driftPack.d.ts +65 -0
  6. package/dist/driftPack.js +96 -0
  7. package/dist/entrypointPack.d.ts +47 -0
  8. package/dist/entrypointPack.js +79 -0
  9. package/dist/index.part05.js +7 -1
  10. package/dist/index.part06.js +48 -17
  11. package/dist/index.part07.d.ts +1 -1
  12. package/dist/index.part07.js +16 -2
  13. package/dist/index.part08.js +1 -1
  14. package/dist/indexPack.d.ts +54 -0
  15. package/dist/indexPack.js +146 -0
  16. package/dist/init/templates.part01.js +393 -393
  17. package/dist/init/templates.part02.js +189 -189
  18. package/dist/initTemplatesBackend.js +73 -73
  19. package/dist/initTemplatesFlutter.js +137 -137
  20. package/dist/initTemplatesRuntime.js +350 -350
  21. package/dist/initTemplatesWeb.js +309 -309
  22. package/dist/sync/index.js +35 -35
  23. package/docs/auth.md +26 -26
  24. package/docs/database.md +15 -15
  25. package/docs/env.md +16 -16
  26. package/docs/frontend.md +41 -41
  27. package/docs/i18n.md +15 -15
  28. package/exemplos/agendamento.sema +1 -1
  29. package/exemplos/assinatura.sema +1 -1
  30. package/exemplos/auditoria.sema +1 -1
  31. package/exemplos/autenticacao.sema +1 -1
  32. package/exemplos/author_obra_comum.sema +1 -1
  33. package/exemplos/author_tema_sensivel.sema +1 -1
  34. package/exemplos/automacao.sema +1 -1
  35. package/exemplos/cadastro_usuario.sema +1 -1
  36. package/exemplos/calculadora.sema +1 -1
  37. package/exemplos/crud_simples.sema +1 -1
  38. package/exemplos/estoque.sema +1 -1
  39. package/exemplos/exportacao.sema +1 -1
  40. package/exemplos/fila.sema +1 -1
  41. package/exemplos/integracao_externa.sema +1 -1
  42. package/exemplos/multi_tenant.sema +1 -1
  43. package/exemplos/notificacao.sema +1 -1
  44. package/exemplos/operacao_estrategia.sema +132 -132
  45. package/exemplos/operacao_estrategia_discovery.sema +220 -220
  46. package/exemplos/operacao_estrategia_fluxo.sema +114 -114
  47. package/exemplos/operacao_estrategia_gates.sema +106 -106
  48. package/exemplos/operacao_estrategia_quarentena.sema +133 -133
  49. package/exemplos/operacao_estrategia_rollout.sema +124 -124
  50. package/exemplos/pagamento.sema +1 -1
  51. package/exemplos/pagamento_dominio.sema +1 -1
  52. package/exemplos/pedido.sema +1 -1
  53. package/exemplos/permissao.sema +1 -1
  54. package/exemplos/persistencia_vendor_first.sema +1 -1
  55. package/exemplos/php_crud.sema +170 -170
  56. package/exemplos/profile_conversas.sema +165 -165
  57. package/exemplos/profile_game.sema +1 -1
  58. package/exemplos/profile_legal.sema +1 -1
  59. package/exemplos/profile_ops.sema +1 -1
  60. package/exemplos/profile_research.sema +1 -1
  61. package/exemplos/profile_software.sema +1 -1
  62. package/exemplos/profile_workflow_n8n.sema +1 -1
  63. package/exemplos/relatorio.sema +1 -1
  64. package/exemplos/replica_analitica_erp.sema +1 -1
  65. package/exemplos/testes_embutidos.sema +1 -1
  66. package/exemplos/tratamento_erro.sema +1 -1
  67. package/exemplos/upload_arquivo.sema +1 -1
  68. package/exemplos/webhook.sema +1 -1
  69. package/node_modules/@sema/gerador-cpp/dist/index.js +176 -176
  70. package/node_modules/@sema/gerador-css/dist/index.part01.js +10 -10
  71. package/node_modules/@sema/gerador-dotnet/dist/index.js +169 -169
  72. package/node_modules/@sema/gerador-html/dist/index.js +17 -17
  73. package/node_modules/@sema/gerador-python/dist/index.part02.js +3 -3
  74. package/node_modules/@sema/gerador-typescript/dist/index.part02.js +11 -11
  75. package/node_modules/@sema/nucleo/dist/diagnosticos/melhorador.js +42 -42
  76. package/package.json +1 -1
@@ -1,220 +1,220 @@
1
- module exemplos.operacao_estrategia.discovery {
2
- docs {
3
- resumo: "Tasks oficiais de discovery semanal e avaliacao de slice apos discovery."
4
- }
5
-
6
- type JanelaDiscovery {
7
- fields {
8
- semana_referencia: Data
9
- strategy_id: Id
10
- versao_modelo_candidata: Texto
11
- status_discovery: StatusDiscovery
12
- }
13
- invariants {
14
- semana_referencia existe
15
- strategy_id existe
16
- versao_modelo_candidata existe
17
- status_discovery em [ABERTA, EM_AVALIACAO, APROVADA, REJEITADA]
18
- }
19
- }
20
-
21
- enum StatusSlice {
22
- ATIVO,
23
- QUARENTENA,
24
- DESLIGADO
25
- }
26
-
27
- enum StatusGate {
28
- ABERTO,
29
- FECHADO
30
- }
31
-
32
- enum StatusDiscovery {
33
- ABERTA,
34
- EM_AVALIACAO,
35
- APROVADA,
36
- REJEITADA
37
- }
38
-
39
- task registrar_discovery_semanal {
40
- docs {
41
- resumo: "Abre a janela semanal de discovery para uma strategy e marca a versao candidata que esta entrando em avaliacao."
42
- }
43
- input {
44
- strategy_id: Id required
45
- semana_referencia: Data required
46
- versao_modelo_candidata: Texto required
47
- }
48
- output {
49
- janela: JanelaDiscovery
50
- discovery_registrada: Booleano
51
- }
52
- authz {
53
- escopo: strategy.discovery.operar
54
- tenant: obrigatorio
55
- }
56
- dados {
57
- classificacao_padrao: interno
58
- redacao_log: obrigatoria
59
- input {
60
- strategy_id: interno
61
- semana_referencia: interno
62
- versao_modelo_candidata: interno
63
- }
64
- output {
65
- janela: interno
66
- discovery_registrada: interno
67
- }
68
- }
69
- audit {
70
- evento: strategy.discovery.aberta
71
- ator: sistema.strategy
72
- correlacao: request_id
73
- retencao: "180d"
74
- motivo: obrigatorio
75
- }
76
- forbidden {
77
- shell.exec
78
- log.segredo
79
- retorno.credencial
80
- }
81
- rules {
82
- strategy_id existe
83
- semana_referencia existe
84
- versao_modelo_candidata existe
85
- }
86
- effects {
87
- persistencia discovery_semanal criticidade = alta
88
- auditoria strategy criticidade = alta
89
- evento discovery_aberta criticidade = media
90
- }
91
- vinculos {
92
- tabela: discovery_semanal
93
- recurso: strategy_registry
94
- evento: discovery_aberta
95
- }
96
- execucao {
97
- idempotencia: verdadeiro
98
- timeout: "10s"
99
- retry: "nenhum"
100
- compensacao: "fechar_janela_discovery_inconsistente"
101
- criticidade_operacional: alta
102
- }
103
- guarantees {
104
- janela existe
105
- discovery_registrada == verdadeiro
106
- }
107
- tests {
108
- caso "abre discovery da semana" {
109
- given {
110
- strategy_id: "strategy_alpha"
111
- semana_referencia: "2026-03-30"
112
- versao_modelo_candidata: "modelo_2026_13"
113
- }
114
-
115
- expect {
116
- sucesso: verdadeiro
117
- discovery_registrada: verdadeiro
118
- janela: "janela_strategy_alpha_2026_13"
119
- }
120
- }
121
- }
122
- }
123
-
124
- task avaliar_slice_apos_discovery {
125
- docs {
126
- resumo: "Decide se um slice segue aberto,entra em quarentena ou precisa ficar bloqueado ate nova avaliacao."
127
- }
128
- input {
129
- strategy_id: Id required
130
- slice_id: Id required
131
- precision_observada: Decimal required
132
- precision_minima: Decimal required
133
- risco_operacional: Texto required
134
- }
135
- output {
136
- gate_slice: StatusGate
137
- slice_status: StatusSlice
138
- motivo_operacional: Texto
139
- }
140
- authz {
141
- escopo: strategy.slice.avaliar
142
- tenant: obrigatorio
143
- }
144
- dados {
145
- classificacao_padrao: interno
146
- redacao_log: obrigatoria
147
- input {
148
- strategy_id: interno
149
- slice_id: interno
150
- precision_observada: interno
151
- precision_minima: interno
152
- risco_operacional: interno
153
- }
154
- output {
155
- gate_slice: interno
156
- slice_status: interno
157
- motivo_operacional: interno
158
- }
159
- }
160
- audit {
161
- evento: strategy.slice.avaliado
162
- ator: sistema.strategy
163
- correlacao: request_id
164
- retencao: "180d"
165
- motivo: obrigatorio
166
- }
167
- forbidden {
168
- shell.exec
169
- log.segredo
170
- retorno.credencial
171
- }
172
- rules {
173
- strategy_id existe
174
- slice_id existe
175
- precision_observada existe
176
- precision_minima existe
177
- risco_operacional existe
178
- }
179
- effects {
180
- persistencia slice criticidade = alta
181
- auditoria discovery_slice criticidade = alta
182
- notificacao operacao criticidade = media
183
- }
184
- vinculos {
185
- tabela: slice
186
- recurso: strategy_registry
187
- evento: discovery_slice_avaliado
188
- }
189
- execucao {
190
- idempotencia: verdadeiro
191
- timeout: "10s"
192
- retry: "nenhum"
193
- compensacao: "manter_gate_slice_fechado_ate_reavaliacao"
194
- criticidade_operacional: alta
195
- }
196
- guarantees {
197
- gate_slice existe
198
- slice_status existe
199
- motivo_operacional existe
200
- }
201
- tests {
202
- caso "slice ruim fecha gate na avaliacao" {
203
- given {
204
- strategy_id: "strategy_alpha"
205
- slice_id: "slice_under35_serie_a"
206
- precision_observada: 0.49
207
- precision_minima: 0.58
208
- risco_operacional: "drawdown_excessivo"
209
- }
210
-
211
- expect {
212
- sucesso: verdadeiro
213
- gate_slice: "FECHADO"
214
- slice_status: "QUARENTENA"
215
- motivo_operacional: "drawdown_excessivo"
216
- }
217
- }
218
- }
219
- }
220
- }
1
+ module exemplos.operacao_estrategia.discovery {
2
+ docs {
3
+ resumo: "Tasks oficiais de discovery semanal e avaliacao de slice apos discovery."
4
+ }
5
+
6
+ type JanelaDiscovery {
7
+ fields {
8
+ semana_referencia: Data
9
+ strategy_id: Id
10
+ versao_modelo_candidata: Texto
11
+ status_discovery: StatusDiscovery
12
+ }
13
+ invariants {
14
+ semana_referencia existe
15
+ strategy_id existe
16
+ versao_modelo_candidata existe
17
+ status_discovery em [ABERTA, EM_AVALIACAO, APROVADA, REJEITADA]
18
+ }
19
+ }
20
+
21
+ enum StatusSlice {
22
+ ATIVO,
23
+ QUARENTENA,
24
+ DESLIGADO
25
+ }
26
+
27
+ enum StatusGate {
28
+ ABERTO,
29
+ FECHADO
30
+ }
31
+
32
+ enum StatusDiscovery {
33
+ ABERTA,
34
+ EM_AVALIACAO,
35
+ APROVADA,
36
+ REJEITADA
37
+ }
38
+
39
+ task registrar_discovery_semanal {
40
+ docs {
41
+ resumo: "Abre a janela semanal de discovery para uma strategy e marca a versao candidata que esta entrando em avaliacao."
42
+ }
43
+ input {
44
+ strategy_id: Id required
45
+ semana_referencia: Data required
46
+ versao_modelo_candidata: Texto required
47
+ }
48
+ output {
49
+ janela: JanelaDiscovery
50
+ discovery_registrada: Booleano
51
+ }
52
+ authz {
53
+ escopo: strategy.discovery.operar
54
+ tenant: obrigatorio
55
+ }
56
+ dados {
57
+ classificacao_padrao: interno
58
+ redacao_log: obrigatoria
59
+ input {
60
+ strategy_id: interno
61
+ semana_referencia: interno
62
+ versao_modelo_candidata: interno
63
+ }
64
+ output {
65
+ janela: interno
66
+ discovery_registrada: interno
67
+ }
68
+ }
69
+ audit {
70
+ evento: strategy.discovery.aberta
71
+ ator: sistema.strategy
72
+ correlacao: request_id
73
+ retencao: "180d"
74
+ motivo: obrigatorio
75
+ }
76
+ forbidden {
77
+ shell.exec
78
+ log.segredo
79
+ retorno.credencial
80
+ }
81
+ rules {
82
+ strategy_id existe
83
+ semana_referencia existe
84
+ versao_modelo_candidata existe
85
+ }
86
+ effects {
87
+ persistencia discovery_semanal criticidade = alta
88
+ auditoria strategy criticidade = alta
89
+ evento discovery_aberta criticidade = media
90
+ }
91
+ vinculos {
92
+ tabela: discovery_semanal
93
+ recurso: strategy_registry
94
+ evento: discovery_aberta
95
+ }
96
+ execucao {
97
+ idempotencia: verdadeiro
98
+ timeout: "10s"
99
+ retry: "nenhum"
100
+ compensacao: "fechar_janela_discovery_inconsistente"
101
+ criticidade_operacional: alta
102
+ }
103
+ guarantees {
104
+ janela existe
105
+ discovery_registrada == verdadeiro
106
+ }
107
+ tests {
108
+ caso "abre discovery da semana" {
109
+ given {
110
+ strategy_id: "strategy_alpha"
111
+ semana_referencia: "2026-03-30"
112
+ versao_modelo_candidata: "modelo_2026_13"
113
+ }
114
+
115
+ expect {
116
+ sucesso: verdadeiro
117
+ discovery_registrada: verdadeiro
118
+ janela: "janela_strategy_alpha_2026_13"
119
+ }
120
+ }
121
+ }
122
+ }
123
+
124
+ task avaliar_slice_apos_discovery {
125
+ docs {
126
+ resumo: "Decide se um slice segue aberto,entra em quarentena ou precisa ficar bloqueado ate nova avaliacao."
127
+ }
128
+ input {
129
+ strategy_id: Id required
130
+ slice_id: Id required
131
+ precision_observada: Decimal required
132
+ precision_minima: Decimal required
133
+ risco_operacional: Texto required
134
+ }
135
+ output {
136
+ gate_slice: StatusGate
137
+ slice_status: StatusSlice
138
+ motivo_operacional: Texto
139
+ }
140
+ authz {
141
+ escopo: strategy.slice.avaliar
142
+ tenant: obrigatorio
143
+ }
144
+ dados {
145
+ classificacao_padrao: interno
146
+ redacao_log: obrigatoria
147
+ input {
148
+ strategy_id: interno
149
+ slice_id: interno
150
+ precision_observada: interno
151
+ precision_minima: interno
152
+ risco_operacional: interno
153
+ }
154
+ output {
155
+ gate_slice: interno
156
+ slice_status: interno
157
+ motivo_operacional: interno
158
+ }
159
+ }
160
+ audit {
161
+ evento: strategy.slice.avaliado
162
+ ator: sistema.strategy
163
+ correlacao: request_id
164
+ retencao: "180d"
165
+ motivo: obrigatorio
166
+ }
167
+ forbidden {
168
+ shell.exec
169
+ log.segredo
170
+ retorno.credencial
171
+ }
172
+ rules {
173
+ strategy_id existe
174
+ slice_id existe
175
+ precision_observada existe
176
+ precision_minima existe
177
+ risco_operacional existe
178
+ }
179
+ effects {
180
+ persistencia slice criticidade = alta
181
+ auditoria discovery_slice criticidade = alta
182
+ notificacao operacao criticidade = media
183
+ }
184
+ vinculos {
185
+ tabela: slice
186
+ recurso: strategy_registry
187
+ evento: discovery_slice_avaliado
188
+ }
189
+ execucao {
190
+ idempotencia: verdadeiro
191
+ timeout: "10s"
192
+ retry: "nenhum"
193
+ compensacao: "manter_gate_slice_fechado_ate_reavaliacao"
194
+ criticidade_operacional: alta
195
+ }
196
+ guarantees {
197
+ gate_slice existe
198
+ slice_status existe
199
+ motivo_operacional existe
200
+ }
201
+ tests {
202
+ caso "slice ruim fecha gate na avaliacao" {
203
+ given {
204
+ strategy_id: "strategy_alpha"
205
+ slice_id: "slice_under35_serie_a"
206
+ precision_observada: 0.49
207
+ precision_minima: 0.58
208
+ risco_operacional: "drawdown_excessivo"
209
+ }
210
+
211
+ expect {
212
+ sucesso: verdadeiro
213
+ gate_slice: "FECHADO"
214
+ slice_status: "QUARENTENA"
215
+ motivo_operacional: "drawdown_excessivo"
216
+ }
217
+ }
218
+ }
219
+ }
220
+ }
@@ -1,114 +1,114 @@
1
- module exemplos.operacao_estrategia.fluxo {
2
- docs {
3
- resumo: "Flow oficial de governanca operacional com stubs curtos para manter a orquestracao validavel sem virar contrato monolitico."
4
- }
5
-
6
- enum StatusStrategy {
7
- RASCUNHO,
8
- ATIVA,
9
- QUARENTENA,
10
- DESATIVADA
11
- }
12
-
13
- enum StatusGate {
14
- ABERTO,
15
- FECHADO
16
- }
17
-
18
- task registrar_discovery_semanal {
19
- input {
20
- strategy_id: Id required
21
- semana_referencia: Data required
22
- versao_modelo_candidata: Texto required
23
- }
24
- output {
25
- discovery_registrada: Booleano
26
- }
27
- guarantees {
28
- discovery_registrada existe
29
- }
30
- }
31
-
32
- task avaliar_slice_apos_discovery {
33
- input {
34
- strategy_id: Id required
35
- slice_id: Id required
36
- precision_observada: Decimal required
37
- precision_minima: Decimal required
38
- risco_operacional: Texto required
39
- }
40
- output {
41
- motivo_operacional: Texto
42
- }
43
- guarantees {
44
- motivo_operacional existe
45
- }
46
- }
47
-
48
- task colocar_slice_em_quarentena {
49
- input {
50
- strategy_id: Id required
51
- slice_id: Id required
52
- motivo: Texto required
53
- origem: Texto required
54
- data_referencia: Data required
55
- }
56
- output {
57
- gate_slice: StatusGate
58
- }
59
- guarantees {
60
- gate_slice existe
61
- }
62
- }
63
-
64
- task fechar_gate_global_strategy {
65
- input {
66
- strategy_id: Id required
67
- motivo_operacional: Texto required
68
- versao_modelo_ativa: Texto required
69
- }
70
- output {
71
- gate_global: StatusGate
72
- }
73
- guarantees {
74
- gate_global existe
75
- }
76
- }
77
-
78
- task ativar_strategy_com_nova_versao {
79
- input {
80
- strategy_id: Id required
81
- versao_modelo_ativa: Texto required
82
- versao_modelo_candidata: Texto required
83
- strategy_status_atual: StatusStrategy required
84
- gate_global_atual: StatusGate required
85
- aprovacao_manual: Booleano required
86
- }
87
- output {
88
- strategy_status: StatusStrategy
89
- }
90
- guarantees {
91
- strategy_status existe
92
- }
93
- }
94
-
95
- flow governanca_operacional {
96
- strategy_id: Id
97
- slice_id: Id
98
- semana_referencia: Data
99
- versao_modelo_ativa: Texto
100
- versao_modelo_candidata: Texto
101
- precision_observada: Decimal
102
- precision_minima: Decimal
103
- risco_operacional: Texto
104
- motivo_operacional: Texto
105
- strategy_status_atual: StatusStrategy
106
- gate_global_atual: StatusGate
107
- aprovacao_manual: Booleano
108
- etapa discovery usa registrar_discovery_semanal com strategy_id = strategy_id, semana_referencia = semana_referencia, versao_modelo_candidata = versao_modelo_candidata
109
- etapa avaliar_slice usa avaliar_slice_apos_discovery com strategy_id = strategy_id, slice_id = slice_id, precision_observada = precision_observada, precision_minima = precision_minima, risco_operacional = risco_operacional depende_de discovery
110
- etapa quarentena_slice usa colocar_slice_em_quarentena com strategy_id = strategy_id, slice_id = slice_id, motivo = motivo_operacional, origem = risco_operacional, data_referencia = semana_referencia quando motivo_operacional existe depende_de avaliar_slice
111
- etapa fechar_gate_global usa fechar_gate_global_strategy com strategy_id = strategy_id, motivo_operacional = motivo_operacional, versao_modelo_ativa = versao_modelo_ativa quando motivo_operacional existe depende_de quarentena_slice
112
- etapa reativacao usa ativar_strategy_com_nova_versao com strategy_id = strategy_id, versao_modelo_ativa = versao_modelo_ativa, versao_modelo_candidata = versao_modelo_candidata, strategy_status_atual = strategy_status_atual, gate_global_atual = gate_global_atual, aprovacao_manual = aprovacao_manual quando aprovacao_manual == verdadeiro depende_de fechar_gate_global
113
- }
114
- }
1
+ module exemplos.operacao_estrategia.fluxo {
2
+ docs {
3
+ resumo: "Flow oficial de governanca operacional com stubs curtos para manter a orquestracao validavel sem virar contrato monolitico."
4
+ }
5
+
6
+ enum StatusStrategy {
7
+ RASCUNHO,
8
+ ATIVA,
9
+ QUARENTENA,
10
+ DESATIVADA
11
+ }
12
+
13
+ enum StatusGate {
14
+ ABERTO,
15
+ FECHADO
16
+ }
17
+
18
+ task registrar_discovery_semanal {
19
+ input {
20
+ strategy_id: Id required
21
+ semana_referencia: Data required
22
+ versao_modelo_candidata: Texto required
23
+ }
24
+ output {
25
+ discovery_registrada: Booleano
26
+ }
27
+ guarantees {
28
+ discovery_registrada existe
29
+ }
30
+ }
31
+
32
+ task avaliar_slice_apos_discovery {
33
+ input {
34
+ strategy_id: Id required
35
+ slice_id: Id required
36
+ precision_observada: Decimal required
37
+ precision_minima: Decimal required
38
+ risco_operacional: Texto required
39
+ }
40
+ output {
41
+ motivo_operacional: Texto
42
+ }
43
+ guarantees {
44
+ motivo_operacional existe
45
+ }
46
+ }
47
+
48
+ task colocar_slice_em_quarentena {
49
+ input {
50
+ strategy_id: Id required
51
+ slice_id: Id required
52
+ motivo: Texto required
53
+ origem: Texto required
54
+ data_referencia: Data required
55
+ }
56
+ output {
57
+ gate_slice: StatusGate
58
+ }
59
+ guarantees {
60
+ gate_slice existe
61
+ }
62
+ }
63
+
64
+ task fechar_gate_global_strategy {
65
+ input {
66
+ strategy_id: Id required
67
+ motivo_operacional: Texto required
68
+ versao_modelo_ativa: Texto required
69
+ }
70
+ output {
71
+ gate_global: StatusGate
72
+ }
73
+ guarantees {
74
+ gate_global existe
75
+ }
76
+ }
77
+
78
+ task ativar_strategy_com_nova_versao {
79
+ input {
80
+ strategy_id: Id required
81
+ versao_modelo_ativa: Texto required
82
+ versao_modelo_candidata: Texto required
83
+ strategy_status_atual: StatusStrategy required
84
+ gate_global_atual: StatusGate required
85
+ aprovacao_manual: Booleano required
86
+ }
87
+ output {
88
+ strategy_status: StatusStrategy
89
+ }
90
+ guarantees {
91
+ strategy_status existe
92
+ }
93
+ }
94
+
95
+ flow governanca_operacional {
96
+ strategy_id: Id
97
+ slice_id: Id
98
+ semana_referencia: Data
99
+ versao_modelo_ativa: Texto
100
+ versao_modelo_candidata: Texto
101
+ precision_observada: Decimal
102
+ precision_minima: Decimal
103
+ risco_operacional: Texto
104
+ motivo_operacional: Texto
105
+ strategy_status_atual: StatusStrategy
106
+ gate_global_atual: StatusGate
107
+ aprovacao_manual: Booleano
108
+ etapa discovery usa registrar_discovery_semanal com strategy_id = strategy_id, semana_referencia = semana_referencia, versao_modelo_candidata = versao_modelo_candidata
109
+ etapa avaliar_slice usa avaliar_slice_apos_discovery com strategy_id = strategy_id, slice_id = slice_id, precision_observada = precision_observada, precision_minima = precision_minima, risco_operacional = risco_operacional depende_de discovery
110
+ etapa quarentena_slice usa colocar_slice_em_quarentena com strategy_id = strategy_id, slice_id = slice_id, motivo = motivo_operacional, origem = risco_operacional, data_referencia = semana_referencia quando motivo_operacional existe depende_de avaliar_slice
111
+ etapa fechar_gate_global usa fechar_gate_global_strategy com strategy_id = strategy_id, motivo_operacional = motivo_operacional, versao_modelo_ativa = versao_modelo_ativa quando motivo_operacional existe depende_de quarentena_slice
112
+ etapa reativacao usa ativar_strategy_com_nova_versao com strategy_id = strategy_id, versao_modelo_ativa = versao_modelo_ativa, versao_modelo_candidata = versao_modelo_candidata, strategy_status_atual = strategy_status_atual, gate_global_atual = gate_global_atual, aprovacao_manual = aprovacao_manual quando aprovacao_manual == verdadeiro depende_de fechar_gate_global
113
+ }
114
+ }