stable-harness 0.0.140 → 0.0.144

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 (210) hide show
  1. package/README.md +30 -17
  2. package/dist/index.js +1 -1
  3. package/dist/runtime/skills/skill-metadata.js +1 -1
  4. package/dist/workspace/compile.js +1 -1
  5. package/docs/0.1.0-tool-guard-benchmark.zh.md +5 -5
  6. package/docs/architecture/system-architecture.zh.md +3 -3
  7. package/docs/evaluation/0.1.0-bfcl-targeted-model-matrix.zh.md +306 -306
  8. package/docs/evaluation/0.1.0-bfcl-targeted-review-matrix.zh.md +1 -1
  9. package/docs/evaluation/0.1.0-bfcl-tool-guard.zh.md +1 -1
  10. package/docs/granite-tool-calling-comparison.zh.md +8 -8
  11. package/docs/guides/getting-started.md +14 -6
  12. package/docs/guides/index.md +5 -3
  13. package/docs/guides/integration-guide.md +44 -43
  14. package/docs/guides/operator-runbook.md +51 -3
  15. package/docs/guides/runtime-governance-proof.md +4 -4
  16. package/docs/guides/workspace-authoring.md +2 -2
  17. package/docs/guides/workspace-docker-build.md +3 -3
  18. package/docs/memory/0.1.0-memory-design.zh.md +20 -0
  19. package/docs/memory/0.1.0-step-09-deepagents-native-memory.zh.md +1 -1
  20. package/docs/memory/0.1.0-step-09-langmem-shaped-provider.zh.md +1 -1
  21. package/docs/memory/0.1.0-step-09-memory-adapter-projection.zh.md +3 -3
  22. package/docs/memory/0.1.0-step-09-memory-contract.zh.md +1 -1
  23. package/docs/memory/0.1.0-step-09-memory-governance-approval.zh.md +1 -1
  24. package/docs/memory/0.1.0-step-09-memory-lifecycle-hooks.zh.md +1 -1
  25. package/docs/memory/0.1.0-step-09-memory-maintenance-boundary.zh.md +1 -1
  26. package/docs/memory/0.1.0-step-09-memory-persistence-boundary.zh.md +1 -1
  27. package/docs/protocols/coverage-matrix.md +114 -0
  28. package/docs/protocols/http-runtime.md +31 -8
  29. package/docs/protocols/langgraph-compatible.md +75 -17
  30. package/docs/protocols/openai-compatible.md +25 -7
  31. package/docs/protocols/{agent-protocols.md → protocol-facades.md} +76 -18
  32. package/node_modules/@stable-harness/adapter-deepagents/dist/src/adapter.js +1 -1
  33. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/builtin/task-inventory.js +1 -1
  34. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/builtin-call-repair.js +1 -1
  35. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/builtin-tool-policy.js +1 -1
  36. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/gateway/tool-failure-events.js +1 -1
  37. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/raw-tool-call-parser.js +1 -1
  38. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/stream-events.js +1 -1
  39. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/substrate/checkpoint.js +1 -1
  40. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/tool-repeat-visibility.js +1 -1
  41. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/trace-projection.js +1 -1
  42. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/vfs-backend.js +1 -1
  43. package/node_modules/@stable-harness/adapter-deepagents/package.json +2 -2
  44. package/node_modules/@stable-harness/adapter-langgraph/dist/src/graph.js +1 -1
  45. package/node_modules/@stable-harness/adapter-langgraph/dist/src/index.js +1 -1
  46. package/node_modules/@stable-harness/adapter-langgraph/dist/src/runtime.js +1 -1
  47. package/node_modules/@stable-harness/adapter-langgraph/dist/src/skill-providers.js +1 -1
  48. package/node_modules/@stable-harness/adapter-langgraph/dist/src/types.d.ts +1 -0
  49. package/node_modules/@stable-harness/adapter-langgraph/package.json +2 -2
  50. package/node_modules/@stable-harness/core/dist/boundary-scan.js +1 -1
  51. package/node_modules/@stable-harness/core/dist/index.d.ts +1 -0
  52. package/node_modules/@stable-harness/core/dist/index.js +1 -1
  53. package/node_modules/@stable-harness/core/dist/memory-plugins/shared.js +1 -1
  54. package/node_modules/@stable-harness/core/dist/memory-plugins.js +1 -1
  55. package/node_modules/@stable-harness/core/dist/quality/event-evidence.js +1 -1
  56. package/node_modules/@stable-harness/core/dist/quality/execution-review.js +1 -1
  57. package/node_modules/@stable-harness/core/dist/quality/synthesis/fields.js +1 -1
  58. package/node_modules/@stable-harness/core/dist/recovery/execution-contract.js +1 -1
  59. package/node_modules/@stable-harness/core/dist/recovery/tool-call-structure.js +1 -1
  60. package/node_modules/@stable-harness/core/dist/recovery/tool-call.js +1 -1
  61. package/node_modules/@stable-harness/core/dist/runtime/direct-tool-call.js +1 -1
  62. package/node_modules/@stable-harness/core/dist/runtime/inspection/methods.js +1 -1
  63. package/node_modules/@stable-harness/core/dist/runtime/inspection/replay.js +1 -1
  64. package/node_modules/@stable-harness/core/dist/runtime/persistence/artifacts.d.ts +4 -0
  65. package/node_modules/@stable-harness/core/dist/runtime/persistence/artifacts.js +1 -1
  66. package/node_modules/@stable-harness/core/dist/runtime/persistence/queue.d.ts +1 -0
  67. package/node_modules/@stable-harness/core/dist/runtime/persistence/queue.js +1 -1
  68. package/node_modules/@stable-harness/core/dist/runtime/persistence/stores.d.ts +1 -0
  69. package/node_modules/@stable-harness/core/dist/runtime/persistence/stores.js +1 -1
  70. package/node_modules/@stable-harness/core/dist/runtime/persistence/system-data.d.ts +34 -0
  71. package/node_modules/@stable-harness/core/dist/runtime/persistence/system-data.js +1 -0
  72. package/node_modules/@stable-harness/core/dist/runtime/recovery/adapter-result.js +1 -1
  73. package/node_modules/@stable-harness/core/dist/runtime/recovery/non-focused-recovery.js +1 -1
  74. package/node_modules/@stable-harness/core/dist/runtime.js +1 -1
  75. package/node_modules/@stable-harness/core/dist/workflows/index.d.ts +20 -0
  76. package/node_modules/@stable-harness/core/dist/workflows/index.js +1 -1
  77. package/node_modules/@stable-harness/core/package.json +3 -3
  78. package/node_modules/@stable-harness/governance/dist/src/approval-queue.d.ts +1 -0
  79. package/node_modules/@stable-harness/governance/dist/src/approval-queue.js +1 -1
  80. package/node_modules/@stable-harness/governance/dist/src/index.d.ts +1 -1
  81. package/node_modules/@stable-harness/governance/dist/src/index.js +1 -1
  82. package/node_modules/@stable-harness/governance/package.json +1 -1
  83. package/node_modules/@stable-harness/memory/package.json +1 -1
  84. package/node_modules/@stable-harness/protocols/dist/src/http-events.d.ts +2 -0
  85. package/node_modules/@stable-harness/protocols/dist/src/http-events.js +1 -1
  86. package/node_modules/@stable-harness/protocols/dist/src/http-server.d.ts +5 -1
  87. package/node_modules/@stable-harness/protocols/dist/src/http-server.js +1 -1
  88. package/node_modules/@stable-harness/protocols/dist/src/index.d.ts +3 -3
  89. package/node_modules/@stable-harness/protocols/dist/src/index.js +1 -1
  90. package/node_modules/@stable-harness/protocols/dist/src/openai-compatible.js +1 -1
  91. package/node_modules/@stable-harness/protocols/dist/src/openai-payload.d.ts +89 -0
  92. package/node_modules/@stable-harness/protocols/dist/src/openai-payload.js +1 -1
  93. package/node_modules/@stable-harness/protocols/dist/src/{agent-protocols.d.ts → protocol-facades.d.ts} +4 -10
  94. package/node_modules/@stable-harness/protocols/dist/src/protocol-facades.js +1 -0
  95. package/node_modules/@stable-harness/protocols/dist/src/protocol-utils.d.ts +505 -0
  96. package/node_modules/@stable-harness/protocols/dist/src/protocol-utils.js +1 -0
  97. package/node_modules/@stable-harness/protocols/package.json +2 -2
  98. package/node_modules/@stable-harness/tool-gateway/dist/src/argument-guard.js +1 -1
  99. package/node_modules/@stable-harness/tool-gateway/dist/src/schema-validation.js +1 -1
  100. package/node_modules/@stable-harness/tool-gateway/package.json +1 -1
  101. package/node_modules/@stable-harness/workspace-yaml/dist/boundary-scan.js +1 -1
  102. package/node_modules/@stable-harness/workspace-yaml/dist/discovery.js +1 -1
  103. package/node_modules/@stable-harness/workspace-yaml/dist/documents.js +1 -1
  104. package/node_modules/@stable-harness/workspace-yaml/dist/loader.js +1 -1
  105. package/node_modules/@stable-harness/workspace-yaml/dist/workflows.js +1 -1
  106. package/node_modules/@stable-harness/workspace-yaml/package.json +2 -2
  107. package/package.json +12 -11
  108. package/packages/adapter-deepagents/dist/src/adapter.js +1 -1
  109. package/packages/adapter-deepagents/dist/src/internal/builtin/task-inventory.js +1 -1
  110. package/packages/adapter-deepagents/dist/src/internal/builtin-call-repair.js +1 -1
  111. package/packages/adapter-deepagents/dist/src/internal/builtin-tool-policy.js +1 -1
  112. package/packages/adapter-deepagents/dist/src/internal/gateway/tool-failure-events.js +1 -1
  113. package/packages/adapter-deepagents/dist/src/internal/raw-tool-call-parser.js +1 -1
  114. package/packages/adapter-deepagents/dist/src/internal/stream-events.js +1 -1
  115. package/packages/adapter-deepagents/dist/src/internal/substrate/checkpoint.js +1 -1
  116. package/packages/adapter-deepagents/dist/src/internal/tool-repeat-visibility.js +1 -1
  117. package/packages/adapter-deepagents/dist/src/internal/trace-projection.js +1 -1
  118. package/packages/adapter-deepagents/dist/src/internal/vfs-backend.js +1 -1
  119. package/packages/adapter-deepagents/package.json +2 -2
  120. package/packages/adapter-langgraph/dist/src/graph.js +1 -1
  121. package/packages/adapter-langgraph/dist/src/index.js +1 -1
  122. package/packages/adapter-langgraph/dist/src/runtime.js +1 -1
  123. package/packages/adapter-langgraph/dist/src/skill-providers.js +1 -1
  124. package/packages/adapter-langgraph/dist/src/types.d.ts +1 -0
  125. package/packages/adapter-langgraph/package.json +2 -2
  126. package/packages/cli/dist/src/args.d.ts +3 -2
  127. package/packages/cli/dist/src/args.js +1 -1
  128. package/packages/cli/dist/src/build.js +1 -1
  129. package/packages/cli/dist/src/cli.js +1 -1
  130. package/packages/cli/dist/src/console/session.js +1 -1
  131. package/packages/cli/dist/src/daemon/client.d.ts +4 -3
  132. package/packages/cli/dist/src/daemon/client.js +1 -1
  133. package/packages/cli/dist/src/init.js +1 -1
  134. package/packages/cli/dist/src/langgraph/agent-server-compat.d.ts +8 -0
  135. package/packages/cli/dist/src/langgraph/agent-server-compat.js +1 -0
  136. package/packages/cli/dist/src/langgraph/store-projection.d.ts +1 -0
  137. package/packages/cli/dist/src/langgraph/store-projection.js +1 -0
  138. package/packages/cli/dist/src/langgraph-official.js +1 -1
  139. package/packages/cli/dist/src/memory/providers.js +1 -1
  140. package/packages/cli/dist/src/server/gateway.d.ts +12 -0
  141. package/packages/cli/dist/src/server/gateway.js +1 -0
  142. package/packages/cli/dist/src/server/protocol-defaults.d.ts +7 -0
  143. package/packages/cli/dist/src/server/protocol-defaults.js +1 -0
  144. package/packages/cli/dist/src/server/studio.d.ts +1 -0
  145. package/packages/cli/dist/src/server/studio.js +1 -0
  146. package/packages/cli/dist/src/server.js +1 -1
  147. package/packages/cli/package.json +8 -8
  148. package/packages/core/dist/boundary-scan.js +1 -1
  149. package/packages/core/dist/index.d.ts +1 -0
  150. package/packages/core/dist/index.js +1 -1
  151. package/packages/core/dist/memory-plugins/shared.js +1 -1
  152. package/packages/core/dist/memory-plugins.js +1 -1
  153. package/packages/core/dist/quality/event-evidence.js +1 -1
  154. package/packages/core/dist/quality/execution-review.js +1 -1
  155. package/packages/core/dist/quality/synthesis/fields.js +1 -1
  156. package/packages/core/dist/recovery/execution-contract.js +1 -1
  157. package/packages/core/dist/recovery/tool-call-structure.js +1 -1
  158. package/packages/core/dist/recovery/tool-call.js +1 -1
  159. package/packages/core/dist/runtime/direct-tool-call.js +1 -1
  160. package/packages/core/dist/runtime/inspection/methods.js +1 -1
  161. package/packages/core/dist/runtime/inspection/replay.js +1 -1
  162. package/packages/core/dist/runtime/persistence/artifacts.d.ts +4 -0
  163. package/packages/core/dist/runtime/persistence/artifacts.js +1 -1
  164. package/packages/core/dist/runtime/persistence/queue.d.ts +1 -0
  165. package/packages/core/dist/runtime/persistence/queue.js +1 -1
  166. package/packages/core/dist/runtime/persistence/stores.d.ts +1 -0
  167. package/packages/core/dist/runtime/persistence/stores.js +1 -1
  168. package/packages/core/dist/runtime/persistence/system-data.d.ts +34 -0
  169. package/packages/core/dist/runtime/persistence/system-data.js +1 -0
  170. package/packages/core/dist/runtime/recovery/adapter-result.js +1 -1
  171. package/packages/core/dist/runtime/recovery/non-focused-recovery.js +1 -1
  172. package/packages/core/dist/runtime.js +1 -1
  173. package/packages/core/dist/workflows/index.d.ts +20 -0
  174. package/packages/core/dist/workflows/index.js +1 -1
  175. package/packages/core/package.json +3 -3
  176. package/packages/evaluation/dist/src/benchmark.js +1 -1
  177. package/packages/evaluation/dist/src/run-record.js +1 -1
  178. package/packages/evaluation/dist/src/tool-call-metrics.js +1 -1
  179. package/packages/evaluation/package.json +2 -2
  180. package/packages/governance/dist/src/approval-queue.d.ts +1 -0
  181. package/packages/governance/dist/src/approval-queue.js +1 -1
  182. package/packages/governance/dist/src/index.d.ts +1 -1
  183. package/packages/governance/dist/src/index.js +1 -1
  184. package/packages/governance/package.json +1 -1
  185. package/packages/memory/package.json +1 -1
  186. package/packages/protocols/dist/src/http-events.d.ts +2 -0
  187. package/packages/protocols/dist/src/http-events.js +1 -1
  188. package/packages/protocols/dist/src/http-server.d.ts +5 -1
  189. package/packages/protocols/dist/src/http-server.js +1 -1
  190. package/packages/protocols/dist/src/index.d.ts +3 -3
  191. package/packages/protocols/dist/src/index.js +1 -1
  192. package/packages/protocols/dist/src/openai-compatible.js +1 -1
  193. package/packages/protocols/dist/src/openai-payload.d.ts +89 -0
  194. package/packages/protocols/dist/src/openai-payload.js +1 -1
  195. package/packages/protocols/dist/src/{agent-protocols.d.ts → protocol-facades.d.ts} +4 -10
  196. package/packages/protocols/dist/src/protocol-facades.js +1 -0
  197. package/packages/protocols/dist/src/protocol-utils.d.ts +505 -0
  198. package/packages/protocols/dist/src/protocol-utils.js +1 -0
  199. package/packages/protocols/package.json +2 -2
  200. package/packages/tool-gateway/dist/src/argument-guard.js +1 -1
  201. package/packages/tool-gateway/dist/src/schema-validation.js +1 -1
  202. package/packages/tool-gateway/package.json +1 -1
  203. package/packages/workspace-yaml/dist/boundary-scan.js +1 -1
  204. package/packages/workspace-yaml/dist/discovery.js +1 -1
  205. package/packages/workspace-yaml/dist/documents.js +1 -1
  206. package/packages/workspace-yaml/dist/loader.js +1 -1
  207. package/packages/workspace-yaml/dist/workflows.js +1 -1
  208. package/packages/workspace-yaml/package.json +2 -2
  209. package/node_modules/@stable-harness/protocols/dist/src/agent-protocols.js +0 -1
  210. package/packages/protocols/dist/src/agent-protocols.js +0 -1
