@colophon-claims/verify 0.0.0 → 0.2.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.
- package/README.md +39 -0
- package/dist/admission/application.d.ts +18 -0
- package/dist/admission/application.js +53 -0
- package/dist/admission/contracts.d.ts +506 -0
- package/dist/admission/contracts.js +459 -0
- package/dist/admission/index.d.ts +5 -0
- package/dist/admission/index.js +5 -0
- package/dist/admission/intake.d.ts +75 -0
- package/dist/admission/intake.js +70 -0
- package/dist/admission/result-evaluation.d.ts +18 -0
- package/dist/admission/result-evaluation.js +71 -0
- package/dist/admission/screening-sample.d.ts +56 -0
- package/dist/admission/screening-sample.js +126 -0
- package/dist/admission/verification.d.ts +102 -0
- package/dist/admission/verification.js +844 -0
- package/dist/anchor/check.d.ts +95 -0
- package/dist/anchor/check.js +146 -0
- package/dist/anchor/ports.d.ts +6 -0
- package/dist/anchor/ports.js +354 -0
- package/dist/assets.d.ts +33 -0
- package/dist/assets.js +885 -0
- package/dist/bin.d.ts +2 -0
- package/dist/bin.js +20 -0
- package/dist/cli.d.ts +14 -0
- package/dist/cli.js +205 -0
- package/dist/comparison.d.ts +64 -0
- package/dist/comparison.js +235 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.js +23 -0
- package/dist/manifest.d.ts +54 -0
- package/dist/manifest.js +240 -0
- package/dist/materialize.d.ts +4 -0
- package/dist/materialize.js +13 -0
- package/dist/profile/admission-receipts.d.ts +11 -0
- package/dist/profile/admission-receipts.js +24 -0
- package/dist/profile/anchor-claims.d.ts +157 -0
- package/dist/profile/anchor-claims.js +330 -0
- package/dist/profile/artifacts.d.ts +261 -0
- package/dist/profile/artifacts.js +139 -0
- package/dist/profile/assembly-ports.d.ts +19 -0
- package/dist/profile/assembly-ports.js +42 -0
- package/dist/profile/binary-judge-manifest.d.ts +121 -0
- package/dist/profile/binary-judge-manifest.js +106 -0
- package/dist/profile/binary-qualification.d.ts +9 -0
- package/dist/profile/binary-qualification.js +58 -0
- package/dist/profile/branding-assets.d.ts +5 -0
- package/dist/profile/branding-assets.js +5 -0
- package/dist/profile/branding.d.ts +24 -0
- package/dist/profile/branding.js +14 -0
- package/dist/profile/claim-consistency.d.ts +26 -0
- package/dist/profile/claim-consistency.js +91 -0
- package/dist/profile/claim.d.ts +327 -0
- package/dist/profile/claim.js +742 -0
- package/dist/profile/errors.d.ts +49 -0
- package/dist/profile/errors.js +78 -0
- package/dist/profile/inspect-assurance.d.ts +16 -0
- package/dist/profile/inspect-assurance.js +30 -0
- package/dist/profile/inspect-disclosure.d.ts +28 -0
- package/dist/profile/inspect-disclosure.js +54 -0
- package/dist/profile/inspect-manifest.d.ts +706 -0
- package/dist/profile/inspect-manifest.js +397 -0
- package/dist/profile/isolation.d.ts +21 -0
- package/dist/profile/isolation.js +31 -0
- package/dist/profile/pinning-evidence.d.ts +41 -0
- package/dist/profile/pinning-evidence.js +43 -0
- package/dist/profile/ports.d.ts +3 -0
- package/dist/profile/ports.js +11 -0
- package/dist/profile/preview-log.d.ts +4 -0
- package/dist/profile/preview-log.js +3 -0
- package/dist/profile/run-results.d.ts +17 -0
- package/dist/profile/run-results.js +23 -0
- package/dist/profile/signing.d.ts +10 -0
- package/dist/profile/signing.js +46 -0
- package/dist/profile/trust.d.ts +13 -0
- package/dist/profile/trust.js +35 -0
- package/dist/profile/venue.d.ts +2 -0
- package/dist/profile/venue.js +2 -0
- package/dist/profile/verdict.d.ts +28 -0
- package/dist/profile/verdict.js +51 -0
- package/dist/reader-instructions.d.ts +41 -0
- package/dist/reader-instructions.js +52 -0
- package/dist/schema.d.ts +380 -0
- package/dist/schema.js +498 -0
- package/dist/verify.d.ts +72 -0
- package/dist/verify.js +1573 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.js +2 -0
- package/package.json +63 -3
- package/schemas/assembly-row.schema.json +194 -0
- package/schemas/bundle-manifest.schema.json +23 -0
- package/schemas/claim-package.schema.json +279 -0
- package/schemas/dsse-envelope.schema.json +25 -0
- package/schemas/evidence-catalog.schema.json +43 -0
- package/schemas/public-trust.schema.json +44 -0
- package/schemas/verdict-catalog.schema.json +27 -0
- package/scripts/external-verify.py +238 -0
package/dist/version.js
ADDED
package/package.json
CHANGED
|
@@ -1,14 +1,74 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@colophon-claims/verify",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Standalone public-bundle verifier for Colophon claims.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"engines": {
|
|
7
|
+
"node": ">=22"
|
|
8
|
+
},
|
|
5
9
|
"license": "MIT",
|
|
6
10
|
"repository": {
|
|
7
11
|
"type": "git",
|
|
8
12
|
"url": "https://github.com/Jinn-Network/mono.git",
|
|
9
13
|
"directory": "packages/benchmark-product/verify"
|
|
10
14
|
},
|
|
15
|
+
"main": "./dist/index.js",
|
|
16
|
+
"types": "./dist/index.d.ts",
|
|
17
|
+
"exports": {
|
|
18
|
+
".": {
|
|
19
|
+
"import": "./dist/index.js",
|
|
20
|
+
"types": "./dist/index.d.ts"
|
|
21
|
+
},
|
|
22
|
+
"./admission": {
|
|
23
|
+
"import": "./dist/admission/index.js",
|
|
24
|
+
"types": "./dist/admission/index.d.ts"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"bin": {
|
|
28
|
+
"colophon-verify": "./dist/bin.js"
|
|
29
|
+
},
|
|
30
|
+
"files": [
|
|
31
|
+
"dist/",
|
|
32
|
+
"schemas/",
|
|
33
|
+
"scripts/external-verify.py",
|
|
34
|
+
"README.md"
|
|
35
|
+
],
|
|
11
36
|
"publishConfig": {
|
|
12
37
|
"access": "public"
|
|
13
|
-
}
|
|
38
|
+
},
|
|
39
|
+
"scripts": {
|
|
40
|
+
"build": "tsc -p tsconfig.build.json",
|
|
41
|
+
"typecheck": "tsc --noEmit -p tsconfig.json",
|
|
42
|
+
"test": "yarn build && node --test test/*.test.mjs && vitest run",
|
|
43
|
+
"pack:smoke": "node scripts/pack-smoke.mjs",
|
|
44
|
+
"prepack": "npm run build"
|
|
45
|
+
},
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"@fontsource-variable/newsreader": "5.3.0",
|
|
48
|
+
"@fontsource-variable/public-sans": "5.3.0",
|
|
49
|
+
"@fontsource/ibm-plex-mono": "5.3.0",
|
|
50
|
+
"@jinn-network/benchmarking-aggregate": "0.1.0-canary.sha.e00b2fc47fc5635b007eb349fb1e41aa81bb3c50",
|
|
51
|
+
"@jinn-network/benchmarking-evidence": "0.1.0-canary.sha.e00b2fc47fc5635b007eb349fb1e41aa81bb3c50",
|
|
52
|
+
"@jinn-network/benchmarking-interop": "0.1.0-canary.sha.e00b2fc47fc5635b007eb349fb1e41aa81bb3c50",
|
|
53
|
+
"@jinn-network/benchmarking-local": "0.1.0-canary.sha.e00b2fc47fc5635b007eb349fb1e41aa81bb3c50",
|
|
54
|
+
"@jinn-network/benchmarking-protocol": "0.1.0-canary.sha.e00b2fc47fc5635b007eb349fb1e41aa81bb3c50",
|
|
55
|
+
"@jinn-network/benchmarking-records": "0.1.0-canary.sha.e00b2fc47fc5635b007eb349fb1e41aa81bb3c50",
|
|
56
|
+
"@jinn-network/benchmarking-run": "0.1.0-canary.sha.e00b2fc47fc5635b007eb349fb1e41aa81bb3c50",
|
|
57
|
+
"@jinn-network/task-admission": "0.1.0-canary.sha.e00b2fc47fc5635b007eb349fb1e41aa81bb3c50",
|
|
58
|
+
"@jinn-network/task-execution-profiles": "0.1.0-canary.sha.e00b2fc47fc5635b007eb349fb1e41aa81bb3c50",
|
|
59
|
+
"@jinn-network/task-execution-protocol": "0.1.0-canary.sha.e00b2fc47fc5635b007eb349fb1e41aa81bb3c50",
|
|
60
|
+
"@jinn-network/trust-core": "0.1.0-canary.sha.e00b2fc47fc5635b007eb349fb1e41aa81bb3c50",
|
|
61
|
+
"zod": "4.4.3"
|
|
62
|
+
},
|
|
63
|
+
"resolutions": {
|
|
64
|
+
"@noble/hashes": "2.2.0"
|
|
65
|
+
},
|
|
66
|
+
"devDependencies": {
|
|
67
|
+
"@jinn-network/trust-testing": "0.1.0-canary.sha.e00b2fc47fc5635b007eb349fb1e41aa81bb3c50",
|
|
68
|
+
"@types/node": "^22.0.0",
|
|
69
|
+
"ajv": "8.17.1",
|
|
70
|
+
"typescript": "^5.9.3",
|
|
71
|
+
"vitest": "^4.1.8"
|
|
72
|
+
},
|
|
73
|
+
"gitHead": "892a10067cc653d4971b22d77aea716b617ef2d6"
|
|
14
74
|
}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$comment": "Describes one row of verification/assembly.jsonl (format benchmark-product-assembly/2): the first row is the run header, every following row is one matrix cell. Source of truth: BundleAssemblyHeaderSchema and BundleAssemblyCellSchema in @colophon-claims/verify src/schema.ts (open objects there, so unknown members are permitted here). The verifier additionally requires each row to be canonical JSON, cellKeys to be unique, and the graph edges to close exactly against the content-addressed records, the matrix, and the verdict catalog.",
|
|
4
|
+
"description": "One JSONL row of a benchmark-product public bundle's verification assembly.",
|
|
5
|
+
"oneOf": [
|
|
6
|
+
{ "$ref": "#/$defs/header" },
|
|
7
|
+
{ "$ref": "#/$defs/cell" }
|
|
8
|
+
],
|
|
9
|
+
"$defs": {
|
|
10
|
+
"sha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
11
|
+
"namedOutput": {
|
|
12
|
+
"type": "object",
|
|
13
|
+
"properties": {
|
|
14
|
+
"name": { "type": "string" },
|
|
15
|
+
"sha256": { "$ref": "#/$defs/sha256" }
|
|
16
|
+
},
|
|
17
|
+
"required": ["name", "sha256"]
|
|
18
|
+
},
|
|
19
|
+
"verdict": {
|
|
20
|
+
"type": "object",
|
|
21
|
+
"properties": {
|
|
22
|
+
"sha256": { "$ref": "#/$defs/sha256" },
|
|
23
|
+
"relationship": { "enum": ["same-execution-scorer", "separate-log-verifier"] },
|
|
24
|
+
"evalTaskSha256": { "$ref": "#/$defs/sha256" },
|
|
25
|
+
"evalSubmissionSha256": { "$ref": "#/$defs/sha256" },
|
|
26
|
+
"evalDeliverySha256": { "$ref": "#/$defs/sha256" },
|
|
27
|
+
"evalAttempt": { "type": "string", "minLength": 1 },
|
|
28
|
+
"evalIndex": { "type": "integer", "minimum": 1 },
|
|
29
|
+
"evaluator": { "type": "string", "minLength": 1 },
|
|
30
|
+
"verdict": { "enum": ["pass", "fail", "inconclusive"] },
|
|
31
|
+
"evaluationSpecSha256": { "$ref": "#/$defs/sha256" },
|
|
32
|
+
"measurements": {
|
|
33
|
+
"type": "object",
|
|
34
|
+
"additionalProperties": { "type": ["string", "number", "boolean"] }
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"required": ["sha256", "evalIndex", "evaluator", "verdict", "evaluationSpecSha256", "measurements"]
|
|
38
|
+
},
|
|
39
|
+
"header": {
|
|
40
|
+
"type": "object",
|
|
41
|
+
"properties": {
|
|
42
|
+
"format": { "const": "benchmark-product-assembly/2" },
|
|
43
|
+
"kind": { "const": "run" },
|
|
44
|
+
"runCancelled": { "type": "boolean" },
|
|
45
|
+
"draftId": { "type": "string", "minLength": 1 },
|
|
46
|
+
"assurancePreset": { "type": "string", "minLength": 1 },
|
|
47
|
+
"rehearsal": {
|
|
48
|
+
"type": "object",
|
|
49
|
+
"properties": {
|
|
50
|
+
"previewCount": { "type": "integer", "minimum": 1 },
|
|
51
|
+
"timestamps": {
|
|
52
|
+
"type": "array",
|
|
53
|
+
"items": { "type": "string", "format": "date-time" },
|
|
54
|
+
"minItems": 1
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"required": ["previewCount", "timestamps"]
|
|
58
|
+
},
|
|
59
|
+
"graph": {
|
|
60
|
+
"type": "object",
|
|
61
|
+
"properties": {
|
|
62
|
+
"admissions": {
|
|
63
|
+
"type": "array",
|
|
64
|
+
"items": {
|
|
65
|
+
"type": "object",
|
|
66
|
+
"properties": {
|
|
67
|
+
"taskSha256": { "$ref": "#/$defs/sha256" },
|
|
68
|
+
"receiptSha256": { "$ref": "#/$defs/sha256" }
|
|
69
|
+
},
|
|
70
|
+
"required": ["taskSha256", "receiptSha256"]
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
"solveSubmissions": {
|
|
74
|
+
"type": "array",
|
|
75
|
+
"items": {
|
|
76
|
+
"type": "object",
|
|
77
|
+
"properties": {
|
|
78
|
+
"cellKey": { "type": "string", "minLength": 1 },
|
|
79
|
+
"dispatch": { "type": "integer", "minimum": 1 },
|
|
80
|
+
"sha256": { "$ref": "#/$defs/sha256" },
|
|
81
|
+
"pinningEvidenceSha256": { "$ref": "#/$defs/sha256" }
|
|
82
|
+
},
|
|
83
|
+
"required": ["cellKey", "dispatch", "sha256"]
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
"evaluationSubmissions": {
|
|
87
|
+
"type": "array",
|
|
88
|
+
"items": {
|
|
89
|
+
"type": "object",
|
|
90
|
+
"properties": {
|
|
91
|
+
"cellKey": { "type": "string", "minLength": 1 },
|
|
92
|
+
"dispatch": { "type": "integer", "minimum": 1 },
|
|
93
|
+
"evalIndex": { "type": "integer", "minimum": 1 },
|
|
94
|
+
"evaluationAttempt": { "type": "integer", "minimum": 1 },
|
|
95
|
+
"evaluator": { "type": "string", "minLength": 1 },
|
|
96
|
+
"evalTaskSha256": { "$ref": "#/$defs/sha256" },
|
|
97
|
+
"sha256": { "$ref": "#/$defs/sha256" }
|
|
98
|
+
},
|
|
99
|
+
"required": ["cellKey", "dispatch", "evalIndex", "evaluator", "evalTaskSha256", "sha256"]
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
"solveDeliveries": {
|
|
103
|
+
"type": "array",
|
|
104
|
+
"items": {
|
|
105
|
+
"type": "object",
|
|
106
|
+
"properties": {
|
|
107
|
+
"cellKey": { "type": "string", "minLength": 1 },
|
|
108
|
+
"dispatch": { "type": "integer", "minimum": 1 },
|
|
109
|
+
"attempt": { "type": "string", "minLength": 1 },
|
|
110
|
+
"sha256": { "$ref": "#/$defs/sha256" },
|
|
111
|
+
"outputs": { "type": "array", "items": { "$ref": "#/$defs/namedOutput" } }
|
|
112
|
+
},
|
|
113
|
+
"required": ["cellKey", "dispatch", "attempt", "sha256", "outputs"]
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
"evaluations": {
|
|
117
|
+
"type": "array",
|
|
118
|
+
"items": {
|
|
119
|
+
"type": "object",
|
|
120
|
+
"properties": {
|
|
121
|
+
"cellKey": { "type": "string", "minLength": 1 },
|
|
122
|
+
"evalIndex": { "type": "integer", "minimum": 1 },
|
|
123
|
+
"evaluationAttempt": { "type": "integer", "minimum": 1 },
|
|
124
|
+
"relationship": { "enum": ["same-execution-scorer", "separate-log-verifier"] },
|
|
125
|
+
"evaluator": { "type": "string" },
|
|
126
|
+
"evalTaskSha256": { "$ref": "#/$defs/sha256" },
|
|
127
|
+
"evalSubmissionSha256": { "$ref": "#/$defs/sha256" },
|
|
128
|
+
"evalAttempt": { "type": "string" },
|
|
129
|
+
"evalDeliverySha256": { "$ref": "#/$defs/sha256" },
|
|
130
|
+
"verdictSha256": { "$ref": "#/$defs/sha256" },
|
|
131
|
+
"evaluationTerminal": { "const": "could-not-grade" },
|
|
132
|
+
"failureCategory": { "type": "string", "minLength": 1 }
|
|
133
|
+
},
|
|
134
|
+
"required": ["cellKey", "evalIndex"]
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
"evaluationRetries": {
|
|
138
|
+
"type": "array",
|
|
139
|
+
"items": {
|
|
140
|
+
"type": "object",
|
|
141
|
+
"properties": {
|
|
142
|
+
"cellKey": { "type": "string", "minLength": 1 },
|
|
143
|
+
"dispatch": { "type": "integer", "minimum": 1 },
|
|
144
|
+
"evalIndex": { "type": "integer", "minimum": 1 },
|
|
145
|
+
"evaluationAttempt": { "type": "integer", "minimum": 1 },
|
|
146
|
+
"evaluator": { "type": "string", "minLength": 1 },
|
|
147
|
+
"evalTaskSha256": { "$ref": "#/$defs/sha256" },
|
|
148
|
+
"evalSubmissionSha256": { "$ref": "#/$defs/sha256" },
|
|
149
|
+
"evalAttempt": { "type": "string", "minLength": 1 },
|
|
150
|
+
"failureCategory": { "type": "string", "minLength": 1 },
|
|
151
|
+
"recoveryAdvice": { "const": "new-attempt-required" },
|
|
152
|
+
"detail": { "type": "string", "minLength": 1 }
|
|
153
|
+
},
|
|
154
|
+
"required": ["cellKey", "dispatch", "evalIndex", "evaluationAttempt", "evaluator", "failureCategory", "recoveryAdvice", "detail"]
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
"required": ["admissions", "solveSubmissions", "evaluationSubmissions", "solveDeliveries", "evaluations"]
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
"required": ["format", "kind", "runCancelled", "draftId", "assurancePreset", "graph"]
|
|
162
|
+
},
|
|
163
|
+
"cell": {
|
|
164
|
+
"type": "object",
|
|
165
|
+
"properties": {
|
|
166
|
+
"kind": { "const": "cell" },
|
|
167
|
+
"cellKey": { "type": "string", "minLength": 1 },
|
|
168
|
+
"armId": { "type": "string", "minLength": 1 },
|
|
169
|
+
"replicate": { "type": "integer", "minimum": 1 },
|
|
170
|
+
"taskDigest": { "$ref": "#/$defs/sha256" },
|
|
171
|
+
"dispatches": { "type": "integer", "minimum": 0 },
|
|
172
|
+
"accounted": { "type": "integer", "minimum": 1 },
|
|
173
|
+
"submissionSha256": { "$ref": "#/$defs/sha256" },
|
|
174
|
+
"pinningEvidenceSha256": { "$ref": "#/$defs/sha256" },
|
|
175
|
+
"attempt": { "type": "string", "minLength": 1 },
|
|
176
|
+
"deliverySha256": { "$ref": "#/$defs/sha256" },
|
|
177
|
+
"solveOutputs": { "type": "array", "items": { "$ref": "#/$defs/namedOutput" } },
|
|
178
|
+
"evaluationSpecSha256": { "$ref": "#/$defs/sha256" },
|
|
179
|
+
"evaluationTerminal": { "const": "could-not-grade" },
|
|
180
|
+
"admission": {
|
|
181
|
+
"type": "object",
|
|
182
|
+
"properties": {
|
|
183
|
+
"zeroReplayVariance": { "type": "boolean" },
|
|
184
|
+
"externalCapabilities": { "type": "boolean" }
|
|
185
|
+
},
|
|
186
|
+
"required": ["zeroReplayVariance", "externalCapabilities"]
|
|
187
|
+
},
|
|
188
|
+
"admissionReceiptSha256": { "$ref": "#/$defs/sha256" },
|
|
189
|
+
"verdicts": { "type": "array", "items": { "$ref": "#/$defs/verdict" } }
|
|
190
|
+
},
|
|
191
|
+
"required": ["kind", "cellKey", "armId", "replicate", "taskDigest", "dispatches", "verdicts"]
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$comment": "Describes bundle.json for the benchmark-product-public-bundle/2 format. Source of truth: BundleManifestSchema in @colophon-claims/verify src/manifest.ts, a union of this legacy shape (an open object, so unknown members are permitted here) and the evidence-native v5 manifest; the v4 and v5 bundle formats are outside this schema's scope. Structural validity only: the verifier additionally requires canonical JSON bytes, entries sorted strictly by path, per-file byte and digest equality, path-safety and symlink refusal, and two-way tree closure. bundle.json never lists itself; the bundle identity is the SHA-256 of bundle.json's own bytes.",
|
|
4
|
+
"description": "File manifest of a benchmark-product public bundle (format benchmark-product-public-bundle/2).",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"format": { "const": "benchmark-product-public-bundle/2" },
|
|
8
|
+
"files": {
|
|
9
|
+
"type": "array",
|
|
10
|
+
"minItems": 1,
|
|
11
|
+
"items": {
|
|
12
|
+
"type": "object",
|
|
13
|
+
"properties": {
|
|
14
|
+
"bytes": { "type": "integer", "minimum": 0 },
|
|
15
|
+
"path": { "type": "string", "minLength": 1 },
|
|
16
|
+
"sha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" }
|
|
17
|
+
},
|
|
18
|
+
"required": ["bytes", "path", "sha256"]
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"required": ["format", "files"]
|
|
23
|
+
}
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$comment": "Describes claim-package.json (claimSchema benchmark-product.claim-package/1, or /2 for binary-qualification bundles). Source of truth: ClaimPackageWireSchema in @colophon-claims/verify src/profile/claim.ts (an open object there, so unknown members are permitted here). Every number is extracted verbatim from the sealed records the claim cites, never recomputed; the verifier rebuilds the whole package from verified facts and byte-compares it, so schema validity never substitutes for that recomputation. A claim carries exactly one method projection -- the wilson headline, the paired-delta comparison, pairwise-disagreement's panel, paired-majority-delta's contrast, or binary-instrument's qualification -- never neither.",
|
|
4
|
+
"description": "Standalone claim package of a benchmark-product public bundle.",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"claimSchema": {
|
|
8
|
+
"enum": ["benchmark-product.claim-package/1", "benchmark-product.claim-package/2"]
|
|
9
|
+
},
|
|
10
|
+
"scope": {
|
|
11
|
+
"type": "object",
|
|
12
|
+
"properties": {
|
|
13
|
+
"draftId": { "type": "string", "minLength": 1 },
|
|
14
|
+
"benchmarkSha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
15
|
+
"taskCount": { "type": "integer", "minimum": 0 },
|
|
16
|
+
"arms": {
|
|
17
|
+
"type": "array",
|
|
18
|
+
"items": {
|
|
19
|
+
"type": "object",
|
|
20
|
+
"properties": {
|
|
21
|
+
"armId": { "type": "string", "minLength": 1 },
|
|
22
|
+
"pinning": { "type": "object" }
|
|
23
|
+
},
|
|
24
|
+
"required": ["armId", "pinning"]
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"replicates": { "type": "integer", "minimum": 1 },
|
|
28
|
+
"venue": { "const": "self-run" }
|
|
29
|
+
},
|
|
30
|
+
"required": ["draftId", "benchmarkSha256", "taskCount", "arms", "replicates", "venue"]
|
|
31
|
+
},
|
|
32
|
+
"records": {
|
|
33
|
+
"type": "object",
|
|
34
|
+
"properties": {
|
|
35
|
+
"benchmarkSha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
36
|
+
"runSha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
37
|
+
"matrixSha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
38
|
+
"reportSha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
39
|
+
"reportEnvelopeSha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" }
|
|
40
|
+
},
|
|
41
|
+
"required": ["benchmarkSha256", "runSha256", "matrixSha256", "reportSha256", "reportEnvelopeSha256"]
|
|
42
|
+
},
|
|
43
|
+
"method": {
|
|
44
|
+
"type": "object",
|
|
45
|
+
"properties": {
|
|
46
|
+
"id": { "type": "string", "minLength": 1 },
|
|
47
|
+
"version": { "type": "string", "minLength": 1 },
|
|
48
|
+
"parameters": { "type": "object" },
|
|
49
|
+
"preregistered": { "type": "boolean" }
|
|
50
|
+
},
|
|
51
|
+
"required": ["id", "version", "parameters", "preregistered"]
|
|
52
|
+
},
|
|
53
|
+
"results": {},
|
|
54
|
+
"headline": {
|
|
55
|
+
"type": "object",
|
|
56
|
+
"additionalProperties": {
|
|
57
|
+
"type": "object",
|
|
58
|
+
"properties": {
|
|
59
|
+
"n": { "type": "integer", "minimum": 0 },
|
|
60
|
+
"passRate": { "type": "string" },
|
|
61
|
+
"wilsonInterval": {
|
|
62
|
+
"type": "object",
|
|
63
|
+
"properties": {
|
|
64
|
+
"low": { "type": "string" },
|
|
65
|
+
"high": { "type": "string" }
|
|
66
|
+
},
|
|
67
|
+
"required": ["low", "high"]
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"required": ["n", "passRate", "wilsonInterval"]
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
"comparison": {
|
|
74
|
+
"type": "object",
|
|
75
|
+
"properties": {
|
|
76
|
+
"pairs": { "type": "integer", "minimum": 0 },
|
|
77
|
+
"delta": { "type": ["string", "null"] },
|
|
78
|
+
"interval": {
|
|
79
|
+
"type": ["object", "null"],
|
|
80
|
+
"properties": {
|
|
81
|
+
"alpha": { "type": "string" },
|
|
82
|
+
"low": { "type": "string" },
|
|
83
|
+
"high": { "type": "string" }
|
|
84
|
+
},
|
|
85
|
+
"required": ["alpha", "low", "high"]
|
|
86
|
+
},
|
|
87
|
+
"reasons": { "type": "array", "items": { "type": "string" } },
|
|
88
|
+
"pairing": {
|
|
89
|
+
"type": "object",
|
|
90
|
+
"properties": { "taskDigests": { "type": "array", "items": { "type": "string" } } },
|
|
91
|
+
"required": ["taskDigests"]
|
|
92
|
+
},
|
|
93
|
+
"clustering": {
|
|
94
|
+
"type": "object",
|
|
95
|
+
"properties": {
|
|
96
|
+
"basis": { "type": "string" },
|
|
97
|
+
"clusters": { "type": "integer", "minimum": 0 }
|
|
98
|
+
},
|
|
99
|
+
"required": ["basis", "clusters"]
|
|
100
|
+
},
|
|
101
|
+
"excluded": { "$ref": "#/$defs/conflicted" },
|
|
102
|
+
"conflicted": { "$ref": "#/$defs/conflicted" },
|
|
103
|
+
"bootstrap": {}
|
|
104
|
+
},
|
|
105
|
+
"required": ["pairs", "delta", "interval", "reasons", "pairing", "clustering", "excluded", "conflicted"]
|
|
106
|
+
},
|
|
107
|
+
"completeness": {},
|
|
108
|
+
"attrition": {},
|
|
109
|
+
"conflicted": { "$ref": "#/$defs/conflicted" },
|
|
110
|
+
"assurance": {
|
|
111
|
+
"type": "object",
|
|
112
|
+
"properties": {
|
|
113
|
+
"preset": { "type": "string", "minLength": 1 },
|
|
114
|
+
"resolved": {
|
|
115
|
+
"type": "object",
|
|
116
|
+
"properties": {
|
|
117
|
+
"independence": { "enum": ["gating", "disclosed"] },
|
|
118
|
+
"minVerdicts": { "type": "integer", "minimum": 1 },
|
|
119
|
+
"distinctEvaluator": { "type": "boolean" },
|
|
120
|
+
"verdictRule": { "enum": ["sole", "majority", "unanimous"] }
|
|
121
|
+
},
|
|
122
|
+
"required": ["independence", "minVerdicts", "distinctEvaluator", "verdictRule"]
|
|
123
|
+
},
|
|
124
|
+
"disclosure": { "type": "string", "minLength": 1 }
|
|
125
|
+
},
|
|
126
|
+
"required": ["preset", "resolved", "disclosure"]
|
|
127
|
+
},
|
|
128
|
+
"disclosures": {
|
|
129
|
+
"type": "object",
|
|
130
|
+
"properties": {
|
|
131
|
+
"perSubject": { "type": "array" },
|
|
132
|
+
"integrityTierCounts": {
|
|
133
|
+
"type": "object",
|
|
134
|
+
"properties": {
|
|
135
|
+
"re-derivable": { "type": "integer", "minimum": 0 },
|
|
136
|
+
"attested-only": { "type": "integer", "minimum": 0 }
|
|
137
|
+
},
|
|
138
|
+
"required": ["re-derivable", "attested-only"]
|
|
139
|
+
},
|
|
140
|
+
"pinningUnverifiableCounts": {
|
|
141
|
+
"type": "object",
|
|
142
|
+
"properties": {
|
|
143
|
+
"harness": { "type": "integer", "minimum": 0 },
|
|
144
|
+
"model": { "type": "integer", "minimum": 0 },
|
|
145
|
+
"loadout": { "type": "integer", "minimum": 0 },
|
|
146
|
+
"isolation": { "type": "integer", "minimum": 0 }
|
|
147
|
+
},
|
|
148
|
+
"required": ["harness", "model", "loadout", "isolation"]
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
"required": ["perSubject", "integrityTierCounts", "pinningUnverifiableCounts"]
|
|
152
|
+
},
|
|
153
|
+
"limitations": { "type": "array", "items": { "type": "string" } },
|
|
154
|
+
"venueHonesty": {},
|
|
155
|
+
"verification": {
|
|
156
|
+
"type": "object",
|
|
157
|
+
"properties": {
|
|
158
|
+
"command": { "type": "string", "minLength": 1 },
|
|
159
|
+
"compatibleCommand": { "type": "string", "minLength": 1 },
|
|
160
|
+
"checks": {
|
|
161
|
+
"type": "array",
|
|
162
|
+
"items": { "type": "string", "minLength": 1 },
|
|
163
|
+
"minItems": 1
|
|
164
|
+
},
|
|
165
|
+
"trustRoot": { "type": "string", "minLength": 1 }
|
|
166
|
+
},
|
|
167
|
+
"required": ["command", "compatibleCommand", "checks", "trustRoot"]
|
|
168
|
+
},
|
|
169
|
+
"rehearsal": {
|
|
170
|
+
"type": "object",
|
|
171
|
+
"properties": {
|
|
172
|
+
"previewCount": { "type": "integer", "minimum": 1 },
|
|
173
|
+
"timestamps": {
|
|
174
|
+
"type": "array",
|
|
175
|
+
"items": { "type": "string", "format": "date-time" },
|
|
176
|
+
"minItems": 1
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
"required": ["previewCount", "timestamps"]
|
|
180
|
+
},
|
|
181
|
+
"qualification": {},
|
|
182
|
+
"pairwiseDisagreement": {
|
|
183
|
+
"type": "object",
|
|
184
|
+
"properties": {
|
|
185
|
+
"pairs": {
|
|
186
|
+
"type": "array",
|
|
187
|
+
"items": {
|
|
188
|
+
"type": "object",
|
|
189
|
+
"properties": {
|
|
190
|
+
"armA": { "type": "string", "minLength": 1 },
|
|
191
|
+
"armB": { "type": "string", "minLength": 1 },
|
|
192
|
+
"n": { "type": "integer", "minimum": 0 },
|
|
193
|
+
"disagreements": { "type": "integer", "minimum": 0 },
|
|
194
|
+
"rate": { "type": ["string", "null"] },
|
|
195
|
+
"interval": { "$ref": "#/$defs/judgeInterval" },
|
|
196
|
+
"byCandidateClass": { "type": "array", "items": { "type": "object" } },
|
|
197
|
+
"byStratum": { "type": "array", "items": { "type": "object" } },
|
|
198
|
+
"exclusions": { "type": "array", "items": { "$ref": "#/$defs/exclusionTriple" } }
|
|
199
|
+
},
|
|
200
|
+
"required": ["armA", "armB", "n", "disagreements", "rate", "interval", "byCandidateClass", "byStratum", "exclusions"]
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
"conflicted": { "$ref": "#/$defs/conflicted" }
|
|
204
|
+
},
|
|
205
|
+
"required": ["pairs", "conflicted"]
|
|
206
|
+
},
|
|
207
|
+
"pairedMajorityDelta": {
|
|
208
|
+
"type": "object",
|
|
209
|
+
"properties": {
|
|
210
|
+
"baseline": { "type": "string", "minLength": 1 },
|
|
211
|
+
"candidate": { "type": "string", "minLength": 1 },
|
|
212
|
+
"n": { "type": "integer", "minimum": 0 },
|
|
213
|
+
"delta": { "type": ["string", "null"] },
|
|
214
|
+
"interval": { "$ref": "#/$defs/judgeInterval" },
|
|
215
|
+
"reasons": { "type": "array", "items": { "type": "string" } },
|
|
216
|
+
"clusters": {
|
|
217
|
+
"type": "object",
|
|
218
|
+
"properties": { "count": { "type": "integer", "minimum": 0 }, "manifest": {} },
|
|
219
|
+
"required": ["count"]
|
|
220
|
+
},
|
|
221
|
+
"byCandidateClass": { "type": "array", "items": { "type": "object" } },
|
|
222
|
+
"byStratum": { "type": "array", "items": { "type": "object" } },
|
|
223
|
+
"exclusions": { "type": "array", "items": { "$ref": "#/$defs/exclusionTriple" } },
|
|
224
|
+
"conflicted": { "$ref": "#/$defs/conflicted" }
|
|
225
|
+
},
|
|
226
|
+
"required": ["baseline", "candidate", "n", "delta", "interval", "reasons", "clusters", "byCandidateClass", "byStratum", "exclusions", "conflicted"]
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
"required": [
|
|
230
|
+
"claimSchema",
|
|
231
|
+
"scope",
|
|
232
|
+
"records",
|
|
233
|
+
"method",
|
|
234
|
+
"results",
|
|
235
|
+
"completeness",
|
|
236
|
+
"attrition",
|
|
237
|
+
"conflicted",
|
|
238
|
+
"assurance",
|
|
239
|
+
"disclosures",
|
|
240
|
+
"limitations",
|
|
241
|
+
"venueHonesty",
|
|
242
|
+
"verification"
|
|
243
|
+
],
|
|
244
|
+
"anyOf": [
|
|
245
|
+
{ "required": ["headline"] },
|
|
246
|
+
{ "required": ["comparison"] },
|
|
247
|
+
{ "required": ["pairwiseDisagreement"] },
|
|
248
|
+
{ "required": ["pairedMajorityDelta"] }
|
|
249
|
+
],
|
|
250
|
+
"$defs": {
|
|
251
|
+
"judgeInterval": {
|
|
252
|
+
"$comment": "pairwise-disagreement@1 and paired-majority-delta@1 key their intervals {lower, upper, alpha}, NOT paired-delta@1's {low, high, alpha}.",
|
|
253
|
+
"type": ["object", "null"],
|
|
254
|
+
"properties": {
|
|
255
|
+
"lower": { "type": "string" },
|
|
256
|
+
"upper": { "type": "string" },
|
|
257
|
+
"alpha": { "type": "string" }
|
|
258
|
+
},
|
|
259
|
+
"required": ["lower", "upper", "alpha"]
|
|
260
|
+
},
|
|
261
|
+
"exclusionTriple": {
|
|
262
|
+
"type": "object",
|
|
263
|
+
"properties": {
|
|
264
|
+
"taskDigest": { "type": "string", "minLength": 1 },
|
|
265
|
+
"armId": { "type": "string", "minLength": 1 },
|
|
266
|
+
"reason": { "type": "string", "minLength": 1 }
|
|
267
|
+
},
|
|
268
|
+
"required": ["taskDigest", "armId", "reason"]
|
|
269
|
+
},
|
|
270
|
+
"conflicted": {
|
|
271
|
+
"type": "object",
|
|
272
|
+
"properties": {
|
|
273
|
+
"count": { "type": "integer", "minimum": 0 },
|
|
274
|
+
"cellKeys": { "type": "array", "items": { "type": "string" } }
|
|
275
|
+
},
|
|
276
|
+
"required": ["count", "cellKeys"]
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$comment": "Describes the DSSE v1 envelopes a public bundle carries: report-envelope.json (payloadType application/vnd.jinn.benchmarking.report.v1+json; its decoded payload is byte-identical to report.json) and every verdict record (payloadType application/vnd.in-toto+json over an in-toto Statement v1). Source of truth: parseExactDsseEnvelope in @jinn-network/trust-core src/dsse.ts, which admits exactly these three members. Signatures are Ed25519 over the DSSE pre-authentication encoding 'DSSEv1 ' || len(payloadType) || ' ' || payloadType || ' ' || len(payload) || ' ' || payload (lengths as ASCII decimals, payload as raw decoded bytes). See https://github.com/secure-systems-lab/dsse.",
|
|
4
|
+
"description": "DSSE v1 signature envelope as carried by benchmark-product public bundles.",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"payload": { "type": "string", "contentEncoding": "base64", "minLength": 1 },
|
|
8
|
+
"payloadType": { "type": "string", "minLength": 1 },
|
|
9
|
+
"signatures": {
|
|
10
|
+
"type": "array",
|
|
11
|
+
"minItems": 1,
|
|
12
|
+
"items": {
|
|
13
|
+
"type": "object",
|
|
14
|
+
"properties": {
|
|
15
|
+
"keyid": { "type": "string" },
|
|
16
|
+
"sig": { "type": "string", "contentEncoding": "base64", "minLength": 1 }
|
|
17
|
+
},
|
|
18
|
+
"required": ["sig"],
|
|
19
|
+
"additionalProperties": false
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"required": ["payload", "payloadType", "signatures"],
|
|
24
|
+
"additionalProperties": false
|
|
25
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$comment": "Describes evidence.json, format benchmark-product-evidence-catalog/2. Source of truth: BundleEvidenceCatalogSchema in @colophon-claims/verify src/schema.ts (an open object there, so unknown members are permitted here). Every listed sha256 names records/<sha256>.bin, whose exact bytes re-hash to that digest. The verifier additionally requires canonical JSON bytes, unique digests, unique roles per record, and exact two-way closure between declared roles and the roles derived from the evidence graph.",
|
|
4
|
+
"description": "Content-addressed record catalog of a benchmark-product public bundle (format benchmark-product-evidence-catalog/2).",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"format": { "const": "benchmark-product-evidence-catalog/2" },
|
|
8
|
+
"records": {
|
|
9
|
+
"type": "array",
|
|
10
|
+
"items": {
|
|
11
|
+
"type": "object",
|
|
12
|
+
"properties": {
|
|
13
|
+
"sha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
14
|
+
"roles": {
|
|
15
|
+
"type": "array",
|
|
16
|
+
"items": {
|
|
17
|
+
"enum": [
|
|
18
|
+
"task",
|
|
19
|
+
"runtime-selection",
|
|
20
|
+
"evaluation-spec",
|
|
21
|
+
"admission-receipt",
|
|
22
|
+
"solve-submission",
|
|
23
|
+
"run-pinning-evidence",
|
|
24
|
+
"evaluation-submission",
|
|
25
|
+
"solve-delivery",
|
|
26
|
+
"solve-output",
|
|
27
|
+
"evaluation-task",
|
|
28
|
+
"evaluation-delivery",
|
|
29
|
+
"verdict",
|
|
30
|
+
"judge-instrument",
|
|
31
|
+
"analysis-context",
|
|
32
|
+
"label-resolution"
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
"minItems": 1
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"required": ["sha256", "roles"]
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"required": ["format", "records"]
|
|
43
|
+
}
|