@sema-agent/settings-schema 10.1.0 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (235) hide show
  1. package/CHANGELOG.md +419 -0
  2. package/README.md +141 -65
  3. package/bin/settings-schema.mjs +13 -6
  4. package/conformance/VERSION +1 -1
  5. package/conformance/baseline.json +3 -1
  6. package/conformance/cases/c01-entry-salvage-then-typo/expected.json +3 -1
  7. package/conformance/cases/c02-hosts-clamp-stacked/expected.json +12 -5
  8. package/conformance/cases/c02-hosts-clamp-stacked/meta.json +1 -1
  9. package/conformance/cases/c03-literal-dotted-top-key/expected.json +22 -2
  10. package/conformance/cases/c04-all-bad-collection-not-salvaged/expected.json +3 -1
  11. package/conformance/cases/c06-legacy-governance-lift/expected.json +11 -101
  12. package/conformance/cases/c06-legacy-governance-lift/meta.json +1 -1
  13. package/conformance/cases/c07-hooks-is-not-a-config-domain/expected.json +3 -1
  14. package/conformance/cases/c08-limits-unknown-carried-64/expected.json +203 -2
  15. package/conformance/cases/c09-limits-unknown-carried-65/expected.json +204 -2
  16. package/conformance/cases/c10-record-key-secret-redacted-twice/expected.json +3 -1
  17. package/conformance/cases/c11-unicode-unknown-keys/expected.json +20 -2
  18. package/conformance/cases/c12-prototype-name-top-keys/expected.json +3 -1
  19. package/conformance/cases/c13-models-field-null/expected.json +3 -1
  20. package/conformance/cases/c14-models-field-empty-array/expected.json +6 -1
  21. package/conformance/cases/c15-models-field-number/expected.json +3 -1
  22. package/conformance/cases/c16-deep-nesting-205/expected.json +14 -2
  23. package/conformance/cases/c17-empty-domain-file/expected.json +3 -1
  24. package/conformance/cases/c18-wire-envelope-not-an-object/expected.json +3 -1
  25. package/conformance/cases/c19-wire-envelope-no-version/expected.json +3 -1
  26. package/conformance/cases/c20-governance-absent-lifts/expected.json +11 -86
  27. package/conformance/cases/c20-governance-absent-lifts/meta.json +1 -1
  28. package/conformance/cases/c21-governance-empty-object-wins/expected.json +6 -5
  29. package/conformance/cases/c21-governance-empty-object-wins/input.json +1 -4
  30. package/conformance/cases/c21-governance-empty-object-wins/meta.json +1 -1
  31. package/conformance/cases/c23-mixed-validity-models/expected.json +3 -1
  32. package/conformance/cases/c24-valid-entries-with-unknown-keys/expected.json +22 -2
  33. package/conformance/cases/c25-published-roundtrip-zero-warnings/expected.json +6 -1
  34. package/conformance/cases/c26-hosts-array-1024/expected.json +3 -1
  35. package/conformance/cases/c27-hosts-array-1025/expected.json +6 -7175
  36. package/conformance/cases/c27-hosts-array-1025/meta.json +1 -1
  37. package/conformance/cases/c28-large-document-over-1mb/expected.json +14 -2
  38. package/conformance/cases/c29-salvage-then-domain-refine-fails/expected.json +3 -1
  39. package/conformance/cases/c30-version-triple-a-first/expected.json +6 -1
  40. package/conformance/cases/c31-version-triple-b-changed/expected.json +6 -1
  41. package/conformance/cases/c32-version-triple-a-restored/expected.json +6 -1
  42. package/conformance/cases/c33-limits-nested-carried-key/expected.json +18 -2
  43. package/conformance/cases/c34-skills-content-vs-manifest/expected.json +19 -3
  44. package/conformance/cases/c35-portable-domain-file-is-null/expected.json +3 -1
  45. package/conformance/cases/c36-skills-entry-without-content/expected.json +6 -2
  46. package/conformance/cases/c37-skills-field-null/expected.json +6 -2
  47. package/conformance/cases/c38-remote-exec-is-a-non-domain-file/expected.json +3 -1
  48. package/conformance/cases/c39-hidden-file-in-config-d/expected.json +3 -1
  49. package/conformance/cases/c40-s712-identity-only-what-reads-out/expected.json +11 -4
  50. package/conformance/cases/c41-s792-encoded-pem-identity/expected.json +9 -3
  51. package/conformance/cases/c42-s792-unknown-key-secret-redacted/expected.json +39 -2
  52. package/conformance/cases/c43-s792-form-and-deep-encoded-pem/expected.json +4 -1
  53. package/conformance/cases/c44-s792-utf8-escape-glued-token/expected.json +3 -1
  54. package/conformance/cases/c45-s792-identity-bounds-and-decode-depth/expected.json +19 -10
  55. package/conformance/cases/c45-s792-identity-bounds-and-decode-depth/meta.json +1 -1
  56. package/conformance/cases/{c46-s811-host-name-url-userinfo-characterization → c46-s811-host-name-url-userinfo-withheld}/expected.json +12 -5
  57. package/conformance/cases/c46-s811-host-name-url-userinfo-withheld/meta.json +9 -0
  58. package/conformance/cases/{c47-s811-roles-key-url-userinfo-characterization → c47-s811-roles-key-url-userinfo-withheld}/expected.json +23 -3
  59. package/conformance/cases/{c47-s811-roles-key-url-userinfo-characterization → c47-s811-roles-key-url-userinfo-withheld}/input.json +6 -0
  60. package/conformance/cases/c47-s811-roles-key-url-userinfo-withheld/meta.json +10 -0
  61. package/conformance/cases/c48-s935-model-headers-transported/expected.json +6 -1
  62. package/conformance/cases/c49-s935-model-headers-secret-entry-dropped/expected.json +3 -1
  63. package/conformance/cases/c50-s784-lane-host-legal/expected.json +3 -1
  64. package/conformance/cases/c51-s784-lane-e2b-legal/expected.json +3 -1
  65. package/conformance/cases/c52-s784-lane-k8s-legal/expected.json +3 -1
  66. package/conformance/cases/c53-s784-lane-ssh-legal/expected.json +3 -1
  67. package/conformance/cases/c54-s784-lane-adb-legal/expected.json +3 -1
  68. package/conformance/cases/c55-s784-lane-local-docker-legal/expected.json +3 -1
  69. package/conformance/cases/c56-s784-lane-device-legal/expected.json +3 -1
  70. package/conformance/cases/c57-s784-g1-enabled-no-lane/expected.json +3 -1
  71. package/conformance/cases/c58-s784-g2-multitenant-host/expected.json +3 -1
  72. package/conformance/cases/c59-s784-g3-k8s-missing-image/expected.json +3 -1
  73. package/conformance/cases/c60-s784-g3-e2b-missing-key/expected.json +3 -1
  74. package/conformance/cases/c61-s784-g3-other-lane-key/expected.json +3 -1
  75. package/conformance/cases/c62-s784-g7a-session-tidb/expected.json +3 -1
  76. package/conformance/cases/c63-s784-host-two-replicas/expected.json +3 -1
  77. package/conformance/cases/c64-s784-multitenant-local-store/expected.json +3 -1
  78. package/conformance/cases/c65-s784-pg-without-db/expected.json +3 -1
  79. package/conformance/cases/c66-s784-memory-backend-mismatch/expected.json +3 -1
  80. package/conformance/cases/c67-s784-retired-field-loud/expected.json +3 -1
  81. package/conformance/cases/c67-s784-retired-field-loud/meta.json +1 -1
  82. package/conformance/cases/c68-s784-device-local-store/expected.json +3 -1
  83. package/conformance/cases/c69-deep-encoded-token-past-every-reading/expected.json +3 -1
  84. package/conformance/cases/c70-rewritten-token-in-front-of-encoded-pem-header/expected.json +3 -1
  85. package/conformance/cases/c71-one-scanner-write-reads-display-forms/expected.json +119 -0
  86. package/conformance/cases/c71-one-scanner-write-reads-display-forms/input.json +24 -0
  87. package/conformance/cases/c71-one-scanner-write-reads-display-forms/meta.json +10 -0
  88. package/conformance/cases/c72-dangling-reference-write-seat-refuses/expected.json +111 -0
  89. package/conformance/cases/c72-dangling-reference-write-seat-refuses/input.json +26 -0
  90. package/conformance/cases/c72-dangling-reference-write-seat-refuses/meta.json +6 -0
  91. package/conformance/cases/cc01-mcp-toolfaces-non-object/expected.json +3 -1
  92. package/conformance/cases/cc02-mcp-source-key-is-transported/expected.json +3 -1
  93. package/conformance/cases/cc03-model-compat-unknown-subkey/expected.json +6 -1
  94. package/conformance/cases/cli01-model-name-nfc-vs-nfd/expected.json +11 -1
  95. package/conformance/cases/cli02-control-and-zero-width-chars/expected.json +11 -1
  96. package/conformance/cases/cli03-credential-pasted-into-unknown-key/expected.json +16 -2
  97. package/conformance/cases/cli04-env-value-with-newline/expected.json +3 -1
  98. package/conformance/cases/cli05-long-and-prefix-colliding-names/expected.json +6 -1
  99. package/conformance/cases/t01-absent-domain-key-not-null/expected.json +3 -1
  100. package/conformance/cases/t03-prototype-name-key-not-swallowed/expected.json +29 -2
  101. package/conformance/cases/t04-secret-literal-never-in-warning-value/expected.json +3 -1
  102. package/conformance/cases/z01-every-domain-empty-object/expected.json +8 -4
  103. package/conformance/cases/z01-every-domain-empty-object/input.json +0 -1
  104. package/conformance/cases/z01-every-domain-empty-object/meta.json +1 -1
  105. package/conformance/cases/z02-every-domain-unknown-key/expected.json +163 -23
  106. package/conformance/cases/z02-every-domain-unknown-key/input.json +0 -3
  107. package/conformance/cases/z02-every-domain-unknown-key/meta.json +1 -1
  108. package/dist/api/auth-bridge.d.ts +51 -181
  109. package/dist/api/auth-bridge.js +58 -33
  110. package/dist/api/auth.d.ts +37 -146
  111. package/dist/api/auth.js +16 -26
  112. package/dist/api/feedback.d.ts +87 -0
  113. package/dist/api/feedback.js +66 -0
  114. package/dist/api/pull-token.d.ts +32 -0
  115. package/dist/api/pull-token.js +88 -0
  116. package/dist/api/scopes.d.ts +82 -174
  117. package/dist/api/scopes.js +23 -18
  118. package/dist/bundle.d.ts +15 -7
  119. package/dist/bundle.js +28 -27
  120. package/dist/cli.d.ts +3 -1
  121. package/dist/cli.js +132 -81
  122. package/dist/config-d-file.d.ts +14 -0
  123. package/dist/config-d-file.js +67 -0
  124. package/dist/config-fns.d.ts +87 -186
  125. package/dist/config-fns.js +207 -262
  126. package/dist/conformance/contract-adapter.d.ts +9 -2
  127. package/dist/conformance/contract-adapter.js +15 -7
  128. package/dist/conformance/corpus.d.ts +3 -0
  129. package/dist/conformance/corpus.js +5 -0
  130. package/dist/conformance/derive.d.ts +3 -0
  131. package/dist/conformance/index.d.ts +2 -2
  132. package/dist/conformance/index.js +2 -2
  133. package/dist/conformance/run.js +67 -22
  134. package/dist/conformance/types.d.ts +31 -15
  135. package/dist/conformance/types.js +5 -0
  136. package/dist/conformance/warnings.d.ts +1 -1
  137. package/dist/conformance/warnings.js +1 -4
  138. package/dist/cross-domain.d.ts +66 -22
  139. package/dist/cross-domain.js +164 -93
  140. package/dist/cross-session.d.ts +29 -11
  141. package/dist/default-model.d.ts +43 -0
  142. package/dist/default-model.js +34 -0
  143. package/dist/execution-lane-index.d.ts +4 -8
  144. package/dist/execution-lane-index.js +4 -8
  145. package/dist/execution-lanes.d.ts +31 -8
  146. package/dist/execution-lanes.js +23 -5
  147. package/dist/file-edit.js +5 -2
  148. package/dist/file-store.d.ts +7 -6
  149. package/dist/file-store.js +37 -50
  150. package/dist/fleet.d.ts +364 -762
  151. package/dist/fleet.js +277 -224
  152. package/dist/hooks.d.ts +1151 -4737
  153. package/dist/hooks.js +59 -15
  154. package/dist/index.d.ts +10 -4
  155. package/dist/index.js +13 -7
  156. package/dist/integer.d.ts +11 -0
  157. package/dist/integer.js +11 -0
  158. package/dist/issue-path.d.ts +10 -0
  159. package/dist/issue-path.js +10 -0
  160. package/dist/loopback.d.ts +26 -0
  161. package/dist/loopback.js +54 -0
  162. package/dist/migration-receipt.d.ts +42 -0
  163. package/dist/migration-receipt.js +12 -0
  164. package/dist/one-time-migrations.d.ts +56 -0
  165. package/dist/one-time-migrations.js +819 -0
  166. package/dist/prompts-digest.d.ts +1 -1
  167. package/dist/prompts-digest.js +3 -2
  168. package/dist/reader.d.ts +2 -2
  169. package/dist/remote-exec.d.ts +45 -187
  170. package/dist/remote-exec.js +13 -7
  171. package/dist/resolve-roster.d.ts +18 -3
  172. package/dist/resolve-roster.js +28 -25
  173. package/dist/retired-envs.d.ts +24 -0
  174. package/dist/retired-envs.js +114 -0
  175. package/dist/retired-form.d.ts +31 -0
  176. package/dist/retired-form.js +28 -0
  177. package/dist/safety-merge-spec.d.ts +131 -191
  178. package/dist/safety-merge-spec.js +18 -14
  179. package/dist/scheduler-lifetime.d.ts +5 -0
  180. package/dist/scheduler-lifetime.js +7 -0
  181. package/dist/scheduler-store-migration.d.ts +14 -0
  182. package/dist/scheduler-store-migration.js +14 -0
  183. package/dist/scheduler-store-node.d.ts +24 -9
  184. package/dist/scheduler-store-node.js +25 -15
  185. package/dist/scheduler-store.d.ts +47 -14
  186. package/dist/scheduler-store.js +32 -61
  187. package/dist/secret-refs.d.ts +3 -3
  188. package/dist/secret-refs.js +1 -1
  189. package/dist/secret-scan.d.ts +14 -24
  190. package/dist/secret-scan.js +45 -23
  191. package/dist/sha256-core.d.ts +16 -0
  192. package/dist/sha256-core.js +138 -0
  193. package/dist/sha256.d.ts +6 -1
  194. package/dist/sha256.js +8 -98
  195. package/dist/skills-manifest.js +1 -1
  196. package/dist/types.d.ts +1501 -13536
  197. package/dist/types.js +494 -438
  198. package/dist/url-shape.d.ts +34 -0
  199. package/dist/url-shape.js +61 -0
  200. package/dist/web-admin-credential.d.ts +96 -0
  201. package/dist/{center-credential.js → web-admin-credential.js} +46 -43
  202. package/dist/web-admin-env.d.ts +33 -0
  203. package/dist/web-admin-env.js +33 -0
  204. package/dist/worker-row-verdict.d.ts +16 -0
  205. package/dist/worker-row-verdict.js +31 -0
  206. package/dist/workers-rows.d.ts +34 -0
  207. package/dist/workers-rows.js +42 -0
  208. package/dist/zod-unwrap.d.ts +11 -0
  209. package/dist/zod-unwrap.js +25 -0
  210. package/package.json +17 -9
  211. package/conformance/cases/c46-s811-host-name-url-userinfo-characterization/meta.json +0 -6
  212. package/conformance/cases/c47-s811-roles-key-url-userinfo-characterization/meta.json +0 -6
  213. package/conformance/migrate-workers/m01-g5-k8s-env-lifted/expected.json +0 -49
  214. package/conformance/migrate-workers/m01-g5-k8s-env-lifted/input.json +0 -26
  215. package/conformance/migrate-workers/m01-g5-k8s-env-lifted/meta.json +0 -4
  216. package/conformance/migrate-workers/m02-g5-idempotent/expected.json +0 -38
  217. package/conformance/migrate-workers/m02-g5-idempotent/input.json +0 -33
  218. package/conformance/migrate-workers/m02-g5-idempotent/meta.json +0 -5
  219. package/conformance/migrate-workers/m03-g5-refused-no-lane/expected.json +0 -71
  220. package/conformance/migrate-workers/m03-g5-refused-no-lane/input.json +0 -42
  221. package/conformance/migrate-workers/m03-g5-refused-no-lane/meta.json +0 -4
  222. package/conformance/migrate-workers/m04-g7b-session-tidb-lifted/expected.json +0 -52
  223. package/conformance/migrate-workers/m04-g7b-session-tidb-lifted/input.json +0 -30
  224. package/conformance/migrate-workers/m04-g7b-session-tidb-lifted/meta.json +0 -4
  225. package/conformance/migrate-workers/m05-row-verdict-reserved-env/expected.json +0 -82
  226. package/conformance/migrate-workers/m05-row-verdict-reserved-env/input.json +0 -68
  227. package/conformance/migrate-workers/m05-row-verdict-reserved-env/meta.json +0 -4
  228. package/dist/center-credential.d.ts +0 -116
  229. package/dist/issue-text.d.ts +0 -10
  230. package/dist/issue-text.js +0 -8
  231. package/dist/migrate-workers.d.ts +0 -71
  232. package/dist/migrate-workers.js +0 -351
  233. package/dist/migrate.d.ts +0 -255
  234. package/dist/migrate.js +0 -542
  235. /package/conformance/cases/{c46-s811-host-name-url-userinfo-characterization → c46-s811-host-name-url-userinfo-withheld}/input.json +0 -0
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sema-agent/settings-schema",
3
- "version": "10.1.0",
4
- "description": "Sema settings schema — pure config contract (zod domains + effective-config + roster resolution + ref-integrity + remoteExec) shared by sema-registry, sema-server, and the TOC desktop/CLI. One source of truth. (Renamed at 1.0.0 from @sema-agent/registry-core — name and docs only, no behavior change; note the range moves 0.19.0 -> 1.0.0, so a dependency must become ^1.0.0. The old names @sema-agent/registry-core <=0.19.0 and @sema-ai/registry-core remain published, frozen, for migration.)",
3
+ "version": "11.0.0",
4
+ "description": "Sema settings schema — pure config contract (zod domains + effective-config + roster resolution + ref-integrity + remoteExec) shared by sema-web-admin, sema-server, and the TOC desktop/CLI. One source of truth. (Renamed at 1.0.0 from @sema-agent/registry-core — name and docs only, no behavior change; note the range moves 0.19.0 -> 1.0.0, so a dependency must become ^1.0.0. The old names @sema-agent/registry-core <=0.19.0 and @sema-ai/registry-core remain published, frozen, for migration.)",
5
5
  "type": "module",