@@ -7,7 +7,7 @@
7
7
  - 标准数据:Berkeley Function Calling Leaderboard BFCL v4 single-turn categories
8
8
  - 模型:`qwen3.5:2b, qwen3.5:4b, qwen3.5:9b, gemma4:e2b`
9
9
  - 模式:`raw, repair, review`
10
- - 远端 Ollama:`https://ollama-rtx-4070.easynet.world`
10
+ - 远端 Ollama:`https://ollama-rtx-4070.easynet.world/v1`
11
11
  - 用例数:`1800`
12
12
  - 说明:这是 BFCL 标准数据上的 stable-harness guard/repair 测试,不是 BFCL 官方 leaderboard 分数。
13
13
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  - 标准数据:Berkeley Function Calling Leaderboard BFCL v4 single-turn categories
8
8
  - 模型:`qwen3.5:4b`
9
- - 远端 Ollama:`https://ollama-rtx-4070.easynet.world`
9
+ - 远端 Ollama:`https://ollama-rtx-4070.easynet.world/v1`
10
10
  - 用例数:`1390`
11
11
  - Repair:`on`
12
12
  - 说明:这是 BFCL 标准数据上的 stable-harness guard/repair 测试,不是 BFCL 官方 leaderboard 分数。
@@ -6,7 +6,7 @@
6
6
 
