@sema-agent/settings-schema 10.1.1 → 11.1.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 (240) hide show
  1. package/CHANGELOG.md +469 -1
  2. package/README.md +144 -66
  3. package/bin/settings-schema.mjs +10 -12
  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/atomic-write.d.ts +14 -0
  119. package/dist/atomic-write.js +60 -0
  120. package/dist/bundle.d.ts +15 -7
  121. package/dist/bundle.js +28 -27
  122. package/dist/cli.d.ts +3 -1
  123. package/dist/cli.js +149 -80
  124. package/dist/config-d-file.d.ts +14 -0
  125. package/dist/config-d-file.js +67 -0
  126. package/dist/config-fns.d.ts +87 -186
  127. package/dist/config-fns.js +207 -262
  128. package/dist/conformance/contract-adapter.d.ts +9 -2
  129. package/dist/conformance/contract-adapter.js +15 -7
  130. package/dist/conformance/corpus.d.ts +3 -0
  131. package/dist/conformance/corpus.js +5 -0
  132. package/dist/conformance/derive.d.ts +3 -0
  133. package/dist/conformance/index.d.ts +2 -2
  134. package/dist/conformance/index.js +2 -2
  135. package/dist/conformance/run.js +67 -22
  136. package/dist/conformance/types.d.ts +31 -15
  137. package/dist/conformance/types.js +5 -0
  138. package/dist/conformance/warnings.d.ts +1 -1
  139. package/dist/conformance/warnings.js +1 -4
  140. package/dist/cross-domain.d.ts +66 -22
  141. package/dist/cross-domain.js +164 -93
  142. package/dist/cross-session.d.ts +29 -11
  143. package/dist/default-model.d.ts +43 -0
  144. package/dist/default-model.js +34 -0
  145. package/dist/execution-lane-index.d.ts +4 -8
  146. package/dist/execution-lane-index.js +4 -8
  147. package/dist/execution-lanes.d.ts +31 -8
  148. package/dist/execution-lanes.js +23 -5
  149. package/dist/file-edit.d.ts +3 -3
  150. package/dist/file-edit.js +11 -18
  151. package/dist/file-store.d.ts +7 -6
  152. package/dist/file-store.js +37 -50
  153. package/dist/fleet.d.ts +364 -762
  154. package/dist/fleet.js +277 -224
  155. package/dist/hooks.d.ts +1151 -4737
  156. package/dist/hooks.js +59 -15
  157. package/dist/index.d.ts +10 -4
  158. package/dist/index.js +13 -7
  159. package/dist/integer.d.ts +11 -0
  160. package/dist/integer.js +11 -0
  161. package/dist/issue-path.d.ts +10 -0
  162. package/dist/issue-path.js +10 -0
  163. package/dist/local-load.d.ts +1 -1
  164. package/dist/local-load.js +4 -14
  165. package/dist/loopback.d.ts +26 -0
  166. package/dist/loopback.js +54 -0
  167. package/dist/migration-receipt.d.ts +42 -0
  168. package/dist/migration-receipt.js +12 -0
  169. package/dist/one-time-migrations.d.ts +62 -0
  170. package/dist/one-time-migrations.js +828 -0
  171. package/dist/prompts-digest.d.ts +1 -1
  172. package/dist/prompts-digest.js +3 -2
  173. package/dist/reader.d.ts +2 -2
  174. package/dist/remote-exec.d.ts +45 -187
  175. package/dist/remote-exec.js +16 -10
  176. package/dist/resolve-roster.d.ts +18 -3
  177. package/dist/resolve-roster.js +28 -25
  178. package/dist/retired-envs.d.ts +24 -0
  179. package/dist/retired-envs.js +114 -0
  180. package/dist/retired-form.d.ts +31 -0
  181. package/dist/retired-form.js +28 -0
  182. package/dist/safety-merge-spec.d.ts +131 -191
  183. package/dist/safety-merge-spec.js +18 -14
  184. package/dist/scheduler-lifetime.d.ts +5 -0
  185. package/dist/scheduler-lifetime.js +7 -0
  186. package/dist/scheduler-store-migration.d.ts +14 -0
  187. package/dist/scheduler-store-migration.js +14 -0
  188. package/dist/scheduler-store-node.d.ts +28 -12
  189. package/dist/scheduler-store-node.js +32 -23
  190. package/dist/scheduler-store.d.ts +47 -14
  191. package/dist/scheduler-store.js +32 -61
  192. package/dist/secret-refs.d.ts +3 -3
  193. package/dist/secret-refs.js +1 -1
  194. package/dist/secret-scan.d.ts +14 -24
  195. package/dist/secret-scan.js +45 -23
  196. package/dist/sha256-core.d.ts +16 -0
  197. package/dist/sha256-core.js +138 -0
  198. package/dist/sha256.d.ts +6 -1
  199. package/dist/sha256.js +8 -98
  200. package/dist/skills-manifest.js +1 -1
  201. package/dist/types.d.ts +1509 -13536
  202. package/dist/types.js +526 -438
  203. package/dist/url-shape.d.ts +34 -0
  204. package/dist/url-shape.js +61 -0
  205. package/dist/web-admin-credential.d.ts +96 -0
  206. package/dist/{center-credential.js → web-admin-credential.js} +49 -46
  207. package/dist/web-admin-env.d.ts +33 -0
  208. package/dist/web-admin-env.js +33 -0
  209. package/dist/worker-row-verdict.d.ts +16 -0
  210. package/dist/worker-row-verdict.js +31 -0
  211. package/dist/workers-rows.d.ts +34 -0
  212. package/dist/workers-rows.js +42 -0
  213. package/dist/zod-unwrap.d.ts +11 -0
  214. package/dist/zod-unwrap.js +25 -0
  215. package/package.json +17 -9
  216. package/conformance/cases/c46-s811-host-name-url-userinfo-characterization/meta.json +0 -6
  217. package/conformance/cases/c47-s811-roles-key-url-userinfo-characterization/meta.json +0 -6
  218. package/conformance/migrate-workers/m01-g5-k8s-env-lifted/expected.json +0 -49
  219. package/conformance/migrate-workers/m01-g5-k8s-env-lifted/input.json +0 -26
  220. package/conformance/migrate-workers/m01-g5-k8s-env-lifted/meta.json +0 -4
  221. package/conformance/migrate-workers/m02-g5-idempotent/expected.json +0 -38
  222. package/conformance/migrate-workers/m02-g5-idempotent/input.json +0 -33
  223. package/conformance/migrate-workers/m02-g5-idempotent/meta.json +0 -5
  224. package/conformance/migrate-workers/m03-g5-refused-no-lane/expected.json +0 -71
  225. package/conformance/migrate-workers/m03-g5-refused-no-lane/input.json +0 -42
  226. package/conformance/migrate-workers/m03-g5-refused-no-lane/meta.json +0 -4
  227. package/conformance/migrate-workers/m04-g7b-session-tidb-lifted/expected.json +0 -52
  228. package/conformance/migrate-workers/m04-g7b-session-tidb-lifted/input.json +0 -30
  229. package/conformance/migrate-workers/m04-g7b-session-tidb-lifted/meta.json +0 -4
  230. package/conformance/migrate-workers/m05-row-verdict-reserved-env/expected.json +0 -82
  231. package/conformance/migrate-workers/m05-row-verdict-reserved-env/input.json +0 -68
  232. package/conformance/migrate-workers/m05-row-verdict-reserved-env/meta.json +0 -4
  233. package/dist/center-credential.d.ts +0 -116
  234. package/dist/issue-text.d.ts +0 -10
  235. package/dist/issue-text.js +0 -8
  236. package/dist/migrate-workers.d.ts +0 -71
  237. package/dist/migrate-workers.js +0 -351
  238. package/dist/migrate.d.ts +0 -255
  239. package/dist/migrate.js +0 -542
  240. /package/conformance/cases/{c46-s811-host-name-url-userinfo-characterization → c46-s811-host-name-url-userinfo-withheld}/input.json +0 -0