6
6
  "license": "BUSL-1.1",
7
7
  "repository": {
@@ -84,6 +84,10 @@
84
84
  "types": "./dist/node.d.ts",
85
85
  "default": "./dist/node.js"
86
86
  },
87
+ "./one-time-migrations": {
88
+ "types": "./dist/one-time-migrations.d.ts",
89
+ "default": "./dist/one-time-migrations.js"
90
+ },
87
91
  "./scheduler-store": {
88
92
  "types": "./dist/scheduler-store.d.ts",
89
93
  "default": "./dist/scheduler-store.js"
@@ -96,10 +100,6 @@
96
100
  "types": "./dist/fleet.d.ts",
97
101
  "default": "./dist/fleet.js"
98
102
  },
99
- "./migrate": {
100
- "types": "./dist/migrate.d.ts",
101
- "default": "./dist/migrate.js"
102
- },
103
103
  "./api/auth": {
104
104
  "types": "./dist/api/auth.d.ts",
105
105
  "default": "./dist/api/auth.js"
@@ -111,6 +111,14 @@
111
111
  "./api/scopes": {
112
112
  "types": "./dist/api/scopes.d.ts",
113
113
  "default": "./dist/api/scopes.js"
114
+ },
115
+ "./api/pull-token": {
116
+ "types": "./dist/api/pull-token.d.ts",
117
+ "default": "./dist/api/pull-token.js"
118
+ },
119
+ "./api/feedback": {
120
+ "types": "./dist/api/feedback.d.ts",
121
+ "default": "./dist/api/feedback.js"
114
122
  }
115
123
  },