7
7
  - Default Ollama model id: `qwen3.5:0.8b`
8
8
  - Default Ollama options: `num_ctx=2048`, `num_predict=256`
9
- - Granite baseline model id: `granite4.1:3b`
9
+ - Granite baseline model id: `qwen3.5:4b`
10
10
  - Hugging Face model id: `ibm-granite/granite-4.1-3b`
11
11
  - Ollama native endpoint: `/api/chat`
12
12
  - vLLM/SGLang endpoint: OpenAI-compatible `/v1/chat/completions`
@@ -76,11 +76,11 @@ Parser support varies by backend and model template. Keep parser selection as ba
76
76
 
77
77
  Validated in this checkout:
78
78
 
79
- - local Ollama `http://127.0.0.1:11434`, model `granite4.1:3b`: 3/3 passed.
80
- - remote Ollama `https://ollama-rtx-4070.easynet.world`, model `granite4.1:3b`: 3/3 passed.
79
+ - local Ollama `https://ollama-rtx-4070.easynet.world/v1`, model `qwen3.5:4b`: 3/3 passed.
80
+ - remote Ollama `https://ollama-rtx-4070.easynet.world/v1`, model `qwen3.5:4b`: 3/3 passed.
81
81
  - local Ollama through OpenAI-compatible `/v1`, `tool_choice=required`: 3/3 passed.
82
82
  - local Ollama through OpenAI-compatible `/v1`, `tool_choice=named`: 3/3 passed.
83
- - CUDA host Ollama `http://192.168.0.201:11434`, model `granite4.1:3b`: 3/3 passed.
83
+ - CUDA host Ollama `https://ollama-rtx-4070.easynet.world/v1`, model `qwen3.5:4b`: 3/3 passed.
84
84
  - CUDA host Ollama through OpenAI-compatible `/v1`, `tool_choice=required`: 3/3 passed.
85
85
  - CUDA host Ollama through OpenAI-compatible `/v1`, `tool_choice=named`: 3/3 passed.
