@sema-agent/settings-schema 2.1.0 → 3.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 (183) hide show
  1. package/CHANGELOG.md +229 -0
  2. package/README.md +35 -4
  3. package/conformance/VERSION +1 -0
  4. package/conformance/baseline.json +55 -0
  5. package/conformance/cases/c01-entry-salvage-then-typo/expected.json +105 -0
  6. package/conformance/cases/c01-entry-salvage-then-typo/input.json +22 -0
  7. package/conformance/cases/c01-entry-salvage-then-typo/meta.json +10 -0
  8. package/conformance/cases/c02-hosts-clamp-stacked/expected.json +96 -0
  9. package/conformance/cases/c02-hosts-clamp-stacked/input.json +21 -0
  10. package/conformance/cases/c02-hosts-clamp-stacked/meta.json +10 -0
  11. package/conformance/cases/c03-literal-dotted-top-key/expected.json +112 -0
  12. package/conformance/cases/c03-literal-dotted-top-key/input.json +26 -0
  13. package/conformance/cases/c03-literal-dotted-top-key/meta.json +5 -0
  14. package/conformance/cases/c04-all-bad-collection-not-salvaged/expected.json +77 -0
  15. package/conformance/cases/c04-all-bad-collection-not-salvaged/input.json +18 -0
  16. package/conformance/cases/c04-all-bad-collection-not-salvaged/meta.json +5 -0
  17. package/conformance/cases/c05-gate-domain-bad-entry-throws/expected.json +16 -0
  18. package/conformance/cases/c05-gate-domain-bad-entry-throws/input.json +18 -0
  19. package/conformance/cases/c05-gate-domain-bad-entry-throws/meta.json +5 -0
  20. package/conformance/cases/c06-legacy-governance-lift/expected.json +99 -0
  21. package/conformance/cases/c06-legacy-governance-lift/input.json +20 -0
  22. package/conformance/cases/c06-legacy-governance-lift/meta.json +9 -0
  23. package/conformance/cases/c07-hooks-is-not-a-config-domain/expected.json +72 -0
  24. package/conformance/cases/c07-hooks-is-not-a-config-domain/input.json +43 -0
  25. package/conformance/cases/c07-hooks-is-not-a-config-domain/meta.json +6 -0
  26. package/conformance/cases/c08-limits-unknown-carried-64/expected.json +336 -0
  27. package/conformance/cases/c08-limits-unknown-carried-64/input.json +74 -0
  28. package/conformance/cases/c08-limits-unknown-carried-64/meta.json +5 -0
  29. package/conformance/cases/c09-limits-unknown-carried-65/expected.json +338 -0
  30. package/conformance/cases/c09-limits-unknown-carried-65/input.json +75 -0
  31. package/conformance/cases/c09-limits-unknown-carried-65/meta.json +7 -0
  32. package/conformance/cases/c10-record-key-secret-redacted-twice/expected.json +106 -0
  33. package/conformance/cases/c10-record-key-secret-redacted-twice/input.json +29 -0
  34. package/conformance/cases/c10-record-key-secret-redacted-twice/meta.json +13 -0
  35. package/conformance/cases/c11-unicode-unknown-keys/expected.json +88 -0
  36. package/conformance/cases/c11-unicode-unknown-keys/input.json +13 -0
  37. package/conformance/cases/c11-unicode-unknown-keys/meta.json +5 -0
  38. package/conformance/cases/c12-prototype-name-top-keys/expected.json +72 -0
  39. package/conformance/cases/c12-prototype-name-top-keys/input.json +20 -0
  40. package/conformance/cases/c12-prototype-name-top-keys/meta.json +11 -0
  41. package/conformance/cases/c13-models-field-null/expected.json +77 -0
  42. package/conformance/cases/c13-models-field-null/input.json +11 -0
  43. package/conformance/cases/c13-models-field-null/meta.json +5 -0
  44. package/conformance/cases/c14-models-field-empty-array/expected.json +72 -0
  45. package/conformance/cases/c14-models-field-empty-array/input.json +11 -0
  46. package/conformance/cases/c14-models-field-empty-array/meta.json +5 -0
  47. package/conformance/cases/c15-models-field-number/expected.json +77 -0
  48. package/conformance/cases/c15-models-field-number/input.json +11 -0
  49. package/conformance/cases/c15-models-field-number/meta.json +5 -0
  50. package/conformance/cases/c16-deep-nesting-205/expected.json +83 -0
  51. package/conformance/cases/c16-deep-nesting-205/input.json +421 -0
  52. package/conformance/cases/c16-deep-nesting-205/meta.json +5 -0
  53. package/conformance/cases/c17-empty-domain-file/expected.json +73 -0
  54. package/conformance/cases/c17-empty-domain-file/input.json +10 -0
  55. package/conformance/cases/c17-empty-domain-file/meta.json +5 -0
  56. package/conformance/cases/c18-wire-envelope-not-an-object/expected.json +74 -0
  57. package/conformance/cases/c18-wire-envelope-not-an-object/input.json +8 -0
  58. package/conformance/cases/c18-wire-envelope-not-an-object/meta.json +5 -0
  59. package/conformance/cases/c19-wire-envelope-no-version/expected.json +74 -0
  60. package/conformance/cases/c19-wire-envelope-no-version/input.json +13 -0
  61. package/conformance/cases/c19-wire-envelope-no-version/meta.json +5 -0
  62. package/conformance/cases/c20-governance-absent-lifts/expected.json +84 -0
  63. package/conformance/cases/c20-governance-absent-lifts/input.json +11 -0
  64. package/conformance/cases/c20-governance-absent-lifts/meta.json +9 -0
  65. package/conformance/cases/c21-governance-empty-object-wins/expected.json +72 -0
  66. package/conformance/cases/c21-governance-empty-object-wins/input.json +12 -0
  67. package/conformance/cases/c21-governance-empty-object-wins/meta.json +5 -0
  68. package/conformance/cases/c22-governance-null-throws/expected.json +16 -0
  69. package/conformance/cases/c22-governance-null-throws/input.json +9 -0
  70. package/conformance/cases/c22-governance-null-throws/meta.json +5 -0
  71. package/conformance/cases/c23-mixed-validity-models/expected.json +106 -0
  72. package/conformance/cases/c23-mixed-validity-models/input.json +27 -0
  73. package/conformance/cases/c23-mixed-validity-models/meta.json +9 -0
  74. package/conformance/cases/c24-valid-entries-with-unknown-keys/expected.json +100 -0
  75. package/conformance/cases/c24-valid-entries-with-unknown-keys/input.json +25 -0
  76. package/conformance/cases/c24-valid-entries-with-unknown-keys/meta.json +5 -0
  77. package/conformance/cases/c25-published-roundtrip-zero-warnings/expected.json +89 -0
  78. package/conformance/cases/c25-published-roundtrip-zero-warnings/input.json +24 -0
  79. package/conformance/cases/c25-published-roundtrip-zero-warnings/meta.json +5 -0
  80. package/conformance/cases/c26-hosts-array-1024/expected.json +7241 -0
  81. package/conformance/cases/c26-hosts-array-1024/input.json +3084 -0
  82. package/conformance/cases/c26-hosts-array-1024/meta.json +5 -0
  83. package/conformance/cases/c27-hosts-array-1025/expected.json +7248 -0
  84. package/conformance/cases/c27-hosts-array-1025/input.json +3087 -0
  85. package/conformance/cases/c27-hosts-array-1025/meta.json +5 -0
  86. package/conformance/cases/c28-large-document-over-1mb/expected.json +82 -0
  87. package/conformance/cases/c28-large-document-over-1mb/input.json +11 -0
  88. package/conformance/cases/c28-large-document-over-1mb/meta.json +5 -0
  89. package/conformance/cases/c29-salvage-then-domain-refine-fails/expected.json +77 -0
  90. package/conformance/cases/c29-salvage-then-domain-refine-fails/input.json +27 -0
  91. package/conformance/cases/c29-salvage-then-domain-refine-fails/meta.json +5 -0
  92. package/conformance/cases/c30-version-triple-a-first/expected.json +85 -0
  93. package/conformance/cases/c30-version-triple-a-first/input.json +18 -0
  94. package/conformance/cases/c30-version-triple-a-first/meta.json +5 -0
  95. package/conformance/cases/c31-version-triple-b-changed/expected.json +85 -0
  96. package/conformance/cases/c31-version-triple-b-changed/input.json +18 -0
  97. package/conformance/cases/c31-version-triple-b-changed/meta.json +5 -0
  98. package/conformance/cases/c32-version-triple-a-restored/expected.json +85 -0
  99. package/conformance/cases/c32-version-triple-a-restored/input.json +18 -0
  100. package/conformance/cases/c32-version-triple-a-restored/meta.json +5 -0
  101. package/conformance/cases/c33-limits-nested-carried-key/expected.json +91 -0
  102. package/conformance/cases/c33-limits-nested-carried-key/input.json +14 -0
  103. package/conformance/cases/c33-limits-nested-carried-key/meta.json +5 -0
  104. package/conformance/cases/c34-skills-content-vs-manifest/expected.json +160 -0
  105. package/conformance/cases/c34-skills-content-vs-manifest/input.json +18 -0
  106. package/conformance/cases/c34-skills-content-vs-manifest/meta.json +5 -0
  107. package/conformance/cases/c35-portable-domain-file-is-null/expected.json +76 -0
  108. package/conformance/cases/c35-portable-domain-file-is-null/input.json +9 -0
  109. package/conformance/cases/c35-portable-domain-file-is-null/meta.json +5 -0
  110. package/conformance/cases/c36-skills-entry-without-content/expected.json +144 -0
  111. package/conformance/cases/c36-skills-entry-without-content/input.json +16 -0
  112. package/conformance/cases/c36-skills-entry-without-content/meta.json +5 -0
  113. package/conformance/cases/c37-skills-field-null/expected.json +134 -0
  114. package/conformance/cases/c37-skills-field-null/input.json +9 -0
  115. package/conformance/cases/c37-skills-field-null/meta.json +5 -0
  116. package/conformance/cases/c38-remote-exec-is-a-non-domain-file/expected.json +72 -0
  117. package/conformance/cases/c38-remote-exec-is-a-non-domain-file/input.json +11 -0
  118. package/conformance/cases/c38-remote-exec-is-a-non-domain-file/meta.json +5 -0
  119. package/conformance/cases/c39-hidden-file-in-config-d/expected.json +72 -0
  120. package/conformance/cases/c39-hidden-file-in-config-d/input.json +11 -0
  121. package/conformance/cases/c39-hidden-file-in-config-d/meta.json +5 -0
  122. package/conformance/cases/cc01-mcp-toolfaces-non-object/expected.json +112 -0
  123. package/conformance/cases/cc01-mcp-toolfaces-non-object/input.json +39 -0
  124. package/conformance/cases/cc01-mcp-toolfaces-non-object/meta.json +8 -0
  125. package/conformance/cases/cc02-mcp-source-key-is-transported/expected.json +85 -0
  126. package/conformance/cases/cc02-mcp-source-key-is-transported/input.json +20 -0
  127. package/conformance/cases/cc02-mcp-source-key-is-transported/meta.json +8 -0
  128. package/conformance/cases/cc03-model-compat-unknown-subkey/expected.json +89 -0
  129. package/conformance/cases/cc03-model-compat-unknown-subkey/input.json +22 -0
  130. package/conformance/cases/cc03-model-compat-unknown-subkey/meta.json +8 -0
  131. package/conformance/cases/cli01-model-name-nfc-vs-nfd/expected.json +102 -0
  132. package/conformance/cases/cli01-model-name-nfc-vs-nfd/input.json +30 -0
  133. package/conformance/cases/cli01-model-name-nfc-vs-nfd/meta.json +9 -0
  134. package/conformance/cases/cli02-control-and-zero-width-chars/expected.json +115 -0
  135. package/conformance/cases/cli02-control-and-zero-width-chars/input.json +42 -0
  136. package/conformance/cases/cli02-control-and-zero-width-chars/meta.json +9 -0
  137. package/conformance/cases/cli03-credential-pasted-into-unknown-key/expected.json +92 -0
  138. package/conformance/cases/cli03-credential-pasted-into-unknown-key/input.json +16 -0
  139. package/conformance/cases/cli03-credential-pasted-into-unknown-key/meta.json +9 -0
  140. package/conformance/cases/cli04-env-value-with-newline/expected.json +93 -0
  141. package/conformance/cases/cli04-env-value-with-newline/input.json +23 -0
  142. package/conformance/cases/cli04-env-value-with-newline/meta.json +5 -0
  143. package/conformance/cases/cli05-long-and-prefix-colliding-names/expected.json +109 -0
  144. package/conformance/cases/cli05-long-and-prefix-colliding-names/input.json +30 -0
  145. package/conformance/cases/cli05-long-and-prefix-colliding-names/meta.json +5 -0
  146. package/conformance/cases/z01-every-domain-empty-object/expected.json +72 -0
  147. package/conformance/cases/z01-every-domain-empty-object/input.json +25 -0
  148. package/conformance/cases/z01-every-domain-empty-object/meta.json +5 -0
  149. package/conformance/cases/z02-every-domain-unknown-key/expected.json +228 -0
  150. package/conformance/cases/z02-every-domain-unknown-key/input.json +59 -0
  151. package/conformance/cases/z02-every-domain-unknown-key/meta.json +5 -0
  152. package/conformance/historical/settings-schema@1.0.0.json +999 -0
  153. package/conformance/historical/settings-schema@1.10.0.json +999 -0
  154. package/conformance/historical/settings-schema@1.5.0.json +999 -0
  155. package/conformance/historical/settings-schema@2.0.0.json +999 -0
  156. package/conformance/historical/settings-schema@2.1.0.json +999 -0
  157. package/dist/api/auth.d.ts +42 -1
  158. package/dist/api/auth.js +71 -4
  159. package/dist/api/scopes.d.ts +9 -1
  160. package/dist/api/scopes.js +8 -2
  161. package/dist/config-fns.d.ts +56 -24
  162. package/dist/config-fns.js +89 -72
  163. package/dist/conformance/canonical.d.ts +36 -0
  164. package/dist/conformance/canonical.js +114 -0
  165. package/dist/conformance/contract-adapter.d.ts +20 -0
  166. package/dist/conformance/contract-adapter.js +74 -0
  167. package/dist/conformance/corpus.d.ts +73 -0
  168. package/dist/conformance/corpus.js +99 -0
  169. package/dist/conformance/derive.d.ts +48 -0
  170. package/dist/conformance/derive.js +136 -0
  171. package/dist/conformance/index.d.ts +22 -0
  172. package/dist/conformance/index.js +22 -0
  173. package/dist/conformance/run.d.ts +27 -0
  174. package/dist/conformance/run.js +424 -0
  175. package/dist/conformance/types.d.ts +288 -0
  176. package/dist/conformance/types.js +4 -0
  177. package/dist/conformance/warnings.d.ts +88 -0
  178. package/dist/conformance/warnings.js +144 -0
  179. package/dist/file-store.d.ts +7 -0
  180. package/dist/file-store.js +6 -2
  181. package/package.json +7 -5
  182. package/dist/api/wire.d.ts +0 -60
  183. package/dist/api/wire.js +0 -89
