@sema-agent/settings-schema 6.3.0 → 7.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 (103) hide show
  1. package/CHANGELOG.md +207 -0
  2. package/README.md +40 -5
  3. package/bin/settings-schema.mjs +22 -0
  4. package/conformance/VERSION +1 -1
  5. package/conformance/cases/c48-s935-model-headers-transported/expected.json +115 -0
  6. package/conformance/cases/c48-s935-model-headers-transported/input.json +37 -0
  7. package/conformance/cases/c48-s935-model-headers-transported/meta.json +6 -0
  8. package/conformance/cases/c49-s935-model-headers-secret-entry-dropped/expected.json +98 -0
  9. package/conformance/cases/c49-s935-model-headers-secret-entry-dropped/input.json +28 -0
  10. package/conformance/cases/c49-s935-model-headers-secret-entry-dropped/meta.json +9 -0
  11. package/conformance/cases/c50-s784-lane-host-legal/expected.json +102 -0
  12. package/conformance/cases/c50-s784-lane-host-legal/input.json +29 -0
  13. package/conformance/cases/c50-s784-lane-host-legal/meta.json +5 -0
  14. package/conformance/cases/c51-s784-lane-e2b-legal/expected.json +104 -0
  15. package/conformance/cases/c51-s784-lane-e2b-legal/input.json +32 -0
  16. package/conformance/cases/c51-s784-lane-e2b-legal/meta.json +5 -0
  17. package/conformance/cases/c52-s784-lane-k8s-legal/expected.json +106 -0
  18. package/conformance/cases/c52-s784-lane-k8s-legal/input.json +34 -0
  19. package/conformance/cases/c52-s784-lane-k8s-legal/meta.json +5 -0
  20. package/conformance/cases/c53-s784-lane-ssh-legal/expected.json +106 -0
  21. package/conformance/cases/c53-s784-lane-ssh-legal/input.json +34 -0
  22. package/conformance/cases/c53-s784-lane-ssh-legal/meta.json +5 -0
  23. package/conformance/cases/c54-s784-lane-adb-legal/expected.json +102 -0
  24. package/conformance/cases/c54-s784-lane-adb-legal/input.json +29 -0
  25. package/conformance/cases/c54-s784-lane-adb-legal/meta.json +5 -0
  26. package/conformance/cases/c55-s784-lane-local-docker-legal/expected.json +103 -0
  27. package/conformance/cases/c55-s784-lane-local-docker-legal/input.json +30 -0
  28. package/conformance/cases/c55-s784-lane-local-docker-legal/meta.json +5 -0
  29. package/conformance/cases/c56-s784-lane-device-legal/expected.json +109 -0
  30. package/conformance/cases/c56-s784-lane-device-legal/input.json +36 -0
  31. package/conformance/cases/c56-s784-lane-device-legal/meta.json +5 -0
  32. package/conformance/cases/c57-s784-g1-enabled-no-lane/expected.json +83 -0
  33. package/conformance/cases/c57-s784-g1-enabled-no-lane/input.json +23 -0
  34. package/conformance/cases/c57-s784-g1-enabled-no-lane/meta.json +5 -0
  35. package/conformance/cases/c58-s784-g2-multitenant-host/expected.json +83 -0
  36. package/conformance/cases/c58-s784-g2-multitenant-host/input.json +34 -0
  37. package/conformance/cases/c58-s784-g2-multitenant-host/meta.json +5 -0
  38. package/conformance/cases/c59-s784-g3-k8s-missing-image/expected.json +83 -0
  39. package/conformance/cases/c59-s784-g3-k8s-missing-image/input.json +26 -0
  40. package/conformance/cases/c59-s784-g3-k8s-missing-image/meta.json +5 -0
  41. package/conformance/cases/c60-s784-g3-e2b-missing-key/expected.json +83 -0
  42. package/conformance/cases/c60-s784-g3-e2b-missing-key/input.json +26 -0
  43. package/conformance/cases/c60-s784-g3-e2b-missing-key/meta.json +5 -0
  44. package/conformance/cases/c61-s784-g3-other-lane-key/expected.json +83 -0
  45. package/conformance/cases/c61-s784-g3-other-lane-key/input.json +30 -0
  46. package/conformance/cases/c61-s784-g3-other-lane-key/meta.json +5 -0
  47. package/conformance/cases/c62-s784-g7a-session-tidb/expected.json +83 -0
  48. package/conformance/cases/c62-s784-g7a-session-tidb/input.json +27 -0
  49. package/conformance/cases/c62-s784-g7a-session-tidb/meta.json +5 -0
  50. package/conformance/cases/c63-s784-host-two-replicas/expected.json +83 -0
  51. package/conformance/cases/c63-s784-host-two-replicas/input.json +27 -0
  52. package/conformance/cases/c63-s784-host-two-replicas/meta.json +5 -0
  53. package/conformance/cases/c64-s784-multitenant-local-store/expected.json +83 -0
  54. package/conformance/cases/c64-s784-multitenant-local-store/input.json +30 -0
  55. package/conformance/cases/c64-s784-multitenant-local-store/meta.json +5 -0
  56. package/conformance/cases/c65-s784-pg-without-db/expected.json +83 -0
  57. package/conformance/cases/c65-s784-pg-without-db/input.json +27 -0
  58. package/conformance/cases/c65-s784-pg-without-db/meta.json +5 -0
  59. package/conformance/cases/c66-s784-memory-backend-mismatch/expected.json +83 -0
  60. package/conformance/cases/c66-s784-memory-backend-mismatch/input.json +36 -0
  61. package/conformance/cases/c66-s784-memory-backend-mismatch/meta.json +5 -0
  62. package/conformance/cases/c67-s784-retired-field-loud/expected.json +83 -0
  63. package/conformance/cases/c67-s784-retired-field-loud/input.json +22 -0
  64. package/conformance/cases/c67-s784-retired-field-loud/meta.json +5 -0
  65. package/conformance/cases/c68-s784-device-local-store/expected.json +83 -0
  66. package/conformance/cases/c68-s784-device-local-store/input.json +26 -0
  67. package/conformance/cases/c68-s784-device-local-store/meta.json +5 -0
  68. package/conformance/cases/cli04-env-value-with-newline/expected.json +13 -2
  69. package/conformance/cases/cli04-env-value-with-newline/input.json +8 -1
  70. package/conformance/cases/cli04-env-value-with-newline/meta.json +1 -1
  71. package/conformance/migrate-workers/m01-g5-k8s-env-lifted/expected.json +49 -0
  72. package/conformance/migrate-workers/m01-g5-k8s-env-lifted/input.json +26 -0
  73. package/conformance/migrate-workers/m01-g5-k8s-env-lifted/meta.json +4 -0
  74. package/conformance/migrate-workers/m02-g5-idempotent/expected.json +38 -0
  75. package/conformance/migrate-workers/m02-g5-idempotent/input.json +33 -0
  76. package/conformance/migrate-workers/m02-g5-idempotent/meta.json +5 -0
  77. package/conformance/migrate-workers/m03-g5-refused-no-lane/expected.json +71 -0
  78. package/conformance/migrate-workers/m03-g5-refused-no-lane/input.json +42 -0
  79. package/conformance/migrate-workers/m03-g5-refused-no-lane/meta.json +4 -0
  80. package/conformance/migrate-workers/m04-g7b-session-tidb-lifted/expected.json +52 -0
  81. package/conformance/migrate-workers/m04-g7b-session-tidb-lifted/input.json +30 -0
  82. package/conformance/migrate-workers/m04-g7b-session-tidb-lifted/meta.json +4 -0
  83. package/dist/cli.d.ts +8 -0
  84. package/dist/cli.js +70 -0
  85. package/dist/execution-lane-index.d.ts +19 -0
  86. package/dist/execution-lane-index.js +23 -0
  87. package/dist/execution-lanes.d.ts +64 -0
  88. package/dist/execution-lanes.js +152 -0
  89. package/dist/file-edit.js +26 -21
  90. package/dist/hash.d.ts +3 -3
  91. package/dist/hash.js +3 -3
  92. package/dist/hooks.d.ts +12 -12
  93. package/dist/index.d.ts +2 -0
  94. package/dist/index.js +2 -0
  95. package/dist/migrate-workers.d.ts +63 -0
  96. package/dist/migrate-workers.js +331 -0
  97. package/dist/remote-exec.d.ts +23 -64
  98. package/dist/remote-exec.js +20 -71
  99. package/dist/secret-refs.d.ts +7 -1
  100. package/dist/secret-refs.js +9 -3
  101. package/dist/types.d.ts +1382 -430
  102. package/dist/types.js +298 -76
  103. package/package.json +9 -1
