@semacode/cli 2.0.1 → 2.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.
- package/LICENSE +39 -39
- package/README.md +125 -121
- package/dist/agentEntryPoints.js +499 -499
- package/dist/doctorCommand.js +28 -0
- package/dist/geracaoCore.js +97 -1
- package/dist/iaPrompts.d.ts +1 -1
- package/dist/iaPrompts.js +307 -307
- package/dist/index.part01.js +4 -3
- package/dist/index.part02.js +21 -21
- package/dist/index.part04.js +96 -96
- package/dist/index.part06.js +1 -1
- package/dist/index.part07.js +35 -24
- package/dist/init/templates.part01.js +393 -393
- package/dist/init/templates.part02.js +189 -189
- package/dist/initTemplatesBackend.js +73 -73
- package/dist/initTemplatesBase.js +81 -81
- package/dist/initTemplatesFlutter.js +137 -137
- package/dist/initTemplatesRuntime.js +350 -350
- package/dist/initTemplatesWeb.js +309 -309
- package/dist/nativeToolchains.d.ts +15 -0
- package/dist/nativeToolchains.js +132 -0
- package/dist/projetoConfig.js +7 -1
- package/dist/projetoResolucao.js +21 -6
- package/dist/sync/index.js +35 -35
- package/docs/README.md +25 -25
- package/docs/ai-onboarding.md +62 -62
- package/docs/ai-workflow.md +1 -1
- package/docs/auth.md +26 -26
- package/docs/cli.md +79 -72
- package/docs/commands.md +1 -1
- package/docs/database.md +15 -15
- package/docs/deploy.md +41 -36
- package/docs/documentation.md +39 -39
- package/docs/env.md +16 -16
- package/docs/frontend.md +41 -41
- package/docs/getting-started.md +57 -57
- package/docs/i18n.md +15 -15
- package/docs/profiles.md +45 -43
- package/docs/repositories.md +43 -43
- package/docs/rollback.md +31 -31
- package/docs/security.md +32 -32
- package/docs/support.md +8 -8
- package/docs/syntax.md +1 -1
- package/docs/testing.md +35 -28
- package/docs/vocabulary.md +29 -29
- package/exemplos/agendamento.sema +1 -1
- package/exemplos/assinatura.sema +1 -1
- package/exemplos/auditoria.sema +1 -1
- package/exemplos/autenticacao.sema +1 -1
- package/exemplos/author_obra_comum.sema +1 -1
- package/exemplos/author_tema_sensivel.sema +1 -1
- package/exemplos/automacao.sema +1 -1
- package/exemplos/cadastro_usuario.sema +1 -1
- package/exemplos/calculadora.sema +1 -1
- package/exemplos/crud_simples.sema +1 -1
- package/exemplos/estoque.sema +1 -1
- package/exemplos/exportacao.sema +1 -1
- package/exemplos/fila.sema +1 -1
- package/exemplos/integracao_externa.sema +1 -1
- package/exemplos/multi_tenant.sema +1 -1
- package/exemplos/notificacao.sema +1 -1
- package/exemplos/operacao_estrategia.sema +132 -132
- package/exemplos/operacao_estrategia_discovery.sema +220 -220
- package/exemplos/operacao_estrategia_fluxo.sema +114 -114
- package/exemplos/operacao_estrategia_gates.sema +106 -106
- package/exemplos/operacao_estrategia_quarentena.sema +133 -133
- package/exemplos/operacao_estrategia_rollout.sema +124 -124
- package/exemplos/pagamento.sema +1 -1
- package/exemplos/pagamento_dominio.sema +1 -1
- package/exemplos/pedido.sema +1 -1
- package/exemplos/permissao.sema +1 -1
- package/exemplos/persistencia_vendor_first.sema +1 -1
- package/exemplos/profile_conversas.sema +165 -165
- package/exemplos/profile_game.sema +1 -1
- package/exemplos/profile_legal.sema +1 -1
- package/exemplos/profile_ops.sema +1 -1
- package/exemplos/profile_research.sema +1 -1
- package/exemplos/profile_software.sema +1 -1
- package/exemplos/profile_workflow_n8n.sema +1 -1
- package/exemplos/relatorio.sema +1 -1
- package/exemplos/replica_analitica_erp.sema +1 -1
- package/exemplos/testes_embutidos.sema +1 -1
- package/exemplos/tratamento_erro.sema +1 -1
- package/exemplos/upload_arquivo.sema +1 -1
- package/exemplos/webhook.sema +1 -1
- package/node_modules/@sema/gerador-cpp/dist/index.d.ts +3 -0
- package/node_modules/@sema/gerador-cpp/dist/index.js +859 -0
- package/node_modules/@sema/gerador-cpp/dist/index.js.map +1 -0
- package/node_modules/@sema/gerador-cpp/package.json +7 -0
- package/node_modules/@sema/gerador-css/dist/index.part01.js +10 -10
- package/node_modules/@sema/gerador-css/dist/index.part02.js +460 -460
- package/node_modules/@sema/gerador-dotnet/dist/index.d.ts +3 -0
- package/node_modules/@sema/gerador-dotnet/dist/index.js +828 -0
- package/node_modules/@sema/gerador-dotnet/dist/index.js.map +1 -0
- package/node_modules/@sema/gerador-dotnet/package.json +7 -0
- package/node_modules/@sema/gerador-html/dist/index.js +17 -17
- package/node_modules/@sema/gerador-lua/dist/index.js +5 -5
- package/node_modules/@sema/gerador-php/dist/index.js +113 -113
- package/node_modules/@sema/gerador-python/dist/index.part02.js +3 -3
- package/node_modules/@sema/gerador-typescript/dist/index.part02.js +11 -11
- package/node_modules/@sema/nucleo/dist/diagnosticos/melhorador.js +42 -42
- package/node_modules/@sema/padroes/dist/index.d.ts +1 -1
- package/package.json +5 -1
|
@@ -1,106 +1,106 @@
|
|
|
1
|
-
module exemplos.operacao_estrategia.gates {
|
|
2
|
-
docs {
|
|
3
|
-
resumo: "Task oficial para fechamento do gate global de uma strategy com trilha auditavel."
|
|
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 fechar_gate_global_strategy {
|
|
19
|
-
docs {
|
|
20
|
-
resumo: "Fecha o gate global quando a strategy inteira precisa parar de liberar sem apagar historico nem perder a trilha da versao ativa."
|
|
21
|
-
}
|
|
22
|
-
input {
|
|
23
|
-
strategy_id: Id required
|
|
24
|
-
motivo_operacional: Texto required
|
|
25
|
-
versao_modelo_ativa: Texto required
|
|
26
|
-
}
|
|
27
|
-
output {
|
|
28
|
-
strategy_status: StatusStrategy
|
|
29
|
-
gate_global: StatusGate
|
|
30
|
-
versao_modelo_ativa: Texto
|
|
31
|
-
}
|
|
32
|
-
authz {
|
|
33
|
-
escopo: strategy.gate.fechar
|
|
34
|
-
tenant: obrigatorio
|
|
35
|
-
}
|
|
36
|
-
dados {
|
|
37
|
-
classificacao_padrao: interno
|
|
38
|
-
redacao_log: obrigatoria
|
|
39
|
-
input {
|
|
40
|
-
strategy_id: interno
|
|
41
|
-
motivo_operacional: interno
|
|
42
|
-
versao_modelo_ativa: interno
|
|
43
|
-
}
|
|
44
|
-
output {
|
|
45
|
-
strategy_status: interno
|
|
46
|
-
gate_global: interno
|
|
47
|
-
versao_modelo_ativa: interno
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
audit {
|
|
51
|
-
evento: strategy.gate_global.fechado
|
|
52
|
-
ator: sistema.strategy
|
|
53
|
-
correlacao: request_id
|
|
54
|
-
retencao: "180d"
|
|
55
|
-
motivo: obrigatorio
|
|
56
|
-
}
|
|
57
|
-
forbidden {
|
|
58
|
-
shell.exec
|
|
59
|
-
log.segredo
|
|
60
|
-
retorno.credencial
|
|
61
|
-
}
|
|
62
|
-
rules {
|
|
63
|
-
strategy_id existe
|
|
64
|
-
motivo_operacional existe
|
|
65
|
-
versao_modelo_ativa existe
|
|
66
|
-
}
|
|
67
|
-
effects {
|
|
68
|
-
persistencia strategy criticidade = alta
|
|
69
|
-
notificacao operacao criticidade = alta
|
|
70
|
-
auditoria gate_global criticidade = alta
|
|
71
|
-
}
|
|
72
|
-
vinculos {
|
|
73
|
-
tabela: strategy
|
|
74
|
-
recurso: strategy_registry
|
|
75
|
-
evento: gate_global_fechado
|
|
76
|
-
}
|
|
77
|
-
execucao {
|
|
78
|
-
idempotencia: verdadeiro
|
|
79
|
-
timeout: "10s"
|
|
80
|
-
retry: "nenhum"
|
|
81
|
-
compensacao: "manter_strategy_em_quarentena"
|
|
82
|
-
criticidade_operacional: alta
|
|
83
|
-
}
|
|
84
|
-
guarantees {
|
|
85
|
-
strategy_status == QUARENTENA
|
|
86
|
-
gate_global == FECHADO
|
|
87
|
-
versao_modelo_ativa existe
|
|
88
|
-
}
|
|
89
|
-
tests {
|
|
90
|
-
caso "fecha gate global sem perder versao ativa" {
|
|
91
|
-
given {
|
|
92
|
-
strategy_id: "strategy_alpha"
|
|
93
|
-
motivo_operacional: "sequencia_ruim_em_varias_ligas"
|
|
94
|
-
versao_modelo_ativa: "modelo_2026_12"
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
expect {
|
|
98
|
-
sucesso: verdadeiro
|
|
99
|
-
strategy_status: "QUARENTENA"
|
|
100
|
-
gate_global: "FECHADO"
|
|
101
|
-
versao_modelo_ativa: "modelo_2026_12"
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
1
|
+
module exemplos.operacao_estrategia.gates {
|
|
2
|
+
docs {
|
|
3
|
+
resumo: "Task oficial para fechamento do gate global de uma strategy com trilha auditavel."
|
|
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 fechar_gate_global_strategy {
|
|
19
|
+
docs {
|
|
20
|
+
resumo: "Fecha o gate global quando a strategy inteira precisa parar de liberar sem apagar historico nem perder a trilha da versao ativa."
|
|
21
|
+
}
|
|
22
|
+
input {
|
|
23
|
+
strategy_id: Id required
|
|
24
|
+
motivo_operacional: Texto required
|
|
25
|
+
versao_modelo_ativa: Texto required
|
|
26
|
+
}
|
|
27
|
+
output {
|
|
28
|
+
strategy_status: StatusStrategy
|
|
29
|
+
gate_global: StatusGate
|
|
30
|
+
versao_modelo_ativa: Texto
|
|
31
|
+
}
|
|
32
|
+
authz {
|
|
33
|
+
escopo: strategy.gate.fechar
|
|
34
|
+
tenant: obrigatorio
|
|
35
|
+
}
|
|
36
|
+
dados {
|
|
37
|
+
classificacao_padrao: interno
|
|
38
|
+
redacao_log: obrigatoria
|
|
39
|
+
input {
|
|
40
|
+
strategy_id: interno
|
|
41
|
+
motivo_operacional: interno
|
|
42
|
+
versao_modelo_ativa: interno
|
|
43
|
+
}
|
|
44
|
+
output {
|
|
45
|
+
strategy_status: interno
|
|
46
|
+
gate_global: interno
|
|
47
|
+
versao_modelo_ativa: interno
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
audit {
|
|
51
|
+
evento: strategy.gate_global.fechado
|
|
52
|
+
ator: sistema.strategy
|
|
53
|
+
correlacao: request_id
|
|
54
|
+
retencao: "180d"
|
|
55
|
+
motivo: obrigatorio
|
|
56
|
+
}
|
|
57
|
+
forbidden {
|
|
58
|
+
shell.exec
|
|
59
|
+
log.segredo
|
|
60
|
+
retorno.credencial
|
|
61
|
+
}
|
|
62
|
+
rules {
|
|
63
|
+
strategy_id existe
|
|
64
|
+
motivo_operacional existe
|
|
65
|
+
versao_modelo_ativa existe
|
|
66
|
+
}
|
|
67
|
+
effects {
|
|
68
|
+
persistencia strategy criticidade = alta
|
|
69
|
+
notificacao operacao criticidade = alta
|
|
70
|
+
auditoria gate_global criticidade = alta
|
|
71
|
+
}
|
|
72
|
+
vinculos {
|
|
73
|
+
tabela: strategy
|
|
74
|
+
recurso: strategy_registry
|
|
75
|
+
evento: gate_global_fechado
|
|
76
|
+
}
|
|
77
|
+
execucao {
|
|
78
|
+
idempotencia: verdadeiro
|
|
79
|
+
timeout: "10s"
|
|
80
|
+
retry: "nenhum"
|
|
81
|
+
compensacao: "manter_strategy_em_quarentena"
|
|
82
|
+
criticidade_operacional: alta
|
|
83
|
+
}
|
|
84
|
+
guarantees {
|
|
85
|
+
strategy_status == QUARENTENA
|
|
86
|
+
gate_global == FECHADO
|
|
87
|
+
versao_modelo_ativa existe
|
|
88
|
+
}
|
|
89
|
+
tests {
|
|
90
|
+
caso "fecha gate global sem perder versao ativa" {
|
|
91
|
+
given {
|
|
92
|
+
strategy_id: "strategy_alpha"
|
|
93
|
+
motivo_operacional: "sequencia_ruim_em_varias_ligas"
|
|
94
|
+
versao_modelo_ativa: "modelo_2026_12"
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
expect {
|
|
98
|
+
sucesso: verdadeiro
|
|
99
|
+
strategy_status: "QUARENTENA"
|
|
100
|
+
gate_global: "FECHADO"
|
|
101
|
+
versao_modelo_ativa: "modelo_2026_12"
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
@@ -1,133 +1,133 @@
|
|
|
1
|
-
module exemplos.operacao_estrategia.quarentena {
|
|
2
|
-
docs {
|
|
3
|
-
resumo: "Task oficial para colocar slice em quarentena seletiva sem desligar a strategy inteira."
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
type ContextoQuarentena {
|
|
7
|
-
fields {
|
|
8
|
-
motivo: Texto
|
|
9
|
-
origem: Texto
|
|
10
|
-
desde: Data
|
|
11
|
-
}
|
|
12
|
-
invariants {
|
|
13
|
-
motivo existe
|
|
14
|
-
origem existe
|
|
15
|
-
desde existe
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
enum StatusSlice {
|
|
20
|
-
ATIVO,
|
|
21
|
-
QUARENTENA,
|
|
22
|
-
DESLIGADO
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
enum StatusGate {
|
|
26
|
-
ABERTO,
|
|
27
|
-
FECHADO
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
task colocar_slice_em_quarentena {
|
|
31
|
-
docs {
|
|
32
|
-
resumo: "Transforma um problema de slice em acao operacional explicita,sem desligar a strategy inteira por reflexo idiota."
|
|
33
|
-
}
|
|
34
|
-
input {
|
|
35
|
-
strategy_id: Id required
|
|
36
|
-
slice_id: Id required
|
|
37
|
-
motivo: Texto required
|
|
38
|
-
origem: Texto required
|
|
39
|
-
data_referencia: Data required
|
|
40
|
-
}
|
|
41
|
-
output {
|
|
42
|
-
slice_status: StatusSlice
|
|
43
|
-
gate_slice: StatusGate
|
|
44
|
-
contexto: ContextoQuarentena
|
|
45
|
-
}
|
|
46
|
-
authz {
|
|
47
|
-
escopo: strategy.slice.quarentena
|
|
48
|
-
tenant: obrigatorio
|
|
49
|
-
}
|
|
50
|
-
dados {
|
|
51
|
-
classificacao_padrao: interno
|
|
52
|
-
redacao_log: obrigatoria
|
|
53
|
-
input {
|
|
54
|
-
strategy_id: interno
|
|
55
|
-
slice_id: interno
|
|
56
|
-
motivo: interno
|
|
57
|
-
origem: interno
|
|
58
|
-
data_referencia: interno
|
|
59
|
-
}
|
|
60
|
-
output {
|
|
61
|
-
slice_status: interno
|
|
62
|
-
gate_slice: interno
|
|
63
|
-
contexto: interno
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
audit {
|
|
67
|
-
evento: strategy.slice.quarentena
|
|
68
|
-
ator: sistema.strategy
|
|
69
|
-
correlacao: request_id
|
|
70
|
-
retencao: "180d"
|
|
71
|
-
motivo: obrigatorio
|
|
72
|
-
}
|
|
73
|
-
forbidden {
|
|
74
|
-
shell.exec
|
|
75
|
-
log.segredo
|
|
76
|
-
retorno.credencial
|
|
77
|
-
}
|
|
78
|
-
rules {
|
|
79
|
-
strategy_id existe
|
|
80
|
-
slice_id existe
|
|
81
|
-
motivo existe
|
|
82
|
-
origem existe
|
|
83
|
-
data_referencia existe
|
|
84
|
-
}
|
|
85
|
-
effects {
|
|
86
|
-
persistencia slice criticidade = alta
|
|
87
|
-
persistencia quarentena criticidade = alta
|
|
88
|
-
notificacao operacao criticidade = alta
|
|
89
|
-
auditoria quarentena criticidade = alta
|
|
90
|
-
}
|
|
91
|
-
vinculos {
|
|
92
|
-
tabela: slice
|
|
93
|
-
tabela: quarentena
|
|
94
|
-
recurso: strategy_registry
|
|
95
|
-
evento: slice_quarentena
|
|
96
|
-
}
|
|
97
|
-
execucao {
|
|
98
|
-
idempotencia: verdadeiro
|
|
99
|
-
timeout: "10s"
|
|
100
|
-
retry: "nenhum"
|
|
101
|
-
compensacao: "reabrir_slice_por_revisao_manual"
|
|
102
|
-
criticidade_operacional: alta
|
|
103
|
-
}
|
|
104
|
-
state governanca_estrategia {
|
|
105
|
-
transitions {
|
|
106
|
-
ATIVA -> QUARENTENA
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
guarantees {
|
|
110
|
-
slice_status == QUARENTENA
|
|
111
|
-
gate_slice == FECHADO
|
|
112
|
-
contexto existe
|
|
113
|
-
}
|
|
114
|
-
tests {
|
|
115
|
-
caso "quarentena seletiva fecha so o slice afetado" {
|
|
116
|
-
given {
|
|
117
|
-
strategy_id: "strategy_alpha"
|
|
118
|
-
slice_id: "slice_under35_serie_a"
|
|
119
|
-
motivo: "llm_detectou_noticia_ruim"
|
|
120
|
-
origem: "monitoramento_live"
|
|
121
|
-
data_referencia: "2026-03-30"
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
expect {
|
|
125
|
-
sucesso: verdadeiro
|
|
126
|
-
slice_status: "QUARENTENA"
|
|
127
|
-
gate_slice: "FECHADO"
|
|
128
|
-
contexto: "ctx_quarentena"
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}
|
|
1
|
+
module exemplos.operacao_estrategia.quarentena {
|
|
2
|
+
docs {
|
|
3
|
+
resumo: "Task oficial para colocar slice em quarentena seletiva sem desligar a strategy inteira."
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
type ContextoQuarentena {
|
|
7
|
+
fields {
|
|
8
|
+
motivo: Texto
|
|
9
|
+
origem: Texto
|
|
10
|
+
desde: Data
|
|
11
|
+
}
|
|
12
|
+
invariants {
|
|
13
|
+
motivo existe
|
|
14
|
+
origem existe
|
|
15
|
+
desde existe
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
enum StatusSlice {
|
|
20
|
+
ATIVO,
|
|
21
|
+
QUARENTENA,
|
|
22
|
+
DESLIGADO
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
enum StatusGate {
|
|
26
|
+
ABERTO,
|
|
27
|
+
FECHADO
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
task colocar_slice_em_quarentena {
|
|
31
|
+
docs {
|
|
32
|
+
resumo: "Transforma um problema de slice em acao operacional explicita,sem desligar a strategy inteira por reflexo idiota."
|
|
33
|
+
}
|
|
34
|
+
input {
|
|
35
|
+
strategy_id: Id required
|
|
36
|
+
slice_id: Id required
|
|
37
|
+
motivo: Texto required
|
|
38
|
+
origem: Texto required
|
|
39
|
+
data_referencia: Data required
|
|
40
|
+
}
|
|
41
|
+
output {
|
|
42
|
+
slice_status: StatusSlice
|
|
43
|
+
gate_slice: StatusGate
|
|
44
|
+
contexto: ContextoQuarentena
|
|
45
|
+
}
|
|
46
|
+
authz {
|
|
47
|
+
escopo: strategy.slice.quarentena
|
|
48
|
+
tenant: obrigatorio
|
|
49
|
+
}
|
|
50
|
+
dados {
|
|
51
|
+
classificacao_padrao: interno
|
|
52
|
+
redacao_log: obrigatoria
|
|
53
|
+
input {
|
|
54
|
+
strategy_id: interno
|
|
55
|
+
slice_id: interno
|
|
56
|
+
motivo: interno
|
|
57
|
+
origem: interno
|
|
58
|
+
data_referencia: interno
|
|
59
|
+
}
|
|
60
|
+
output {
|
|
61
|
+
slice_status: interno
|
|
62
|
+
gate_slice: interno
|
|
63
|
+
contexto: interno
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
audit {
|
|
67
|
+
evento: strategy.slice.quarentena
|
|
68
|
+
ator: sistema.strategy
|
|
69
|
+
correlacao: request_id
|
|
70
|
+
retencao: "180d"
|
|
71
|
+
motivo: obrigatorio
|
|
72
|
+
}
|
|
73
|
+
forbidden {
|
|
74
|
+
shell.exec
|
|
75
|
+
log.segredo
|
|
76
|
+
retorno.credencial
|
|
77
|
+
}
|
|
78
|
+
rules {
|
|
79
|
+
strategy_id existe
|
|
80
|
+
slice_id existe
|
|
81
|
+
motivo existe
|
|
82
|
+
origem existe
|
|
83
|
+
data_referencia existe
|
|
84
|
+
}
|
|
85
|
+
effects {
|
|
86
|
+
persistencia slice criticidade = alta
|
|
87
|
+
persistencia quarentena criticidade = alta
|
|
88
|
+
notificacao operacao criticidade = alta
|
|
89
|
+
auditoria quarentena criticidade = alta
|
|
90
|
+
}
|
|
91
|
+
vinculos {
|
|
92
|
+
tabela: slice
|
|
93
|
+
tabela: quarentena
|
|
94
|
+
recurso: strategy_registry
|
|
95
|
+
evento: slice_quarentena
|
|
96
|
+
}
|
|
97
|
+
execucao {
|
|
98
|
+
idempotencia: verdadeiro
|
|
99
|
+
timeout: "10s"
|
|
100
|
+
retry: "nenhum"
|
|
101
|
+
compensacao: "reabrir_slice_por_revisao_manual"
|
|
102
|
+
criticidade_operacional: alta
|
|
103
|
+
}
|
|
104
|
+
state governanca_estrategia {
|
|
105
|
+
transitions {
|
|
106
|
+
ATIVA -> QUARENTENA
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
guarantees {
|
|
110
|
+
slice_status == QUARENTENA
|
|
111
|
+
gate_slice == FECHADO
|
|
112
|
+
contexto existe
|
|
113
|
+
}
|
|
114
|
+
tests {
|
|
115
|
+
caso "quarentena seletiva fecha so o slice afetado" {
|
|
116
|
+
given {
|
|
117
|
+
strategy_id: "strategy_alpha"
|
|
118
|
+
slice_id: "slice_under35_serie_a"
|
|
119
|
+
motivo: "llm_detectou_noticia_ruim"
|
|
120
|
+
origem: "monitoramento_live"
|
|
121
|
+
data_referencia: "2026-03-30"
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
expect {
|
|
125
|
+
sucesso: verdadeiro
|
|
126
|
+
slice_status: "QUARENTENA"
|
|
127
|
+
gate_slice: "FECHADO"
|
|
128
|
+
contexto: "ctx_quarentena"
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|