@@ -0,0 +1,112 @@
1
+ {
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
+ "hosts": {
22
+ "hosts": []
23
+ },
24
+ "limits": {},
25
+ "mcp": {
26
+ "servers": []
27
+ },
28
+ "models": {
29
+ "models": [
30
+ {
31
+ "api": "openai-completions",
32
+ "apiKeyEnv": "OPENAI_API_KEY",
33
+ "enabled": true,
34
+ "id": "m0-id",
35
+ "name": "m0",
36
+ "provider": "openai",
37
+ "quotaWeight": 1,
38
+ "reasoning": false,
39
+ "tier": "standard",
40
+ "vision": false
41
+ },
42
+ {
43
+ "api": "openai-completions",
44
+ "apiKeyEnv": "OPENAI_API_KEY",
45
+ "enabled": true,
46
+ "id": "m1-id",
47
+ "name": "m1",
48
+ "provider": "openai",
49
+ "quotaWeight": 1,
50
+ "reasoning": false,
51
+ "tier": "standard",
52
+ "vision": false
53
+ }
54
+ ],
55
+ "roles": {},
56
+ "tierGroups": []
57
+ },
58
+ "plugins": {
59
+ "plugins": []
60
+ },
61
+ "projects": {
62
+ "projects": {}
63
+ },
64
+ "prompts": {
65
+ "bindings": []
66
+ },
67
+ "rosters": {
68
+ "rosters": []
69
+ },
70
+ "runtime": {},
71
+ "scenarios": {
72
+ "scenarios": []
73
+ },
74
+ "skills": {
75
+ "skills": []
76
+ },
77
+ "systems": {
78
+ "systems": []
79
+ },
80
+ "workers": {
81
+ "workers": []
82
+ }
83
+ },
84
+ "warnings": [
85
+ {
86
+ "domain": "models",
87
+ "keys": [
88
+ [
89
+ "models",
90
+ 1,
91
+ "k"
92
+ ],
93
+ [
94
+ "models.1.k"
95
+ ]
96
+ ],
97
+ "kind": "unknown-keys-dropped"
98
+ }
99
+ ],
100
+ "metadata": {
101
+ "version": 7,
102
+ "updatedAt": "2026-09-16T00:00:00.000Z"
103
+ }
104
+ },
105
+ "wire": {
106
+ "derive": true
107
+ },
108
+ "localRoot": {
109
+ "derive": true,
110
+ "localVersion": 3532081824041502
111
+ }
112
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "meta": {
3
+ "version": 7,
4
+ "updatedAt": "2026-09-16T00:00:00.000Z"
5
+ },
6
+ "domains": {
7
+ "models": {
8
+ "models": [
9
+ {
10
+ "name": "m0",
11
+ "provider": "openai",
12
+ "id": "m0-id",
13
+ "apiKeyEnv": "OPENAI_API_KEY"
14
+ },
15
+ {
16
+ "name": "m1",
17
+ "provider": "openai",
18
+ "id": "m1-id",
19
+ "apiKeyEnv": "OPENAI_API_KEY",
20
+ "k": 1
21
+ }
22
+ ],
23
+ "models.1.k": 1
24
+ }
25
+ }
26
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "contributor": "contract",
3
+ "claim": "同一份文档里同时有字面叫 `models.1.k` 的顶层键与 models[1] 里的未知键 `k` —— 2.1.0 的点号串把两者编码成同一个串(S-323c 登记的残余二义)。段坐标下两条必须不同,且比对器按段深相等直比、零 stringify。",
4
+ "firstRedOn": []
5
+ }
@@ -0,0 +1,77 @@
1
+ {
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
+ "hosts": {
22
+ "hosts": []
23
+ },
24
+ "limits": {},
25
+ "mcp": {
26
+ "servers": []
27
+ },
28
+ "models": {
29
+ "models": [],
30
+ "roles": {},
31
+ "tierGroups": []
32
+ },
33
+ "plugins": {
34
+ "plugins": []
35
+ },
36
+ "projects": {
37
+ "projects": {}
38
+ },
39
+ "prompts": {
40
+ "bindings": []
41
+ },
42
+ "rosters": {
43
+ "rosters": []
44
+ },
45
+ "runtime": {},
46
+ "scenarios": {
47
+ "scenarios": []
48
+ },
49
+ "skills": {
50
+ "skills": []
51
+ },
52
+ "systems": {
53
+ "systems": []
54
+ },
55
+ "workers": {
56
+ "workers": []
57
+ }
58
+ },
59
+ "warnings": [
60
+ {
61
+ "domain": "models",
62
+ "kind": "domain-defaulted"
63
+ }
64
+ ],
65
+ "metadata": {
66
+ "version": 7,
67
+ "updatedAt": "2026-09-16T00:00:00.000Z"
68
+ }
69
+ },
70
+ "wire": {
71
+ "derive": true
72
+ },
73
+ "localRoot": {
74
+ "derive": true,
75
+ "localVersion": 2762339062543970
76
+ }
77
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "meta": {
3
+ "version": 7,
4
+ "updatedAt": "2026-09-16T00:00:00.000Z"
5
+ },
6
+ "domains": {
7
+ "models": {
8
+ "models": [
9
+ {
10
+ "name": "bad1"
11
+ },
12
+ {
13
+ "name": "bad2"
14
+ }
15
+ ]
16
+ }
17
+ }
18
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "contributor": "contract",
3
+ "claim": "一个集合**所有**条目都坏 = 整个坏掉的集合,不是「部分损坏」。抢救绝不凭空造出一个空集合(空的限制清单常常等于放权),所以这里一条 entry-dropped 都不许发,只发整域降级。",
4
+ "firstRedOn": []
5
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "domains": {
3
+ "outcome": "rejected",
4
+ "stage": "validate"
5
+ },
6
+ "wire": {
7
+ "outcome": "rejected",
8
+ "stage": "validate",
9
+ "why": "domains 腿是拒绝态,不派生;wire 腿把同一份文档交给同一个 buildEffective,拒绝层相同"
10
+ },
11
+ "localRoot": {
12
+ "outcome": "rejected",
13
+ "stage": "validate",
14
+ "why": "rosters 是便携域,文件层过得去(是 JSON 对象),拒绝发生在域校验层"
15
+ }
16
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "meta": {
3
+ "version": 7,
4
+ "updatedAt": "2026-09-16T00:00:00.000Z"
5
+ },
6
+ "domains": {
7
+ "rosters": {
8
+ "rosters": [
9
+ {
10
+ "name": "r1"
11
+ },
12
+ {
13
+ "name": 5
14
+ }
15
+ ]
16
+ }
17
+ }
18
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "contributor": "contract",
3
+ "claim": "gate 域(rosters)坏条目**整域拒**,不逐条容错 —— 悄悄丢一条 roster 就是那个 worker 静默拿到全量目录(放权)。三腿都必须拒,任何一腿「容错一下」都是跨仓分歧里最贵的那种。",
4
+ "firstRedOn": []
5
+ }
@@ -0,0 +1,99 @@
1
+ {
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
+ "approvalRequire": [
22
+ "deploy"
23
+ ],
24
+ "autonomy": "ask",
25
+ "commandPolicy": [
26
+ {
27
+ "command": "rm",
28
+ "decision": "deny"
29
+ }
30
+ ]
31
+ },
32
+ "hosts": {
33
+ "hosts": []
34
+ },
35
+ "limits": {},
36
+ "mcp": {
37
+ "servers": []
38
+ },
39
+ "models": {
40
+ "models": [],
41
+ "roles": {},
42
+ "tierGroups": []
43
+ },
44
+ "plugins": {
45
+ "plugins": []
46
+ },
47
+ "projects": {
48
+ "projects": {}
49
+ },
50
+ "prompts": {
51
+ "bindings": []
52
+ },
53
+ "rosters": {
54
+ "rosters": []
55
+ },
56
+ "runtime": {},
57
+ "scenarios": {
58
+ "scenarios": []
59
+ },
60
+ "skills": {
61
+ "skills": []
62
+ },
63
+ "systems": {
64
+ "systems": []
65
+ },
66
+ "workers": {
67
+ "workers": []
68
+ }
69
+ },
70
+ "warnings": [
71
+ {
72
+ "domain": "governance",
73
+ "keys": [
74
+ [
75
+ "autonomy"
76
+ ],
77
+ [
78
+ "commandPolicy"
79
+ ],
80
+ [
81
+ "approvalRequire"
82
+ ]
83
+ ],
84
+ "kind": "legacy-governance-lifted"
85
+ }
86
+ ],
87
+ "metadata": {
88
+ "version": 7,
89
+ "updatedAt": "2026-09-16T00:00:00.000Z"
90
+ }
91
+ },
92
+ "wire": {
93
+ "derive": true
94
+ },
95
+ "localRoot": {
96
+ "derive": true,
97
+ "localVersion": 442574663489663
98
+ }
99
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "meta": {
3
+ "version": 7,
4
+ "updatedAt": "2026-09-16T00:00:00.000Z"
5
+ },
6
+ "domains": {
7
+ "runtime": {
8
+ "autonomy": "ask",
9
+ "commandPolicy": [
10
+ {
11
+ "command": "rm",
12
+ "decision": "deny"
13
+ }
14
+ ],
15
+ "approvalRequire": [
16
+ "deploy"
17
+ ]
18
+ }
19
+ }
20
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "contributor": "contract",
3
+ "claim": "governance 域从未设过时,读侧会从 0.5 期的 runtime 文档里把治理三闸抬起来。兼容臂真生效必须出声(legacy-governance-lifted),否则窗永远关不掉;三腿要同样出声、坐标同样是三个单段键。",
4
+ "firstRedOn": [
5
+ "settings-schema@1.0.0",
6
+ "settings-schema@1.10.0",
7
+ "settings-schema@1.5.0"
8
+ ]
9
+ }
@@ -0,0 +1,72 @@
1
+ {
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
+ "hosts": {
22
+ "hosts": []
23
+ },
24
+ "limits": {},
25
+ "mcp": {
26
+ "servers": []
27
+ },
28
+ "models": {
29
+ "models": [],
30
+ "roles": {},
31
+ "tierGroups": []
32
+ },
33
+ "plugins": {
34
+ "plugins": []
35
+ },
36
+ "projects": {
37
+ "projects": {}
38
+ },
39
+ "prompts": {
40
+ "bindings": []
41
+ },
42
+ "rosters": {
43
+ "rosters": []
44
+ },
45
+ "runtime": {},
46
+ "scenarios": {
47
+ "scenarios": []
48
+ },
49
+ "skills": {
50
+ "skills": []
51
+ },
52
+ "systems": {
53
+ "systems": []
54
+ },
55
+ "workers": {
56
+ "workers": []
57
+ }
58
+ },
59
+ "warnings": [],
60
+ "metadata": {
61
+ "version": 7,
62
+ "updatedAt": "2026-09-16T00:00:00.000Z"
63
+ }
64
+ },
65
+ "wire": {
66
+ "derive": true
67
+ },
68
+ "localRoot": {
69
+ "derive": true,
70
+ "localVersion": 2617555914511015
71
+ }
72
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "meta": {
3
+ "version": 7,
4
+ "updatedAt": "2026-09-16T00:00:00.000Z"
5
+ },
6
+ "domains": {
7
+ "hooks": {
8
+ "PreModelSwitch": [
9
+ {
10
+ "matcher": "*",
11
+ "hooks": [
12
+ {
13
+ "type": "command",
14
+ "command": "echo pre"
15
+ }
16
+ ]
17
+ }
18
+ ],
19
+ "PostModelSwitch": [
20
+ {
21
+ "matcher": "*",
22
+ "hooks": [
23
+ {
24
+ "type": "command",
25
+ "command": "echo post"
26
+ }
27
+ ]
28
+ }
29
+ ],
30
+ "postToolBatchX": [
31
+ {
32
+ "matcher": "*",
33
+ "hooks": [
34
+ {
35
+ "type": "command",
36
+ "command": "echo out-of-set"
37
+ }
38
+ ]
39
+ }
40
+ ]
41
+ }
42
+ }
43
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "contributor": "core",
3
+ "claim": "`hooks` **不是配置域**(DOMAIN_SCHEMAS 十七员里没有它;HooksConfig 住在 TaskRequest.settings 那条 wire 上)。于是一份带 PreModelSwitch / PostModelSwitch / 闭集外家族名的 hooks 文档:wire 腿按 open-world **逐字承运、零告警**(= server 表态要的护栏形),domains 腿根本不会去问它(无声),local-root 腿把它报成 not-a-domain。三腿三样,谁把它当域谁就错。",
4
+ "firstRedOn": [],
5
+ "note": "与 client-core ④(hooks 闭集之外的家族名)合成一条 case 两期望;server 半场表态 = 不拒不映射、逐字保留、零告警。"
6
+ }