soturail 1.5.0 → 1.6.1

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 (203) hide show
  1. package/README.md +650 -29
  2. package/dist/cli.js +3 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/agents.d.ts +4 -0
  5. package/dist/commands/agents.js +9 -0
  6. package/dist/commands/agents.js.map +1 -1
  7. package/dist/commands/candidates.d.ts +2 -0
  8. package/dist/commands/candidates.js +22 -0
  9. package/dist/commands/candidates.js.map +1 -0
  10. package/dist/commands/capabilities.js +25 -3
  11. package/dist/commands/capabilities.js.map +1 -1
  12. package/dist/commands/context.js +5 -2
  13. package/dist/commands/context.js.map +1 -1
  14. package/dist/commands/contract.js +72 -22
  15. package/dist/commands/contract.js.map +1 -1
  16. package/dist/commands/doctor.js +6 -14
  17. package/dist/commands/doctor.js.map +1 -1
  18. package/dist/commands/hooks.js +4 -3
  19. package/dist/commands/hooks.js.map +1 -1
  20. package/dist/commands/memory.js +19 -10
  21. package/dist/commands/memory.js.map +1 -1
  22. package/dist/commands/report.js +5 -13
  23. package/dist/commands/report.js.map +1 -1
  24. package/dist/commands/skills.js +52 -4
  25. package/dist/commands/skills.js.map +1 -1
  26. package/dist/commands/spec.js +2 -6
  27. package/dist/commands/spec.js.map +1 -1
  28. package/dist/compressors/json-toon.d.ts +0 -1
  29. package/dist/compressors/json-toon.js +0 -3
  30. package/dist/compressors/json-toon.js.map +1 -1
  31. package/dist/core/agent-docs-hygiene.js +2 -5
  32. package/dist/core/agent-docs-hygiene.js.map +1 -1
  33. package/dist/core/agent-exporter.js +18 -35
  34. package/dist/core/agent-exporter.js.map +1 -1
  35. package/dist/core/agent-qa.js +3 -5
  36. package/dist/core/agent-qa.js.map +1 -1
  37. package/dist/core/agent-runtime.js +15 -63
  38. package/dist/core/agent-runtime.js.map +1 -1
  39. package/dist/core/approved-memory.d.ts +29 -0
  40. package/dist/core/approved-memory.js +82 -0
  41. package/dist/core/approved-memory.js.map +1 -0
  42. package/dist/core/artifact-store.js +9 -1
  43. package/dist/core/artifact-store.js.map +1 -1
  44. package/dist/core/cache-normalizer.js +2 -7
  45. package/dist/core/cache-normalizer.js.map +1 -1
  46. package/dist/core/candidate-store.d.ts +30 -0
  47. package/dist/core/candidate-store.js +106 -0
  48. package/dist/core/candidate-store.js.map +1 -0
  49. package/dist/core/capability-descriptor.d.ts +194 -0
  50. package/dist/core/capability-descriptor.js +347 -0
  51. package/dist/core/capability-descriptor.js.map +1 -0
  52. package/dist/core/change-contract.d.ts +45 -1
  53. package/dist/core/change-contract.js +90 -13
  54. package/dist/core/change-contract.js.map +1 -1
  55. package/dist/core/code-health.js +1 -1
  56. package/dist/core/code-health.js.map +1 -1
  57. package/dist/core/config.d.ts +7 -0
  58. package/dist/core/config.js +25 -11
  59. package/dist/core/config.js.map +1 -1
  60. package/dist/core/context-intelligence.d.ts +17 -1
  61. package/dist/core/context-intelligence.js +20 -3
  62. package/dist/core/context-intelligence.js.map +1 -1
  63. package/dist/core/context-pack.js +8 -8
  64. package/dist/core/context-pack.js.map +1 -1
  65. package/dist/core/contract-lifecycle.d.ts +101 -0
  66. package/dist/core/contract-lifecycle.js +262 -0
  67. package/dist/core/contract-lifecycle.js.map +1 -0
  68. package/dist/core/diagram-rail.js +6 -8
  69. package/dist/core/diagram-rail.js.map +1 -1
  70. package/dist/core/evidence-pack.js +21 -24
  71. package/dist/core/evidence-pack.js.map +1 -1
  72. package/dist/core/evidence-provenance.d.ts +8 -0
  73. package/dist/core/evidence-provenance.js +23 -4
  74. package/dist/core/evidence-provenance.js.map +1 -1
  75. package/dist/core/file-scanner.js +4 -4
  76. package/dist/core/file-scanner.js.map +1 -1
  77. package/dist/core/harness-lifecycle.js +2 -11
  78. package/dist/core/harness-lifecycle.js.map +1 -1
  79. package/dist/core/harness-rail.js +5 -14
  80. package/dist/core/harness-rail.js.map +1 -1
  81. package/dist/core/host-adapters.d.ts +64 -0
  82. package/dist/core/host-adapters.js +135 -0
  83. package/dist/core/host-adapters.js.map +1 -0
  84. package/dist/core/knowledge-rail.js +5 -9
  85. package/dist/core/knowledge-rail.js.map +1 -1
  86. package/dist/core/mcp-resources.js +5 -10
  87. package/dist/core/mcp-resources.js.map +1 -1
  88. package/dist/core/mcp-server.d.ts +0 -2
  89. package/dist/core/mcp-server.js +0 -2
  90. package/dist/core/mcp-server.js.map +1 -1
  91. package/dist/core/mcp-tools.js +45 -8
  92. package/dist/core/mcp-tools.js.map +1 -1
  93. package/dist/core/memory-rail.js +2 -11
  94. package/dist/core/memory-rail.js.map +1 -1
  95. package/dist/core/native-candidates.js +3 -5
  96. package/dist/core/native-candidates.js.map +1 -1
  97. package/dist/core/policy-rail.js +2 -12
  98. package/dist/core/policy-rail.js.map +1 -1
  99. package/dist/core/project-brain.d.ts +0 -1
  100. package/dist/core/project-brain.js +28 -41
  101. package/dist/core/project-brain.js.map +1 -1
  102. package/dist/core/rail-utils.d.ts +20 -1
  103. package/dist/core/rail-utils.js +27 -9
  104. package/dist/core/rail-utils.js.map +1 -1
  105. package/dist/core/release-preflight.js +3 -1
  106. package/dist/core/release-preflight.js.map +1 -1
  107. package/dist/core/report-rail.d.ts +2 -1
  108. package/dist/core/report-rail.js +4 -27
  109. package/dist/core/report-rail.js.map +1 -1
  110. package/dist/core/reverse-specification.js +3 -6
  111. package/dist/core/reverse-specification.js.map +1 -1
  112. package/dist/core/rule-extractor.js +2 -2
  113. package/dist/core/rule-extractor.js.map +1 -1
  114. package/dist/core/run-workspace.js +3 -12
  115. package/dist/core/run-workspace.js.map +1 -1
  116. package/dist/core/semantic-candidate.d.ts +416 -0
  117. package/dist/core/semantic-candidate.js +124 -0
  118. package/dist/core/semantic-candidate.js.map +1 -0
  119. package/dist/core/skill-exporter.d.ts +50 -0
  120. package/dist/core/skill-exporter.js +130 -0
  121. package/dist/core/skill-exporter.js.map +1 -1
  122. package/dist/core/skill-model.d.ts +88 -0
  123. package/dist/core/skill-model.js +239 -0
  124. package/dist/core/skill-model.js.map +1 -0
  125. package/dist/core/skill-rail-v2.js +5 -10
  126. package/dist/core/skill-rail-v2.js.map +1 -1
  127. package/dist/core/skill-routing.d.ts +8 -0
  128. package/dist/core/skill-routing.js +29 -25
  129. package/dist/core/skill-routing.js.map +1 -1
  130. package/dist/core/skill-schema.js +2 -6
  131. package/dist/core/skill-schema.js.map +1 -1
  132. package/dist/core/skill-validator.d.ts +6 -0
  133. package/dist/core/skill-validator.js +21 -14
  134. package/dist/core/skill-validator.js.map +1 -1
  135. package/dist/core/tasklet-rail.js +3 -5
  136. package/dist/core/tasklet-rail.js.map +1 -1
  137. package/dist/core/trust-decision.d.ts +9 -0
  138. package/dist/core/trust-decision.js +30 -0
  139. package/dist/core/trust-decision.js.map +1 -0
  140. package/dist/core/version.d.ts +1 -1
  141. package/dist/core/version.js +1 -1
  142. package/dist/core/workflow-store.js +11 -13
  143. package/dist/core/workflow-store.js.map +1 -1
  144. package/dist/core/workspace-fingerprint.d.ts +12 -1
  145. package/dist/core/workspace-fingerprint.js +49 -8
  146. package/dist/core/workspace-fingerprint.js.map +1 -1
  147. package/dist/core/workspace-guard.d.ts +8 -0
  148. package/dist/core/workspace-guard.js +21 -1
  149. package/dist/core/workspace-guard.js.map +1 -1
  150. package/docs/README.md +15 -2
  151. package/docs/architecture/agent-native-semantic-architecture.md +403 -0
  152. package/docs/architecture/architecture.md +1 -1
  153. package/docs/architecture/artifact-model-and-lineage.md +2 -2
  154. package/docs/architecture/context-architecture.md +4 -2
  155. package/docs/architecture/contracts-and-verification.md +33 -0
  156. package/docs/architecture/governance-model.md +1 -1
  157. package/docs/architecture/provider-architecture.md +48 -14
  158. package/docs/architecture/verified-control-plane.md +70 -15
  159. package/docs/audits/v1.6.0-legacy-removal-report.md +75 -0
  160. package/docs/audits/v1.6.0-refactor-map.md +119 -0
  161. package/docs/audits/v1.6.0-semantic-migration-baseline.md +185 -0
  162. package/docs/audits/v1.7.0-real-agent-qualification-baseline.md +127 -0
  163. package/docs/audits/v1.7.0-real-agent-qualification-results.md +156 -0
  164. package/docs/ecosystem/2026-external-research-master-index.md +221 -0
  165. package/docs/ecosystem/agent-harness-synthesis-2026.md +6 -6
  166. package/docs/ecosystem/conductor-mode.md +3 -3
  167. package/docs/ecosystem/ecosystem-influences.md +4 -4
  168. package/docs/ecosystem/external-projects-audit.md +2 -0
  169. package/docs/getting-started/first-real-workflow.md +69 -39
  170. package/docs/getting-started/migration-v1.6.md +77 -0
  171. package/docs/getting-started/quickstart.md +66 -22
  172. package/docs/getting-started/usage.md +66 -61
  173. package/docs/pt-BR/visao-geral.md +58 -18
  174. package/docs/rails/hosts/host-compatibility-rail.md +24 -0
  175. package/docs/rails/hosts/mcp.md +10 -4
  176. package/docs/rails/skills/skill-rail-2.md +46 -8
  177. package/docs/rails/skills/skill-rail.md +162 -49
  178. package/docs/reference/branding.md +12 -3
  179. package/docs/reference/commands/stable-command-surface.md +11 -6
  180. package/docs/reference/commands/v1.6-commands.md +74 -0
  181. package/docs/reference/contracts/v1-contract.md +3 -3
  182. package/docs/reference/schemas/schema-contracts.md +17 -0
  183. package/docs/releases/README.md +36 -30
  184. package/docs/releases/RELEASE_NOTES_v1.6.0.md +55 -0
  185. package/docs/releases/RELEASE_NOTES_v1.6.1.md +30 -0
  186. package/docs/roadmap/future-rails-index.md +23 -14
  187. package/docs/roadmap/public-roadmap.md +48 -14
  188. package/docs/roadmap/v1.6.0-agent-native-semantic-control-plane-master-prompt.md +1682 -0
  189. package/docs/roadmap/verified-control-plane-implementation-tracker.md +93 -33
  190. package/docs/security/security-boundaries.md +33 -19
  191. package/docs/security/security-model.md +2 -0
  192. package/docs/security/threat-model.md +16 -2
  193. package/package.json +13 -12
  194. package/skills/soturail-change/SKILL.md +32 -0
  195. package/skills/soturail-core/SKILL.md +46 -0
  196. package/skills/soturail-core/references/candidate-artifacts.md +37 -0
  197. package/skills/soturail-core/references/trust-states.md +21 -0
  198. package/skills/soturail-debug/SKILL.md +30 -0
  199. package/skills/soturail-knowledge/SKILL.md +29 -0
  200. package/skills/soturail-release/SKILL.md +31 -0
  201. package/skills/soturail-research/SKILL.md +31 -0
  202. package/skills/soturail-review/SKILL.md +31 -0
  203. package/skills/soturail-security/SKILL.md +31 -0