116
124
  "files": [
@@ -138,16 +146,16 @@
138
146
  "publish:npm": "npm publish --access public --@sema-agent:registry=https://registry.npmjs.org/ --\"//registry.npmjs.org/:_authToken=${NPM_TOKEN}\""
139
147
  },
140
148
  "devDependencies": {
141
- "@sema-agent/core": "7.33.1",
149
+ "@sema-agent/core": "7.47.0",
142
150
  "@types/node": "^22.10.0",
143
151
  "esbuild": "^0.21.5",
144
152
  "typescript": "^5.7.0",
145
153
  "vitest": "^2.1.0"
146
154
  },
147
155
  "dependencies": {
148
- "zod": "^3.24.0"
156
+ "zod": "^4.4.0"
149
157
  },
150
158
  "peerDependencies": {
151
- "zod": "^3.24.0"
159
+ "zod": "^4.4.0"
152
160
  }
153
161
  }
@@ -1,6 +0,0 @@
1
- {
2
- "contributor": "contract",
3
- "claim": "🚧 S-811 特征格(既有,非回归;本版刻意不修,设计随 S-809 三表归一):超长主机名 `https://admin:hunter2@hhh…h.com`(81 字)被 `hosts-grandfathered` 按名剔掉,`droppedNames` 的标签过出门那一道 —— 但那一道(`redactSecrets`)不查 URL userinfo,于是 63 字标签里原样带着 `admin:hunter2`。本条把**今天的读数**钉成金样:S-811 修后(自由文本面加 userinfo 判定)本条翻红 —— 届时金样改成 `droppedNames: [\"[redacted-secret]\"]`、meta.secrets 补上 `hunter2`,这一格就从特征钉变成护栏。",
4
- "firstRedOn": [],
5
- "note": "车PE(2026-09-27)按主会话令加(codex 验修腿 [high] S-811)。刻意**不**在 secrets 里登 `hunter2`:登了,告警面零命中门会把今天的现状判红 —— 现状要能如实入库,修复时一并补。"
6
- }
@@ -1,6 +0,0 @@
1
- {
2
- "contributor": "contract",
3
- "claim": "🚧 S-811 特征格(既有,非回归;本版刻意不修,设计随 S-809 三表归一):坏 roles 键 `https://admin:hunter2@db.example.com/x` 被逐条丢掉,坐标段与 zod 回显的 received / message 都只过 `redactSecrets`,它不查 URL userinfo,于是坐标 `[\"roles\", \"https://admin:hunter2@db.example.com/x\"]` 原样出门(错误句同带)。同一个串作身份 6.3.0 起不可披露(身份面有 userinfo 否决),自由文本面没有 —— 本条把今天的读数钉成金样:S-811 修后本条翻红,届时坐标段改成 `[redacted-secret]`、meta.secrets 补上 `hunter2`。",
4
- "firstRedOn": [],
5
- "note": "车PE(2026-09-27)按主会话令加(codex 验修腿 [high] S-811)。刻意**不**在 secrets 里登 `hunter2`(登了即判红今天的现状)。"
6
- }
@@ -1,49 +0,0 @@
1
- {
2
- "doc": {
3
- "workers": [
4
- {
5
- "name": "direct",
6
- "enabled": true,
7
- "host": "default",
8
- "image": "sema-server:latest",
9
- "secretRefs": {
10
- "apiKeyEnv": "MODEL_KEY"
11
- },
12
- "runtime": {
13
- "requirePrincipal": false,
14
- "rateLimitRpm": 0,
15
- "execution": {
16
- "lane": "k8s",
17
- "coords": {
18
- "K8S_SANDBOX_IMAGE": "registry.internal/sandbox@sha256:abc",
19
- "K8S_NAMESPACE": "sandboxes"
20
- },
21
- "secretRefs": {}
22
- },
23
- "store": {
24
- "backend": "local",
25
- "session": "auto"
26
- }
27
- },
28
- "coords": {},
29
- "env": {
30
- "LOG_LEVEL": "debug"
31
- }
32
- }
33
- ]
34
- },
35
- "changed": [
36
- "direct"
37
- ],
38
- "dropped": [
39
- {
40
- "name": "direct",
41
- "index": 0,
42
- "field": [
43
- "runtime",
44
- "memoryBackend"
45
- ]
46
- }
47
- ],
48
- "refused": []
49
- }
@@ -1,26 +0,0 @@
1
- {
2
- "workers": [
3
- {
4
- "name": "direct",
5
- "enabled": true,
6
- "host": "default",
7
- "image": "sema-server:latest",
8
- "secretRefs": {
9
- "apiKeyEnv": "MODEL_KEY"
10
- },
11
- "runtime": {
12
- "sessionBackend": "auto",
13
- "memoryBackend": "off",
14
- "requirePrincipal": false,
15
- "rateLimitRpm": 0
16
- },
17
- "coords": {},
18
- "env": {
19
- "REMOTE_EXEC": "k8s",
20
- "K8S_SANDBOX_IMAGE": "registry.internal/sandbox@sha256:abc",
21
- "K8S_NAMESPACE": "sandboxes",
22
- "LOG_LEVEL": "debug"
23
- }
24
- }
25
- ]
26
- }
@@ -1,4 +0,0 @@
1
- {
2
- "contributor": "contract",
3
- "claim": "G5 正臂:6.x 活舰队形(env.REMOTE_EXEC=k8s + 同车道 K8S_*)⇒ runtime.execution {lane: k8s, coords 搬入},env 里两键消失、非车道键留下;memoryBackend 进 dropped(从未生效);无 SQL 坐标 ⇒ store.backend local。"
4
- }
@@ -1,38 +0,0 @@
1
- {
2
- "doc": {
3
- "workers": [
4
- {
5
- "name": "direct",
6
- "enabled": true,
7
- "host": "default",
8
- "image": "sema-server:latest",
9
- "secretRefs": {
10
- "apiKeyEnv": "MODEL_KEY"
11
- },
12
- "runtime": {
13
- "requirePrincipal": false,
14
- "rateLimitRpm": 0,
15
- "execution": {
16
- "lane": "k8s",
17
- "coords": {
18
- "K8S_SANDBOX_IMAGE": "registry.internal/sandbox@sha256:abc",
19
- "K8S_NAMESPACE": "sandboxes"
20
- },
21
- "secretRefs": {}
22
- },
23
- "store": {
24
- "backend": "local",
25
- "session": "auto"
26
- }
27
- },
28
- "coords": {},
29
- "env": {
30
- "LOG_LEVEL": "debug"
31
- }
32
- }
33
- ]
34
- },
35
- "changed": [],
36
- "dropped": [],
37
- "refused": []
38
- }
@@ -1,33 +0,0 @@
1
- {
2
- "workers": [
3
- {
4
- "name": "direct",
5
- "enabled": true,
6
- "host": "default",
7
- "image": "sema-server:latest",
8
- "secretRefs": {
9
- "apiKeyEnv": "MODEL_KEY"
10
- },
11
- "runtime": {
12
- "requirePrincipal": false,
13
- "rateLimitRpm": 0,
14
- "execution": {
15
- "lane": "k8s",
16
- "coords": {
17
- "K8S_SANDBOX_IMAGE": "registry.internal/sandbox@sha256:abc",
18
- "K8S_NAMESPACE": "sandboxes"
19
- },
20
- "secretRefs": {}
21
- },
22
- "store": {
23
- "backend": "local",
24
- "session": "auto"
25
- }
26
- },
27
- "coords": {},
28
- "env": {
29
- "LOG_LEVEL": "debug"
30
- }
31
- }
32
- ]
33
- }
@@ -1,5 +0,0 @@
1
- {
2
- "contributor": "contract",
3
- "claim": "G5 幂等:输入 = m01 的迁移输出(已迁形)⇒ changed / dropped / refused 全空,doc 字节相等。input.json 由加冕脚本从 m01 的 expected 生成,不手写。",
4
- "inputFrom": "m01-g5-k8s-env-lifted"
5
- }
@@ -1,71 +0,0 @@
1
- {
2
- "doc": {
3
- "workers": [
4
- {
5
- "name": "canary",
6
- "enabled": true,
7
- "host": "default",
8
- "image": "sema-server:latest",
9
- "secretRefs": {
10
- "apiKeyEnv": "MODEL_KEY"
11
- },
12
- "runtime": {
13
- "requirePrincipal": false,
14
- "rateLimitRpm": 0,
15
- "execution": {
16
- "lane": "e2b",
17
- "coords": {},
18
- "secretRefs": {
19
- "E2B_API_KEY": "HOST_E2B_KEY"
20
- }
21
- },
22
- "store": {
23
- "backend": "local",
24
- "session": "auto"
25
- }
26
- },
27
- "coords": {}
28
- }
29
- ]
30
- },
31
- "changed": [
32
- "canary"
33
- ],
34
- "dropped": [
35
- {
36
- "name": "canary",
37
- "index": 1,
38
- "field": [
39
- "runtime",
40
- "memoryBackend"
41
- ]
42
- }
43
- ],
44
- "refused": [
45
- {
46
- "name": "handless",
47
- "index": 0,
48
- "field": [
49
- "env",
50
- "REMOTE_EXEC"
51
- ],
52
- "reason": "an enabled worker names no execution lane (env.REMOTE_EXEC is unset) — it boots with no hands and still reports tasks completed. The migration does not guess a lane: set runtime.execution.lane (host | e2b | k8s | ssh | adb | local-docker | device) by hand, or disable the worker",
53
- "original": {
54
- "name": "handless",
55
- "enabled": true,
56
- "host": "default",
57
- "image": "sema-server:latest",
58
- "secretRefs": {
59
- "apiKeyEnv": "MODEL_KEY"
60
- },
61
- "runtime": {
62
- "sessionBackend": "auto",
63
- "memoryBackend": "off",
64
- "requirePrincipal": false,
65
- "rateLimitRpm": 0
66
- },
67
- "coords": {}
68
- }
69
- }
70
- ]
71
- }
@@ -1,42 +0,0 @@
1
- {
2
- "workers": [
3
- {
4
- "name": "handless",
5
- "enabled": true,
6
- "host": "default",
7
- "image": "sema-server:latest",
8
- "secretRefs": {
9
- "apiKeyEnv": "MODEL_KEY"
10
- },
11
- "runtime": {
12
- "sessionBackend": "auto",
13
- "memoryBackend": "off",
14
- "requirePrincipal": false,
15
- "rateLimitRpm": 0
16
- },
17
- "coords": {}
18
- },
19
- {
20
- "name": "canary",
21
- "enabled": true,
22
- "host": "default",
23
- "image": "sema-server:latest",
24
- "secretRefs": {
25
- "apiKeyEnv": "MODEL_KEY"
26
- },
27
- "runtime": {
28
- "sessionBackend": "auto",
29
- "memoryBackend": "off",
30
- "requirePrincipal": false,
31
- "rateLimitRpm": 0
32
- },
33
- "coords": {},
34
- "env": {
35
- "REMOTE_EXEC": "e2b"
36
- },
37
- "secretEnv": {
38
- "E2B_API_KEY": "HOST_E2B_KEY"
39
- }
40
- }
41
- ]
42
- }
@@ -1,4 +0,0 @@
1
- {
2
- "contributor": "contract",
3
- "claim": "G5 refused:enabled 且无 env.REMOTE_EXEC 的 worker(WA-49 病例本身)⇒ refused 点名 env.REMOTE_EXEC,不进输出 doc;同域的 canary(e2b,密钥在 secretEnv)照迁进 runtime.execution.secretRefs。"
4
- }
@@ -1,52 +0,0 @@
1
- {
2
- "doc": {
3
- "workers": [
4
- {
5
- "name": "persist",
6
- "enabled": true,
7
- "host": "default",
8
- "image": "sema-server:latest",
9
- "secretRefs": {
10
- "apiKeyEnv": "MODEL_KEY",
11
- "dbPasswordEnv": "HOST_TIDB_PW"
12
- },
13
- "runtime": {
14
- "requirePrincipal": false,
15
- "rateLimitRpm": 0,
16
- "execution": {
17
- "lane": "host",
18
- "coords": {},
19
- "secretRefs": {}
20
- },
21
- "store": {
22
- "backend": "mysql",
23
- "session": "mysql",
24
- "db": {
25
- "host": "tidb.internal",
26
- "port": 4000,
27
- "user": "svc",
28
- "database": "sema"
29
- }
30
- }
31
- },
32
- "coords": {
33
- "gitApiBaseUrl": "https://git.internal"
34
- }
35
- }
36
- ]
37
- },
38
- "changed": [
39
- "persist"
40
- ],
41
- "dropped": [
42
- {
43
- "name": "persist",
44
- "index": 0,
45
- "field": [
46
- "runtime",
47
- "memoryBackend"
48
- ]
49
- }
50
- ],
51
- "refused": []
52
- }
@@ -1,30 +0,0 @@
1
- {
2
- "workers": [
3
- {
4
- "name": "persist",
5
- "enabled": true,
6
- "host": "default",
7
- "image": "sema-server:latest",
8
- "secretRefs": {
9
- "apiKeyEnv": "MODEL_KEY",
10
- "tidbPasswordEnv": "HOST_TIDB_PW"
11
- },
12
- "runtime": {
13
- "sessionBackend": "tidb",
14
- "memoryBackend": "off",
15
- "requirePrincipal": false,
16
- "rateLimitRpm": 0,
17
- "db": "sema"
18
- },
19
- "coords": {
20
- "gitApiBaseUrl": "https://git.internal",
21
- "tidbHost": "tidb.internal",
22
- "tidbPort": 4000,
23
- "tidbUser": "svc"
24
- },
25
- "env": {
26
- "REMOTE_EXEC": "host"
27
- }
28
- }
29
- ]
30
- }
@@ -1,4 +0,0 @@
1
- {
2
- "contributor": "contract",
3
- "claim": "G7b:旧形 runtime.sessionBackend tidb(今天引擎见之拒启)+ tidb 坐标 ⇒ store {backend: mysql, session: mysql, db} + secretRefs.dbPasswordEnv —— 改成能起的形 + 通知行,不是拒。"
4
- }
@@ -1,82 +0,0 @@
1
- {
2
- "doc": {
3
- "workers": [
4
- {
5
- "name": "alpha",
6
- "enabled": true,
7
- "host": "default",
8
- "image": "sema-server:latest",
9
- "secretRefs": {
10
- "apiKeyEnv": "MODEL_KEY"
11
- },
12
- "runtime": {
13
- "requirePrincipal": false,
14
- "rateLimitRpm": 0,
15
- "execution": {
16
- "lane": "host",
17
- "coords": {},
18
- "secretRefs": {}
19
- },
20
- "store": {
21
- "backend": "local",
22
- "session": "auto"
23
- }
24
- },
25
- "coords": {}
26
- },
27
- {
28
- "name": "gamma",
29
- "enabled": false,
30
- "host": "default",
31
- "image": "sema-server:latest",
32
- "secretRefs": {
33
- "apiKeyEnv": "MODEL_KEY"
34
- },
35
- "runtime": {
36
- "requirePrincipal": false,
37
- "rateLimitRpm": 0
38
- },
39
- "coords": {}
40
- }
41
- ]
42
- },
43
- "changed": [],
44
- "dropped": [],
45
- "refused": [
46
- {
47
- "name": "beta",
48
- "index": 1,
49
- "field": [
50
- "env"
51
- ],
52
- "reason": "the stored worker is not a valid WorkerSpec — env: env cannot set reserved key \"FLEET_GENERATION\" — set it via (set by the config renderer from the worker's generation — not configurable)",
53
- "original": {
54
- "name": "beta",
55
- "enabled": true,
56
- "host": "default",
57
- "image": "sema-server:latest",
58
- "secretRefs": {
59
- "apiKeyEnv": "MODEL_KEY"
60
- },
61
- "runtime": {
62
- "requirePrincipal": false,
63
- "rateLimitRpm": 0,
64
- "execution": {
65
- "lane": "host",
66
- "coords": {},
67
- "secretRefs": {}
68
- },
69
- "store": {
70
- "backend": "local",
71
- "session": "auto"
72
- }
73
- },
74
- "coords": {},
75
- "env": {
76
- "FLEET_GENERATION": "7",
77
- "LOG_LEVEL": "debug"
78
- }
79
- }
80
- }
81
- ]
82
- }
@@ -1,68 +0,0 @@
1
- {
2
- "workers": [
3
- {
4
- "name": "alpha",
5
- "enabled": true,
6
- "host": "default",
7
- "image": "sema-server:latest",
8
- "secretRefs": {
9
- "apiKeyEnv": "MODEL_KEY"
10
- },
11
- "runtime": {
12
- "requirePrincipal": false,
13
- "rateLimitRpm": 0,
14
- "execution": {
15
- "lane": "host",
16
- "coords": {},
17
- "secretRefs": {}
18
- },
19
- "store": {
20
- "backend": "local",
21
- "session": "auto"
22
- }
23
- },
24
- "coords": {}
25
- },
26
- {
27
- "name": "beta",
28
- "enabled": true,
29
- "host": "default",
30
- "image": "sema-server:latest",
31
- "secretRefs": {
32
- "apiKeyEnv": "MODEL_KEY"
33
- },
34
- "runtime": {
35
- "requirePrincipal": false,
36
- "rateLimitRpm": 0,
37
- "execution": {
38
- "lane": "host",
39
- "coords": {},
40
- "secretRefs": {}
41
- },
42
- "store": {
43
- "backend": "local",
44
- "session": "auto"
45
- }
46
- },
47
- "coords": {},
48
- "env": {
49
- "FLEET_GENERATION": "7",
50
- "LOG_LEVEL": "debug"
51
- }
52
- },
53
- {
54
- "name": "gamma",
55
- "enabled": false,
56
- "host": "default",
57
- "image": "sema-server:latest",
58
- "secretRefs": {
59
- "apiKeyEnv": "MODEL_KEY"
60
- },
61
- "runtime": {
62
- "requirePrincipal": false,
63
- "rateLimitRpm": 0
64
- },
65
- "coords": {}
66
- }
67
- ]
68
- }
@@ -1,4 +0,0 @@
1
- {
2
- "contributor": "contract",
3
- "claim": "8.2.0 逐行终判:一份已是 7.x 形的 workers 文档(三行都不需要迁),其中 beta 在 env 里设了保留名 FLEET_GENERATION(渲染器是它的唯一写手)⇒ beta 进 refused(field = env,拒因是读侧自己那句,点名保留键与它的唯一写位),alpha / gamma 原样留在 doc,changed / dropped 为空;过滤后的 doc 整域读得进。8.1.0 及以前这份文档迁移回零变化、随后整域读抛。"
4
- }