86
86
  - CUDA host vLLM `http://192.168.0.201:8000/v1`, model `ibm-granite/granite-4.1-3b`, `tool_choice=auto`: 3/3 passed.
@@ -172,7 +172,7 @@ Expanded matrix: 15 cases. The additional cases cover closed-ticket search, Hong
172
172
 
173
173
  Ollama models currently visible on `192.168.0.201` include:
174
174
 
175
- - Small/medium chat candidates: `qwen3.5:0.8b`, `qwen3:0.6b`, `lfm2.5-thinking:latest`, `granite4.1:3b`, `qwen3.5:2b`, `qwen3.5:4b`, `qwen3:latest`, `qwen3.5:9b`, `qwen2.5:7b-instruct`, `gemma4:e2b`, `gemma4:e4b`, `gpt-oss:latest`.
175
+ - Small/medium chat candidates: `qwen3.5:0.8b`, `qwen3:0.6b`, `lfm2.5-thinking:latest`, `qwen3.5:4b`, `qwen3.5:2b`, `qwen3.5:4b`, `qwen3.5:4b`, `qwen3.5:9b`, `qwen3.5:4b`, `gemma4:e2b`, `gemma4:e4b`, `gpt-oss:latest`.
176
176
  - Very large or slower candidates not included in the fast matrix: `qwen3.6:27b`, `qwen3.6:35b`, `gemma4:26b`, `qwen3.5:27b`, `nemotron-cascade-2:30b`, `lfm2:latest`.
177
177
  - Non-chat/specialized models not included: `nomic-embed-text:latest`, `glm-ocr:q8_0`.
178
178
 
@@ -184,9 +184,9 @@ Fast matrix results:
184
184
  | Ollama | `qwen3.5:4b` | native auto tools | 15/15 | none |
185
185
  | Ollama | `qwen3.5:9b` | native auto tools | 15/15 | none |
186
186
  | Ollama | `qwen3.5:0.8b` | native auto tools | 14/15 | `freshness` day instead of month |
187
- | Ollama | `granite4.1:3b` | native auto tools | 14/15 | Chinese news query became unnatural text |
188
- | Ollama | `qwen3:latest` | native auto tools | 14/15 | ExampleCo ticker became `EXCO` |
189
- | Ollama | `qwen2.5:7b-instruct` | native auto tools | 14/15 | path with space was collapsed |
187
+ | Ollama | `qwen3.5:4b` | native auto tools | 14/15 | Chinese news query became unnatural text |
188
+ | Ollama | `qwen3.5:4b` | native auto tools | 14/15 | ExampleCo ticker became `EXCO` |
189
+ | Ollama | `qwen3.5:4b` | native auto tools | 14/15 | path with space was collapsed |
190
190
  | Ollama | `gemma4:e2b` | native auto tools | 14/15 | missed Chinese ExampleCo stock tool call |
191
191
  | Ollama | `gemma4:e4b` | native auto tools | 14/15 | missed Chinese ExampleCo stock tool call |
192
192
  | Ollama | `lfm2.5-thinking:latest` | native auto tools | 13/15 | namespace typo and HK market error |
@@ -56,8 +56,8 @@ For a local or private OpenAI-compatible endpoint, keep the same model catalog
56
56
  shape and change the environment variables:
57
57
 
58
58
  ```bash
59
- export STABLE_HARNESS_MODEL=granite4.1:3b
60
- export STABLE_HARNESS_OPENAI_BASE_URL=http://127.0.0.1:11434/v1
59
+ export STABLE_HARNESS_MODEL=qwen3.5:4b
60
+ export STABLE_HARNESS_OPENAI_BASE_URL=https://ollama-rtx-4070.easynet.world/v1
61
61
  export OPENAI_API_KEY=local
62
62
  ```
63
63
 
@@ -87,21 +87,29 @@ Print runtime trace lines:
87
87
  stable-harness -w . --agent orchestra --trace "Call the echo tool with hello."
88
88
  ```
89
89
 
90
- ## Start The OpenAI-Compatible Facade
90
+ ## Start The Runtime Daemon
91
91
 
92
92
  ```bash
93
- stable-harness start -w . --port 8642
93
+ stable-harness start -w .
94
+ stable-harness serve -w .
94
95
  ```
95
96
 
96
- Clients can point at:
97
+ Clients can point at the fixed local gateway paths:
97
98
 
98
99
  ```text
99
- http://127.0.0.1:8642/v1
100
+ stable-harness-studio: https://shs.easynet.world/?baseUrl=http%3A%2F%2F127.0.0.1%3A56789
101
+ LangSmith Studio: https://smith.langchain.com/studio/?baseUrl=http%3A%2F%2F127.0.0.1%3A56789%2Fprotocols%2Flanggraph
102
+ Runtime API: http://127.0.0.1:56789/runtime/v1
103
+ OpenAI-compatible: http://127.0.0.1:56789/protocols/openai/v1
104
+ LangGraph-compatible: http://127.0.0.1:56789/protocols/langgraph
100
105
  ```
101
106
 
102
107
  The facade is a protocol adapter around the same Stable Harness runtime. It is
103
108
  not a separate execution path.
104
109
 
110
+ The hosted Stable Harness Studio also accepts an explicit gateway parameter:
111
+ `https://shs.easynet.world/?baseUrl=<stable-harness-gateway-url>`.
112
+
105
113
  ## Develop The Framework
106
114
 
107
115
  Clone the repository only when you are changing Stable Harness itself:
@@ -32,8 +32,9 @@ embed it, operate it, or explain why it exists.
32
32
  relative to agent frameworks, protocol gateways, and orchestration systems.
33
33
  - [Product boundary](../product-boundary.md): the guardrails that keep the project
34
34
  framework-generic and passthrough-first.
35
- - [Compatibility matrix](../compatibility-matrix.md): current backend and protocol
36
- surfaces.
35
+ - [Protocol feature coverage matrix](../protocols/coverage-matrix.md): side-by-side
36
+ runtime feature and API support across the Runtime API, OpenAI-compatible,
37
+ LangGraph-compatible, ACP, A2A, and AG-UI surfaces.
37
38
 
38
39
  ## Engineering References
39
40
 
@@ -43,7 +44,8 @@ embed it, operate it, or explain why it exists.
43
44
  - [OpenAI-compatible protocol](../protocols/openai-compatible.md)
44
45
  - [LangGraph-compatible protocol](../protocols/langgraph-compatible.md)
45
46
  - [HTTP runtime protocol](../protocols/http-runtime.md)
46
- - [ACP, A2A, and AG-UI protocol facades](../protocols/agent-protocols.md)
47
+ - [ACP, A2A, and AG-UI protocol facades](../protocols/protocol-facades.md)
48
+ - [Protocol feature coverage matrix](../protocols/coverage-matrix.md)
47
49
 
48
50
  The short version: keep execution semantics upstream-native, define product
49
51
  inventory in YAML, and use Stable Harness for lifecycle, governance,