@@ -26,6 +26,9 @@
26
26
  "servers": []
27
27
  },
28
28
  "models": {
29
+ "atMention": {
30
+ "mode": "all"
31
+ },
29
32
  "models": [],
30
33
  "roles": {},
31
34
  "tierGroups": []
@@ -42,7 +45,6 @@
42
45
  "rosters": {
43
46
  "rosters": []
44
47
  },
45
- "runtime": {},
46
48
  "scenarios": {
47
49
  "scenarios": []
48
50
  },
@@ -66,6 +68,9 @@
66
68
  "outcome": "effective",
67
69
  "effective": {
68
70
  "models": {
71
+ "atMention": {
72
+ "mode": "all"
73
+ },
69
74
  "models": [],
70
75
  "roles": {},
71
76
  "tierGroups": []
@@ -26,6 +26,9 @@
26
26
  "servers": []
27
27
  },
28
28
  "models": {
29
+ "atMention": {
30
+ "mode": "all"
31
+ },
29
32
  "models": [],
30
33
  "roles": {},
31
34
  "tierGroups": []
@@ -42,7 +45,6 @@
42
45
  "rosters": {
43
46
  "rosters": []
44
47
  },
45
- "runtime": {},
46
48
  "scenarios": {
47
49
  "scenarios": []
48
50
  },
@@ -26,6 +26,9 @@
26
26
  "servers": []
27
27
  },
28
28
  "models": {
29
+ "atMention": {
30
+ "mode": "all"
31
+ },
29
32
  "models": [],
30
33
  "roles": {},
31
34
  "tierGroups": []
@@ -42,7 +45,6 @@
42
45
  "rosters": {
43
46
  "rosters": []
44
47
  },
45
- "runtime": {},
46
48
  "scenarios": {
47
49
  "scenarios": []
48
50
  },
@@ -79,7 +81,17 @@
79
81
  "scenarios": []
80
82
  }
81
83
  },
82
- "warnings": [],
84
+ "warnings": [
85
+ {
86
+ "domain": "scenarios",
87
+ "keys": [
88
+ [
89
+ "zzzDeep"
90
+ ]
91
+ ],
92
+ "kind": "unknown-keys-dropped"
93
+ }
94
+ ],
83
95
  "metadata": {
84
96
  "version": 7,
85
97
  "updatedAt": "2026-09-16T00:00:00.000Z"
@@ -26,6 +26,9 @@
26
26
  "servers": []
27
27
  },
28
28
  "models": {
29
+ "atMention": {
30
+ "mode": "all"
31
+ },
29
32
  "models": [],
30
33
  "roles": {},
31
34
  "tierGroups": []
@@ -42,7 +45,6 @@
42
45
  "rosters": {
43
46
  "rosters": []
44
47
  },
45
- "runtime": {},
46
48
  "scenarios": {
47
49
  "scenarios": []
48
50
  },
@@ -26,6 +26,9 @@
26
26
  "servers": []
27
27
  },
28
28
  "models": {
29
+ "atMention": {
30
+ "mode": "all"
31
+ },
29
32
  "models": [],
30
33
  "roles": {},
31
34
  "tierGroups": []
@@ -42,7 +45,6 @@
42
45
  "rosters": {
43
46
  "rosters": []
44
47
  },
45
- "runtime": {},
46
48
  "scenarios": {
47
49
  "scenarios": []
48
50
  },
@@ -26,6 +26,9 @@
26
26
  "servers": []
27
27
  },
28
28
  "models": {
29
+ "atMention": {
30
+ "mode": "all"
31
+ },
29
32
  "models": [],
30
33
  "roles": {},
31
34
  "tierGroups": []
@@ -42,7 +45,6 @@
42
45
  "rosters": {
43
46
  "rosters": []
44
47
  },
45
- "runtime": {},
46
48
  "scenarios": {
47
49
  "scenarios": []
48
50
  },
@@ -1,96 +1,21 @@
1
1
  {
2
2
  "domains": {
3
- "outcome": "effective",
4
- "effective": {
5
- "collab": {
6
- "templates": []
7
- },
8
- "entitlement": {
9
- "budgetGroups": [],
10
- "groupBindings": [],
11
- "subjects": [],
12
- "tiers": []
13
- },
14
- "execution": {
15
- "allowedLanes": [
16
- "host"
17
- ],
18
- "required": false
19
- },
20
- "governance": {
21
- "autonomy": "plan"
22
- },
23
- "hosts": {
24
- "hosts": []
25
- },
26
- "limits": {},
27
- "mcp": {
28
- "servers": []
29
- },
30
- "models": {
31
- "models": [],
32
- "roles": {},
33
- "tierGroups": []
34
- },
35
- "plugins": {
36
- "plugins": []
37
- },
38
- "projects": {
39
- "projects": {}
40
- },
41
- "prompts": {
42
- "bindings": []
43
- },
44
- "rosters": {
45
- "rosters": []
46
- },
47
- "runtime": {},
48
- "scenarios": {
49
- "scenarios": []
50
- },
51
- "skills": {
52
- "skills": []
53
- },
54
- "systems": {
55
- "systems": []
56
- },
57
- "workers": {
58
- "workers": []
59
- }
60
- },
61
- "warnings": [
62
- {
63
- "domain": "governance",
64
- "keys": [
65
- [
66
- "autonomy"
67
- ]
68
- ],
69
- "kind": "legacy-governance-lifted"
70
- }
71
- ],
72
- "metadata": {
73
- "version": 7,
74
- "updatedAt": "2026-09-16T00:00:00.000Z"
75
- }
3
+ "outcome": "rejected",
4
+ "stage": "validate"
76
5
  },
77
6
  "strictWrite": {
78
- "outcome": "effective",
79
- "effective": {
80
- "runtime": {}
81
- },
82
- "warnings": [],
83
- "metadata": {
84
- "version": 7,
85
- "updatedAt": "2026-09-16T00:00:00.000Z"
86
- },
87
- "why": "🚧 S-1020 特征格(已裁 = 缺陷,源头修排下一版):受理,受理形 = { runtime: {} }。与 c06 同律:读腿从 runtime 旧文档抬升 autonomy(legacy-governance-lifted),写入席不抬升,三闸旧键被 runtime schema 静默剥掉。S-1020 修掉(写侧拒 runtime 上的三闸旧键)时本格翻 rejected{validate}。"
7
+ "outcome": "rejected",
8
+ "stage": "validate",
9
+ "why": "拒:写入席不受理退役域 runtime(墓碑);改前受理并静默剥掉 autonomy 旧键。"
88
10
  },
89
11
  "wire": {
90
- "derive": true
12
+ "outcome": "rejected",
13
+ "stage": "envelope",
14
+ "why": "拒:wire 上的 runtime 带事实(一个更老的中心发出的形)⇒ readEffectiveWire 由同一只墓碑整包拒(调用方回落上一份好配置)。"
91
15
  },
92
16
  "localRoot": {
93
- "derive": true,
94
- "localVersion": 116867246918368
17
+ "outcome": "rejected",
18
+ "stage": "parse",
19
+ "why": "拒:config.d/runtime.json 带事实 ⇒ FileConfigStore 由同一只墓碑拒(本地目录用 `npx @sema-agent/settings-schema migrate <config.d directory>` 迁)。"
95
20
  }
96
21
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "contributor": "contract",
3
- "claim": "governance 三形之一:**缺席** + 旧 runtime 带三闸 ⇒ 抬升生效并出声。与下面两条合起来钉优先序。",
3
+ "claim": "governance **缺席** + 旧 runtime 文档带一个治理键:11.0.0 起不再读时抬升 —— 四条腿一律拒(墓碑点名 SS-M1)。存量由一次性迁移 SS-M1 把它搬进 governance;读路径上没有第二种读法。",
4
4
  "firstRedOn": [
5
5
  "settings-schema@1.0.0",
6
6
  "settings-schema@1.10.0",
@@ -26,6 +26,9 @@
26
26
  "servers": []
27
27
  },
28
28
  "models": {
29
+ "atMention": {
30
+ "mode": "all"
31
+ },
29
32
  "models": [],
30
33
  "roles": {},
31
34
  "tierGroups": []
@@ -42,7 +45,6 @@
42
45
  "rosters": {
43
46
  "rosters": []
44
47
  },
45
- "runtime": {},
46
48
  "scenarios": {
47
49
  "scenarios": []
48
50
  },
@@ -65,21 +67,20 @@
65
67
  "strictWrite": {
66
68
  "outcome": "effective",
67
69
  "effective": {
68
- "governance": {},
69
- "runtime": {}
70
+ "governance": {}
70
71
  },
71
72
  "warnings": [],
72
73
  "metadata": {
73
74
  "version": 7,
74
75
  "updatedAt": "2026-09-16T00:00:00.000Z"
75
76
  },
76
- "why": "受理:governance 在集里(空对象)⇒ 读写两边都不抬升;runtime 上的 autonomy 旧键被 runtime schema 剥掉(governance 已显式写成空,这里没有被丢的闸)。受理两份,受理形等于读腿两格。"
77
+ "why": "受理:governance 一份空对象,受理形等于读腿那一格。"
77
78
  },
78
79
  "wire": {
79
80
  "derive": true
80
81
  },
81
82
  "localRoot": {
82
83
  "derive": true,
83
- "localVersion": 2876408377214271
84
+ "localVersion": 3150054033706585
84
85
  }
85
86
  }
@@ -4,9 +4,6 @@
4
4
  "updatedAt": "2026-09-16T00:00:00.000Z"
5
5
  },
6
6
  "domains": {
7
- "governance": {},
8
- "runtime": {
9
- "autonomy": "plan"
10
- }
7
+ "governance": {}
11
8
  }
12
9
  }
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "contributor": "contract",
3
- "claim": "governance 三形之二:显式 `{}`(设过了,但一个键都没有)⇒ **它赢**,不抬升、零告警。「设了空」与「没设」在下游是两件事:前者意味着 center 明确不管这三闸,后者才回落旧文档。任一腿把 `{}` 当缺席,运维的停管决定就被旧数据悄悄推翻。",
3
+ "claim": "governance 显式 `{}`(设过了,但一个键都没有)⇒ 读写四腿同形、零告警:「设了空」= center 明确不管这三闸。11.0.0 起没有可以回落的旧 runtime 文档了(退役域由墓碑拒,见 c06 / c20),这一格只钉「空对象不是缺席」。",
4
4
  "firstRedOn": []
5
5
  }
