@sema-agent/settings-schema 2.1.0 → 3.0.1
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.
- package/CHANGELOG.md +253 -1
- package/README.md +45 -10
- package/conformance/VERSION +1 -0
- package/conformance/baseline.json +55 -0
- package/conformance/cases/c01-entry-salvage-then-typo/expected.json +105 -0
- package/conformance/cases/c01-entry-salvage-then-typo/input.json +22 -0
- package/conformance/cases/c01-entry-salvage-then-typo/meta.json +10 -0
- package/conformance/cases/c02-hosts-clamp-stacked/expected.json +96 -0
- package/conformance/cases/c02-hosts-clamp-stacked/input.json +21 -0
- package/conformance/cases/c02-hosts-clamp-stacked/meta.json +10 -0
- package/conformance/cases/c03-literal-dotted-top-key/expected.json +112 -0
- package/conformance/cases/c03-literal-dotted-top-key/input.json +26 -0
- package/conformance/cases/c03-literal-dotted-top-key/meta.json +5 -0
- package/conformance/cases/c04-all-bad-collection-not-salvaged/expected.json +77 -0
- package/conformance/cases/c04-all-bad-collection-not-salvaged/input.json +18 -0
- package/conformance/cases/c04-all-bad-collection-not-salvaged/meta.json +5 -0
- package/conformance/cases/c05-gate-domain-bad-entry-throws/expected.json +16 -0
- package/conformance/cases/c05-gate-domain-bad-entry-throws/input.json +18 -0
- package/conformance/cases/c05-gate-domain-bad-entry-throws/meta.json +5 -0
- package/conformance/cases/c06-legacy-governance-lift/expected.json +99 -0
- package/conformance/cases/c06-legacy-governance-lift/input.json +20 -0
- package/conformance/cases/c06-legacy-governance-lift/meta.json +9 -0
- package/conformance/cases/c07-hooks-is-not-a-config-domain/expected.json +72 -0
- package/conformance/cases/c07-hooks-is-not-a-config-domain/input.json +43 -0
- package/conformance/cases/c07-hooks-is-not-a-config-domain/meta.json +6 -0
- package/conformance/cases/c08-limits-unknown-carried-64/expected.json +336 -0
- package/conformance/cases/c08-limits-unknown-carried-64/input.json +74 -0
- package/conformance/cases/c08-limits-unknown-carried-64/meta.json +5 -0
- package/conformance/cases/c09-limits-unknown-carried-65/expected.json +338 -0
- package/conformance/cases/c09-limits-unknown-carried-65/input.json +75 -0
- package/conformance/cases/c09-limits-unknown-carried-65/meta.json +7 -0
- package/conformance/cases/c10-record-key-secret-redacted-twice/expected.json +106 -0
- package/conformance/cases/c10-record-key-secret-redacted-twice/input.json +29 -0
- package/conformance/cases/c10-record-key-secret-redacted-twice/meta.json +13 -0
- package/conformance/cases/c11-unicode-unknown-keys/expected.json +88 -0
- package/conformance/cases/c11-unicode-unknown-keys/input.json +13 -0
- package/conformance/cases/c11-unicode-unknown-keys/meta.json +5 -0
- package/conformance/cases/c12-prototype-name-top-keys/expected.json +72 -0
- package/conformance/cases/c12-prototype-name-top-keys/input.json +20 -0
- package/conformance/cases/c12-prototype-name-top-keys/meta.json +11 -0
- package/conformance/cases/c13-models-field-null/expected.json +77 -0
- package/conformance/cases/c13-models-field-null/input.json +11 -0
- package/conformance/cases/c13-models-field-null/meta.json +5 -0
- package/conformance/cases/c14-models-field-empty-array/expected.json +72 -0
- package/conformance/cases/c14-models-field-empty-array/input.json +11 -0
- package/conformance/cases/c14-models-field-empty-array/meta.json +5 -0
- package/conformance/cases/c15-models-field-number/expected.json +77 -0
- package/conformance/cases/c15-models-field-number/input.json +11 -0
- package/conformance/cases/c15-models-field-number/meta.json +5 -0
- package/conformance/cases/c16-deep-nesting-205/expected.json +83 -0
- package/conformance/cases/c16-deep-nesting-205/input.json +421 -0
- package/conformance/cases/c16-deep-nesting-205/meta.json +5 -0
- package/conformance/cases/c17-empty-domain-file/expected.json +73 -0
- package/conformance/cases/c17-empty-domain-file/input.json +10 -0
- package/conformance/cases/c17-empty-domain-file/meta.json +5 -0
- package/conformance/cases/c18-wire-envelope-not-an-object/expected.json +74 -0
- package/conformance/cases/c18-wire-envelope-not-an-object/input.json +8 -0
- package/conformance/cases/c18-wire-envelope-not-an-object/meta.json +5 -0
- package/conformance/cases/c19-wire-envelope-no-version/expected.json +74 -0
- package/conformance/cases/c19-wire-envelope-no-version/input.json +13 -0
- package/conformance/cases/c19-wire-envelope-no-version/meta.json +5 -0
- package/conformance/cases/c20-governance-absent-lifts/expected.json +84 -0
- package/conformance/cases/c20-governance-absent-lifts/input.json +11 -0
- package/conformance/cases/c20-governance-absent-lifts/meta.json +9 -0
- package/conformance/cases/c21-governance-empty-object-wins/expected.json +72 -0
- package/conformance/cases/c21-governance-empty-object-wins/input.json +12 -0
- package/conformance/cases/c21-governance-empty-object-wins/meta.json +5 -0
- package/conformance/cases/c22-governance-null-throws/expected.json +16 -0
- package/conformance/cases/c22-governance-null-throws/input.json +9 -0
- package/conformance/cases/c22-governance-null-throws/meta.json +5 -0
- package/conformance/cases/c23-mixed-validity-models/expected.json +106 -0
- package/conformance/cases/c23-mixed-validity-models/input.json +27 -0
- package/conformance/cases/c23-mixed-validity-models/meta.json +9 -0
- package/conformance/cases/c24-valid-entries-with-unknown-keys/expected.json +100 -0
- package/conformance/cases/c24-valid-entries-with-unknown-keys/input.json +25 -0
- package/conformance/cases/c24-valid-entries-with-unknown-keys/meta.json +5 -0
- package/conformance/cases/c25-published-roundtrip-zero-warnings/expected.json +89 -0
- package/conformance/cases/c25-published-roundtrip-zero-warnings/input.json +24 -0
- package/conformance/cases/c25-published-roundtrip-zero-warnings/meta.json +5 -0
- package/conformance/cases/c26-hosts-array-1024/expected.json +7241 -0
- package/conformance/cases/c26-hosts-array-1024/input.json +3084 -0
- package/conformance/cases/c26-hosts-array-1024/meta.json +5 -0
- package/conformance/cases/c27-hosts-array-1025/expected.json +7248 -0
- package/conformance/cases/c27-hosts-array-1025/input.json +3087 -0
- package/conformance/cases/c27-hosts-array-1025/meta.json +5 -0
- package/conformance/cases/c28-large-document-over-1mb/expected.json +82 -0
- package/conformance/cases/c28-large-document-over-1mb/input.json +11 -0
- package/conformance/cases/c28-large-document-over-1mb/meta.json +5 -0
- package/conformance/cases/c29-salvage-then-domain-refine-fails/expected.json +77 -0
- package/conformance/cases/c29-salvage-then-domain-refine-fails/input.json +27 -0
- package/conformance/cases/c29-salvage-then-domain-refine-fails/meta.json +5 -0
- package/conformance/cases/c30-version-triple-a-first/expected.json +85 -0
- package/conformance/cases/c30-version-triple-a-first/input.json +18 -0
- package/conformance/cases/c30-version-triple-a-first/meta.json +5 -0
- package/conformance/cases/c31-version-triple-b-changed/expected.json +85 -0
- package/conformance/cases/c31-version-triple-b-changed/input.json +18 -0
- package/conformance/cases/c31-version-triple-b-changed/meta.json +5 -0
- package/conformance/cases/c32-version-triple-a-restored/expected.json +85 -0
- package/conformance/cases/c32-version-triple-a-restored/input.json +18 -0
- package/conformance/cases/c32-version-triple-a-restored/meta.json +5 -0
- package/conformance/cases/c33-limits-nested-carried-key/expected.json +91 -0
- package/conformance/cases/c33-limits-nested-carried-key/input.json +14 -0
- package/conformance/cases/c33-limits-nested-carried-key/meta.json +5 -0
- package/conformance/cases/c34-skills-content-vs-manifest/expected.json +160 -0
- package/conformance/cases/c34-skills-content-vs-manifest/input.json +18 -0
- package/conformance/cases/c34-skills-content-vs-manifest/meta.json +5 -0
- package/conformance/cases/c35-portable-domain-file-is-null/expected.json +76 -0
- package/conformance/cases/c35-portable-domain-file-is-null/input.json +9 -0
- package/conformance/cases/c35-portable-domain-file-is-null/meta.json +5 -0
- package/conformance/cases/c36-skills-entry-without-content/expected.json +144 -0
- package/conformance/cases/c36-skills-entry-without-content/input.json +16 -0
- package/conformance/cases/c36-skills-entry-without-content/meta.json +5 -0
- package/conformance/cases/c37-skills-field-null/expected.json +134 -0
- package/conformance/cases/c37-skills-field-null/input.json +9 -0
- package/conformance/cases/c37-skills-field-null/meta.json +5 -0
- package/conformance/cases/c38-remote-exec-is-a-non-domain-file/expected.json +72 -0
- package/conformance/cases/c38-remote-exec-is-a-non-domain-file/input.json +11 -0
- package/conformance/cases/c38-remote-exec-is-a-non-domain-file/meta.json +5 -0
- package/conformance/cases/c39-hidden-file-in-config-d/expected.json +72 -0
- package/conformance/cases/c39-hidden-file-in-config-d/input.json +11 -0
- package/conformance/cases/c39-hidden-file-in-config-d/meta.json +5 -0
- package/conformance/cases/cc01-mcp-toolfaces-non-object/expected.json +112 -0
- package/conformance/cases/cc01-mcp-toolfaces-non-object/input.json +39 -0
- package/conformance/cases/cc01-mcp-toolfaces-non-object/meta.json +8 -0
- package/conformance/cases/cc02-mcp-source-key-is-transported/expected.json +85 -0
- package/conformance/cases/cc02-mcp-source-key-is-transported/input.json +20 -0
- package/conformance/cases/cc02-mcp-source-key-is-transported/meta.json +8 -0
- package/conformance/cases/cc03-model-compat-unknown-subkey/expected.json +89 -0
- package/conformance/cases/cc03-model-compat-unknown-subkey/input.json +22 -0
- package/conformance/cases/cc03-model-compat-unknown-subkey/meta.json +8 -0
- package/conformance/cases/cli01-model-name-nfc-vs-nfd/expected.json +102 -0
- package/conformance/cases/cli01-model-name-nfc-vs-nfd/input.json +30 -0
- package/conformance/cases/cli01-model-name-nfc-vs-nfd/meta.json +9 -0
- package/conformance/cases/cli02-control-and-zero-width-chars/expected.json +115 -0
- package/conformance/cases/cli02-control-and-zero-width-chars/input.json +42 -0
- package/conformance/cases/cli02-control-and-zero-width-chars/meta.json +9 -0
- package/conformance/cases/cli03-credential-pasted-into-unknown-key/expected.json +92 -0
- package/conformance/cases/cli03-credential-pasted-into-unknown-key/input.json +16 -0
- package/conformance/cases/cli03-credential-pasted-into-unknown-key/meta.json +9 -0
- package/conformance/cases/cli04-env-value-with-newline/expected.json +93 -0
- package/conformance/cases/cli04-env-value-with-newline/input.json +23 -0
- package/conformance/cases/cli04-env-value-with-newline/meta.json +5 -0
- package/conformance/cases/cli05-long-and-prefix-colliding-names/expected.json +109 -0
- package/conformance/cases/cli05-long-and-prefix-colliding-names/input.json +30 -0
- package/conformance/cases/cli05-long-and-prefix-colliding-names/meta.json +5 -0
- package/conformance/cases/t01-absent-domain-key-not-null/expected.json +93 -0
- package/conformance/cases/t01-absent-domain-key-not-null/input.json +29 -0
- package/conformance/cases/t01-absent-domain-key-not-null/meta.json +6 -0
- package/conformance/cases/t02-entry-salvage-vs-whole-domain-refusal/expected.json +16 -0
- package/conformance/cases/t02-entry-salvage-vs-whole-domain-refusal/input.json +32 -0
- package/conformance/cases/t02-entry-salvage-vs-whole-domain-refusal/meta.json +6 -0
- package/conformance/cases/t03-prototype-name-key-not-swallowed/expected.json +107 -0
- package/conformance/cases/t03-prototype-name-key-not-swallowed/input.json +25 -0
- package/conformance/cases/t03-prototype-name-key-not-swallowed/meta.json +6 -0
- package/conformance/cases/t04-secret-literal-never-in-warning-value/expected.json +105 -0
- package/conformance/cases/t04-secret-literal-never-in-warning-value/input.json +25 -0
- package/conformance/cases/t04-secret-literal-never-in-warning-value/meta.json +14 -0
- package/conformance/cases/z01-every-domain-empty-object/expected.json +72 -0
- package/conformance/cases/z01-every-domain-empty-object/input.json +25 -0
- package/conformance/cases/z01-every-domain-empty-object/meta.json +5 -0
- package/conformance/cases/z02-every-domain-unknown-key/expected.json +228 -0
- package/conformance/cases/z02-every-domain-unknown-key/input.json +59 -0
- package/conformance/cases/z02-every-domain-unknown-key/meta.json +5 -0
- package/conformance/historical/settings-schema@1.0.0.json +1080 -0
- package/conformance/historical/settings-schema@1.10.0.json +1080 -0
- package/conformance/historical/settings-schema@1.5.0.json +1080 -0
- package/conformance/historical/settings-schema@2.0.0.json +1080 -0
- package/conformance/historical/settings-schema@2.1.0.json +1080 -0
- package/dist/api/auth.d.ts +42 -1
- package/dist/api/auth.js +71 -4
- package/dist/api/scopes.d.ts +9 -1
- package/dist/api/scopes.js +8 -2
- package/dist/config-fns.d.ts +60 -28
- package/dist/config-fns.js +94 -77
- package/dist/conformance/canonical.d.ts +36 -0
- package/dist/conformance/canonical.js +114 -0
- package/dist/conformance/contract-adapter.d.ts +20 -0
- package/dist/conformance/contract-adapter.js +74 -0
- package/dist/conformance/corpus.d.ts +73 -0
- package/dist/conformance/corpus.js +99 -0
- package/dist/conformance/derive.d.ts +48 -0
- package/dist/conformance/derive.js +136 -0
- package/dist/conformance/index.d.ts +22 -0
- package/dist/conformance/index.js +22 -0
- package/dist/conformance/run.d.ts +27 -0
- package/dist/conformance/run.js +424 -0
- package/dist/conformance/types.d.ts +288 -0
- package/dist/conformance/types.js +4 -0
- package/dist/conformance/warnings.d.ts +88 -0
- package/dist/conformance/warnings.js +144 -0
- package/dist/cross-domain.d.ts +1 -1
- package/dist/cross-domain.js +1 -1
- package/dist/file-store.d.ts +7 -0
- package/dist/file-store.js +6 -2
- package/dist/hooks.d.ts +2 -2
- package/dist/hooks.js +2 -2
- package/dist/scheduler-store.d.ts +1 -1
- package/dist/scheduler-store.js +1 -1
- package/dist/types.d.ts +2 -2
- package/dist/types.js +3 -3
- package/package.json +7 -5
- package/dist/api/wire.d.ts +0 -60
- package/dist/api/wire.js +0 -89
|
@@ -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 腿把同一份 rosters 文档交给同一个 buildEffective(skills/prompts 之外零改道),闸门域的 throw 穿过信封层 ⇒ 拒绝层与 domains 腿相同"
|
|
10
|
+
},
|
|
11
|
+
"localRoot": {
|
|
12
|
+
"outcome": "rejected",
|
|
13
|
+
"stage": "validate",
|
|
14
|
+
"why": "models 与 rosters 都是便携域,两份文件层都过得去(都是 JSON 对象),拒绝发生在域校验层而不是 parse 层"
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"version": 7,
|
|
4
|
+
"updatedAt": "2026-09-16T00:00:00.000Z"
|
|
5
|
+
},
|
|
6
|
+
"domains": {
|
|
7
|
+
"models": {
|
|
8
|
+
"models": [
|
|
9
|
+
{
|
|
10
|
+
"name": "keep",
|
|
11
|
+
"provider": "openai",
|
|
12
|
+
"id": "keep-id",
|
|
13
|
+
"apiKeyEnv": "OPENAI_API_KEY"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"name": 5,
|
|
17
|
+
"id": "bad-id"
|
|
18
|
+
}
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
"rosters": {
|
|
22
|
+
"rosters": [
|
|
23
|
+
{
|
|
24
|
+
"name": "r1"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": 5
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"contributor": "test",
|
|
3
|
+
"claim": "同一份坏条目,放进逐条容错的域(`models`,`DOMAIN_READ_FALLBACK=\"default\"`)与放进 fail-loud 的闸门域(`rosters`,`=\"throw\"`),结论必须不同:前者丢那一条并恰报一条 `entry-dropped`、**不得同时**报 `domain-defaulted`(一域一个结论);后者**整份读在 validate 层被拒**(不是回落到 schema 默认 —— 对闸门域回落就是放宽闸门)。server [6782] 与 web-admin [7285] G2/G4 是同一件事的两半,跨腿读错会把『逐条容错』顺手放宽到闸门域,把这条设计为拒的输入读成绿(带两条 `entry-dropped`)。",
|
|
4
|
+
"firstRedOn": [],
|
|
5
|
+
"note": "【claim 措辞订正 2026-09-19,test 自纠】初稿写的是「后者整域回落」—— **是本方写错**:「回落」是 `DOMAIN_READ_FALLBACK=\"default\"` 那一族的动作,闸门域是 `\"throw\"` = fail-loud,整份读被拒。出处:契约自述 `config-fns.js` 的 `DOMAIN_READ_FALLBACK` 头注(defaulting would LOOSEN gates)+ 契约自带 `c05-gate-domain-bad-entry-throws` 金样(rejected/validate)+ 本仓 historical 实跑五版一致。claim 已按实测改写,对抗意图不变。两域放**同形**坏条目(`name` 是数字):`models`(DOMAIN_READ_FALLBACK=\"default\")与 `rosters`(=\"throw\",且是唯一一个便携的数组形闸门域)。3.0.0 实测:闸门域坏条目使**整份读**在 `validate` 层拒,三腿同形 —— 因此本条的期望是 `rejected/validate`,`models` 那半场在同一份输入里**结构上观察不到**。这正是本条的判别力所在:一个把逐条容错顺手放宽到闸门域的消费方,会把这条设计为拒的 case 读成绿(带两条 `entry-dropped`)。claim 前半场(`models` 恰一条 `entry-dropped`、零 `domain-defaulted`)由 verify.mjs 的配对正控臂(同一份输入去掉 `rosters` 域)钉住,读数记在 _SUMMARY.json 的 t02.pairedControl。claim 里「闸门域整域回落」的『回落』一词与契约自述的 `\"throw\"` = fail-loud 不符 —— 见 _SUMMARY.json 的 claimVsObserved。firstRedOn 空是**实跑**出来的:1.0.0/1.5.0/1.10.0/2.0.0/2.1.0 五版在本条上都是 expected-rejected(闸门域坏条目整份拒这条律从 1.0.0 起一字未动)⇒ 护栏,不是回归凭证。"
|
|
6
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
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
|
+
"roles": {},
|
|
44
|
+
"tierGroups": []
|
|
45
|
+
},
|
|
46
|
+
"plugins": {
|
|
47
|
+
"plugins": []
|
|
48
|
+
},
|
|
49
|
+
"projects": {
|
|
50
|
+
"projects": {}
|
|
51
|
+
},
|
|
52
|
+
"prompts": {
|
|
53
|
+
"bindings": []
|
|
54
|
+
},
|
|
55
|
+
"rosters": {
|
|
56
|
+
"rosters": []
|
|
57
|
+
},
|
|
58
|
+
"runtime": {},
|
|
59
|
+
"scenarios": {
|
|
60
|
+
"scenarios": []
|
|
61
|
+
},
|
|
62
|
+
"skills": {
|
|
63
|
+
"skills": []
|
|
64
|
+
},
|
|
65
|
+
"systems": {
|
|
66
|
+
"systems": []
|
|
67
|
+
},
|
|
68
|
+
"workers": {
|
|
69
|
+
"workers": []
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
"warnings": [
|
|
73
|
+
{
|
|
74
|
+
"domain": "models",
|
|
75
|
+
"keys": [
|
|
76
|
+
[
|
|
77
|
+
"models",
|
|
78
|
+
0,
|
|
79
|
+
"__proto__"
|
|
80
|
+
],
|
|
81
|
+
[
|
|
82
|
+
"models",
|
|
83
|
+
0,
|
|
84
|
+
"constructor"
|
|
85
|
+
],
|
|
86
|
+
[
|
|
87
|
+
"models",
|
|
88
|
+
0,
|
|
89
|
+
"toString"
|
|
90
|
+
]
|
|
91
|
+
],
|
|
92
|
+
"kind": "unknown-keys-dropped"
|
|
93
|
+
}
|
|
94
|
+
],
|
|
95
|
+
"metadata": {
|
|
96
|
+
"version": 7,
|
|
97
|
+
"updatedAt": "2026-09-16T00:00:00.000Z"
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
"wire": {
|
|
101
|
+
"derive": true
|
|
102
|
+
},
|
|
103
|
+
"localRoot": {
|
|
104
|
+
"derive": true,
|
|
105
|
+
"localVersion": 3232605402901914
|
|
106
|
+
}
|
|
107
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
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
|
+
"__proto__": {
|
|
15
|
+
"polluted": true
|
|
16
|
+
},
|
|
17
|
+
"constructor": {
|
|
18
|
+
"polluted": true
|
|
19
|
+
},
|
|
20
|
+
"toString": "nope"
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"contributor": "test",
|
|
3
|
+
"claim": "`__proto__` / `constructor` / `toString` 作为域内条目的键,**在坏条目上**:告警坐标必须把它当**普通字面键**点名、`effective` 的原型必须不被污染、三腿读法一致。本方在 server 7.87.0 G6 实测过同族(`answer.answers[0].__proto__` ⇒ `400 request.field_invalid` 且 `unknownKeys` 逐字点名);也在本仓自证里把 `__proto__` 的断言方向搞反过一次(`JSON.parse` + spread **保留** own 属性、plain assignment 才污染原型),所以这条同时是护栏。",
|
|
4
|
+
"firstRedOn": [],
|
|
5
|
+
"note": "【claim 收窄 2026-09-19,server [7621] ① 指出、主会话亲验】初稿把 `__proto__` **作好条目的 record 键**也算进「当普通字面键报进坐标」。**实测不成立**:`parseDomainLoud('limits', {__proto__:1, ok:2}, …)` 的告警 keys 只有 `['ok']`,`parsed` 上无 own `__proto__`(原型仍是 `Object.prototype`)—— 好条目上的原型名键在 zod 3 正常解析路径上本来就被丢,是 [7617] 已知限制,不是本条要钉的东西。claim 已收窄到**坏条目**那半场(真的、可判、有判别力);好条目那半场不入语料。与契约仓 c12 的差别:c12 打的是**顶层键**(`k in built` 一路问到 Object.prototype ⇒ open-world 承诺失效),本条打的是**域内条目的键**(剥键扫描 `collectDropped` 的 `Object.keys` / `hasOwnProperty` 两处判据,以及 salvage/rebase 路径上的对象重建)。构造坑(本方亲踩,记在此处防下一个人重踩):用 JS 对象字面量 `{\"__proto__\": {...}}` 造这条输入会**设置原型而不是加一个键**,于是 `isPlainJsonObject` 判假、整条扫描被跳过、case 测了个寂寞;语料走 `JSON.parse` 才拿到自有键 —— 这也是为什么这条必须以磁盘语料形存在,而不是测试里一个内联对象。firstRedOn 空是**实跑**出来的:五个旧版(1.0.0/1.5.0/1.10.0/2.0.0/2.1.0)在本条上全绿 —— S-332 那个 bug 只落在**顶层键**那一层(契约 c12 五版全红),域内条目键这一层从 1.0.0 起就一直对 ⇒ 本条是护栏,不是回归凭证。"
|
|
6
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
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": "keep-id",
|
|
35
|
+
"name": "keep",
|
|
36
|
+
"provider": "openai",
|
|
37
|
+
"quotaWeight": 1,
|
|
38
|
+
"reasoning": false,
|
|
39
|
+
"tier": "standard",
|
|
40
|
+
"vision": false
|
|
41
|
+
}
|
|
42
|
+
],
|
|
43
|
+
"roles": {},
|
|
44
|
+
"tierGroups": []
|
|
45
|
+
},
|
|
46
|
+
"plugins": {
|
|
47
|
+
"plugins": []
|
|
48
|
+
},
|
|
49
|
+
"projects": {
|
|
50
|
+
"projects": {}
|
|
51
|
+
},
|
|
52
|
+
"prompts": {
|
|
53
|
+
"bindings": []
|
|
54
|
+
},
|
|
55
|
+
"rosters": {
|
|
56
|
+
"rosters": []
|
|
57
|
+
},
|
|
58
|
+
"runtime": {},
|
|
59
|
+
"scenarios": {
|
|
60
|
+
"scenarios": []
|
|
61
|
+
},
|
|
62
|
+
"skills": {
|
|
63
|
+
"skills": []
|
|
64
|
+
},
|
|
65
|
+
"systems": {
|
|
66
|
+
"systems": []
|
|
67
|
+
},
|
|
68
|
+
"workers": {
|
|
69
|
+
"workers": []
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
"warnings": [
|
|
73
|
+
{
|
|
74
|
+
"domain": "models",
|
|
75
|
+
"kind": "entry-dropped",
|
|
76
|
+
"path": [
|
|
77
|
+
"models",
|
|
78
|
+
1
|
|
79
|
+
]
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"domain": "models",
|
|
83
|
+
"keys": [
|
|
84
|
+
[
|
|
85
|
+
"models",
|
|
86
|
+
0,
|
|
87
|
+
"apiKeyInline"
|
|
88
|
+
]
|
|
89
|
+
],
|
|
90
|
+
"kind": "unknown-keys-dropped"
|
|
91
|
+
}
|
|
92
|
+
],
|
|
93
|
+
"metadata": {
|
|
94
|
+
"version": 7,
|
|
95
|
+
"updatedAt": "2026-09-16T00:00:00.000Z"
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
"wire": {
|
|
99
|
+
"derive": true
|
|
100
|
+
},
|
|
101
|
+
"localRoot": {
|
|
102
|
+
"derive": true,
|
|
103
|
+
"localVersion": 2614200563056761
|
|
104
|
+
}
|
|
105
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"version": 7,
|
|
4
|
+
"updatedAt": "2026-09-16T00:00:00.000Z"
|
|
5
|
+
},
|
|
6
|
+
"domains": {
|
|
7
|
+
"models": {
|
|
8
|
+
"models": [
|
|
9
|
+
{
|
|
10
|
+
"name": "keep",
|
|
11
|
+
"provider": "openai",
|
|
12
|
+
"id": "keep-id",
|
|
13
|
+
"apiKeyEnv": "OPENAI_API_KEY",
|
|
14
|
+
"apiKeyInline": "sk-FAKE-CORPUS-0000000000000000"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"name": "bad",
|
|
18
|
+
"provider": "openai",
|
|
19
|
+
"id": "bad-id",
|
|
20
|
+
"api": "ghp_FAKE-CORPUS-1111111111111111"
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"contributor": "test",
|
|
3
|
+
"claim": "坏条目的**值**里埋 `sk-`/`ghp_` 形秘密字面:告警面必须**名字上线、值永不上线**(与 `hosts-grandfathered` 同律)。本方给 web-admin G3 加过同款正控 —— 没有正控时『没打印秘密』与『判据没跑到那一行』同形。",
|
|
4
|
+
"firstRedOn": [
|
|
5
|
+
"settings-schema@1.0.0",
|
|
6
|
+
"settings-schema@1.10.0",
|
|
7
|
+
"settings-schema@1.5.0"
|
|
8
|
+
],
|
|
9
|
+
"secrets": [
|
|
10
|
+
"sk-FAKE-CORPUS-0000000000000000",
|
|
11
|
+
"ghp_FAKE-CORPUS-1111111111111111"
|
|
12
|
+
],
|
|
13
|
+
"note": "两条秘密走**两条不同的告警路径**,所以「值不上线」在两条路上分别被判:①`sk-` 那把是**存活条目**上一个未知键的值 ⇒ 只该出现在 `unknown-keys-dropped` 的键坐标里(键名 `apiKeyInline` 上线、值不上线);②`ghp_` 那把是**被丢条目**上一个 enum 字段的值 ⇒ zod 的 `invalid_enum_value` 会把 `received` 原样回显,只有 `sanitizeZodError`/`redactSecrets` 挡着 ⇒ 它落在 `entry-dropped.error` 的文案面上,而 `findSecretLeaks` 恰恰扫这一面。正控(判据到达性)由 expected 的两条告警坐标承担:`[\"models\",0,\"apiKeyInline\"]` 与 `[\"models\",1]` 必须在场,证明剥键扫描与抢救路径都真跑到了。扫描器自身的判别力由 verify.mjs 的 decoy 臂钉住(把一个**非**秘密形的 enum 值当秘密登记 ⇒ findSecretLeaks 必须命中),否则「零命中」与「扫描器恒返回空」同形。语料里的两把是**假串**,不是任何真凭据。⚠️ firstRedOn 里的三个旧版**不是在秘密轴上红的**:逐版直读 `findSecretLeaks`(1.0.0/1.5.0/1.10.0/2.0.0/2.1.0)**五版全零命中**;那三版红是因为 1.11.0 才有的逐条容错还不存在,整个 `models` 域退默认(只报一条 `domain-defaulted`),于是 effective 与告警多重集都对不上。⇒ 在**秘密轴**上这条同样是护栏;把「这条 case 在旧版上红」读成「旧版泄过秘密」是从读数推到结论的那一类错,读数见 _historical-readout.json#t04SecretAxis。"
|
|
14
|
+
}
|
|
@@ -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,228 @@
|
|
|
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
|
+
"zzzUnknown": 1
|
|
26
|
+
},
|
|
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
|
+
"zzzUnknown"
|
|
67
|
+
]
|
|
68
|
+
],
|
|
69
|
+
"kind": "unknown-keys-dropped"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"domain": "runtime",
|
|
73
|
+
"keys": [
|
|
74
|
+
[
|
|
75
|
+
"zzzUnknown"
|
|
76
|
+
]
|
|
77
|
+
],
|
|
78
|
+
"kind": "unknown-keys-dropped"
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"domain": "models",
|
|
82
|
+
"keys": [
|
|
83
|
+
[
|
|
84
|
+
"zzzUnknown"
|
|
85
|
+
]
|
|
86
|
+
],
|
|
87
|
+
"kind": "unknown-keys-dropped"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"domain": "rosters",
|
|
91
|
+
"keys": [
|
|
92
|
+
[
|
|
93
|
+
"zzzUnknown"
|
|
94
|
+
]
|
|
95
|
+
],
|
|
96
|
+
"kind": "unknown-keys-dropped"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"domain": "skills",
|
|
100
|
+
"keys": [
|
|
101
|
+
[
|
|
102
|
+
"zzzUnknown"
|
|
103
|
+
]
|
|
104
|
+
],
|
|
105
|
+
"kind": "unknown-keys-dropped"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"domain": "mcp",
|
|
109
|
+
"keys": [
|
|
110
|
+
[
|
|
111
|
+
"zzzUnknown"
|
|
112
|
+
]
|
|
113
|
+
],
|
|
114
|
+
"kind": "unknown-keys-dropped"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"domain": "plugins",
|
|
118
|
+
"keys": [
|
|
119
|
+
[
|
|
120
|
+
"zzzUnknown"
|
|
121
|
+
]
|
|
122
|
+
],
|
|
123
|
+
"kind": "unknown-keys-dropped"
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"domain": "scenarios",
|
|
127
|
+
"keys": [
|
|
128
|
+
[
|
|
129
|
+
"zzzUnknown"
|
|
130
|
+
]
|
|
131
|
+
],
|
|
132
|
+
"kind": "unknown-keys-dropped"
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"domain": "systems",
|
|
136
|
+
"keys": [
|
|
137
|
+
[
|
|
138
|
+
"zzzUnknown"
|
|
139
|
+
]
|
|
140
|
+
],
|
|
141
|
+
"kind": "unknown-keys-dropped"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"domain": "collab",
|
|
145
|
+
"keys": [
|
|
146
|
+
[
|
|
147
|
+
"zzzUnknown"
|
|
148
|
+
]
|
|
149
|
+
],
|
|
150
|
+
"kind": "unknown-keys-dropped"
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"domain": "workers",
|
|
154
|
+
"keys": [
|
|
155
|
+
[
|
|
156
|
+
"zzzUnknown"
|
|
157
|
+
]
|
|
158
|
+
],
|
|
159
|
+
"kind": "unknown-keys-dropped"
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"domain": "hosts",
|
|
163
|
+
"keys": [
|
|
164
|
+
[
|
|
165
|
+
"zzzUnknown"
|
|
166
|
+
]
|
|
167
|
+
],
|
|
168
|
+
"kind": "unknown-keys-dropped"
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"domain": "entitlement",
|
|
172
|
+
"keys": [
|
|
173
|
+
[
|
|
174
|
+
"zzzUnknown"
|
|
175
|
+
]
|
|
176
|
+
],
|
|
177
|
+
"kind": "unknown-keys-dropped"
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"domain": "execution",
|
|
181
|
+
"keys": [
|
|
182
|
+
[
|
|
183
|
+
"zzzUnknown"
|
|
184
|
+
]
|
|
185
|
+
],
|
|
186
|
+
"kind": "unknown-keys-dropped"
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
"domain": "projects",
|
|
190
|
+
"keys": [
|
|
191
|
+
[
|
|
192
|
+
"zzzUnknown"
|
|
193
|
+
]
|
|
194
|
+
],
|
|
195
|
+
"kind": "unknown-keys-dropped"
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
"domain": "prompts",
|
|
199
|
+
"keys": [
|
|
200
|
+
[
|
|
201
|
+
"zzzUnknown"
|
|
202
|
+
]
|
|
203
|
+
],
|
|
204
|
+
"kind": "unknown-keys-dropped"
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"domain": "limits",
|
|
208
|
+
"keys": [
|
|
209
|
+
[
|
|
210
|
+
"zzzUnknown"
|
|
211
|
+
]
|
|
212
|
+
],
|
|
213
|
+
"kind": "unknown-keys-carried"
|
|
214
|
+
}
|
|
215
|
+
],
|
|
216
|
+
"metadata": {
|
|
217
|
+
"version": 7,
|
|
218
|
+
"updatedAt": "2026-09-16T00:00:00.000Z"
|
|
219
|
+
}
|
|
220
|
+
},
|
|
221
|
+
"wire": {
|
|
222
|
+
"derive": true
|
|
223
|
+
},
|
|
224
|
+
"localRoot": {
|
|
225
|
+
"derive": true,
|
|
226
|
+
"localVersion": 2336752390152956
|
|
227
|
+
}
|
|
228
|
+
}
|