@@ -0,0 +1,29 @@
1
+ {
2
+ "meta": {
3
+ "version": 7,
4
+ "updatedAt": "2026-10-03T00:00:00.000Z"
5
+ },
6
+ "domains": {
7
+ "workers": {
8
+ "workers": [
9
+ {
10
+ "name": "w-adb",
11
+ "secretRefs": {
12
+ "apiKeyEnv": "MODEL_KEY"
13
+ },
14
+ "runtime": {
15
+ "execution": {
16
+ "lane": "adb",
17
+ "coords": {
18
+ "ADB_SERIAL": "emulator-5554"
19
+ }
20
+ },
21
+ "store": {
22
+ "backend": "local"
23
+ }
24
+ }
25
+ }
26
+ ]
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "contributor": "contract",
3
+ "claim": "7.0.0 M-R2:`adb` 车道的一份合法 WorkerSpec(必需坐标 / 密钥齐、可选键在本车道栏内)三腿读出、零告警。打的是「写闸把合法车道块判成坏的」或「读腿把 runtime.execution / runtime.store 剥掉」两种读法分歧(6.4.0 两块都会被静默剥)。",
4
+ "firstRedOn": []
5
+ }
@@ -0,0 +1,103 @@
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
+ "host": "default",
61
+ "image": "sema-server:latest",
62
+ "name": "w-local-docker",
63
+ "runtime": {
64
+ "execution": {
65
+ "coords": {
66
+ "DOCKER_HOST": "tcp://docker.internal:2376",
67
+ "DOCKER_IMAGE": "registry.internal/sandbox:1"
68
+ },
69
+ "lane": "local-docker",
70
+ "secretRefs": {}
71
+ },
72
+ "rateLimitRpm": 0,
73
+ "requirePrincipal": false,
74
+ "store": {
75
+ "backend": "local",
76
+ "memory": {
77
+ "backend": "file",
78
+ "engine": "on"
79
+ },
80
+ "session": "auto"
81
+ }
82
+ },
83
+ "secretRefs": {
84
+ "apiKeyEnv": "MODEL_KEY"
85
+ }
86
+ }
87
+ ]
88
+ }
89
+ },
90
+ "warnings": [],
91
+ "metadata": {
92
+ "version": 7,
93
+ "updatedAt": "2026-10-03T00:00:00.000Z"
94
+ }
95
+ },
96
+ "wire": {
97
+ "derive": true
98
+ },
99
+ "localRoot": {
100
+ "derive": true,
101
+ "localVersion": 2617555914511015
102
+ }
103
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "meta": {
3
+ "version": 7,
4
+ "updatedAt": "2026-10-03T00:00:00.000Z"
5
+ },
6
+ "domains": {
7
+ "workers": {
8
+ "workers": [
9
+ {
10
+ "name": "w-local-docker",
11
+ "secretRefs": {
12
+ "apiKeyEnv": "MODEL_KEY"
13
+ },
14
+ "runtime": {
15
+ "execution": {
16
+ "lane": "local-docker",
17
+ "coords": {
18
+ "DOCKER_IMAGE": "registry.internal/sandbox:1",
19
+ "DOCKER_HOST": "tcp://docker.internal:2376"
20
+ }
21
+ },
22
+ "store": {
23
+ "backend": "local"
24
+ }
25
+ }
26
+ }
27
+ ]
28
+ }
29
+ }
30
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "contributor": "contract",
3
+ "claim": "7.0.0 M-R2:`local-docker` 车道的一份合法 WorkerSpec(必需坐标 / 密钥齐、可选键在本车道栏内)三腿读出、零告警。打的是「写闸把合法车道块判成坏的」或「读腿把 runtime.execution / runtime.store 剥掉」两种读法分歧(6.4.0 两块都会被静默剥)。",
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
+ "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
+ "host": "default",
61
+ "image": "sema-server:latest",
62
+ "name": "w-device",
63
+ "runtime": {
64
+ "execution": {
65
+ "coords": {
66
+ "DEVICE_SUPERSEDE": "deny"
67
+ },
68
+ "lane": "device",
69
+ "secretRefs": {}
70
+ },
71
+ "rateLimitRpm": 0,
72
+ "requirePrincipal": false,
73
+ "store": {
74
+ "backend": "pg",
75
+ "db": {
76
+ "database": "sema",
77
+ "host": "pg.internal",
78
+ "port": 5432,
79
+ "user": "svc"
80
+ },
81
+ "memory": {
82
+ "backend": "file",
83
+ "engine": "on"
84
+ },
85
+ "session": "auto"
86
+ }
87
+ },
88
+ "secretRefs": {
89
+ "apiKeyEnv": "MODEL_KEY",
90
+ "dbPasswordEnv": "HOST_DB_PW"
91
+ }
92
+ }
93
+ ]
94
+ }
95
+ },
96
+ "warnings": [],
97
+ "metadata": {
98
+ "version": 7,
99
+ "updatedAt": "2026-10-03T00:00:00.000Z"
100
+ }
101
+ },
102
+ "wire": {
103
+ "derive": true
104
+ },
105
+ "localRoot": {
106
+ "derive": true,
107
+ "localVersion": 2617555914511015
108
+ }
109
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "meta": {
3
+ "version": 7,
4
+ "updatedAt": "2026-10-03T00:00:00.000Z"
5
+ },
6
+ "domains": {
7
+ "workers": {
8
+ "workers": [
9
+ {
10
+ "name": "w-device",
11
+ "secretRefs": {
12
+ "apiKeyEnv": "MODEL_KEY",
13
+ "dbPasswordEnv": "HOST_DB_PW"
14
+ },
15
+ "runtime": {
16
+ "execution": {
17
+ "lane": "device",
18
+ "coords": {
19
+ "DEVICE_SUPERSEDE": "deny"
20
+ }
21
+ },
22
+ "store": {
23
+ "backend": "pg",
24
+ "db": {
25
+ "host": "pg.internal",
26
+ "port": 5432,
27
+ "user": "svc",
28
+ "database": "sema"
29
+ }
30
+ }
31
+ }
32
+ }
33
+ ]
34
+ }
35
+ }
36
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "contributor": "contract",
3
+ "claim": "7.0.0 M-R2:`device` 车道的一份合法 WorkerSpec(必需坐标 / 密钥齐、可选键在本车道栏内)三腿读出、零告警。打的是「写闸把合法车道块判成坏的」或「读腿把 runtime.execution / runtime.store 剥掉」两种读法分歧(6.4.0 两块都会被静默剥)。 device 这一份用 pg 店:引擎 `device-durable-store` 拒没有 SQL 坐标的 device(gpt-6 腿 F2),local 店的 device 是拒因语料 c68。",
4
+ "firstRedOn": []
5
+ }
@@ -0,0 +1,83 @@
1
+ {
2
+ "domains": {
3
+ "outcome": "rejected",
4
+ "stage": "validate",
5
+ "why": "7.0.0 写闸(WorkerSpec)拒 —— workers 是 gate 域,一只坏 worker 整域拒,不逐条容错"
6
+ },
7
+ "wire": {
8
+ "outcome": "rejected",
9
+ "stage": "validate",
10
+ "why": "wire 腿把同一份文档交给同一个 buildEffective,拒绝层相同"
11
+ },
12
+ "localRoot": {
13
+ "outcome": "effective",
14
+ "effective": {
15
+ "collab": {
16
+ "templates": []
17
+ },
18
+ "entitlement": {
19
+ "budgetGroups": [],
20
+ "groupBindings": [],
21
+ "subjects": [],
22
+ "tiers": []
23
+ },
24
+ "execution": {
25
+ "allowedLanes": [
26
+ "host"
27
+ ],
28
+ "required": false
29
+ },
30
+ "governance": {},
31
+ "hosts": {
32
+ "hosts": []
33
+ },
34
+ "limits": {},
35
+ "mcp": {
36
+ "servers": []
37
+ },
38
+ "models": {
39
+ "models": [],
40
+ "roles": {},
41
+ "tierGroups": []
42
+ },
43
+ "plugins": {
44
+ "plugins": []
45
+ },
46
+ "projects": {
47
+ "projects": {}
48
+ },
49
+ "prompts": {
50
+ "bindings": []
51
+ },
52
+ "rosters": {
53
+ "rosters": []
54
+ },
55
+ "runtime": {},
56
+ "scenarios": {
57
+ "scenarios": []
58
+ },
59
+ "skills": {
60
+ "skills": []
61
+ },
62
+ "systems": {
63
+ "systems": []
64
+ },
65
+ "workers": {
66
+ "workers": []
67
+ }
68
+ },
69
+ "warnings": [
70
+ {
71
+ "domain": "workers",
72
+ "file": "workers.json",
73
+ "kind": "unread-config-file",
74
+ "why": "non-portable-domain"
75
+ }
76
+ ],
77
+ "metadata": {
78
+ "version": 2617555914511015,
79
+ "updatedAt": "1970-01-01T00:00:00.000Z"
80
+ },
81
+ "why": "workers 是非便携域:本机腿不读 config.d/workers.json(只报 unread-config-file),写闸判据只在 domains / wire 两腿上可观察"
82
+ }
83
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "meta": {
3
+ "version": 7,
4
+ "updatedAt": "2026-10-03T00:00:00.000Z"
5
+ },
6
+ "domains": {
7
+ "workers": {
8
+ "workers": [
9
+ {
10
+ "name": "w",
11
+ "secretRefs": {
12
+ "apiKeyEnv": "MODEL_KEY"
13
+ },
14
+ "runtime": {
15
+ "store": {
16
+ "backend": "local"
17
+ }
18
+ }
19
+ }
20
+ ]
21
+ }
22
+ }
23
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "contributor": "contract",
3
+ "claim": "G1:enabled 的 worker 没有 runtime.execution ⇒ 拒(拒因点名 runtime.execution.lane)。打「声明不了车道也能过闸、起服落进程内 stub、无手照回 completed」那条静默路(WA-49)。",
4
+ "firstRedOn": []
5
+ }
@@ -0,0 +1,83 @@
1
+ {
2
+ "domains": {
3
+ "outcome": "rejected",
4
+ "stage": "validate",
5
+ "why": "7.0.0 写闸(WorkerSpec)拒 —— workers 是 gate 域,一只坏 worker 整域拒,不逐条容错"
6
+ },
7
+ "wire": {
8
+ "outcome": "rejected",
9
+ "stage": "validate",
10
+ "why": "wire 腿把同一份文档交给同一个 buildEffective,拒绝层相同"
11
+ },
12
+ "localRoot": {
13
+ "outcome": "effective",
14
+ "effective": {
15
+ "collab": {
16
+ "templates": []
17
+ },
18
+ "entitlement": {
19
+ "budgetGroups": [],
20
+ "groupBindings": [],
21
+ "subjects": [],
22
+ "tiers": []
23
+ },
24
+ "execution": {
25
+ "allowedLanes": [
26
+ "host"
27
+ ],
28
+ "required": false
29
+ },
30
+ "governance": {},
31
+ "hosts": {
32
+ "hosts": []
33
+ },
34
+ "limits": {},
35
+ "mcp": {
36
+ "servers": []
37
+ },
38
+ "models": {
39
+ "models": [],
40
+ "roles": {},
41
+ "tierGroups": []
42
+ },
43
+ "plugins": {
44
+ "plugins": []
45
+ },
46
+ "projects": {
47
+ "projects": {}
48
+ },
49
+ "prompts": {
50
+ "bindings": []
51
+ },
52
+ "rosters": {
53
+ "rosters": []
54
+ },
55
+ "runtime": {},
56
+ "scenarios": {
57
+ "scenarios": []
58
+ },
59
+ "skills": {
60
+ "skills": []
61
+ },
62
+ "systems": {
63
+ "systems": []
64
+ },
65
+ "workers": {
66
+ "workers": []
67
+ }
68
+ },
69
+ "warnings": [
70
+ {
71
+ "domain": "workers",
72
+ "file": "workers.json",
73
+ "kind": "unread-config-file",
74
+ "why": "non-portable-domain"
75
+ }
76
+ ],
77
+ "metadata": {
78
+ "version": 2617555914511015,
79
+ "updatedAt": "1970-01-01T00:00:00.000Z"
80
+ },
81
+ "why": "workers 是非便携域:本机腿不读 config.d/workers.json(只报 unread-config-file),写闸判据只在 domains / wire 两腿上可观察"
82
+ }
83
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "meta": {
3
+ "version": 7,
4
+ "updatedAt": "2026-10-03T00:00:00.000Z"
5
+ },
6
+ "domains": {
7
+ "workers": {
8
+ "workers": [
9
+ {
10
+ "name": "w",
11
+ "secretRefs": {
12
+ "apiKeyEnv": "MODEL_KEY",
13
+ "dbPasswordEnv": "HOST_DB_PW"
14
+ },
15
+ "runtime": {
16
+ "execution": {
17
+ "lane": "host"
18
+ },
19
+ "store": {
20
+ "backend": "mysql",
21
+ "db": {
22
+ "host": "db.internal",
23
+ "port": 3306,
24
+ "user": "svc",
25
+ "database": "sema"
26
+ }
27
+ },
28
+ "requirePrincipal": true
29
+ }
30
+ }
31
+ ]
32
+ }
33
+ }
34
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "contributor": "contract",
3
+ "claim": "G2:requirePrincipal + host(不分租户的车道)⇒ 拒;出路 = 导出表里 tenantSeparation=supported 的车道。打「多租户 worker 把每个租户的 Bash 落在同一台宿主」。",
4
+ "firstRedOn": []
5
+ }
@@ -0,0 +1,83 @@
1
+ {
2
+ "domains": {
3
+ "outcome": "rejected",
4
+ "stage": "validate",
5
+ "why": "7.0.0 写闸(WorkerSpec)拒 —— workers 是 gate 域,一只坏 worker 整域拒,不逐条容错"
6
+ },
7
+ "wire": {
8
+ "outcome": "rejected",
9
+ "stage": "validate",
10
+ "why": "wire 腿把同一份文档交给同一个 buildEffective,拒绝层相同"
11
+ },
12
+ "localRoot": {
13
+ "outcome": "effective",
14
+ "effective": {
15
+ "collab": {
16
+ "templates": []
17
+ },
18
+ "entitlement": {
19
+ "budgetGroups": [],
20
+ "groupBindings": [],
21
+ "subjects": [],
22
+ "tiers": []
23
+ },
24
+ "execution": {
25
+ "allowedLanes": [
26
+ "host"
27
+ ],
28
+ "required": false
29
+ },
30
+ "governance": {},
31
+ "hosts": {
32
+ "hosts": []
33
+ },
34
+ "limits": {},
35
+ "mcp": {
36
+ "servers": []
37
+ },
38
+ "models": {
39
+ "models": [],
40
+ "roles": {},
41
+ "tierGroups": []
42
+ },
43
+ "plugins": {
44
+ "plugins": []
45
+ },
46
+ "projects": {
47
+ "projects": {}
48
+ },
49
+ "prompts": {
50
+ "bindings": []
51
+ },
52
+ "rosters": {
53
+ "rosters": []
54
+ },
55
+ "runtime": {},
56
+ "scenarios": {
57
+ "scenarios": []
58
+ },
59
+ "skills": {
60
+ "skills": []
61
+ },
62
+ "systems": {
63
+ "systems": []
64
+ },
65
+ "workers": {
66
+ "workers": []
67
+ }
68
+ },
69
+ "warnings": [
70
+ {
71
+ "domain": "workers",
72
+ "file": "workers.json",
73
+ "kind": "unread-config-file",
74
+ "why": "non-portable-domain"
75
+ }
76
+ ],
77
+ "metadata": {
78
+ "version": 2617555914511015,
79
+ "updatedAt": "1970-01-01T00:00:00.000Z"
80
+ },
81
+ "why": "workers 是非便携域:本机腿不读 config.d/workers.json(只报 unread-config-file),写闸判据只在 domains / wire 两腿上可观察"
82
+ }
83
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "meta": {
3
+ "version": 7,
4
+ "updatedAt": "2026-10-03T00:00:00.000Z"
5
+ },
6
+ "domains": {
7
+ "workers": {
8
+ "workers": [
9
+ {
10
+ "name": "w",
11
+ "secretRefs": {
12
+ "apiKeyEnv": "MODEL_KEY"
13
+ },
14
+ "runtime": {
15
+ "execution": {
16
+ "lane": "k8s"
17
+ },
18
+ "store": {
19
+ "backend": "local"
20
+ }
21
+ }
22
+ }
23
+ ]
24
+ }
25
+ }
26
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "contributor": "contract",
3
+ "claim": "G3a:k8s 车道缺 coords.K8S_SANDBOX_IMAGE ⇒ 拒点名。打「点了车道却配不齐,引擎起服才拒」—— 写闸先判同一张表。",
4
+ "firstRedOn": []
5
+ }