@@ -23,7 +23,7 @@ stable-harness workflow render review-shell -w ./workspace
23
23
  stable-harness workflow inspect review-shell -w ./workspace
24
24
  ```
25
25
 
26
- The CLI is intentionally thin. When the Stable Runtime daemon for the workspace
26
+ The CLI is intentionally thin. When the native runtime daemon for the workspace
27
27
  is already running, request commands submit work through HTTP and consume
28
28
  runtime updates through SSE. When no daemon is available, the CLI falls back to
29
29
  an in-process runtime for local development.
@@ -32,7 +32,7 @@ Clients can choose the connection mode explicitly:
32
32
 
33
33
  ```bash
34
34
  stable-harness -w ./workspace --runtime auto "Review the release evidence."
35
- stable-harness -w ./workspace --runtime daemon --daemon-url http://127.0.0.1:8641 "Review the release evidence."
35
+ stable-harness -w ./workspace --runtime daemon --daemon-url http://127.0.0.1:56789/runtime/v1 "Review the release evidence."
36
36
  stable-harness -w ./workspace --runtime local "Review the release evidence."
37
37
  stable-harness console -w ./workspace --runtime daemon
38
38
  ```
@@ -40,30 +40,31 @@ stable-harness console -w ./workspace --runtime daemon
40
40
  | Mode | Behavior |
41
41
  | --- | --- |
42
42
  | `auto` | Use the matching workspace daemon when available; otherwise run in-process. |
43
- | `daemon` | Require a matching Stable Runtime daemon and fail clearly if unavailable. |
43
+ | `daemon` | Require a matching native runtime daemon and fail clearly if unavailable. |
44
44
  | `local` | Always create an in-process runtime for this CLI process. |
45
45
 
46
46
  Clients can also choose the wire protocol used for daemon/server requests:
47
47
 
48
48
  ```bash