@@ -26,6 +26,9 @@
26
26
  "servers": []
27
27
  },
28
28
  "models": {
29
+ "atMention": {
30
+ "mode": "all"
31
+ },
29
32
  "models": [
30
33
  {
31
34
  "api": "openai-completions",
@@ -67,7 +70,6 @@
67
70
  "rosters": {
68
71
  "rosters": []
69
72
  },
70
- "runtime": {},
71
73
  "scenarios": {
72
74
  "scenarios": []
73
75
  },
@@ -26,6 +26,9 @@
26
26
  "servers": []
27
27
  },
28
28
  "models": {
29
+ "atMention": {
30
+ "mode": "all"
31
+ },
29
32
  "models": [
30
33
  {
31
34
  "api": "openai-completions",
@@ -55,7 +58,6 @@
55
58
  "rosters": {
56
59
  "rosters": []
57
60
  },
58
- "runtime": {},
59
61
  "scenarios": {
60
62
  "scenarios": []
61
63
  },
@@ -94,6 +96,9 @@
94
96
  "outcome": "effective",
95
97
  "effective": {
96
98
  "models": {
99
+ "atMention": {
100
+ "mode": "all"
101
+ },
97
102
  "models": [
98
103
  {
99
104
  "api": "openai-completions",
@@ -112,7 +117,22 @@
112
117
  "tierGroups": []
113
118
  }
114
119
  },
115
- "warnings": [],
120
+ "warnings": [
121
+ {
122
+ "domain": "models",
123
+ "keys": [
124
+ [
125
+ "models",
126
+ 0,
127
+ "typoKey"
128
+ ],
129
+ [
130
+ "zzzTop"
131
+ ]
132
+ ],
133
+ "kind": "unknown-keys-dropped"
134
+ }
135
+ ],
116
136
  "metadata": {
117
137
  "version": 7,
118
138
  "updatedAt": "2026-09-16T00:00:00.000Z"
@@ -26,6 +26,9 @@
26
26
  "servers": []
27
27
  },
28
28
  "models": {
29
+ "atMention": {
30
+ "mode": "all"
31
+ },
29
32
  "models": [
30
33
  {
31
34
  "api": "openai-completions",
@@ -59,7 +62,6 @@
59
62
  "rosters": {
60
63
  "rosters": []
61
64
  },
62
- "runtime": {},
63
65
  "scenarios": {
64
66
  "scenarios": []
65
67
  },
@@ -83,6 +85,9 @@
83
85
  "outcome": "effective",
84
86
  "effective": {
85
87
  "models": {
88
+ "atMention": {
89
+ "mode": "all"
90
+ },
86
91
  "models": [
87
92
  {
88
93
  "api": "openai-completions",
@@ -7195,6 +7195,9 @@
7195
7195
  "servers": []
7196
7196
  },
7197
7197
  "models": {
7198
+ "atMention": {
7199
+ "mode": "all"
7200
+ },
7198
7201
  "models": [],
7199
7202
  "roles": {},
7200
7203
  "tierGroups": []
@@ -7211,7 +7214,6 @@
7211
7214
  "rosters": {
7212
7215
  "rosters": []
7213
7216
  },
7214
- "runtime": {},
7215
7217
  "scenarios": {
7216
7218
  "scenarios": []
7217
7219
  },