@semacode/cli 3.8.1 → 3.8.2

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.
@@ -1,108 +1,108 @@
1
- # Drift Cache And Query Evidence
2
-
3
- Sema exposes three drift modes, but the `none` mode intentionally means
4
- different things for direct drift execution and for query commands. The
5
- defaults preserve honest, low-cost queries while keeping an explicit drift run
6
- fresh by default.
7
-
8
- | Mode | `sema drift --cache <mode>` | `sema resumo --drift <mode>` / `sema inspecionar --drift <mode>` |
9
- | --- | --- | --- |
10
- | `none` | Runs drift without reading or writing persistent cache. | Skips drift analysis. This is the query default. |
11
- | `cache` | Reuses a valid cache entry; otherwise recalculates and publishes a new entry. | Runs drift with the same reuse-or-recalculate behavior. |
12
- | `fresh` | Does not reuse a prior hit, recalculates, and publishes a fresh entry. This is the direct drift default. | Runs drift from fresh inputs without reusing prior extraction data, then publishes the resulting entry. |
13
-
14
- Use `--cache none` when a direct analysis must leave no persistent cache access.
15
- Use `--drift none` when a summary or inspection should not perform drift at all.
16
- The two forms are not interchangeable.
17
-
18
- ## Honest Query Evidence
19
-
20
- `sema resumo` and `sema inspecionar` default to `--drift none`. Their JSON
21
- payload includes an `analiseDrift` envelope that makes the omitted evaluation
22
- explicit:
23
-
24
- ```json
25
- {
26
- "analiseDrift": {
27
- "modo": "none",
28
- "executada": false,
29
- "sucesso": null,
30
- "cache": null
31
- },
32
- "scoreDrift": null,
33
- "confiancaGeral": null
34
- }
35
- ```
36
-
37
- The surrounding payload varies by command. A human-readable `aviso` or
38
- `avisos` entry explains why drift was not evaluated. Drift-derived framework,
39
- route, surface, bridge, and module implementation evidence is also `null` when
40
- applicable. In this context, `null` means **not evaluated**; it must never be
41
- interpreted as zero, empty, passing, or absent drift.
42
-
43
- Request `--drift cache` or `--drift fresh` when a query needs evaluated drift
44
- evidence. In that case, `payload.analiseDrift.sucesso` is `true` or `false`, and a
45
- failed requested analysis makes the command exit nonzero instead of hiding the
46
- failure behind a successful query response.
47
-
48
- ## External Cache Location
49
-
50
- Persistent drift cache is stored outside the governed workspace:
51
-
52
- | Platform | Cache root |
53
- | --- | --- |
54
- | Windows | `%LOCALAPPDATA%\Sema\Cache`, falling back to `%USERPROFILE%\AppData\Local\Sema\Cache` |
55
- | macOS | `~/Library/Caches/Sema` |
56
- | Linux and other Unix systems | `$XDG_CACHE_HOME/sema`, falling back to `~/.cache/sema` |
57
-
58
- Drift entries live below `drift/v3/workspaces/<opaque-id>/objects/` inside that
59
- root. Public output represents such paths as `$SEMA_CACHE/drift/v3/...`.
60
- `$SEMA_CACHE` is a safe display placeholder, not a promise that an environment
61
- variable with that name exists, and Sema does not expose the real user cache
62
- path.
63
-
64
- Sema never writes persistent drift cache inside the repository, `.sema`,
65
- `.tmp`, generated project folders, or any other workspace location.
66
-
67
- ## Authority And Recovery
68
-
69
- The cache is an acceleration layer, not governance evidence and not a source of
70
- truth. Contracts, source files, the active analysis plan, and the validated
71
- result remain authoritative.
72
-
73
- - A corrupt or incompatible entry is treated as a recoverable miss: Sema
74
- recalculates instead of trusting it.
75
- - If external cache storage is unavailable, analysis continues by
76
- recalculating; cache persistence does not become a governance blocker.
77
- - `cache` may reuse only a valid entry for the current workspace and inputs.
78
- - `fresh` never reuses cached extraction data before analysis. Publication may
79
- read and validate an existing content-addressed winner to preserve CAS
80
- integrity without changing the freshly calculated result.
81
- - Direct `none` performs no persistent cache reads or writes.
82
-
83
- These rules keep cache failures from hiding drift and keep the governed
84
- workspace free of machine-local state.
85
-
86
- ## Semantic Integrity And Trust Limit
87
-
88
- The reusable payload stores canonical per-extractor indices. It does not store
89
- `todosSimbolos`, route aggregates, resource aggregates, or known-file
90
- aggregates as independent sources. Sema derives those values again after a
91
- cache entry is restored, so a redundant aggregate cannot silently override its
92
- source indices.
93
-
94
- Before accepting a hit, Sema checks exact field allowlists, relative catalog
95
- paths, extractor-specific file extensions and symbol origins, consumer-surface
96
- to route relationships, and derived integrity digests across symbols, routes,
97
- resources, surfaces, and persistence details. Detectable structural or
98
- semantic inconsistency becomes a corrupt miss, followed by a fresh in-memory
99
- calculation and repair. A valid hit is therefore limited to a compatible
100
- payload produced for the same CLI, schema, extractor, workspace identity, Git
101
- HEAD, plan, configuration, contracts, and content-digested members.
102
-
103
- These SHA-256 digests detect corruption and incoherent rewriting; they do not
104
- authenticate a hostile process running as the same operating-system user. Such
105
- a process can read the implementation and rewrite both data and checksums. The
106
- external cache is not a security boundary, a signature, or final evidence.
107
- Use `--cache fresh` for closure and retain stronger evidence outside the local
108
- user cache when the threat model includes local-user compromise.
1
+ # Drift Cache And Query Evidence
2
+
3
+ Sema exposes three drift modes, but the `none` mode intentionally means
4
+ different things for direct drift execution and for query commands. The
5
+ defaults preserve honest, low-cost queries while keeping an explicit drift run
6
+ fresh by default.
7
+
8
+ | Mode | `sema drift --cache <mode>` | `sema resumo --drift <mode>` / `sema inspecionar --drift <mode>` |
9
+ | --- | --- | --- |
10
+ | `none` | Runs drift without reading or writing persistent cache. | Skips drift analysis. This is the query default. |
11
+ | `cache` | Reuses a valid cache entry; otherwise recalculates and publishes a new entry. | Runs drift with the same reuse-or-recalculate behavior. |
12
+ | `fresh` | Does not reuse a prior hit, recalculates, and publishes a fresh entry. This is the direct drift default. | Runs drift from fresh inputs without reusing prior extraction data, then publishes the resulting entry. |
13
+
14
+ Use `--cache none` when a direct analysis must leave no persistent cache access.
15
+ Use `--drift none` when a summary or inspection should not perform drift at all.
16
+ The two forms are not interchangeable.
17
+
18
+ ## Honest Query Evidence
19
+
20
+ `sema resumo` and `sema inspecionar` default to `--drift none`. Their JSON
21
+ payload includes an `analiseDrift` envelope that makes the omitted evaluation
22
+ explicit:
23
+
24
+ ```json
25
+ {
26
+ "analiseDrift": {
27
+ "modo": "none",
28
+ "executada": false,
29
+ "sucesso": null,
30
+ "cache": null
31
+ },
32
+ "scoreDrift": null,
33
+ "confiancaGeral": null
34
+ }
35
+ ```
36
+
37
+ The surrounding payload varies by command. A human-readable `aviso` or
38
+ `avisos` entry explains why drift was not evaluated. Drift-derived framework,
39
+ route, surface, bridge, and module implementation evidence is also `null` when
40
+ applicable. In this context, `null` means **not evaluated**; it must never be
41
+ interpreted as zero, empty, passing, or absent drift.
42
+
43
+ Request `--drift cache` or `--drift fresh` when a query needs evaluated drift
44
+ evidence. In that case, `payload.analiseDrift.sucesso` is `true` or `false`, and a
45
+ failed requested analysis makes the command exit nonzero instead of hiding the
46
+ failure behind a successful query response.
47
+
48
+ ## External Cache Location
49
+
50
+ Persistent drift cache is stored outside the governed workspace:
51
+
52
+ | Platform | Cache root |
53
+ | --- | --- |
54
+ | Windows | `%LOCALAPPDATA%\Sema\Cache`, falling back to `%USERPROFILE%\AppData\Local\Sema\Cache` |
55
+ | macOS | `~/Library/Caches/Sema` |
56
+ | Linux and other Unix systems | `$XDG_CACHE_HOME/sema`, falling back to `~/.cache/sema` |
57
+
58
+ Drift entries live below `drift/v3/workspaces/<opaque-id>/objects/` inside that
59
+ root. Public output represents such paths as `$SEMA_CACHE/drift/v3/...`.
60
+ `$SEMA_CACHE` is a safe display placeholder, not a promise that an environment
61
+ variable with that name exists, and Sema does not expose the real user cache
62
+ path.
63
+
64
+ Sema never writes persistent drift cache inside the repository, `.sema`,
65
+ `.tmp`, generated project folders, or any other workspace location.
66
+
67
+ ## Authority And Recovery
68
+
69
+ The cache is an acceleration layer, not governance evidence and not a source of
70
+ truth. Contracts, source files, the active analysis plan, and the validated
71
+ result remain authoritative.
72
+
73
+ - A corrupt or incompatible entry is treated as a recoverable miss: Sema
74
+ recalculates instead of trusting it.
75
+ - If external cache storage is unavailable, analysis continues by
76
+ recalculating; cache persistence does not become a governance blocker.
77
+ - `cache` may reuse only a valid entry for the current workspace and inputs.
78
+ - `fresh` never reuses cached extraction data before analysis. Publication may
79
+ read and validate an existing content-addressed winner to preserve CAS
80
+ integrity without changing the freshly calculated result.
81
+ - Direct `none` performs no persistent cache reads or writes.
82
+
83
+ These rules keep cache failures from hiding drift and keep the governed
84
+ workspace free of machine-local state.
85
+
86
+ ## Semantic Integrity And Trust Limit
87
+
88
+ The reusable payload stores canonical per-extractor indices. It does not store
89
+ `todosSimbolos`, route aggregates, resource aggregates, or known-file
90
+ aggregates as independent sources. Sema derives those values again after a
91
+ cache entry is restored, so a redundant aggregate cannot silently override its
92
+ source indices.
93
+
94
+ Before accepting a hit, Sema checks exact field allowlists, relative catalog
95
+ paths, extractor-specific file extensions and symbol origins, consumer-surface
96
+ to route relationships, and derived integrity digests across symbols, routes,
97
+ resources, surfaces, and persistence details. Detectable structural or
98
+ semantic inconsistency becomes a corrupt miss, followed by a fresh in-memory
99
+ calculation and repair. A valid hit is therefore limited to a compatible
100
+ payload produced for the same CLI, schema, extractor, workspace identity, Git
101
+ HEAD, plan, configuration, contracts, and content-digested members.
102
+
103
+ These SHA-256 digests detect corruption and incoherent rewriting; they do not
104
+ authenticate a hostile process running as the same operating-system user. Such
105
+ a process can read the implementation and rewrite both data and checksums. The
106
+ external cache is not a security boundary, a signature, or final evidence.
107
+ Use `--cache fresh` for closure and retain stronger evidence outside the local
108
+ user cache when the threat model includes local-user compromise.
@@ -1,82 +1,82 @@
1
- # Installation And First Use
2
-
3
- Sema is installed and used as a local CLI.
4
-
5
- ```bash
6
- npm install -g @semacode/cli
7
- sema skill status --json
8
- ```
9
-
10
- The global package creates an absolute launcher under `~/.sema/bin`, installs
11
- the bundled skill in `~/.agents/skills/sema`, and mirrors it to
12
- `~/.claude/skills/sema` only when Claude is already present. Open a new task so
13
- the updated skill catalog is loaded. Installing or updating the global CLI does
14
- not authorize Sema adoption in the current workspace: informational requests
15
- stay read-only, and implementation requires explicit adoption authorization.
16
- After an authorized bootstrap, `AGENTS.md` becomes the automatic protocol for
17
- subsequent tasks.
18
-
19
- Then verify the local engine:
20
-
21
- ```bash
22
- sema --version
23
- sema resumo --drift none
24
- ```
25
-
26
- The CLI is ready when `sema --version` succeeds. No Sema login, user
27
- authorization, activation key, product-license check, token, credits, billing
28
- service, or control panel is involved.
29
-
30
- The skill handles first contact with a project that does not yet have Sema. It
31
- only bootstraps the local CLI and generates the repository's `AGENTS.md`; that
32
- file becomes the automatic workspace protocol afterward. The npm lifecycle does
33
- not install plugins or touch plugin caches.
34
-
35
- If the install used `--ignore-scripts`, run `sema skill sync --json`. If the
36
- shell cannot resolve the npm shim, use `~/.sema/bin/sema` on macOS or Linux. On
37
- Windows, PowerShell resolves `sema.ps1` from `PATH`, `cmd.exe` resolves
38
- `sema.cmd`, and the robust PowerShell fallback is:
39
-
40
- ```powershell
41
- & "$env:SystemRoot\System32\WindowsPowerShell\v1.0\powershell.exe" -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Bypass -File "$HOME\.sema\bin\sema-managed.ps1" --version
42
- ```
43
-
44
- The managed fallback contains absolute Node.js and CLI paths and does not
45
- depend on `PATH`.
46
-
47
- ## First Project
48
-
49
- ```bash
50
- sema descobrir explicar flow.project-adoption --json
51
- sema iniciar --template base
52
- sema sync-codex --json
53
- sema validar contratos/*.sema --json
54
- sema resumo --drift none
55
- ```
56
-
57
- Run this sequence only after explicit project-adoption authorization. The
58
- `sema iniciar` command preserves existing project files and refuses symlink or
59
- junction escapes. The bootstrap skill never uses `--force`; explicit overwrite
60
- remains a human decision.
61
-
62
- ## Existing Project
63
-
64
- ```bash
65
- sema resumo --drift none
66
- sema docs-impacto --intencao "describe the change" --json
67
- sema inspecionar contratos/example.sema --drift none --json
68
- sema drift contratos/example.sema --escopo modulo --cache fresh --json
69
- sema impacto contratos/example.sema --alvo sema.example.target --mudanca "describe the change" --json
70
- ```
71
-
72
- `sema resumo` and `sema inspecionar` default to `--drift none`: they skip drift
73
- analysis and report drift-derived evidence as `null`, meaning not evaluated.
74
- Direct `sema drift` defaults to `--cache fresh`; its `--cache none` mode still
75
- runs the analysis, but without reading or writing persistent cache. See
76
- [Drift Cache And Query Evidence](./drift-cache.md) for the complete mode table,
77
- external cache locations, and recovery behavior.
78
-
79
- The public CLI does not require private service credentials or an external
80
- request before local commands run.
81
-
82
- Support: suporte@otimitare.online
1
+ # Installation And First Use
2
+
3
+ Sema is installed and used as a local CLI.
4
+
5
+ ```bash
6
+ npm install -g @semacode/cli
7
+ sema skill status --json
8
+ ```
9
+
10
+ The global package creates an absolute launcher under `~/.sema/bin`, installs
11
+ the bundled skill in `~/.agents/skills/sema`, and mirrors it to
12
+ `~/.claude/skills/sema` only when Claude is already present. Open a new task so
13
+ the updated skill catalog is loaded. Installing or updating the global CLI does
14
+ not authorize Sema adoption in the current workspace: informational requests
15
+ stay read-only, and implementation requires explicit adoption authorization.
16
+ After an authorized bootstrap, `AGENTS.md` becomes the automatic protocol for
17
+ subsequent tasks.
18
+
19
+ Then verify the local engine:
20
+
21
+ ```bash
22
+ sema --version
23
+ sema resumo --drift none
24
+ ```
25
+
26
+ The CLI is ready when `sema --version` succeeds. No Sema login, user
27
+ authorization, activation key, product-license check, token, credits, billing
28
+ service, or control panel is involved.
29
+
30
+ The skill handles first contact with a project that does not yet have Sema. It
31
+ only bootstraps the local CLI and generates the repository's `AGENTS.md`; that
32
+ file becomes the automatic workspace protocol afterward. The npm lifecycle does
33
+ not install plugins or touch plugin caches.
34
+
35
+ If the install used `--ignore-scripts`, run `sema skill sync --json`. If the
36
+ shell cannot resolve the npm shim, use `~/.sema/bin/sema` on macOS or Linux. On
37
+ Windows, PowerShell resolves `sema.ps1` from `PATH`, `cmd.exe` resolves
38
+ `sema.cmd`, and the robust PowerShell fallback is:
39
+
40
+ ```powershell
41
+ & "$env:SystemRoot\System32\WindowsPowerShell\v1.0\powershell.exe" -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Bypass -File "$HOME\.sema\bin\sema-managed.ps1" --version
42
+ ```
43
+
44
+ The managed fallback contains absolute Node.js and CLI paths and does not
45
+ depend on `PATH`.
46
+
47
+ ## First Project
48
+
49
+ ```bash
50
+ sema descobrir explicar flow.project-adoption --json
51
+ sema iniciar --template base
52
+ sema sync-codex --json
53
+ sema validar contratos/*.sema --json
54
+ sema resumo --drift none
55
+ ```
56
+
57
+ Run this sequence only after explicit project-adoption authorization. The
58
+ `sema iniciar` command preserves existing project files and refuses symlink or
59
+ junction escapes. The bootstrap skill never uses `--force`; explicit overwrite
60
+ remains a human decision.
61
+
62
+ ## Existing Project
63
+
64
+ ```bash
65
+ sema resumo --drift none
66
+ sema docs-impacto --intencao "describe the change" --json
67
+ sema inspecionar contratos/example.sema --drift none --json
68
+ sema drift contratos/example.sema --escopo modulo --cache fresh --json
69
+ sema impacto contratos/example.sema --alvo sema.example.target --mudanca "describe the change" --json
70
+ ```
71
+
72
+ `sema resumo` and `sema inspecionar` default to `--drift none`: they skip drift
73
+ analysis and report drift-derived evidence as `null`, meaning not evaluated.
74
+ Direct `sema drift` defaults to `--cache fresh`; its `--cache none` mode still
75
+ runs the analysis, but without reading or writing persistent cache. See
76
+ [Drift Cache And Query Evidence](./drift-cache.md) for the complete mode table,
77
+ external cache locations, and recovery behavior.
78
+
79
+ The public CLI does not require private service credentials or an external
80
+ request before local commands run.
81
+
82
+ Support: suporte@otimitare.com
@@ -1,60 +1,60 @@
1
- # Repository Boundary
2
-
3
- The public Sema repository should contain only the Codex-native local CLI, the
4
- first-contact Codex skill, runtime packages, examples, tests that run locally,
5
- and English documentation.
6
-
7
- ## Public
8
-
9
- - local CLI source
10
- - contract parser and validators
11
- - local drift and impact tooling
12
- - local code generators
13
- - examples
14
- - English docs
15
- - local package scripts
16
- - `AGENTS.md` as the official Codex entrypoint
17
- - the official Sema skill as a thin bootstrap before `AGENTS.md` exists
18
- - the managed absolute launcher and portable global skill bundled in npm
19
- - the optional repo marketplace that exposes the same skill namespaced
20
-
21
- ## Not Public
22
-
23
- - private or sensitive operational material
24
- - real credentials, environment files, or secret inventories
25
- - private project data or generated private artifacts
26
- - runtime authorization, activation, billing, credit, token, or panel gates
27
- - product-specific repository entrypoint files for AI clients other than Codex
28
- - MCP servers, remote workspace bridges, or duplicated governance inside the
29
- bootstrap skill
30
-
31
- The portable skill may be synchronized to the canonical user-level
32
- `.agents/skills` directory and a detected Claude mirror. That does not change
33
- the workspace boundary: Sema still generates only `AGENTS.md` as the official
34
- repository protocol and never writes into plugin caches.
35
-
36
- The repository has one npm package factory: `npm run cli:empacotar-publica`.
37
- It assembles a private stage per execution and never materializes examples,
38
- runtime dependencies, or skills inside `pacotes/cli`. Direct workspace packing
39
- is intentionally blocked so a second, mutable packaging path cannot drift from
40
- the public artifact.
41
-
42
- The Windows distribution uses `sema.ps1` for PowerShell `PATH` resolution,
43
- `sema.cmd` for `cmd.exe`, and `sema-managed.ps1` for the PATH-independent
44
- fallback invoked through the absolute system `powershell.exe`; all remain
45
- inside the managed `~/.sema/bin` boundary.
46
-
47
- The CLI must run directly against the local workspace without login, user
48
- authorization, a product-license check, activation key, credits, token, billing
49
- service, or control panel.
50
-
51
- Sema is an independent product and is not affiliated with or endorsed by
52
- OpenAI. Codex-native is Sema's official product direction, not an official
53
- OpenAI program or submission.
54
-
55
- ## Commercial Use
56
-
57
- The public Sema source may not be copied, rebranded, bundled, or replicated for
58
- commercial resale without written permission from OtimiTare.
59
-
60
- Support: suporte@otimitare.online
1
+ # Repository Boundary
2
+
3
+ The public Sema repository should contain only the local-first multi-agent CLI, the
4
+ first-contact Codex skill, runtime packages, examples, tests that run locally,
5
+ and English documentation.
6
+
7
+ ## Public
8
+
9
+ - local CLI source
10
+ - contract parser and validators
11
+ - local drift and impact tooling
12
+ - local code generators
13
+ - examples
14
+ - English docs
15
+ - local package scripts
16
+ - `AGENTS.md` as the official Codex entrypoint
17
+ - the official Sema skill as a thin bootstrap before `AGENTS.md` exists
18
+ - the managed absolute launcher and portable global skill bundled in npm
19
+ - the optional repo marketplace that exposes the same skill namespaced
20
+
21
+ ## Not Public
22
+
23
+ - private or sensitive operational material
24
+ - real credentials, environment files, or secret inventories
25
+ - private project data or generated private artifacts
26
+ - runtime authorization, activation, billing, credit, token, or panel gates
27
+ - product-specific repository entrypoint files for AI clients other than Codex
28
+ - MCP servers, remote workspace bridges, or duplicated governance inside the
29
+ bootstrap skill
30
+
31
+ The portable skill may be synchronized to the canonical user-level
32
+ `.agents/skills` directory and a detected Claude mirror. That does not change
33
+ the workspace boundary: Sema still generates only `AGENTS.md` as the official
34
+ repository protocol and never writes into plugin caches.
35
+
36
+ The repository has one npm package factory: `npm run cli:empacotar-publica`.
37
+ It assembles a private stage per execution and never materializes examples,
38
+ runtime dependencies, or skills inside `pacotes/cli`. Direct workspace packing
39
+ is intentionally blocked so a second, mutable packaging path cannot drift from
40
+ the public artifact.
41
+
42
+ The Windows distribution uses `sema.ps1` for PowerShell `PATH` resolution,
43
+ `sema.cmd` for `cmd.exe`, and `sema-managed.ps1` for the PATH-independent
44
+ fallback invoked through the absolute system `powershell.exe`; all remain
45
+ inside the managed `~/.sema/bin` boundary.
46
+
47
+ The CLI must run directly against the local workspace without login, user
48
+ authorization, a product-license check, activation key, credits, token, billing
49
+ service, or control panel.
50
+
51
+ Sema is an independent product and is not affiliated with or endorsed by
52
+ OpenAI. Proven compatibility with Claude, Codex, zCode (GLM) and Kimi is Sema's product direction, not an official
53
+ OpenAI program or submission.
54
+
55
+ ## Commercial Use
56
+
57
+ The public Sema source may not be copied, rebranded, bundled, or replicated for
58
+ commercial resale without written permission from OtimiTare.
59
+
60
+ Support: suporte@otimitare.com
package/docs/rollback.md CHANGED
@@ -1,38 +1,38 @@
1
- # Rollback Boundary
2
-
3
- Public rollback covers the npm CLI, managed launcher, bundled global skill, and
4
- the optional Codex plugin channel.
5
-
6
- For a failed pre-publication candidate:
7
-
8
- 1. Keep the previous tarball until the new one passes smoke tests.
9
- 2. Revert the plugin source, marketplace manifest, CLI source, and versions to
10
- the last known-good commit.
11
- 3. Re-run `npm run release:preparar-publica`.
12
-
13
- If a bad commit was already pushed, revert it with a normal Git revert and push
14
- the corrective commit. Install the corrected npm version and resynchronize its
15
- managed distribution:
16
-
17
- ```bash
18
- npm install -g @semacode/cli@<corrected-version>
19
- sema skill sync --json
20
- ```
21
-
22
- The same sequence may install an explicitly selected previous version. The
23
- installed npm version is authoritative: `sema skill sync --json` aligns the
24
- runtime, managed launcher, and bundled skill to the version that is actually
25
- installed. This is synchronization, not a promise to block an intentional
26
- downgrade.
27
-
28
- If the optional plugin channel was also affected, upgrade or reinstall it after
29
- the corrected commit is public. Open a new task before validating the repaired
30
- skill; already-open tasks keep the catalog they started with.
31
-
32
- If a bad npm version was published, do not overwrite it. Publish a corrected
33
- version and direct users to that version. Verify the final registry/GitHub state
34
- with `npm run release:verificar-distribuicao`. Do not create a GitHub Release or
35
- asset as a rollback shortcut while the release contract blocks that surface.
36
-
37
- Do not publish private or sensitive operational rollback material in this
38
- repository.
1
+ # Rollback Boundary
2
+
3
+ Public rollback covers the npm CLI, managed launcher, bundled global skill, and
4
+ the optional Codex plugin channel.
5
+
6
+ For a failed pre-publication candidate:
7
+
8
+ 1. Keep the previous tarball until the new one passes smoke tests.
9
+ 2. Revert the plugin source, marketplace manifest, CLI source, and versions to
10
+ the last known-good commit.
11
+ 3. Re-run `npm run release:preparar-publica`.
12
+
13
+ If a bad commit was already pushed, revert it with a normal Git revert and push
14
+ the corrective commit. Install the corrected npm version and resynchronize its
15
+ managed distribution:
16
+
17
+ ```bash
18
+ npm install -g @semacode/cli@<corrected-version>
19
+ sema skill sync --json
20
+ ```
21
+
22
+ The same sequence may install an explicitly selected previous version. The
23
+ installed npm version is authoritative: `sema skill sync --json` aligns the
24
+ runtime, managed launcher, and bundled skill to the version that is actually
25
+ installed. This is synchronization, not a promise to block an intentional
26
+ downgrade.
27
+
28
+ If the optional plugin channel was also affected, upgrade or reinstall it after
29
+ the corrected commit is public. Open a new task before validating the repaired
30
+ skill; already-open tasks keep the catalog they started with.
31
+
32
+ If a bad npm version was published, do not overwrite it. Publish a corrected
33
+ version and direct users to that version. Verify the final registry/GitHub state
34
+ with `npm run release:verificar-distribuicao`. Do not create a GitHub Release or
35
+ asset as a rollback shortcut while the release contract blocks that surface.
36
+
37
+ Do not publish private or sensitive operational rollback material in this
38
+ repository.