@sema-agent/settings-schema 2.0.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 +307 -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 +97 -23
  162. package/dist/config-fns.js +198 -46
  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,115 @@
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
+ "elicitation": false,
29
+ "enabled": true,
30
+ "name": "s1",
31
+ "notes": "line1\nline2​tail",
32
+ "rosters": [],
33
+ "scenarios": [],
34
+ "transport": {
35
+ "kind": "http",
36
+ "url": "https://x.example"
37
+ }
38
+ }
39
+ ]
40
+ },
41
+ "models": {
42
+ "models": [
43
+ {
44
+ "api": "openai-completions",
45
+ "apiKeyEnv": "OPENAI_API_KEY",
46
+ "enabled": true,
47
+ "id": "ok-name-id",
48
+ "name": "ok-name",
49
+ "provider": "openai",
50
+ "quotaWeight": 1,
51
+ "reasoning": false,
52
+ "tier": "standard",
53
+ "vision": false
54
+ }
55
+ ],
56
+ "roles": {},
57
+ "tierGroups": []
58
+ },
59
+ "plugins": {
60
+ "plugins": []
61
+ },
62
+ "projects": {
63
+ "projects": {}
64
+ },
65
+ "prompts": {
66
+ "bindings": []
67
+ },
68
+ "rosters": {
69
+ "rosters": []
70
+ },
71
+ "runtime": {},
72
+ "scenarios": {
73
+ "scenarios": []
74
+ },
75
+ "skills": {
76
+ "skills": []
77
+ },
78
+ "systems": {
79
+ "systems": []
80
+ },
81
+ "workers": {
82
+ "workers": []
83
+ }
84
+ },
85
+ "warnings": [
86
+ {
87
+ "domain": "models",
88
+ "kind": "entry-dropped",
89
+ "path": [
90
+ "models",
91
+ 0
92
+ ]
93
+ },
94
+ {
95
+ "domain": "models",
96
+ "kind": "entry-dropped",
97
+ "path": [
98
+ "models",
99
+ 1
100
+ ]
101
+ }
102
+ ],
103
+ "metadata": {
104
+ "version": 7,
105
+ "updatedAt": "2026-09-16T00:00:00.000Z"
106
+ }
107
+ },
108
+ "wire": {
109
+ "derive": true
110
+ },
111
+ "localRoot": {
112
+ "derive": true,
113
+ "localVersion": 4213710307592750
114
+ }
115
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ "meta": {
3
+ "version": 7,
4
+ "updatedAt": "2026-09-16T00:00:00.000Z"
5
+ },
6
+ "domains": {
7
+ "models": {
8
+ "models": [
9
+ {
10
+ "name": "a\u0007b",
11
+ "provider": "openai",
12
+ "id": "a\u0007b-id",
13
+ "apiKeyEnv": "OPENAI_API_KEY"
14
+ },
15
+ {
16
+ "name": "zero​width",
17
+ "provider": "openai",
18
+ "id": "zero​width-id",
19
+ "apiKeyEnv": "OPENAI_API_KEY"
20
+ },
21
+ {
22
+ "name": "ok-name",
23
+ "provider": "openai",
24
+ "id": "ok-name-id",
25
+ "apiKeyEnv": "OPENAI_API_KEY"
26
+ }
27
+ ]
28
+ },
29
+ "mcp": {
30
+ "servers": [
31
+ {
32
+ "name": "s1",
33
+ "transport": {
34
+ "kind": "http",
35
+ "url": "https://x.example"
36
+ },
37
+ "notes": "line1\nline2​tail"
38
+ }
39
+ ]
40
+ }
41
+ }
42
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "contributor": "cli",
3
+ "claim": "壳视角②:控制字符 / 零宽字符落在两种字段上,结局**不同**,而这正是壳要知道的:落在 name(有字符集)⇒ 条目被丢 + 点名;落在自由文本(mcp 备注)⇒ **逐字原样承运**,一个字节都不转义、不折叠。转义是显示面的责任,读侧不许代劳 —— 代劳了,壳就再也拿不到运维真正写下的那个串。",
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,92 @@
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
+ "approved": false,
25
+ "drain": false,
26
+ "enabled": true,
27
+ "labels": [],
28
+ "name": "h1"
29
+ }
30
+ ]
31
+ },
32
+ "limits": {},
33
+ "mcp": {
34
+ "servers": []
35
+ },
36
+ "models": {
37
+ "models": [],
38
+ "roles": {},
39
+ "tierGroups": []
40
+ },
41
+ "plugins": {
42
+ "plugins": []
43
+ },
44
+ "projects": {
45
+ "projects": {}
46
+ },
47
+ "prompts": {
48
+ "bindings": []
49
+ },
50
+ "rosters": {
51
+ "rosters": []
52
+ },
53
+ "runtime": {},
54
+ "scenarios": {
55
+ "scenarios": []
56
+ },
57
+ "skills": {
58
+ "skills": []
59
+ },
60
+ "systems": {
61
+ "systems": []
62
+ },
63
+ "workers": {
64
+ "workers": []
65
+ }
66
+ },
67
+ "warnings": [
68
+ {
69
+ "domain": "hosts",
70
+ "keys": [
71
+ [
72
+ "hosts",
73
+ 0,
74
+ "url"
75
+ ]
76
+ ],
77
+ "kind": "unknown-keys-dropped"
78
+ }
79
+ ],
80
+ "metadata": {
81
+ "version": 7,
82
+ "updatedAt": "2026-09-16T00:00:00.000Z"
83
+ }
84
+ },
85
+ "wire": {
86
+ "derive": true
87
+ },
88
+ "localRoot": {
89
+ "derive": true,
90
+ "localVersion": 2617555914511015
91
+ }
92
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "meta": {
3
+ "version": 7,
4
+ "updatedAt": "2026-09-16T00:00:00.000Z"
5
+ },
6
+ "domains": {
7
+ "hosts": {
8
+ "hosts": [
9
+ {
10
+ "name": "h1",
11
+ "url": "https://user:sk-live-ZZZZZZZZZZZZZZZZZZZZ@example.com"
12
+ }
13
+ ]
14
+ }
15
+ }
16
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "contributor": "cli",
3
+ "claim": "壳视角③:一条带 userinfo 凭据的 URL 被粘进 hosts 条目。**真读数与提案不同**:HostEntry 根本没有 `url` 字段 ⇒ 它是未知键,被剥掉、只报**键路径**。于是不变量成立且更强:凭据既不进 effective、也不进告警(告警里只有 ['hosts',0,'url'] 这串坐标)。本条的机器门 = 告警面零命中语料秘密。",
4
+ "firstRedOn": [],
5
+ "secrets": [
6
+ "sk-live-ZZZZZZZZZZZZZZZZZZZZ",
7
+ "https://user:sk-live-ZZZZZZZZZZZZZZZZZZZZ@example.com"
8
+ ]
9
+ }
@@ -0,0 +1,93 @@
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
+ "coords": {},
59
+ "enabled": true,
60
+ "env": {
61
+ "BAR": "c\rd",
62
+ "FOO": "a\nb"
63
+ },
64
+ "host": "default",
65
+ "image": "sema-server:latest",
66
+ "name": "w1",
67
+ "runtime": {
68
+ "memoryBackend": "off",
69
+ "rateLimitRpm": 0,
70
+ "requirePrincipal": false,
71
+ "sessionBackend": "auto"
72
+ },
73
+ "secretRefs": {
74
+ "apiKeyEnv": "OPENAI_API_KEY"
75
+ }
76
+ }
77
+ ]
78
+ }
79
+ },
80
+ "warnings": [],
81
+ "metadata": {
82
+ "version": 7,
83
+ "updatedAt": "2026-09-16T00:00:00.000Z"
84
+ }
85
+ },
86
+ "wire": {
87
+ "derive": true
88
+ },
89
+ "localRoot": {
90
+ "derive": true,
91
+ "localVersion": 2617555914511015
92
+ }
93
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "meta": {
3
+ "version": 7,
4
+ "updatedAt": "2026-09-16T00:00:00.000Z"
5
+ },
6
+ "domains": {
7
+ "workers": {
8
+ "workers": [
9
+ {
10
+ "name": "w1",
11
+ "runtime": {},
12
+ "secretRefs": {
13
+ "apiKeyEnv": "OPENAI_API_KEY"
14
+ },
15
+ "env": {
16
+ "FOO": "a\nb",
17
+ "BAR": "c\rd"
18
+ }
19
+ }
20
+ ]
21
+ }
22
+ }
23
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "contributor": "cli",
3
+ "claim": "壳视角④:worker 的 env 值里有换行 / 回车 ⇒ 读侧**原样承运**(不折叠、不截断、不静默改写)。壳的 `/config show` 单行渲染会断行,那是显示面的事;读侧一改,配置就与运维写下的不是同一份。注意这一域是非便携域:local-root 腿看不到它,只报 unread-config-file —— 三腿三样,壳要知道自己问的是哪一腿。",
4
+ "firstRedOn": []
5
+ }
@@ -0,0 +1,109 @@
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": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-id",
35
+ "name": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
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": "prefix-shared-name-aaaa-id",
47
+ "name": "prefix-shared-name-aaaa",
48
+ "provider": "openai",
49
+ "quotaWeight": 1,
50
+ "reasoning": false,
51
+ "tier": "standard",
52
+ "vision": false
53
+ },
54
+ {
55
+ "api": "openai-completions",
56
+ "apiKeyEnv": "OPENAI_API_KEY",
57
+ "enabled": true,
58
+ "id": "prefix-shared-name-aaab-id",
59
+ "name": "prefix-shared-name-aaab",
60
+ "provider": "openai",
61
+ "quotaWeight": 1,
62
+ "reasoning": false,
63
+ "tier": "standard",
64
+ "vision": false
65
+ }
66
+ ],
67
+ "roles": {},
68
+ "tierGroups": []
69
+ },
70
+ "plugins": {
71
+ "plugins": []
72
+ },
73
+ "projects": {
74
+ "projects": {}
75
+ },
76
+ "prompts": {
77
+ "bindings": []
78
+ },
79
+ "rosters": {
80
+ "rosters": []
81
+ },
82
+ "runtime": {},
83
+ "scenarios": {
84
+ "scenarios": []
85
+ },
86
+ "skills": {
87
+ "skills": []
88
+ },
89
+ "systems": {
90
+ "systems": []
91
+ },
92
+ "workers": {
93
+ "workers": []
94
+ }
95
+ },
96
+ "warnings": [],
97
+ "metadata": {
98
+ "version": 7,
99
+ "updatedAt": "2026-09-16T00:00:00.000Z"
100
+ }
101
+ },
102
+ "wire": {
103
+ "derive": true
104
+ },
105
+ "localRoot": {
106
+ "derive": true,
107
+ "localVersion": 1318036626730287
108
+ }
109
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "meta": {
3
+ "version": 7,
4
+ "updatedAt": "2026-09-16T00:00:00.000Z"
5
+ },
6
+ "domains": {
7
+ "models": {
8
+ "models": [
9
+ {
10
+ "name": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
11
+ "provider": "openai",
12
+ "id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-id",
13
+ "apiKeyEnv": "OPENAI_API_KEY"
14
+ },
15
+ {
16
+ "name": "prefix-shared-name-aaaa",
17
+ "provider": "openai",
18
+ "id": "prefix-shared-name-aaaa-id",
19
+ "apiKeyEnv": "OPENAI_API_KEY"
20
+ },
21
+ {
22
+ "name": "prefix-shared-name-aaab",
23
+ "provider": "openai",
24
+ "id": "prefix-shared-name-aaab-id",
25
+ "apiKeyEnv": "OPENAI_API_KEY"
26
+ }
27
+ ]
28
+ }
29
+ }
30
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "contributor": "cli",
3
+ "claim": "壳视角⑤:300 字节的模型名、以及一组只在尾部有差别的同前缀名 ⇒ 读侧**不截断、不去重**,逐字全量送到壳手里。截断是壳的责任;读侧代为截断会让两条不同的模型在下游变成同一条(而且没有任何告警)。",
4
+ "firstRedOn": []
5
+ }
@@ -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": 209075514147757
71
+ }
72
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "meta": {
3
+ "version": 7,
4
+ "updatedAt": "2026-09-16T00:00:00.000Z"
5
+ },
6
+ "domains": {
7
+ "models": {},
8
+ "rosters": {},
9
+ "skills": {},
10
+ "mcp": {},
11
+ "plugins": {},
12
+ "scenarios": {},
13
+ "systems": {},
14
+ "collab": {},
15
+ "workers": {},
16
+ "hosts": {},
17
+ "runtime": {},
18
+ "governance": {},
19
+ "entitlement": {},
20
+ "execution": {},
21
+ "projects": {},
22
+ "prompts": {},
23
+ "limits": {}
24
+ }
25
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "contributor": "contract",
3
+ "claim": "十七个域各给一份**合法空文档** `{}` ⇒ 零告警、每域落 schema 默认。覆盖律的第一份:每个域至少被两条 case 摸过。它同时钉住「设了空」这一形在三腿上的读数,以及 local-root 腿对五个非便携域各报一条 unread-config-file。",
4
+ "firstRedOn": []
5
+ }