package/README.md CHANGED
@@ -2,64 +2,665 @@
2
2
 
3
3
  [![npm](https://img.shields.io/npm/v/soturail)](https://www.npmjs.com/package/soturail)
4
4
  [![CI](https://github.com/Soturine/soturail/actions/workflows/ci.yml/badge.svg)](https://github.com/Soturine/soturail/actions/workflows/ci.yml)
5
+ [![Security](https://github.com/Soturine/soturail/actions/workflows/security.yml/badge.svg)](https://github.com/Soturine/soturail/actions/workflows/security.yml)
5
6
  [![License: Apache-2.0](https://img.shields.io/badge/license-Apache--2.0-blue)](LICENSE)
6
7
 
7
- SotuRail is a local-first engineering control plane for AI-assisted software work. It supplies workspace-bound context, contracts, readiness decisions, evidence, provenance, and reproducible release artifacts without becoming an autonomous agent or mandatory server.
8
+ **SotuRail is a local-first, agent-native engineering control plane for AI-assisted software development.**
8
9
 
9
- > SotuRail governs engineering readiness and verified context; it does not replace the coding model/runtime.
10
+ It sits beside coding agents such as Claude Code, Codex, Cursor and Gemini CLI. The agent handles semantic work — understanding the task, project vocabulary, requirements and ambiguity — while SotuRail keeps the engineering state inspectable and verifiable: capabilities, workspace identity, contracts, provenance, freshness, evidence, policy and readiness.
11
+
12
+ ```text
13
+ AI understands.
14
+ SotuRail organizes, constrains and proves.
15
+ ```
16
+
17
+ SotuRail is **not another coding agent**, a model gateway, a cloud backend or an autonomous shell runtime. It is the engineering rail around the agent.
18
+
19
+ ## What problem does it solve?
20
+
21
+ AI coding agents can reason well, but an agent saying _“tests passed”_, _“this evidence is current”_ or _“the change is ready”_ should not automatically make that true.
22
+
23
+ SotuRail separates semantic reasoning from verifiable engineering state:
24
+
25
+ ```text
26
+ User request
27
+ ↓
28
+ AI agent / Semantic Worker
29
+ ↓
30
+ portable Skill
31
+ ↓
32
+ capability discovery
33
+ ↓
34
+ native facts / providers / project sources
35
+ ↓
36
+ candidate artifacts
37
+ ↓
38
+ provenance + freshness + policy + evidence
39
+ ↓
40
+ readiness
41
+ ```
42
+
43
+ The agent may infer, explain and propose. SotuRail decides whether the relevant evidence is current and whether the change is actually ready to advance.
44
+
45
+ ## Typical use cases
46
+
47
+ SotuRail is useful when you want an AI coding agent to work with more discipline across a real repository, for example:
48
+
49
+ - implement a feature without losing track of scope and acceptance criteria;
50
+ - debug a regression and retain reproducible evidence;
51
+ - review a change against recorded checks rather than model confidence;
52
+ - keep project knowledge source-backed and freshness-aware;
53
+ - expose a small, self-describing capability surface to an agent through MCP;
54
+ - reuse the same engineering workflow across Claude Code, Codex, Cursor, Gemini CLI and generic Agent Skills hosts;
55
+ - preserve a clear boundary between AI-generated candidates and verified facts;
56
+ - prepare releases with explicit human approval and reproducible artifacts.
10
57
 
11
58
  ## Install
12
59
 
60
+ SotuRail v1.6 requires **Node.js 22 or newer**.
61
+
62
+ Install globally:
63
+
13
64
  ```bash
14
65
  npm install -g soturail
15
66
  soturail --version
16
- npx soturail --help
17
67
  ```
18
68
 
19
- SotuRail v1.5 requires Node.js 22 or newer. TypeScript is the portable default; Rust acceleration remains optional.
69
+ Or run it without a global install:
70
+
71
+ ```bash
72
+ npx soturail@latest --help
73
+ ```
74
+
75
+ The portable implementation is TypeScript/Node.js. Rust is optional and used only where benchmarked native acceleration is justified.
76
+
77
+ ## 5-minute quickstart
78
+
79
+ ### 1. Initialize SotuRail in a project
20
80
 
21
- ## Five-minute workflow
81
+ From the repository root:
22
82
 
23
83
  ```bash
84
+ soturail init
85
+ soturail doctor
24
86
  soturail index
25
- soturail read README.md --query "product boundary"
26
- soturail contract create docs-refresh --title "Refresh docs" --intent "Keep contracts current" --criterion "docs check passes" --check "npm run docs:check"
27
- soturail evidence collect
28
- soturail self readiness --v1 --strict
29
87
  ```
30
88
 
31
- Generated state stays local under `.soturail/`. Use `soturail run -- <command...>` for recoverable logs and `soturail expand <raw_id>` for redacted recovery.
89
+ Runtime state is kept locally under:
90
+
91
+ ```text
92
+ .soturail/
93
+ ```
94
+
95
+ SotuRail does not require a hosted workspace, account or mandatory cloud service for its normal local workflow.
96
+
97
+ ### 2. Install the portable Skills for your agent
98
+
99
+ Claude Code:
100
+
101
+ ```bash
102
+ soturail skills export --target claude --layout portable --install
103
+ ```
104
+
105
+ Codex:
106
+
107
+ ```bash
108
+ soturail skills export --target codex --layout portable --install
109
+ ```
110
+
111
+ Cursor:
112
+
113
+ ```bash
114
+ soturail skills export --target cursor --layout portable --install
115
+ ```
116
+
117
+ Gemini CLI:
118
+
119
+ ```bash
120
+ soturail skills export --target gemini --layout portable --install
121
+ ```
122
+
123
+ Unknown or unverified host:
124
+
125
+ ```bash
126
+ soturail skills export --target generic --layout portable --install
127
+ ```
128
+
129
+ Verified v1.6 project projections:
130
+
131
+ | Host | Skill directory |
132
+ |---|---|
133
+ | Claude Code | `.claude/skills/` |
134
+ | Codex | `.agents/skills/` |
135
+ | Cursor | `.agents/skills/` |
136
+ | Gemini CLI | `.agents/skills/` |
137
+ | Other / unverified hosts | generic portable projection |
138
+
139
+ ### 3. Talk to the agent normally
140
+
141
+ You do **not** need to translate your work into SotuRail CLI commands.
142
+
143
+ Examples:
144
+
145
+ ```text
146
+ "Corrija a regressão de login e verifique o que pode ser afetado."
147
+
148
+ "Review this change and only call it ready if the required evidence is current."
149
+
150
+ "Analise esses requisitos e separe fatos, hipóteses e perguntas em aberto."
151
+
152
+ "Prepare a release, mas não publique nada sem minha aprovação."
153
+ ```
154
+
155
+ The agent can discover the relevant SotuRail Skills and capabilities instead of memorizing the whole CLI.
156
+
157
+ ### 4. Inspect discovery manually when needed
158
+
159
+ For humans, CI or debugging:
160
+
161
+ ```bash
162
+ soturail skills discover
163
+ soturail capabilities list
164
+ soturail capabilities describe context.select
165
+ ```
166
+
167
+ MCP-capable agents can use the typed discovery surface:
168
+
169
+ ```text
170
+ soturail.skills.list
171
+ soturail.capabilities
172
+ ```
173
+
174
+ ## Core concepts
32
175
 
33
- ## Core architecture
176
+ ### Skills
34
177
 
35
- | Layer | Responsibility |
178
+ Skills are portable operating procedures for agents. They explain **when and how** to use SotuRail capabilities without duplicating the implementation.
179
+
180
+ SotuRail v1.6 ships eight bundled Skills:
181
+
182
+ | Skill | Purpose |
36
183
  |---|---|
37
- | Integrity | WorkspaceGuard, Artifact Registry/Store/Envelope, fingerprints, atomic recovery |
38
- | Context | progressive reads, source-backed knowledge, hard-budget context artifacts |
39
- | Contracts | Change Contract, evidence policy, readiness and fidelity inputs |
40
- | Governance | capability registry/epochs, NativeMinimal provider, Authority + Readiness Dual Gate |
41
- | Execution evidence | exact-digest Execution Envelope, Run Manifest, freshness and provenance |
42
- | Adapters | typed MCP and replaceable governance/structural/docs/runtime provider boundaries |
184
+ | `soturail-core` | Base discover → select → act → verify workflow |
185
+ | `soturail-change` | Controlled software changes |
186
+ | `soturail-debug` | Reproduce, diagnose and fix failures |
187
+ | `soturail-review` | Review changes against contracts and evidence |
188
+ | `soturail-security` | Security-sensitive engineering work |
189
+ | `soturail-research` | Research with provenance and source separation |
190
+ | `soturail-knowledge` | Source-backed project knowledge |
191
+ | `soturail-release` | Release qualification and irreversible-action boundaries |
192
+
193
+ They use progressive disclosure:
194
+
195
+ ```text
196
+ Level 1: name + description
197
+ ↓
198
+ agent decides relevance
199
+
200
+ Level 2: selected SKILL.md
201
+ ↓
202
+ workflow + capability bindings
203
+
204
+ Level 3: references / scripts / assets
205
+ ↓
206
+ loaded only when required
207
+ ```
208
+
209
+ ### Capabilities
210
+
211
+ Capabilities are stable, self-describing contracts. They describe what SotuRail can do independently of a specific host UI.
212
+
213
+ A capability can describe:
214
+
215
+ - stable machine ID;
216
+ - purpose;
217
+ - typed inputs and outputs;
218
+ - Skill / MCP / CLI surfaces;
219
+ - required permissions;
220
+ - side effects;
221
+ - evidence/freshness requirements;
222
+ - provider class and availability;
223
+ - fallback behavior;
224
+ - trust rules.
225
+
226
+ Examples:
227
+
228
+ ```text
229
+ context.select
230
+ evidence.verify
231
+ contract.verify
232
+ semantic.candidate.record
233
+ structural.impact
234
+ dependency.docs
235
+ ```
236
+
237
+ A declared capability can also be explicitly `unavailable`. SotuRail prefers an honest unavailable state over pretending that an integration exists.
238
+
239
+ ### Semantic Worker
240
+
241
+ The active coding agent acts as the **Semantic Worker**.
242
+
243
+ The agent is responsible for contextual meaning:
244
+
245
+ - understanding natural-language intent;
246
+ - interpreting requirements;
247
+ - recognizing project/domain vocabulary;
248
+ - identifying ambiguity;
249
+ - selecting relevant Skills/capabilities;
250
+ - combining source/provider results;
251
+ - proposing claims, impacts, decisions and questions.
252
+
253
+ SotuRail records semantic output as **candidate artifacts**. A model-generated candidate does not become a verified fact just because the model is confident.
254
+
255
+ ### Evidence and trust
256
+
257
+ SotuRail owns objective trust transitions.
258
+
259
+ ```text
260
+ AI interpretation
261
+ ↓
262
+ candidate / assertion
263
+ ↓
264
+ source + workspace binding
265
+ ↓
266
+ recorded evidence / human attestation
267
+ ↓
268
+ freshness + policy
269
+ ↓
270
+ readiness
271
+ ```
272
+
273
+ Protected states such as `verified`, `current`, `approved` and `ready` cannot be self-awarded by a Semantic Worker.
274
+
275
+ ### Change Contracts
43
276
 
44
- The official MCP SDK serves a typed, small, capability-mapped surface. It exposes neither arbitrary shell execution nor caller-controlled raw-log authorization.
277
+ A Change Contract records the engineering intent of a change:
45
278
 
46
- ## Maturity and safety
279
+ - title and intent;
280
+ - scope;
281
+ - risk;
282
+ - acceptance criteria;
283
+ - required checks;
284
+ - evidence requirements;
285
+ - relevant sources.
47
286
 
48
- The v1.5 deterministic foundation is implemented and tested. AGT/ACS integration, general schema migrations, structural graph providers, Evidence Receipts, SQLite/FTS, vectors, and Conductor remain explicitly deferred.
287
+ Example:
49
288
 
50
- SotuRail is a guardrail—not a sandbox. It cannot replace OS permissions, credential controls, provider security, physical/runtime QA, or human approval. Evidence distinguishes verified, unverified, blocked, inferred, and stale states.
289
+ ```bash
290
+ soturail contract create docs-refresh \
291
+ --title "Refresh docs" \
292
+ --intent "Keep project documentation current" \
293
+ --criterion "docs check passes" \
294
+ --check "npm run docs:check" \
295
+ --criterion-check "npm run docs:check"
296
+ ```
297
+
298
+ After making the change, run the required check through SotuRail:
299
+
300
+ ```bash
301
+ soturail run -- npm run docs:check
302
+ soturail contract verify .soturail/contracts/docs-refresh.json
303
+ ```
304
+
305
+ The contract creation fingerprint remains immutable provenance. Readiness is evaluated against **current** recorded evidence, so normal implementation work does not make the contract permanently stale.
306
+
307
+ If the contract foundation changes — for example its scope, declared sources or contract content — create a recorded revision instead of silently rewriting history.
308
+
309
+ ### Human attestations
310
+
311
+ Caller flags do not grant trust by themselves.
312
+
313
+ Assertions such as:
314
+
315
+ ```text
316
+ --check-passed
317
+ --criterion-passed
318
+ --runtime-evidence
319
+ --independent-review
320
+ --human-approved
321
+ ```
322
+
323
+ do not satisfy readiness without corroboration.
324
+
325
+ Objective requirements use current recorded executions. Human/manual decisions use explicit interactive attestation receipts tied to the contract revision and current workspace.
326
+
327
+ ## Architecture
328
+
329
+ The public mental model is intentionally small:
330
+
331
+ ```text
332
+ ┌──────────────────────┐
333
+ User / developer ───────▶│ AI agent │
334
+ │ Semantic Worker │
335
+ └──────────┬───────────┘
336
+ │
337
+ ▼
338
+ ┌──────────────────────┐
339
+ │ Portable Skills │
340
+ │ progressive loading │
341
+ └──────────┬───────────┘
342
+ │
343
+ ▼
344
+ ┌──────────────────────┐
345
+ │ Capability Registry │
346
+ │ self-describing API │
347
+ └───────┬───────┬──────┘
348
+ │ │
349
+ ┌───────────┘ └────────────┐
350
+ ▼ ▼
351
+ ┌──────────────────┐ ┌──────────────────┐
352
+ │ Native facts │ │ Optional │
353
+ │ Git / FS / tests │ │ providers │
354
+ │ schemas / hashes │ │ docs / structure │
355
+ └─────────┬────────┘ └─────────┬────────┘
356
+ └──────────────┬──────────────────┘
357
+ ▼
358
+ ┌──────────────────────┐
359
+ │ Structured artifacts │
360
+ │ candidates / runs │
361
+ │ contracts / evidence │
362
+ └──────────┬───────────┘
363
+ ▼
364
+ ┌──────────────────────┐
365
+ │ SotuRail trust core │
366
+ │ provenance │
367
+ │ freshness │
368
+ │ policy │
369
+ │ authority/readiness │
370
+ └──────────────────────┘
371
+ ```
372
+
373
+ A useful rule of thumb:
374
+
375
+ | Concern | Owner |
376
+ |---|---|
377
+ | Meaning, intent, ambiguity, semantic interpretation | AI agent |
378
+ | Procedure | Skill |
379
+ | Stable operation contract | Capability |
380
+ | Specialized optional implementation | Provider |
381
+ | Git/filesystem/hash/schema/test facts | deterministic tools |
382
+ | Provenance/freshness/evidence/readiness | SotuRail |
383
+ | Product decisions and explicit approval | Human |
384
+
385
+ ## Main feature areas
386
+
387
+ | Area | What SotuRail provides |
388
+ |---|---|
389
+ | **Agent Skills** | portable Skills, progressive disclosure, task-oriented procedures |
390
+ | **Capability discovery** | self-describing capability catalog across MCP/CLI/Skills |
391
+ | **Context** | progressive repo reading, bounded context artifacts, explicit degradation |
392
+ | **Change Contracts** | scope, criteria, risk, evidence requirements and revision lineage |
393
+ | **Evidence** | recorded command executions tied to the current workspace |
394
+ | **Workspace integrity** | guarded paths, fingerprints, source/workspace binding |
395
+ | **Artifacts** | canonical registry/store/envelopes, lineage and freshness |
396
+ | **Governance** | capability metadata, Authority Gate, Readiness Gate, capability epochs |
397
+ | **Execution integrity** | exact-digest Execution Envelope |
398
+ | **Knowledge** | source-backed local knowledge and stale-state handling |
399
+ | **MCP** | official SDK, typed bounded tools/resources, capability discovery |
400
+ | **Host adapters** | canonical host facts plus portable projections |
401
+ | **Evaluation** | deterministic fixtures, regressions and benchmark infrastructure |
402
+ | **Release engineering** | release checks, package verification, SBOM/checksums/provenance workflow |
403
+
404
+ ## MCP
405
+
406
+ SotuRail includes a local MCP server over stdio using the official TypeScript SDK.
407
+
408
+ Start it manually:
409
+
410
+ ```bash
411
+ soturail mcp serve --transport stdio
412
+ ```
413
+
414
+ Useful diagnostics:
415
+
416
+ ```bash
417
+ soturail mcp doctor
418
+ soturail mcp manifest
419
+ soturail mcp smoke
420
+ soturail mcp exposure
421
+ ```
422
+
423
+ Important agent-discovery tools:
424
+
425
+ ```text
426
+ soturail.skills.list
427
+ soturail.capabilities
428
+ soturail.candidates.record
429
+ ```
430
+
431
+ Security defaults:
432
+
433
+ - no arbitrary shell execution through MCP;
434
+ - no `soturail.run` MCP tool by default;
435
+ - raw-log expansion remains redacted for MCP callers;
436
+ - tool exposure must come from a capability descriptor;
437
+ - recording a semantic candidate never verifies it.
438
+
439
+ ## Natural-language and multilingual behavior
440
+
441
+ SotuRail's core machine semantics do not depend on English keyword matching.
442
+
443
+ The same capability IDs can be used when:
444
+
445
+ - the user writes in Portuguese;
446
+ - source code uses English identifiers;
447
+ - requirements are in Spanish;
448
+ - documentation is mixed-language;
449
+ - paths contain accents, emoji or Japanese characters;
450
+ - provider output uses another language.
451
+
452
+ Original source text is preserved. Translation/localization is a derived presentation and never replaces the original source as evidence.
453
+
454
+ The legacy lexical router remains only as a labeled `heuristic-fallback`, not the primary semantic authority.
455
+
456
+ ## CLI: useful, but not the agent UX
457
+
458
+ v1.6 is **agent-first, not CLI-less**.
459
+
460
+ The CLI is primarily useful for:
461
+
462
+ - humans;
463
+ - CI;
464
+ - deterministic automation;
465
+ - diagnostics;
466
+ - administration;
467
+ - recovery;
468
+ - release workflows;
469
+ - hosts without a richer Skill/MCP surface.
470
+
471
+ A few common commands:
472
+
473
+ ```bash
474
+ # repository/context
475
+ soturail init
476
+ soturail index
477
+ soturail read README.md --query "architecture"
478
+
479
+ # discovery
480
+ soturail skills discover
481
+ soturail capabilities list
482
+
483
+ # diagnostics
484
+ soturail doctor
485
+ soturail mcp smoke
486
+ soturail self architecture --check
487
+
488
+ # evidence
489
+ soturail run -- npm test
490
+ soturail evidence report
491
+
492
+ # release qualification
493
+ soturail release check
494
+ ```
495
+
496
+ See [v1.6 command reference](docs/reference/commands/v1.6-commands.md) for the current additions and the stable command docs for the wider CLI surface.
497
+
498
+ ## Example workflows
499
+
500
+ ### Feature work
501
+
502
+ ```text
503
+ User:
504
+ "Adicione OAuth e verifique os riscos de segurança."
505
+
506
+ Agent:
507
+ 1. loads soturail-core + soturail-change + soturail-security
508
+ 2. discovers available capabilities
509
+ 3. inspects project context and sources
510
+ 4. records unresolved assumptions as candidates
511
+ 5. creates/uses a Change Contract
512
+ 6. implements the change
513
+ 7. runs required checks
514
+ 8. SotuRail evaluates current evidence/readiness
515
+ ```
516
+
517
+ If a future capability such as `dependency.docs` is unavailable, that state is visible instead of silently replaced with fabricated certainty.
518
+
519
+ ### Debugging
520
+
521
+ ```text
522
+ User:
523
+ "O login começou a falhar depois dessa mudança."
524
+
525
+ Agent:
526
+ 1. loads soturail-debug
527
+ 2. reproduces the failure
528
+ 3. records evidence
529
+ 4. proposes candidate causes
530
+ 5. edits the code
531
+ 6. reruns the relevant checks
532
+ 7. only current evidence may satisfy readiness
533
+ ```
534
+
535
+ ### Review
536
+
537
+ ```text
538
+ User:
539
+ "Revise esse PR e veja se pode avançar."
540
+
541
+ Agent:
542
+ 1. loads soturail-review
543
+ 2. reads contract/scope/evidence
544
+ 3. compares the change with current evidence
545
+ 4. separates observations from assumptions
546
+ 5. reports blockers
547
+ 6. readiness remains a SotuRail decision, not model confidence
548
+ ```
549
+
550
+ ## Local project state
551
+
552
+ SotuRail stores generated runtime state under `.soturail/`.
553
+
554
+ Typical categories include:
555
+
556
+ ```text
557
+ .soturail/
558
+ ├─ artifacts / indexes / context
559
+ ├─ contracts
560
+ ├─ evidence / runs
561
+ ├─ knowledge / memory
562
+ ├─ policy / governance
563
+ ├─ reports / evaluations
564
+ └─ host / MCP projections
565
+ ```
566
+
567
+ Exact internal paths are resolved by the canonical artifact/workspace registry. Do not build integrations by guessing private paths when a public command, artifact or capability exists.
568
+
569
+ ## Scope and non-goals
570
+
571
+ SotuRail intentionally does **not** try to become:
572
+
573
+ - another Claude/Codex-style coding agent;
574
+ - a mandatory model provider;
575
+ - a general LLM proxy/router;
576
+ - a hosted developer workspace;
577
+ - an OS/container sandbox;
578
+ - a secret manager;
579
+ - a mandatory vector database;
580
+ - a mandatory graph database;
581
+ - a giant MCP marketplace;
582
+ - a framework-specific semantic-rule engine;
583
+ - an autonomous publish/deploy loop.
584
+
585
+ The architecture favors replaceable providers and optional integrations over mandatory infrastructure.
586
+
587
+ ## Current provider status
588
+
589
+ The capability model can declare external/provider-backed capabilities before an implementation is installed.
590
+
591
+ In v1.6:
592
+
593
+ - `structural.impact` is declared **unavailable** until a StructuralProvider is implemented;
594
+ - `dependency.docs` is declared **unavailable** until a DependencyDocsProvider is implemented.
595
+
596
+ This is intentional: capability discovery should expose the real state of the system.
597
+
598
+ ## Security model
599
+
600
+ SotuRail is a **guardrail, not a sandbox**.
601
+
602
+ Implemented boundaries include:
603
+
604
+ - `WorkspaceGuard` for caller-controlled filesystem paths;
605
+ - canonical artifact storage and lineage;
606
+ - workspace/source fingerprints;
607
+ - explicit stale-state handling;
608
+ - Authority and Readiness as separate gates;
609
+ - exact-digest Execution Envelopes;
610
+ - redacted raw-log behavior;
611
+ - bounded MCP exposure;
612
+ - interactive human attestation for manual approval/review;
613
+ - dependency audit, CodeQL, SBOM and release provenance in the project release process.
614
+
615
+ SotuRail still depends on the host, operating system and external services for actual process isolation, credential security and external-side-effect enforcement.
616
+
617
+ See the [Threat Model](docs/security/threat-model.md).
618
+
619
+ ## Compatibility and legacy
620
+
621
+ v1.6 keeps the v1.5 public compatibility surface where a minor release cannot safely remove it.
622
+
623
+ Examples:
624
+
625
+ - older Skill packs can still be adapted/migrated;
626
+ - flat Skill export is deprecated in favor of portable Skill directories;
627
+ - `gemini-legacy` remains a compatibility alias with a v2.0 removal target;
628
+ - legacy MCP negotiation remains where required by the published compatibility contract.
629
+
630
+ Historical docs and release notes remain in the repository as history; they are not the recommended v1.6 workflow.
631
+
632
+ ## Known limitations
633
+
634
+ Current limitations are documented instead of hidden:
635
+
636
+ - StructuralProvider and DependencyDocsProvider are not implemented yet;
637
+ - deterministic CI fixtures prove the bundled Skill catalog can satisfy the tested scenarios, but agent-real selection scoring remains a separate evaluation;
638
+ - human attestation can verify an interactive approval flow but cannot cryptographically prove a specific physical human was at the keyboard;
639
+ - prompt-injection phrase scanning is currently English-focused and non-exhaustive;
640
+ - SotuRail does not prove behavior in an external production system unless that observation is captured as evidence.
51
641
 
52
642
  ## Documentation
53
643
 
644
+ Recommended entry points:
645
+
54
646
  - [Quickstart](docs/getting-started/quickstart.md)
55
- - [v1.5 commands](docs/reference/commands/v1.5-commands.md)
56
- - [Verified control plane](docs/architecture/verified-control-plane.md)
57
- - [Threat model](docs/security/threat-model.md)
58
- - [Migration to v1.5](docs/getting-started/migration-v1.5.md)
59
- - [Implementation tracker](docs/roadmap/verified-control-plane-implementation-tracker.md)
647
+ - [Usage](docs/getting-started/usage.md)
648
+ - [First Real Workflow](docs/getting-started/first-real-workflow.md)
649
+ - [v1.6 Commands](docs/reference/commands/v1.6-commands.md)
650
+ - [Agent-Native Semantic Architecture](docs/architecture/agent-native-semantic-architecture.md)
651
+ - [Verified Control Plane](docs/architecture/verified-control-plane.md)
652
+ - [Contracts and Verification](docs/architecture/contracts-and-verification.md)
653
+ - [Provider Architecture](docs/architecture/provider-architecture.md)
654
+ - [Skills](docs/rails/skills/skill-rail.md)
655
+ - [MCP](docs/rails/hosts/mcp.md)
656
+ - [Threat Model](docs/security/threat-model.md)
60
657
  - [Roadmap](ROADMAP.md)
658
+ - [v1.6 Release Notes](docs/releases/RELEASE_NOTES_v1.6.0.md)
659
+ - [Português](docs/pt-BR/)
61
660
 
62
- ## Development and release gates
661
+ For release-by-release history, use [CHANGELOG.md](CHANGELOG.md) and [release notes](docs/releases/).
662
+
663
+ ## Development
63
664
 
64
665
  ```bash
65
666
  npm ci
@@ -70,10 +671,30 @@ npm run docs:check
70
671
  npm audit
71
672
  node dist/cli.js mcp smoke
72
673
  node dist/cli.js self architecture --check
73
- cargo test --manifest-path native/soturail-native/Cargo.toml
74
674
  npm run release:check
75
675
  ```
76
676
 
677
+ Optional native validation:
678
+
679
+ ```bash
680
+ cargo test --manifest-path native/soturail-native/Cargo.toml
681
+ ```
682
+
683
+ ## Project direction
684
+
685
+ Post-v1.6 work focuses on adding **evidence-producing capabilities**, not duplicating semantic reasoning that the agent already performs well.
686
+
687
+ Near-term directions include:
688
+
689
+ - StructuralProvider / impact analysis;
690
+ - DependencyDocsProvider;
691
+ - richer Evidence Receipts and re-attestation;
692
+ - Context Spine / escalation;
693
+ - knowledge drift propagation;
694
+ - optional local indexes/providers when benchmarks justify them.
695
+
696
+ See [ROADMAP.md](ROADMAP.md).
697
+
77
698
  ## License
78
699
 
79
700
  Apache-2.0. See [LICENSE](LICENSE).