@semacode/cli 3.12.2 → 4.0.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/dist/agentEntryPoints.js +9 -9
- package/dist/cliGrammar.js +17 -5
- package/dist/cliHelpTexto.js +5 -4
- package/dist/contextPack.d.ts +75 -0
- package/dist/contextPack.js +130 -0
- package/dist/drift.contrato.d.ts +1 -0
- package/dist/drift.contrato.js +1 -0
- package/dist/drift.part01.d.ts +4 -2
- package/dist/drift.part11.js +12 -1
- package/dist/drift.part14.d.ts +3 -0
- package/dist/drift.part14.js +108 -10
- package/dist/driftEscopo.d.ts +1 -0
- package/dist/driftEscopo.js +6 -0
- package/dist/driftPack.d.ts +65 -0
- package/dist/driftPack.js +96 -0
- package/dist/entrypointPack.d.ts +47 -0
- package/dist/entrypointPack.js +79 -0
- package/dist/index.part03.d.ts +2 -0
- package/dist/index.part03.js +6 -0
- package/dist/index.part05.js +14 -1
- package/dist/index.part06.js +51 -0
- package/dist/index.part07.d.ts +1 -1
- package/dist/index.part07.js +16 -2
- package/dist/index.part08.js +1 -1
- package/dist/indexPack.d.ts +54 -0
- package/dist/indexPack.js +140 -0
- package/dist/init/templates.part01.js +393 -393
- package/dist/init/templates.part02.js +189 -189
- package/dist/initCommand.js +38 -2
- package/dist/initTemplatesBackend.js +73 -73
- package/dist/initTemplatesFlutter.js +137 -137
- package/dist/initTemplatesRuntime.js +350 -350
- package/dist/initTemplatesWeb.js +309 -309
- package/dist/sync/index.js +35 -35
- package/docs/ai-workflow.md +1 -1
- package/docs/auth.md +26 -26
- package/docs/commands.md +3 -3
- package/docs/database.md +15 -15
- package/docs/env.md +16 -16
- package/docs/frontend.md +41 -41
- package/docs/i18n.md +15 -15
- 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/php_crud.sema +170 -170
- 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.js +176 -176
- package/node_modules/@sema/gerador-css/dist/index.part01.js +10 -10
- package/node_modules/@sema/gerador-dotnet/dist/index.js +169 -169
- package/node_modules/@sema/gerador-html/dist/index.js +17 -17
- 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/package.json +1 -1
package/dist/sync/index.js
CHANGED
|
@@ -46,25 +46,25 @@ export async function gerarSchemaPrisma(pastaContratos, saidaSchema, datasourceP
|
|
|
46
46
|
for (const contrato of contratos) {
|
|
47
47
|
const nomeModel = path.basename(contrato, '.sema').replace(/\./g, '_');
|
|
48
48
|
// Schema simplificado - em producao, fazer parsing real do contrato
|
|
49
|
-
models += `\nmodel ${nomeModel.charAt(0).toUpperCase() + nomeModel.slice(1)} {
|
|
50
|
-
id String @id @default(uuid())
|
|
51
|
-
criadoEm DateTime @default(now())
|
|
52
|
-
// Gerado a partir de: ${contrato}
|
|
53
|
-
// TODO: Adicionar campos do contrato Sema
|
|
49
|
+
models += `\nmodel ${nomeModel.charAt(0).toUpperCase() + nomeModel.slice(1)} {
|
|
50
|
+
id String @id @default(uuid())
|
|
51
|
+
criadoEm DateTime @default(now())
|
|
52
|
+
// Gerado a partir de: ${contrato}
|
|
53
|
+
// TODO: Adicionar campos do contrato Sema
|
|
54
54
|
}\n`;
|
|
55
55
|
modelCount++;
|
|
56
56
|
}
|
|
57
|
-
const schema = `// Gerado automaticamente pelo Sema
|
|
58
|
-
// Fonte: ${pastaContratos}
|
|
59
|
-
|
|
60
|
-
generator client {
|
|
61
|
-
provider = "prisma-client-js"
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
datasource db {
|
|
65
|
-
provider = "${datasourceProvider}"
|
|
66
|
-
url = env("SEMA_PRISMA_URL")
|
|
67
|
-
}
|
|
57
|
+
const schema = `// Gerado automaticamente pelo Sema
|
|
58
|
+
// Fonte: ${pastaContratos}
|
|
59
|
+
|
|
60
|
+
generator client {
|
|
61
|
+
provider = "prisma-client-js"
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
datasource db {
|
|
65
|
+
provider = "${datasourceProvider}"
|
|
66
|
+
url = env("SEMA_PRISMA_URL")
|
|
67
|
+
}
|
|
68
68
|
${models}`;
|
|
69
69
|
// Salvar
|
|
70
70
|
fs.writeFileSync(saidaSchema, schema, 'utf-8');
|
|
@@ -90,25 +90,25 @@ export async function importarSchemaPrisma(caminhoSchema, pastaSaida, nomeModulo
|
|
|
90
90
|
const nomeContrato = `${nomeModel.toLowerCase()}.sema`;
|
|
91
91
|
const caminhoContrato = path.join(pastaSaida, nomeContrato);
|
|
92
92
|
// Gerar contrato basico
|
|
93
|
-
const conteudo = `module ${nomeModulo}.${nomeModel.toLowerCase()} {
|
|
94
|
-
entity ${nomeModel} {
|
|
95
|
-
fields {
|
|
96
|
-
id: Id
|
|
97
|
-
// TODO: Mapear campos do schema Prisma
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
task criar_${nomeModel.toLowerCase()} {
|
|
102
|
-
input {
|
|
103
|
-
// TODO: Definir inputs
|
|
104
|
-
}
|
|
105
|
-
output {
|
|
106
|
-
${nomeModel.toLowerCase()}: ${nomeModel}
|
|
107
|
-
}
|
|
108
|
-
effects {
|
|
109
|
-
persistencia ${nomeModel}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
93
|
+
const conteudo = `module ${nomeModulo}.${nomeModel.toLowerCase()} {
|
|
94
|
+
entity ${nomeModel} {
|
|
95
|
+
fields {
|
|
96
|
+
id: Id
|
|
97
|
+
// TODO: Mapear campos do schema Prisma
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
task criar_${nomeModel.toLowerCase()} {
|
|
102
|
+
input {
|
|
103
|
+
// TODO: Definir inputs
|
|
104
|
+
}
|
|
105
|
+
output {
|
|
106
|
+
${nomeModel.toLowerCase()}: ${nomeModel}
|
|
107
|
+
}
|
|
108
|
+
effects {
|
|
109
|
+
persistencia ${nomeModel}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
112
|
}`;
|
|
113
113
|
fs.writeFileSync(caminhoContrato, conteudo, 'utf-8');
|
|
114
114
|
contratos.push(caminhoContrato);
|
package/docs/ai-workflow.md
CHANGED
|
@@ -18,7 +18,7 @@ This is the minimum workflow for Codex in a local workspace.
|
|
|
18
18
|
|
|
19
19
|
Contract edit rule: `.sema` has its own size budget. Above 300 lines, plan a split by domain/capability; above 500, do not create or edit before splitting. Do not use parte_1/parte_2 and do not force a 1:1 contract-to-file relationship; several contracts can govern the same file through `vinculos`.
|
|
20
20
|
|
|
21
|
-
Closing rule: the `payload` of `sema drift --cache fresh --json` must return `sucesso:true`. If it reports `sucesso:false`, `vinculos_quebrados`, `rotas_divergentes`, or `impls_quebrados`, the task is still blocked. Passing unit tests or a cache hit do not replace fresh green drift. In 3.0.0, `ok` describes the CLI result path and never replaces a command-specific domain verdict.
|
|
21
|
+
Closing rule: the `payload` of `sema drift --cache fresh --json` must return `sucesso:true`. If it reports `sucesso:false`, `vinculos_quebrados`, `rotas_divergentes`, or `impls_quebrados`, the task is still blocked. Passing unit tests or a cache hit do not replace fresh green drift. `vinculos_fora_do_escopo` is informational: the file exists in the workspace outside the configured `diretoriosCodigo`, and each entry carries a `diretorioSugerido` to add to `sema.config.json`; it does not block closure. In 3.0.0, `ok` describes the CLI result path and never replaces a command-specific domain verdict.
|
|
22
22
|
|
|
23
23
|
Focused drift rule: file and module scopes plan their physical file set before cataloging. They never fall back to a whole-project walk when no safe anchor exists. All indexers and semantic-budget checks reuse the same in-memory source read; a global walk is reserved for explicit `--escopo projeto`. Code discovery is deferred until that plan exists, homonymous candidates fail as ambiguous, and configured contract origins or code roots resolving outside the workspace are rejected before enumeration. `inspecionar`, `impacto`, and `renomear-semantico` preserve the same directed boundary. Missing unambiguous local dependencies make coverage partial and block success. In Python, an unresolved `name` from `from module import name` is not itself a missing file after `module` resolves: it may be an exported symbol, while a real child module is still included whenever its file exists.
|
|
24
24
|
|
package/docs/auth.md
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
# Local Runtime Boundary
|
|
2
|
-
|
|
3
|
-
The public Sema CLI executes directly against the local workspace. It does not
|
|
4
|
-
require a Sema login, user authentication, product authorization, license
|
|
5
|
-
activation, install key, token, credits, billing service, control panel, or an
|
|
6
|
-
external request.
|
|
7
|
-
|
|
8
|
-
Use local commands:
|
|
9
|
-
|
|
10
|
-
```bash
|
|
11
|
-
sema --version
|
|
12
|
-
sema resumo
|
|
13
|
-
sema validar contratos/example.sema --json
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
The repository license governs use and redistribution. It is not checked as a
|
|
17
|
-
runtime activation mechanism.
|
|
18
|
-
|
|
19
|
-
An `authz` block inside a `.sema` contract describes authorization in the
|
|
20
|
-
application being governed. It does not authenticate a person before the Sema
|
|
21
|
-
CLI can run.
|
|
22
|
-
|
|
23
|
-
Do not put private or sensitive operational material in this repository.
|
|
24
|
-
|
|
25
|
-
Application-specific authentication belongs in the application repository that
|
|
26
|
-
owns it.
|
|
1
|
+
# Local Runtime Boundary
|
|
2
|
+
|
|
3
|
+
The public Sema CLI executes directly against the local workspace. It does not
|
|
4
|
+
require a Sema login, user authentication, product authorization, license
|
|
5
|
+
activation, install key, token, credits, billing service, control panel, or an
|
|
6
|
+
external request.
|
|
7
|
+
|
|
8
|
+
Use local commands:
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
sema --version
|
|
12
|
+
sema resumo
|
|
13
|
+
sema validar contratos/example.sema --json
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
The repository license governs use and redistribution. It is not checked as a
|
|
17
|
+
runtime activation mechanism.
|
|
18
|
+
|
|
19
|
+
An `authz` block inside a `.sema` contract describes authorization in the
|
|
20
|
+
application being governed. It does not authenticate a person before the Sema
|
|
21
|
+
CLI can run.
|
|
22
|
+
|
|
23
|
+
Do not put private or sensitive operational material in this repository.
|
|
24
|
+
|
|
25
|
+
Application-specific authentication belongs in the application repository that
|
|
26
|
+
owns it.
|
package/docs/commands.md
CHANGED
|
@@ -31,7 +31,7 @@ Then read every required doc returned by `docs-impacto`.
|
|
|
31
31
|
|
|
32
32
|
## Contract and Discovery
|
|
33
33
|
|
|
34
|
-
- `sema iniciar --template <base|nestjs|fastapi|nextjs-api|nextjs-consumer|react-vite-consumer|angular-consumer|flutter-consumer|node-firebase-worker|aspnet-api|springboot-api|go-http-api|rust-axum-api|cpp-service-bridge> [--force]`: creates a new Sema project and preserves existing files by default; `--force` is the only explicit overwrite path.
|
|
34
|
+
- `sema iniciar --template <base|nestjs|fastapi|nextjs-api|nextjs-consumer|react-vite-consumer|angular-consumer|flutter-consumer|node-firebase-worker|aspnet-api|springboot-api|go-http-api|rust-axum-api|cpp-service-bridge> [--force]`: creates a new Sema project and preserves existing files by default; `--force` is the only explicit overwrite path. Inside a subfolder of an already governed workspace, the subfolder is registered under `diretoriosCodigo` of the ancestral `sema.config.json` (safe write, deduplicated) instead of creating a local config; if the parent config cannot be written, the scaffold proceeds and prints the exact line to add.
|
|
35
35
|
- `sema validar <arquivo-ou-pasta> --json`: validates `.sema` contracts.
|
|
36
36
|
- `sema diagnosticos <arquivo.sema> --json`: details errors and warnings.
|
|
37
37
|
- `sema formatar <arquivo-ou-pasta>`: formats contracts.
|
|
@@ -51,7 +51,7 @@ Then read every required doc returned by `docs-impacto`.
|
|
|
51
51
|
- `sema verificar <arquivo-ou-pasta> --json`: runs aggregated final verification.
|
|
52
52
|
- `sema finalizar-mudanca --intencao "<acao>" --doc-lida <arquivo> --json`: proves documentation reading before closure.
|
|
53
53
|
|
|
54
|
-
Honest closure: unwrap drift JSON and treat its command payload as the source of truth. `payload.sucesso:false`, non-empty `payload.vinculos_quebrados`, non-empty `payload.rotas_divergentes`, or non-empty `payload.impls_quebrados` mean the change is not complete yet. Do not report "clean drift" without a green payload.
|
|
54
|
+
Honest closure: unwrap drift JSON and treat its command payload as the source of truth. `payload.sucesso:false`, non-empty `payload.vinculos_quebrados`, non-empty `payload.rotas_divergentes`, or non-empty `payload.impls_quebrados` mean the change is not complete yet. Do not report "clean drift" without a green payload. `payload.vinculos_fora_do_escopo` is informational: the file exists in the workspace outside `diretoriosCodigo`, and each entry carries a `diretorioSugerido` for `sema.config.json`.
|
|
55
55
|
|
|
56
56
|
Focused drift exposes its planned, declared, inferred, and missing files plus catalog visit/read metrics in `escopo_aplicado`. A missing declared file or a missing unambiguous code-referenced dependency is a blocker reported as `vinculo_quebrado`; a missing inferred candidate derived from an `impl` symbol is informational under `arquivosAusentesInferidos` and never blocks an implementation that resolved. For Python `from module import name`, Sema still includes `name` when it resolves as a real submodule, but never reports the absent submodule candidate as a broken link after the parent module resolved because `name` may be a function, class, or variable. File and module scopes fail closed without a safe anchor, with homonymous implementation candidates, or with missing local dependencies; only `--escopo projeto` may walk every configured code root. Logical roots such as `src` are probed deterministically without a discovery walk. Configured contract origins and code roots are confined before enumeration, and `inspecionar`, `impacto`, and `renomear-semantico` reuse the same directed boundary without reopening arbitrary external paths.
|
|
57
57
|
|
|
@@ -156,7 +156,7 @@ Spatial model and render mode are orthogonal: `THREE_D + HEADLESS` is valid, whi
|
|
|
156
156
|
- Do not stop after `sema compilar` if the contract target files still do not exist.
|
|
157
157
|
- Do not replace `sema compilar` with `sema testar` when the contract requires generated code.
|
|
158
158
|
- Do not create a Markdown report to pretend a gate ran.
|
|
159
|
-
- Do not say drift passed when the unwrapped `sema drift --cache fresh --json` payload returned `sucesso:false`, a non-empty `vinculos_quebrados`, `rotas_divergentes`, or `impls_quebrados` list.
|
|
159
|
+
- Do not say drift passed when the unwrapped `sema drift --cache fresh --json` payload returned `sucesso:false`, a non-empty `vinculos_quebrados`, `rotas_divergentes`, or `impls_quebrados` list. `vinculos_fora_do_escopo` entries are informational scope hints, not broken links.
|
|
160
160
|
- Do not declare a UI responsive without mobile/desktop proof; horizontal scroll at 390px blocks closure.
|
|
161
161
|
|
|
162
162
|
Governed code policy: keep the `SEMA-GOVERNED` marker, split large code by real responsibility, preserve contract links, and never treat a generated output directory as the final delivery.
|
package/docs/database.md
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
# Database Boundary
|
|
2
|
-
|
|
3
|
-
The public Sema CLI does not require a database.
|
|
4
|
-
|
|
5
|
-
Sema reads contracts and source files from the local workspace. Any database used
|
|
6
|
-
by an application governed by Sema belongs to that application, not to the public
|
|
7
|
-
Sema CLI distribution.
|
|
8
|
-
|
|
9
|
-
## Public Rule
|
|
10
|
-
|
|
11
|
-
Do not ship private database material, real credentials, operational schemas, or
|
|
12
|
-
project-specific data in the public Sema package.
|
|
13
|
-
|
|
14
|
-
Application-specific database docs should live in the application repository
|
|
15
|
-
that owns the database.
|
|
1
|
+
# Database Boundary
|
|
2
|
+
|
|
3
|
+
The public Sema CLI does not require a database.
|
|
4
|
+
|
|
5
|
+
Sema reads contracts and source files from the local workspace. Any database used
|
|
6
|
+
by an application governed by Sema belongs to that application, not to the public
|
|
7
|
+
Sema CLI distribution.
|
|
8
|
+
|
|
9
|
+
## Public Rule
|
|
10
|
+
|
|
11
|
+
Do not ship private database material, real credentials, operational schemas, or
|
|
12
|
+
project-specific data in the public Sema package.
|
|
13
|
+
|
|
14
|
+
Application-specific database docs should live in the application repository
|
|
15
|
+
that owns the database.
|
package/docs/env.md
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
# Environment
|
|
2
|
-
|
|
3
|
-
The public Sema CLI works without private service credentials. No environment
|
|
4
|
-
variable unlocks local execution: there is no login, activation, product
|
|
5
|
-
authorization, license-key, billing, credit, token, or panel gate.
|
|
6
|
-
|
|
7
|
-
Allowed public examples may use placeholders:
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
EXAMPLE_API_KEY=replace-me
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
Do not publish private or sensitive operational material in public Sema docs.
|
|
14
|
-
|
|
15
|
-
If an application governed by Sema needs environment variables, document them in
|
|
16
|
-
that application repository.
|
|
1
|
+
# Environment
|
|
2
|
+
|
|
3
|
+
The public Sema CLI works without private service credentials. No environment
|
|
4
|
+
variable unlocks local execution: there is no login, activation, product
|
|
5
|
+
authorization, license-key, billing, credit, token, or panel gate.
|
|
6
|
+
|
|
7
|
+
Allowed public examples may use placeholders:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
EXAMPLE_API_KEY=replace-me
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Do not publish private or sensitive operational material in public Sema docs.
|
|
14
|
+
|
|
15
|
+
If an application governed by Sema needs environment variables, document them in
|
|
16
|
+
that application repository.
|
package/docs/frontend.md
CHANGED
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
# User Experience Quality
|
|
2
|
-
|
|
3
|
-
When Sema governs a UI, dashboard, app, site, game, or terminal tool, the
|
|
4
|
-
experience must be modern, contextual, and verified. This is a quality gate, not
|
|
5
|
-
decoration.
|
|
6
|
-
|
|
7
|
-
## Before Building
|
|
8
|
-
|
|
9
|
-
Define:
|
|
10
|
-
|
|
11
|
-
- audience and domain
|
|
12
|
-
- primary workflow
|
|
13
|
-
- density and information hierarchy
|
|
14
|
-
- interaction states
|
|
15
|
-
- responsive behavior
|
|
16
|
-
- accessibility basics
|
|
17
|
-
- evidence needed before closing
|
|
18
|
-
|
|
19
|
-
## Browser Evidence
|
|
20
|
-
|
|
21
|
-
For web UI, check desktop and mobile. On a narrow viewport such as 390px, this
|
|
22
|
-
must be true:
|
|
23
|
-
|
|
24
|
-
```js
|
|
25
|
-
document.documentElement.scrollWidth <= document.documentElement.clientWidth
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
Fix overlapping text, broken wrapping, hidden controls, and incoherent layout
|
|
29
|
-
before closing the change.
|
|
30
|
-
|
|
31
|
-
## Terminal Evidence
|
|
32
|
-
|
|
33
|
-
For CLI/TUI work, smoke-check:
|
|
34
|
-
|
|
35
|
-
- `--help`
|
|
36
|
-
- success output
|
|
37
|
-
- error output
|
|
38
|
-
- JSON output when supported
|
|
39
|
-
|
|
40
|
-
The public Sema CLI itself must stay local-only and must not depend on private
|
|
41
|
-
or sensitive operational material for these checks.
|
|
1
|
+
# User Experience Quality
|
|
2
|
+
|
|
3
|
+
When Sema governs a UI, dashboard, app, site, game, or terminal tool, the
|
|
4
|
+
experience must be modern, contextual, and verified. This is a quality gate, not
|
|
5
|
+
decoration.
|
|
6
|
+
|
|
7
|
+
## Before Building
|
|
8
|
+
|
|
9
|
+
Define:
|
|
10
|
+
|
|
11
|
+
- audience and domain
|
|
12
|
+
- primary workflow
|
|
13
|
+
- density and information hierarchy
|
|
14
|
+
- interaction states
|
|
15
|
+
- responsive behavior
|
|
16
|
+
- accessibility basics
|
|
17
|
+
- evidence needed before closing
|
|
18
|
+
|
|
19
|
+
## Browser Evidence
|
|
20
|
+
|
|
21
|
+
For web UI, check desktop and mobile. On a narrow viewport such as 390px, this
|
|
22
|
+
must be true:
|
|
23
|
+
|
|
24
|
+
```js
|
|
25
|
+
document.documentElement.scrollWidth <= document.documentElement.clientWidth
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Fix overlapping text, broken wrapping, hidden controls, and incoherent layout
|
|
29
|
+
before closing the change.
|
|
30
|
+
|
|
31
|
+
## Terminal Evidence
|
|
32
|
+
|
|
33
|
+
For CLI/TUI work, smoke-check:
|
|
34
|
+
|
|
35
|
+
- `--help`
|
|
36
|
+
- success output
|
|
37
|
+
- error output
|
|
38
|
+
- JSON output when supported
|
|
39
|
+
|
|
40
|
+
The public Sema CLI itself must stay local-only and must not depend on private
|
|
41
|
+
or sensitive operational material for these checks.
|
package/docs/i18n.md
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
# Language And Identifiers
|
|
2
|
-
|
|
3
|
-
Public Sema documentation is English.
|
|
4
|
-
|
|
5
|
-
Do not translate commands, file paths, package names, endpoint paths, environment
|
|
6
|
-
variable names, code symbols, DSL keywords, or brand names.
|
|
7
|
-
|
|
8
|
-
Examples:
|
|
9
|
-
|
|
10
|
-
- Keep `sema validar`, not an English paraphrase.
|
|
11
|
-
- Keep `.sema`, `task`, `input`, `output`, `rules`, `effects`, and `guarantees`.
|
|
12
|
-
- Keep package names such as `@semacode/cli`.
|
|
13
|
-
|
|
14
|
-
Human-facing prose should be clear English. Contract DSL can keep its own
|
|
15
|
-
keywords and domain identifiers.
|
|
1
|
+
# Language And Identifiers
|
|
2
|
+
|
|
3
|
+
Public Sema documentation is English.
|
|
4
|
+
|
|
5
|
+
Do not translate commands, file paths, package names, endpoint paths, environment
|
|
6
|
+
variable names, code symbols, DSL keywords, or brand names.
|
|
7
|
+
|
|
8
|
+
Examples:
|
|
9
|
+
|
|
10
|
+
- Keep `sema validar`, not an English paraphrase.
|
|
11
|
+
- Keep `.sema`, `task`, `input`, `output`, `rules`, `effects`, and `guarantees`.
|
|
12
|
+
- Keep package names such as `@semacode/cli`.
|
|
13
|
+
|
|
14
|
+
Human-facing prose should be clear English. Contract DSL can keep its own
|
|
15
|
+
keywords and domain identifiers.
|
package/exemplos/assinatura.sema
CHANGED
package/exemplos/auditoria.sema
CHANGED
package/exemplos/automacao.sema
CHANGED
package/exemplos/estoque.sema
CHANGED
package/exemplos/exportacao.sema
CHANGED
package/exemplos/fila.sema
CHANGED