49
- stable-harness -w ./workspace --protocol stable-runtime "Review the release evidence."
50
- stable-harness -w ./workspace --protocol a2a --protocol-url http://127.0.0.1:8650 "Review the release evidence."
51
- stable-harness -w ./workspace --protocol agui --protocol-url http://127.0.0.1:8650 "Review the release evidence."
52
- stable-harness -w ./workspace --protocol acp --protocol-url http://127.0.0.1:8650 "Review the release evidence."
53
- stable-harness console -w ./workspace --protocol a2a --protocol-url http://127.0.0.1:8650
49
+ stable-harness -w ./workspace --protocol runtime "Review the release evidence."
50
+ stable-harness -w ./workspace --protocol a2a --protocol-url http://127.0.0.1:56789/protocols "Review the release evidence."
51
+ stable-harness -w ./workspace --protocol agui --protocol-url http://127.0.0.1:56789/protocols "Review the release evidence."
52
+ stable-harness -w ./workspace --protocol acp --protocol-url http://127.0.0.1:56789/protocols "Review the release evidence."
53
+ stable-harness console -w ./workspace --protocol a2a --protocol-url http://127.0.0.1:56789/protocols
54
54
  ```
55
55
 
56
56
  | Protocol | Behavior |
57
57
  | --- | --- |
58
- | `stable-runtime` | Native Stable Runtime HTTP + SSE with request/session/trace/operator features. |
58
+ | `runtime` | Native runtime HTTP + SSE with request/session/trace/operator features. |
59
59
  | `a2a` | Sends request turns through the A2A facade. |
60
60
  | `agui` | Sends request turns through the AG-UI HTTP+SSE facade. |
61
61
  | `acp` | Sends request turns through the ACP HTTP JSON-RPC custom transport. |
62
62
 
63
- `--protocol-url` overrides the configured agent protocol server. A2A, AG-UI,
64
- and ACP carry explicit Stable Runtime request extensions for CLI parity, but
65
- they do not replace the Stable Runtime operator API. Use `stable-runtime` for
66
- traces, approvals, memory administration, and full session inspection.
63
+ `--protocol-url` overrides the configured protocol facade server. A2A, AG-UI,
64
+ and ACP carry explicit native runtime request extensions for CLI parity, but
65
+ the gateway also exposes the native runtime control
66
+ plane at `/runtime/v1/*` for traces, approvals, memory administration,
67
+ artifacts, workflows, and full session inspection.
67
68
 
68
69
  The CLI prints the selected runtime path to stderr:
69
70
 
@@ -91,10 +92,10 @@ supports ordinary prompts plus slash commands:
91
92
  | `/exit` | Leave console mode. |
92
93
 
93
94
  When the console uses `--protocol a2a`, `--protocol agui`, or `--protocol acp`,
94
- the selected protocol carries the current session ID for prompt turns, but the
95
- full operator commands still belong to `stable-runtime`. Use
96
- `--protocol stable-runtime` when the console must list sessions, inspect
97
- requests, manage memory, clear sessions, or stream native control-plane events.
95
+ the selected protocol carries prompt turns while slash-command operator features
96
+ use the same gateway's `/runtime/v1/*` route. This keeps `/sessions`,
97
+ `/requests`, `/memory`, `/clear`, `/debug`, and native event streaming available
98
+ when switching protocol.
98
99
 
99
100
  ## Embedded Runtime
100
101
 
@@ -146,31 +147,30 @@ is the native `StableHarnessRuntime` object returned by
146
147
  Start the server:
147
148
 
148
149
  ```bash
149
- stable-harness start -w ./workspace --host 127.0.0.1 --port 8642
150
+ stable-harness start -w ./workspace --host 127.0.0.1
150
151
  ```
151
152
 
152
- `stable-harness start` exposes the first-party Stable Runtime control plane,
153
- the OpenAI-compatible facade, the LangGraph-compatible server, and optional
154
- ACP/A2A/AG-UI facades when enabled by runtime config. Point first-party clients
155
- at:
153
+ `stable-harness start` exposes the first-party native runtime control plane,
154
+ the OpenAI-compatible facade, the LangGraph-compatible server, and ACP/A2A/AG-UI
155
+ facades. Point first-party clients at:
156
156
 
157
157
  ```text
158
- http://127.0.0.1:8641
158
+ http://127.0.0.1:56789/runtime/v1
159
159
  ```
160
160
 
161
161
  Point OpenAI-compatible clients at:
162
162
 
163
163
  ```text
164
- http://127.0.0.1:8642/v1
164
+ http://127.0.0.1:56789/protocols/openai/v1
165
165
  ```
166
166
 
167
167
  Use this path when an existing product or evaluation harness already speaks
168
168
  OpenAI-compatible chat completions. Stable Harness still owns workspace loading,
169
169
  runtime events, tool-gateway policy, memory lifecycle, and adapter selection.
170
170
 
171
- ## Stable Runtime HTTP + SSE
171
+ ## native runtime HTTP + SSE
172
172
 
173
- Use Stable Runtime HTTP + SSE when the caller needs Stable Harness concepts
173
+ Use native runtime HTTP + SSE when the caller needs Stable Harness concepts
174
174
  directly: request IDs, sessions, traces, spans, approvals, cancellation,
175
175
  artifacts, memory lifecycle, runtime inspection, and real-time control-plane
176
176
  updates.
@@ -180,16 +180,16 @@ compatible `/v1`, LangGraph-compatible, ACP, A2A, and AG-UI servers are
180
180
  ecosystem facades that map to this protocol instead of adding new runtime
181
181
  semantics.
182
182
 
183
- See [Stable Runtime HTTP + SSE](../protocols/http-runtime.md).
183
+ See [native runtime HTTP + SSE](../protocols/http-runtime.md).
184
184
 
185
185
  ## Client Connection Choices
186
186
 
187
187
  | Client kind | Recommended connection | When to use it |
188
188
  | --- | --- | --- |
189
189
  | CLI one-shot | `--runtime ...` plus `--protocol ...` | Use runtime mode for process selection and protocol mode for wire compatibility. |
190
- | CLI console | Same runtime and protocol options as one-shot CLI | Use `stable-runtime` for full slash-command operator features; use A2A/AG-UI/ACP for protocol turn testing. |
190
+ | CLI console | Same runtime and protocol options as one-shot CLI | Use `runtime` for full slash-command operator features; use A2A/AG-UI/ACP for protocol turn testing. |
191
191
  | Embedded app | SDK / in-process runtime | Use when the application owns the process lifecycle. |
192
- | First-party UI | Stable Runtime HTTP + SSE | Use for sessions, request inspection, approvals, artifacts, memory, traces, and cross-client realtime events. |
192
+ | First-party UI | native runtime HTTP + SSE | Use for sessions, request inspection, approvals, artifacts, memory, traces, and cross-client realtime events. |
193
193
  | OpenAI clients | OpenAI-compatible `/v1` | Use for existing chat-completion clients and evaluation harnesses. |
194
194
  | LangGraph Studio | LangGraph-compatible server | Use for LangGraph/LangSmith Studio workflows. |
195
195
  | A2A clients | A2A facade | Use when the caller already speaks A2A task/message APIs. |
@@ -200,36 +200,37 @@ Session support is intentionally layered:
200
200
 
201
201
  | Surface | Session level |
202
202
  | --- | --- |
203
- | Stable Runtime HTTP + SSE | Full operator session API: request history, events, deletion, memory, approvals, and inspection. |
203
+ | native runtime HTTP + SSE | Full operator session API: request history, events, deletion, memory, approvals, and inspection. |
204
204
  | SDK / in-process runtime | Full operator session API through `StableHarnessRuntime`. |
205
205
  | OpenAI-compatible `/v1` | Chat continuity through session headers or metadata. |
206
- | LangGraph-compatible | Maps LangGraph `thread_id` to Stable Runtime `sessionId`. |
207
- | A2A | Maps A2A `contextId` or `taskId` to Stable Runtime `sessionId`. |
208
- | AG-UI | Maps AG-UI `threadId` or `sessionId` to Stable Runtime `sessionId`. |
209
- | ACP HTTP JSON-RPC | Uses ACP `session/*` methods and maps `sessionId` to Stable Runtime. |
206
+ | LangGraph-compatible | Maps LangGraph `thread_id` to native runtime `sessionId`. |
207
+ | A2A | Maps A2A `contextId` or `taskId` to native runtime `sessionId`. |
208
+ | AG-UI | Maps AG-UI `threadId` or `sessionId` to native runtime `sessionId`. |
209
+ | ACP HTTP JSON-RPC | Uses ACP `session/*` methods and maps `sessionId` to native runtime. |
210
210
 
211
211
  Protocol facades preserve continuity for their ecosystems, but they do not
212
- replace the Stable Runtime operator API.
212
+ replace the native runtime operator API.
213
213
 
214
214
  ## ACP, A2A, and AG-UI Facades
215
215
 
216
- Enable the combined agent protocol server when an external client already
217
- speaks one of these protocols:
216
+ Enable the protocol server that matches the external client:
218
217
 
219
218
  ```yaml
220
219
  apiVersion: stable-harness.dev/v1
221
220
  kind: Runtime
222
221
  spec:
223
222
  protocols:
224
- agentProtocols:
223
+ gateway:
225
224
  enabled: true
226
225
  host: 127.0.0.1
227
- port: 8650
228
- protocols: [acp, a2a, agui]
226
+ port: 56789
227
+ a2a:
228
+ enabled: true
229
229
  ```
230
230
 
231
- The server exposes A2A over HTTP+JSON/SSE, AG-UI over HTTP+SSE, and ACP over a
232
- documented HTTP JSON-RPC custom transport. Local ACP clients can also launch:
231
+ Stable Harness exposes A2A over HTTP+JSON/SSE, AG-UI over HTTP+SSE, and ACP
232
+ over a documented HTTP JSON-RPC custom transport. Local ACP clients can also
233
+ launch:
233
234
 
234
235
  ```bash
235
236
  stable-harness acp-stdio -w ./workspace
@@ -237,7 +238,7 @@ stable-harness acp-stdio -w ./workspace
237
238
 
238
239
  The stdio entrypoint accepts one JSON-RPC message per line and reuses the same
239
240
  ACP method handler as the HTTP endpoint. See
240
- [ACP, A2A, and AG-UI Protocol Facades](../protocols/agent-protocols.md).
241
+ [ACP, A2A, and AG-UI Protocol Facades](../protocols/protocol-facades.md).
241
242
 
242
243
  ## Backend Adapters
243
244
 
@@ -68,7 +68,8 @@ stable-harness -w ./workspace --agent orchestra --trace "Use the echo tool with
68
68
  Start:
69
69
 
70
70
  ```bash
71
- stable-harness start -w ./workspace --host 127.0.0.1 --port 8642
71
+ stable-harness start -w ./workspace --host 127.0.0.1
72
+ stable-harness serve -w ./workspace --host 127.0.0.1
72
73
  ```
73
74
 
74
75
  Stop:
@@ -77,10 +78,57 @@ Stop:
77
78
  stable-harness stop -w ./workspace
78
79
  ```
79
80
 
80
- Use `STABLE_HARNESS_OPENAI_HOST`, `STABLE_HARNESS_OPENAI_PORT`, and
81
- `STABLE_HARNESS_OPENAI_API_KEY` when the server is managed by an environment
81
+ The default daemon port is the Stable Harness gateway on `56789`. Use
82
+ `STABLE_HARNESS_HOST`, `STABLE_HARNESS_PORT`, `STABLE_HARNESS_GATEWAY_PORT`,
83
+ and `STABLE_HARNESS_API_KEY` when the server is managed by an environment
82
84
  wrapper.
83
85
 
86
+ ## Inspect System Data
87
+
88
+ Daemon mode uses the workspace-local `runtime.dataRoot`, defaulting to
89
+ `.stable-harness`, for runtime-owned system data:
90
+
91
+ ```text
92
+ .stable-harness/
93
+ manifest.json
94
+ control-plane/stable.sqlite
95
+ artifacts/
96
+ memory/langmem/langmem.sqlite
97
+ checkpoints/deepagents.sqlite
98
+ store/deepagents.sqlite
99
+ langgraph/
100
+ logs/
101
+ tmp/
102
+ ```
103
+
104
+ `control-plane/stable.sqlite` is the daemon default for runs, events, sessions,
105
+ approvals, queue state, recovery intents, and artifact metadata. Artifact
106
+ content is stored under `artifacts/`. JSON stores remain available for tests,
107
+ debugging, import, and export, but they are not the daemon default because they
108
+ rewrite whole documents and do not provide indexed concurrent control-plane
109
+ queries.
110
+
111
+ Inspect the resolved paths:
112
+
113
+ ```bash
114
+ stable-harness data inspect -w ./workspace
115
+ ```
116
+
117
+ Run non-destructive diagnostics:
118
+
119
+ ```bash
120
+ stable-harness data doctor -w ./workspace
121
+ ```
122
+
123
+ Clean only generated temporary files:
124
+
125
+ ```bash
126
+ stable-harness data gc -w ./workspace
127
+ ```
128
+
129
+ `langgraph/` is a generated compatibility projection for LangGraph and
130
+ LangSmith clients. It is not the Stable Harness source of truth.
131
+
84
132
  ## Read Runtime Evidence
85
133
 
86
134
  Prefer structured runtime evidence over final prose:
@@ -23,8 +23,8 @@ stable-harness agent render orchestra -w ./examples/minimal-deepagents
23
23
  Start the protocol facade:
24
24
 
25
25
  ```bash
26
- stable-harness start -w ./examples/minimal-deepagents --port 8642
27
- curl -fsS http://127.0.0.1:8642/v1/models
26
+ stable-harness start -w ./examples/minimal-deepagents
27
+ curl -fsS http://127.0.0.1:56789/protocols/openai/v1/models
28
28
  ```
29
29
 
30
30
  Package the same workspace as a portable Docker runtime:
@@ -32,8 +32,8 @@ Package the same workspace as a portable Docker runtime:
32
32
  ```bash
33
33
  stable-harness build --target docker -w ./examples/minimal-deepagents --output ./dist/workspace-docker
34
34
  cd ./dist/workspace-docker
35
- STABLE_HARNESS_PORT=8642 docker compose up --build
36
- curl -fsS http://127.0.0.1:8642/v1/models
35
+ STABLE_HARNESS_PORT=56789 docker compose up --build
36
+ curl -fsS http://127.0.0.1:56789/protocols/openai/v1/models
37
37
  ```
38
38
 
39
39
  ## What The Proof Shows
@@ -35,9 +35,9 @@ spec:
35
35
  defaultAgentId: orchestra
36
36
  protocols:
37
37
  inProcess: true
38
- openaiCompatible:
38
+ gateway:
39
39
  host: 127.0.0.1
40
- port: 8642
40
+ port: 56789
41
41
  ```
42
42
 
43
43
  Keep runtime config typed and explicit. Do not route by prompt keywords, tool
@@ -40,7 +40,7 @@ http://127.0.0.1:3000/v1
40
40
  Use another host port if `3000` is already allocated:
41
41
 
42
42
  ```bash
43
- STABLE_HARNESS_PORT=8642 docker compose up --build
43
+ STABLE_HARNESS_PORT=56789 docker compose up --build
44
44
  ```
45
45
 
46
46
  ## Persistence
@@ -58,12 +58,12 @@ application that defines it.
58
58
  ## Versioning
59
59
 
60
60
  The Dockerfile pins the Stable Harness package version used by the build
61
- command. It installs that package into an isolated `/stable-runtime` npm project
61
+ command. It installs that package into an isolated `/stable-harness-runtime` npm project
62
62
  so runtime dependencies resolve like a normal application install:
63
63
 
64
64
  ```dockerfile
65
65
  ARG STABLE_HARNESS_PACKAGE=stable-harness@<current package version>
66
- WORKDIR /stable-runtime
66
+ WORKDIR /stable-harness-runtime
67
67
  RUN npm init -y && npm install "${STABLE_HARNESS_PACKAGE}"
68
68
  ```
69
69
 
@@ -436,8 +436,17 @@ easynet:user:e2e-user:user
436
436
 
437
437
  ```text
438
438
  config/memory/ # Memory YAML
439
+ .stable-harness/manifest.json # system data manifest
440
+ .stable-harness/control-plane/stable.sqlite
441
+ # runs/events/sessions/approvals/queue/artifact metadata
439
442
  .stable-harness/memory/langmem/ # generated LangMem data
440
443
  .stable-harness/memory/langmem/e2e/ # disposable E2E SQLite
444
+ .stable-harness/checkpoints/deepagents.sqlite
445
+ # DeepAgents checkpoint substrate
446
+ .stable-harness/store/deepagents.sqlite # DeepAgents/LangGraph Store substrate
447
+ .stable-harness/artifacts/ # artifact content files
448
+ .stable-harness/langgraph/ # generated LangGraph compatibility projection
449
+ .stable-harness/tmp/ # generated temporary files
441
450
  ```
442
451
 
443
452
  EasyNet:
@@ -452,6 +461,17 @@ config/memory/ # Memory YAML
452
461
 
453
462
  生成数据不提交到 git。
454
463
 
464
+ daemon 默认使用 SQLite 作为 control-plane 存储。JSON store 只保留为测试、
465
+ debug、import/export 形态,不作为长期运行 daemon 的默认持久化后端。
466
+ 原因是 JSON 文件追加事件时需要重写整份文档,缺少并发事务和索引查询。
467
+
468
+ LangMem 的 vector 数据属于召回索引,不是唯一事实源。事实源仍然是
469
+ `memory_records`;`memory_vectors` 可以由事实记录和 embedding model 重建。
470
+ 本地默认可以使用 SQLite 中的 embedding JSON + cosine search;当 memory
471
+ 规模、tenant 数量、artifact/trace recall 规模上升时,可以接入 Qdrant、
472
+ LanceDB、pgvector、Chroma 或 Pinecone provider,但 Stable Harness runtime
473
+ 不绑定某一个外部 vector database。
474
+
455
475
  ## SQLite Schema
456
476
 
457
477
  LangMem SQLite service 当前维护两张表:
@@ -135,7 +135,7 @@ flowchart TD
135
135
  - `deepagents.memory` 透传为 `createDeepAgent({ memory })`。
136
136
  - `deepagents.skills` 透传为 `createDeepAgent({ skills })`。
137
137
  - `deepagents.backend`、`store`、`checkpointer`、`middleware`、`permissions` 透传。
138
- - 真实 `deepagents@1.9.1` + 远端 Ollama `granite4.1:3b` 默认路径仍通过。
138
+ - 真实 `deepagents@1.9.1` + 远端 Ollama `qwen3.5:4b` 默认路径仍通过。
139
139
 
140
140
  验证命令:
141
141
 
@@ -165,5 +165,5 @@ npm run test:botbotgo:full
165
165
  - `npm test` 通过:18 个 contract tests,7 个 real integration tests。
166
166
  - `test:botbotgo:full` 通过:8/8 matrix cases。
167
167
  - full matrix 明确使用 EasyNet package-local `node_modules/.bin/botbotgo`。
168
- - 真实模型路径为 EasyNet 配置的远端 Ollama `granite4.1:3b`。
168
+ - 真实模型路径为 EasyNet 配置的远端 Ollama `qwen3.5:4b`。
169
169
  - 覆盖 owner:orchestra、software、qa、ops、release、research、secretary、k8s。
@@ -84,7 +84,7 @@ flowchart TD
84
84
  - DeepAgents native memory config 仍透传给 upstream,不产生 prompt 注入。
85
85
  - adapter 仍通过 upstream `createDeepAgent` 路径执行。
86
86
  - stable runtime 仍不暴露 DeepAgents `/memories/`。
87
- - 安装 `deepagents@1.9.1` 后,adapter 默认路径真实 import 上游包并使用远端 Ollama `granite4.1:3b` 完成一次真实调用。
87
+ - 安装 `deepagents@1.9.1` 后,adapter 默认路径真实 import 上游包并使用远端 Ollama `qwen3.5:4b` 完成一次真实调用。
88
88
 
89
89
  验证命令:
90
90
 
@@ -109,8 +109,8 @@ npm run test:botbotgo:full
109
109
  - `npm test` 通过:18 个 contract tests,7 个 real integration tests。
110
110
  - `test:botbotgo:full` 通过:8/8 matrix cases。
111
111
  - full matrix 明确使用 EasyNet package-local `node_modules/.bin/botbotgo`。
112
- - 真实模型路径为 EasyNet 配置的远端 Ollama `granite4.1:3b`。
113
- - stable-harness 自身测试真实调用 `deepagents@1.9.1` + `@langchain/ollama` + `https://ollama-rtx-4070.easynet.world/`。
112
+ - 真实模型路径为 EasyNet 配置的远端 Ollama `qwen3.5:4b`。
113
+ - stable-harness 自身测试真实调用 `deepagents@1.9.1` + `@langchain/ollama` + `https://ollama-rtx-4070.easynet.world/v1`。
114
114
  - 覆盖 owner:orchestra、software、qa、ops、release、research、secretary、k8s。
115
115
  - 覆盖真实工具/数据路径:finance stock report、source analysis、disk investigation、Git/GitHub Actions、Kubernetes readonly investigation、CLI routing。
116
116
 
@@ -153,7 +153,7 @@ npm run test:botbotgo:full
153
153
 
154
154
  - EasyNet 使用 `file:../stable-harness` 依赖当前本地 runtime。
155
155
  - botbotgo full matrix 明确使用 EasyNet package-local `node_modules/.bin/botbotgo`。
156
- - 模型路径为远端 Ollama `granite4.1:3b`,配置来自 EasyNet `config/models.yaml`。
156
+ - 模型路径为远端 Ollama `qwen3.5:4b`,配置来自 EasyNet `config/models.yaml`。
157
157
  - `npm test` 通过:18 个 contract tests,7 个 real integration tests。
158
158
  - `test:botbotgo:full` 通过:8/8 matrix cases。
159
159
  - 覆盖 owner:orchestra、software、qa、ops、release、research、secretary、k8s。
@@ -130,7 +130,7 @@ npm run test:botbotgo:full
130
130
  - `npm test` 通过:18 个 contract tests,7 个 real integration tests。
131
131
  - `test:botbotgo:full` 通过:8/8 matrix cases。
132
132
  - full matrix 明确使用 EasyNet package-local `node_modules/.bin/botbotgo`。
133
- - 真实模型路径为 EasyNet 配置的远端 Ollama `granite4.1:3b`。
133
+ - 真实模型路径为 EasyNet 配置的远端 Ollama `qwen3.5:4b`。
134
134
  - 覆盖 owner:orchestra、software、qa、ops、release、research、secretary、k8s。
135
135
  - 覆盖真实工具/数据路径:finance stock report、source analysis、disk investigation、Git/GitHub Actions、Kubernetes readonly investigation、CLI routing。
136
136
 
@@ -136,7 +136,7 @@ npm run test:botbotgo:full
136
136
  - `npm test` 通过:18 个 contract tests,7 个 real integration tests。
137
137
  - `test:botbotgo:full` 通过:8/8 matrix cases。
138
138
  - full matrix 明确使用 EasyNet package-local `node_modules/.bin/botbotgo`。
139
- - 真实模型路径为 EasyNet 配置的远端 Ollama `granite4.1:3b`。
139
+ - 真实模型路径为 EasyNet 配置的远端 Ollama `qwen3.5:4b`。
140
140
  - 覆盖 owner:orchestra、software、qa、ops、release、research、secretary、k8s。
141
141
  - 覆盖真实工具/数据路径:finance stock report、source analysis、disk investigation、Git/GitHub Actions、Kubernetes readonly investigation、CLI routing。
142
142
 
@@ -113,6 +113,6 @@ npm run test:botbotgo:full
113
113
  - `npm test` 通过:18 个 contract tests,7 个 real integration tests。
114
114
  - `test:botbotgo:full` 通过:8/8 matrix cases。
115
115
  - full matrix 明确使用 EasyNet package-local `node_modules/.bin/botbotgo`。
116
- - 真实模型路径为 EasyNet 配置的远端 Ollama `granite4.1:3b`。
116
+ - 真实模型路径为 EasyNet 配置的远端 Ollama `qwen3.5:4b`。
117
117
  - 覆盖 owner:orchestra、software、qa、ops、release、research、secretary、k8s。
118
118
  - 覆盖真实工具/数据路径:finance stock report、source analysis、disk investigation、Git/GitHub Actions、Kubernetes readonly investigation、CLI routing。
@@ -105,7 +105,7 @@ npm run test:botbotgo:full
105
105
  - `npm test` 通过:18 个 contract tests,7 个 real integration tests。
106
106
  - `test:botbotgo:full` 通过:8/8 matrix cases。
107
107
  - full matrix 明确使用 EasyNet package-local `node_modules/.bin/botbotgo`。
108
- - 真实模型路径为 EasyNet 配置的远端 Ollama `granite4.1:3b`。
108
+ - 真实模型路径为 EasyNet 配置的远端 Ollama `qwen3.5:4b`。
109
109
  - 覆盖 owner:orchestra、software、qa、ops、release、research、secretary、k8s。
110
110
  - 覆盖真实工具/数据路径:finance stock report、source analysis、disk investigation、Git/GitHub Actions、Kubernetes readonly investigation、CLI routing。
111
111