eval-quality 0.1.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/LICENSE +190 -0
- package/README.md +355 -0
- package/corpus/dev/README.md +36 -0
- package/corpus/dev/compile-seal-example/brief.json +1 -0
- package/corpus/dev/compile-seal-example/contract.json +1 -0
- package/corpus/dev/contracts/absent-collection-locations.json +1 -0
- package/corpus/dev/contracts/absent-sibling-groups.json +1 -0
- package/corpus/dev/contracts/absent-success-indicator.json +1 -0
- package/corpus/dev/contracts/empty-channel-roles.json +1 -0
- package/corpus/dev/contracts/empty-collection-locations.json +1 -0
- package/corpus/dev/contracts/empty-request-shapes.json +1 -0
- package/corpus/dev/contracts/empty-sibling-groups.json +1 -0
- package/corpus/dev/contracts/no-collection-quantifier.json +1 -0
- package/corpus/dev/contracts/no-operation-inventory.json +1 -0
- package/corpus/dev/contracts/no-read-back-relation.json +1 -0
- package/corpus/dev/contracts/no-state-change-marker.json +1 -0
- package/corpus/dev/contracts/no-type-violating-step.json +1 -0
- package/corpus/dev/contracts/per-key-split-oracles.json +1 -0
- package/corpus/dev/contracts/satisfied-declarations.json +1 -0
- package/corpus/dev/contracts/single-required-response-key.json +1 -0
- package/corpus/dev/contracts/split-indicator-oracle.json +1 -0
- package/corpus/dev/contracts/unaddressed-parameter-sibling.json +1 -0
- package/corpus/dev/contracts/unnamed-reference-set.json +1 -0
- package/corpus/dev/contracts/wrong-cardinality-form.json +1 -0
- package/corpus/dev/index.json +1 -0
- package/dist/adapters/index.d.ts +12 -0
- package/dist/adapters/index.js +3 -0
- package/dist/adapters/local-corpus-adapter.d.ts +7 -0
- package/dist/adapters/local-corpus-adapter.js +78 -0
- package/dist/adapters/node-file-system-adapter.d.ts +7 -0
- package/dist/adapters/node-file-system-adapter.js +39 -0
- package/dist/adapters/port-boundary.d.ts +18 -0
- package/dist/adapters/port-boundary.js +83 -0
- package/dist/adapters/system-clock-adapter.d.ts +10 -0
- package/dist/adapters/system-clock-adapter.js +18 -0
- package/dist/application/compile.d.ts +4 -0
- package/dist/application/compile.js +24 -0
- package/dist/application/diagnostics.d.ts +22 -0
- package/dist/application/diagnostics.js +18 -0
- package/dist/application/index.d.ts +23 -0
- package/dist/application/index.js +17 -0
- package/dist/application/invoke-port.d.ts +2 -0
- package/dist/application/invoke-port.js +45 -0
- package/dist/application/preflight.d.ts +27 -0
- package/dist/application/preflight.js +131 -0
- package/dist/application/seal.d.ts +4 -0
- package/dist/application/seal.js +28 -0
- package/dist/application/serialize.d.ts +6 -0
- package/dist/application/serialize.js +9 -0
- package/dist/cli/arguments.d.ts +28 -0
- package/dist/cli/arguments.js +167 -0
- package/dist/cli/exit-codes.d.ts +36 -0
- package/dist/cli/exit-codes.js +39 -0
- package/dist/cli/main.d.ts +2 -0
- package/dist/cli/main.js +143 -0
- package/dist/cli/render.d.ts +26 -0
- package/dist/cli/render.js +53 -0
- package/dist/cli/run.d.ts +41 -0
- package/dist/cli/run.js +203 -0
- package/dist/core/canonical/canonicalize.d.ts +1 -0
- package/dist/core/canonical/canonicalize.js +113 -0
- package/dist/core/canonical/digest.d.ts +7 -0
- package/dist/core/canonical/digest.js +81 -0
- package/dist/core/canonical/scan-json.d.ts +1 -0
- package/dist/core/canonical/scan-json.js +298 -0
- package/dist/core/canonical/value-domain.d.ts +4 -0
- package/dist/core/canonical/value-domain.js +113 -0
- package/dist/core/compile/compile.d.ts +24 -0
- package/dist/core/compile/compile.js +67 -0
- package/dist/core/compile/declarations.d.ts +5 -0
- package/dist/core/compile/declarations.js +22 -0
- package/dist/core/compile/expression-legality.d.ts +14 -0
- package/dist/core/compile/expression-legality.js +346 -0
- package/dist/core/compile/forbidden-inputs.d.ts +5 -0
- package/dist/core/compile/forbidden-inputs.js +19 -0
- package/dist/core/compile/interface-inventory.d.ts +10 -0
- package/dist/core/compile/interface-inventory.js +55 -0
- package/dist/core/compile/oracle-alignment.d.ts +14 -0
- package/dist/core/compile/oracle-alignment.js +93 -0
- package/dist/core/compile/reachability.d.ts +17 -0
- package/dist/core/compile/reachability.js +177 -0
- package/dist/core/compile/rubrics.d.ts +55 -0
- package/dist/core/compile/rubrics.js +198 -0
- package/dist/core/compile/scripting-bound.d.ts +5 -0
- package/dist/core/compile/scripting-bound.js +151 -0
- package/dist/core/compile/sensitivity-witness.d.ts +73 -0
- package/dist/core/compile/sensitivity-witness.js +232 -0
- package/dist/core/compile/waivers.d.ts +3 -0
- package/dist/core/compile/waivers.js +21 -0
- package/dist/core/coverage/coverage.d.ts +18 -0
- package/dist/core/coverage/coverage.js +47 -0
- package/dist/core/coverage/relevance.d.ts +75 -0
- package/dist/core/coverage/relevance.js +186 -0
- package/dist/core/coverage/rules.d.ts +7 -0
- package/dist/core/coverage/rules.js +18 -0
- package/dist/core/coverage/satisfaction.d.ts +107 -0
- package/dist/core/coverage/satisfaction.js +415 -0
- package/dist/core/coverage/table.d.ts +26 -0
- package/dist/core/coverage/table.js +222 -0
- package/dist/core/declared-inputs.d.ts +16 -0
- package/dist/core/declared-inputs.js +18 -0
- package/dist/core/evaluate/evidence-resolution.d.ts +54 -0
- package/dist/core/evaluate/evidence-resolution.js +153 -0
- package/dist/core/evaluate/operators.d.ts +87 -0
- package/dist/core/evaluate/operators.js +350 -0
- package/dist/core/evaluate/resolution.d.ts +40 -0
- package/dist/core/evaluate/resolution.js +336 -0
- package/dist/core/evaluate/resolved-value.d.ts +9 -0
- package/dist/core/evaluate/resolved-value.js +6 -0
- package/dist/core/failure-codes.d.ts +18 -0
- package/dist/core/failure-codes.js +50 -0
- package/dist/core/lineage/chain.d.ts +49 -0
- package/dist/core/lineage/chain.js +210 -0
- package/dist/core/lineage/freeze.d.ts +12 -0
- package/dist/core/lineage/freeze.js +35 -0
- package/dist/core/lineage/stage-table.d.ts +43 -0
- package/dist/core/lineage/stage-table.js +106 -0
- package/dist/core/preflight/plan.d.ts +67 -0
- package/dist/core/preflight/plan.js +313 -0
- package/dist/core/preflight/projection.d.ts +40 -0
- package/dist/core/preflight/projection.js +96 -0
- package/dist/core/preflight/reduce.d.ts +8 -0
- package/dist/core/preflight/reduce.js +180 -0
- package/dist/core/preflight/witness-evidence.d.ts +42 -0
- package/dist/core/preflight/witness-evidence.js +88 -0
- package/dist/core/probe/target-policy.d.ts +63 -0
- package/dist/core/probe/target-policy.js +328 -0
- package/dist/core/schemas/artifact-reference.d.ts +19 -0
- package/dist/core/schemas/artifact-reference.js +30 -0
- package/dist/core/schemas/artifact.d.ts +1153 -0
- package/dist/core/schemas/artifact.js +84 -0
- package/dist/core/schemas/constraint-ledger.d.ts +57 -0
- package/dist/core/schemas/constraint-ledger.js +143 -0
- package/dist/core/schemas/eval-contract.d.ts +402 -0
- package/dist/core/schemas/eval-contract.js +147 -0
- package/dist/core/schemas/evaluator-configuration.d.ts +37 -0
- package/dist/core/schemas/evaluator-configuration.js +43 -0
- package/dist/core/schemas/evidence-artifact.d.ts +471 -0
- package/dist/core/schemas/evidence-artifact.js +232 -0
- package/dist/core/schemas/expression.d.ts +197 -0
- package/dist/core/schemas/expression.js +284 -0
- package/dist/core/schemas/faults.d.ts +9 -0
- package/dist/core/schemas/faults.js +32 -0
- package/dist/core/schemas/interface.d.ts +417 -0
- package/dist/core/schemas/interface.js +115 -0
- package/dist/core/schemas/isolation-manifest.d.ts +136 -0
- package/dist/core/schemas/isolation-manifest.js +92 -0
- package/dist/core/schemas/lineage.d.ts +21 -0
- package/dist/core/schemas/lineage.js +28 -0
- package/dist/core/schemas/oracle.d.ts +72 -0
- package/dist/core/schemas/oracle.js +35 -0
- package/dist/core/schemas/plan.d.ts +115 -0
- package/dist/core/schemas/plan.js +58 -0
- package/dist/core/schemas/pointer.d.ts +63 -0
- package/dist/core/schemas/pointer.js +94 -0
- package/dist/core/schemas/port-messages.d.ts +103 -0
- package/dist/core/schemas/port-messages.js +90 -0
- package/dist/core/schemas/preflight-verdict.d.ts +60 -0
- package/dist/core/schemas/preflight-verdict.js +38 -0
- package/dist/core/schemas/primitives.d.ts +78 -0
- package/dist/core/schemas/primitives.js +121 -0
- package/dist/core/schemas/private-artifact-manifest.d.ts +56 -0
- package/dist/core/schemas/private-artifact-manifest.js +46 -0
- package/dist/core/schemas/probe-body.d.ts +25 -0
- package/dist/core/schemas/probe-body.js +23 -0
- package/dist/core/schemas/probe-policy.d.ts +76 -0
- package/dist/core/schemas/probe-policy.js +33 -0
- package/dist/core/schemas/probe.d.ts +189 -0
- package/dist/core/schemas/probe.js +82 -0
- package/dist/core/schemas/publish.d.ts +30 -0
- package/dist/core/schemas/publish.js +135 -0
- package/dist/core/schemas/reference-set.d.ts +18 -0
- package/dist/core/schemas/reference-set.js +27 -0
- package/dist/core/schemas/rubric.d.ts +62 -0
- package/dist/core/schemas/rubric.js +68 -0
- package/dist/core/schemas/scoring-policy.d.ts +28 -0
- package/dist/core/schemas/scoring-policy.js +51 -0
- package/dist/core/schemas/sealed-evaluator-brief.d.ts +80 -0
- package/dist/core/schemas/sealed-evaluator-brief.js +59 -0
- package/dist/core/schemas/sealed-run-record.d.ts +382 -0
- package/dist/core/schemas/sealed-run-record.js +215 -0
- package/dist/core/schemas/sensitivity-witness.d.ts +138 -0
- package/dist/core/schemas/sensitivity-witness.js +86 -0
- package/dist/core/schemas/verdict.d.ts +25 -0
- package/dist/core/schemas/verdict.js +20 -0
- package/dist/core/schemas/waiver.d.ts +17 -0
- package/dist/core/schemas/waiver.js +24 -0
- package/dist/core/seal/derived-reference.d.ts +36 -0
- package/dist/core/seal/derived-reference.js +383 -0
- package/dist/core/seal/direction-prose.d.ts +13 -0
- package/dist/core/seal/direction-prose.js +120 -0
- package/dist/core/seal/plan-index.d.ts +63 -0
- package/dist/core/seal/plan-index.js +155 -0
- package/dist/core/seal/scripting-audit.d.ts +15 -0
- package/dist/core/seal/scripting-audit.js +51 -0
- package/dist/core/seal/seal.d.ts +18 -0
- package/dist/core/seal/seal.js +155 -0
- package/dist/core/stage-contracts.d.ts +30 -0
- package/dist/core/stage-contracts.js +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.js +22 -0
- package/dist/ports/clock-port.d.ts +13 -0
- package/dist/ports/clock-port.js +7 -0
- package/dist/ports/corpus-port.d.ts +16 -0
- package/dist/ports/corpus-port.js +7 -0
- package/dist/ports/environment-probe-port.d.ts +76 -0
- package/dist/ports/environment-probe-port.js +32 -0
- package/dist/ports/file-system-port.d.ts +27 -0
- package/dist/ports/file-system-port.js +11 -0
- package/dist/ports/port.d.ts +33 -0
- package/dist/ports/port.js +14 -0
- package/dist/testing/conformance.d.ts +88 -0
- package/dist/testing/conformance.js +281 -0
- package/dist/testing/index.d.ts +26 -0
- package/dist/testing/index.js +18 -0
- package/dist/testing/probe-conformance.d.ts +45 -0
- package/dist/testing/probe-conformance.js +186 -0
- package/package.json +130 -0
- package/schemas/artifact-reference.schema.json +64 -0
- package/schemas/eval-contract.schema.json +2145 -0
- package/schemas/evaluator-configuration.schema.json +199 -0
- package/schemas/evidence-artifact.schema.json +1229 -0
- package/schemas/isolation-manifest.schema.json +394 -0
- package/schemas/preflight-verdict.schema.json +114 -0
- package/schemas/private-artifact-manifest.schema.json +103 -0
- package/schemas/probe.schema.json +1151 -0
- package/schemas/rubric.schema.json +148 -0
- package/schemas/scoring-policy.schema.json +90 -0
- package/schemas/sealed-evaluator-brief.schema.json +268 -0
- package/schemas/sealed-run-record.schema.json +875 -0
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "urn:eval-quality:schema:isolation-manifest",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"schemaVersion": {
|
|
7
|
+
"type": "integer",
|
|
8
|
+
"minimum": 1,
|
|
9
|
+
"maximum": 9007199254740991,
|
|
10
|
+
"description": "AD-11 requires an integer under this exact name. Deliberately not `z.literal(1)`: the literal exports as `{\"type\":\"number\",\"const\":1}`, losing `integer` for a non-TypeScript consumer, and it would turn a version-2 artifact into an anonymous schema-parse failure instead of AD-28's dedicated `schema-version-mismatch` fault. Version equality belongs to the reader that throws that fault."
|
|
11
|
+
},
|
|
12
|
+
"parentDigest": {
|
|
13
|
+
"anyOf": [
|
|
14
|
+
{
|
|
15
|
+
"type": "string",
|
|
16
|
+
"pattern": "^sha256:[0-9a-f]{64}$",
|
|
17
|
+
"description": "AD-27 digest: \"sha256:\" plus 64 lowercase hexadecimal characters."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"type": "null"
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
"description": "AD-29 lineage. `null` if and only if `revisionCount` is 0. That biconditional is stated here rather than refined: a refinement is silently dropped from the published schema, so a non-TypeScript consumer would never see it, and the constraint ledger records it as not expressible."
|
|
24
|
+
},
|
|
25
|
+
"revisionCount": {
|
|
26
|
+
"type": "integer",
|
|
27
|
+
"minimum": 0,
|
|
28
|
+
"maximum": 9007199254740991,
|
|
29
|
+
"description": "AD-29: one greater than the parent artifact's."
|
|
30
|
+
},
|
|
31
|
+
"runId": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"minLength": 1
|
|
34
|
+
},
|
|
35
|
+
"contractId": {
|
|
36
|
+
"type": "string",
|
|
37
|
+
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
|
|
38
|
+
"description": "The prior art's `taskId`, renamed. \"Task\" is experiment vocabulary with no product meaning, and the manifest keeps an identifier because it is the artifact `core/ingest` matches against a run; the run record and the probe pin what they describe by digest instead."
|
|
39
|
+
},
|
|
40
|
+
"conditionArm": {
|
|
41
|
+
"type": "string",
|
|
42
|
+
"minLength": 1,
|
|
43
|
+
"description": "An opaque caller label with no product semantics, per AD-24. The prior art's three-member enum does not survive, on the same reasoning as the run record's."
|
|
44
|
+
},
|
|
45
|
+
"modelSnapshot": {
|
|
46
|
+
"type": "string",
|
|
47
|
+
"minLength": 1
|
|
48
|
+
},
|
|
49
|
+
"systemPromptDigest": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"pattern": "^sha256:[0-9a-f]{64}$",
|
|
52
|
+
"description": "AD-27 digest: \"sha256:\" plus 64 lowercase hexadecimal characters."
|
|
53
|
+
},
|
|
54
|
+
"contractDigest": {
|
|
55
|
+
"type": "string",
|
|
56
|
+
"pattern": "^sha256:[0-9a-f]{64}$",
|
|
57
|
+
"description": "AD-27 digest: \"sha256:\" plus 64 lowercase hexadecimal characters."
|
|
58
|
+
},
|
|
59
|
+
"evaluatorConfigurationDigest": {
|
|
60
|
+
"type": "string",
|
|
61
|
+
"pattern": "^sha256:[0-9a-f]{64}$",
|
|
62
|
+
"description": "Added here and absent from the prior art. AD-32 requires this digest to agree between the manifest and the run record, which was previously an agreement rule asserted over two fields that did not exist. Required and non-nullable on both, which is what makes the substitution cost two contradictions rather than one omission. The agreement itself is a cross-artifact rule no schema can see."
|
|
63
|
+
},
|
|
64
|
+
"workspaceIdentity": {
|
|
65
|
+
"type": "string",
|
|
66
|
+
"minLength": 1
|
|
67
|
+
},
|
|
68
|
+
"allowedMounts": {
|
|
69
|
+
"type": "array",
|
|
70
|
+
"items": {
|
|
71
|
+
"type": "string"
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"observedMounts": {
|
|
75
|
+
"type": "array",
|
|
76
|
+
"items": {
|
|
77
|
+
"type": "string"
|
|
78
|
+
},
|
|
79
|
+
"description": "Observed mounts, network targets, and tool calls exceeding their allowlist is a violation AD-16 has `core/ingest` record; it is a cross-field rule with no AD-5 code and the schema admits it."
|
|
80
|
+
},
|
|
81
|
+
"networkAllowlist": {
|
|
82
|
+
"type": "array",
|
|
83
|
+
"items": {
|
|
84
|
+
"type": "string"
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
"observedNetworkTargets": {
|
|
88
|
+
"type": "array",
|
|
89
|
+
"items": {
|
|
90
|
+
"type": "string"
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"toolAllowlist": {
|
|
94
|
+
"type": "array",
|
|
95
|
+
"items": {
|
|
96
|
+
"type": "string"
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
"observedToolCalls": {
|
|
100
|
+
"type": "array",
|
|
101
|
+
"items": {
|
|
102
|
+
"type": "string"
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
"resourceCeilings": {
|
|
106
|
+
"type": "object",
|
|
107
|
+
"properties": {
|
|
108
|
+
"maxToolCalls": {
|
|
109
|
+
"type": "integer",
|
|
110
|
+
"minimum": 1,
|
|
111
|
+
"maximum": 9007199254740991
|
|
112
|
+
},
|
|
113
|
+
"maxInputTokens": {
|
|
114
|
+
"type": "integer",
|
|
115
|
+
"minimum": 1,
|
|
116
|
+
"maximum": 9007199254740991
|
|
117
|
+
},
|
|
118
|
+
"maxOutputTokens": {
|
|
119
|
+
"type": "integer",
|
|
120
|
+
"minimum": 1,
|
|
121
|
+
"maximum": 9007199254740991
|
|
122
|
+
},
|
|
123
|
+
"maxWallClockMinutes": {
|
|
124
|
+
"type": "number",
|
|
125
|
+
"exclusiveMinimum": 0,
|
|
126
|
+
"description": "The prior art's `exclusiveMinimum: 0`, kept. A ceiling of zero minutes is not a ceiling, it is a run that may not happen, and the manifest records what the harness actually enforced."
|
|
127
|
+
},
|
|
128
|
+
"maxCostUsd": {
|
|
129
|
+
"type": "string",
|
|
130
|
+
"pattern": "^([1-9][0-9]*(\\.[0-9]+)?|0\\.[0-9]*[1-9][0-9]*)$",
|
|
131
|
+
"description": "Money, so AD-36 carries it as a string. The prior art's number does not survive; an AD-24 divergence, and the reason AD-36's exact-decimal rule reaches the manifest as well as the run record. The retyping keeps the prior art's `exclusiveMinimum: 0` rather than dropping it: `UnsignedDecimalString` would admit \"0\", which is the bound the prior art spent a keyword excluding."
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
"required": [
|
|
135
|
+
"maxToolCalls",
|
|
136
|
+
"maxInputTokens",
|
|
137
|
+
"maxOutputTokens",
|
|
138
|
+
"maxWallClockMinutes",
|
|
139
|
+
"maxCostUsd"
|
|
140
|
+
],
|
|
141
|
+
"additionalProperties": false
|
|
142
|
+
},
|
|
143
|
+
"actualResourceUse": {
|
|
144
|
+
"type": "object",
|
|
145
|
+
"properties": {
|
|
146
|
+
"toolCalls": {
|
|
147
|
+
"type": "integer",
|
|
148
|
+
"minimum": 0,
|
|
149
|
+
"maximum": 9007199254740991
|
|
150
|
+
},
|
|
151
|
+
"inputTokens": {
|
|
152
|
+
"type": "integer",
|
|
153
|
+
"minimum": 0,
|
|
154
|
+
"maximum": 9007199254740991
|
|
155
|
+
},
|
|
156
|
+
"outputTokens": {
|
|
157
|
+
"type": "integer",
|
|
158
|
+
"minimum": 0,
|
|
159
|
+
"maximum": 9007199254740991
|
|
160
|
+
},
|
|
161
|
+
"wallClockSeconds": {
|
|
162
|
+
"type": "number",
|
|
163
|
+
"minimum": 0
|
|
164
|
+
},
|
|
165
|
+
"costUsd": {
|
|
166
|
+
"type": "string",
|
|
167
|
+
"pattern": "^(0|[1-9][0-9]*)(\\.[0-9]+)?$",
|
|
168
|
+
"description": "The decimal-string format restricted to non-negative values, for quantities where a negative has no meaning."
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
"required": [
|
|
172
|
+
"toolCalls",
|
|
173
|
+
"inputTokens",
|
|
174
|
+
"outputTokens",
|
|
175
|
+
"wallClockSeconds",
|
|
176
|
+
"costUsd"
|
|
177
|
+
],
|
|
178
|
+
"additionalProperties": false
|
|
179
|
+
},
|
|
180
|
+
"forbiddenInputAccounting": {
|
|
181
|
+
"type": "object",
|
|
182
|
+
"properties": {
|
|
183
|
+
"original-spec": {
|
|
184
|
+
"type": "object",
|
|
185
|
+
"properties": {
|
|
186
|
+
"withheld": {
|
|
187
|
+
"type": "boolean"
|
|
188
|
+
},
|
|
189
|
+
"note": {
|
|
190
|
+
"anyOf": [
|
|
191
|
+
{
|
|
192
|
+
"type": "string"
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
"type": "null"
|
|
196
|
+
}
|
|
197
|
+
]
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
"required": [
|
|
201
|
+
"withheld",
|
|
202
|
+
"note"
|
|
203
|
+
],
|
|
204
|
+
"additionalProperties": false
|
|
205
|
+
},
|
|
206
|
+
"source-code": {
|
|
207
|
+
"type": "object",
|
|
208
|
+
"properties": {
|
|
209
|
+
"withheld": {
|
|
210
|
+
"type": "boolean"
|
|
211
|
+
},
|
|
212
|
+
"note": {
|
|
213
|
+
"anyOf": [
|
|
214
|
+
{
|
|
215
|
+
"type": "string"
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
"type": "null"
|
|
219
|
+
}
|
|
220
|
+
]
|
|
221
|
+
}
|
|
222
|
+
},
|
|
223
|
+
"required": [
|
|
224
|
+
"withheld",
|
|
225
|
+
"note"
|
|
226
|
+
],
|
|
227
|
+
"additionalProperties": false
|
|
228
|
+
},
|
|
229
|
+
"repository": {
|
|
230
|
+
"type": "object",
|
|
231
|
+
"properties": {
|
|
232
|
+
"withheld": {
|
|
233
|
+
"type": "boolean"
|
|
234
|
+
},
|
|
235
|
+
"note": {
|
|
236
|
+
"anyOf": [
|
|
237
|
+
{
|
|
238
|
+
"type": "string"
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
"type": "null"
|
|
242
|
+
}
|
|
243
|
+
]
|
|
244
|
+
}
|
|
245
|
+
},
|
|
246
|
+
"required": [
|
|
247
|
+
"withheld",
|
|
248
|
+
"note"
|
|
249
|
+
],
|
|
250
|
+
"additionalProperties": false
|
|
251
|
+
},
|
|
252
|
+
"builder-transcript": {
|
|
253
|
+
"type": "object",
|
|
254
|
+
"properties": {
|
|
255
|
+
"withheld": {
|
|
256
|
+
"type": "boolean"
|
|
257
|
+
},
|
|
258
|
+
"note": {
|
|
259
|
+
"anyOf": [
|
|
260
|
+
{
|
|
261
|
+
"type": "string"
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
"type": "null"
|
|
265
|
+
}
|
|
266
|
+
]
|
|
267
|
+
}
|
|
268
|
+
},
|
|
269
|
+
"required": [
|
|
270
|
+
"withheld",
|
|
271
|
+
"note"
|
|
272
|
+
],
|
|
273
|
+
"additionalProperties": false
|
|
274
|
+
},
|
|
275
|
+
"implementation-logs": {
|
|
276
|
+
"type": "object",
|
|
277
|
+
"properties": {
|
|
278
|
+
"withheld": {
|
|
279
|
+
"type": "boolean"
|
|
280
|
+
},
|
|
281
|
+
"note": {
|
|
282
|
+
"anyOf": [
|
|
283
|
+
{
|
|
284
|
+
"type": "string"
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
"type": "null"
|
|
288
|
+
}
|
|
289
|
+
]
|
|
290
|
+
}
|
|
291
|
+
},
|
|
292
|
+
"required": [
|
|
293
|
+
"withheld",
|
|
294
|
+
"note"
|
|
295
|
+
],
|
|
296
|
+
"additionalProperties": false
|
|
297
|
+
},
|
|
298
|
+
"comparator-results": {
|
|
299
|
+
"type": "object",
|
|
300
|
+
"properties": {
|
|
301
|
+
"withheld": {
|
|
302
|
+
"type": "boolean"
|
|
303
|
+
},
|
|
304
|
+
"note": {
|
|
305
|
+
"anyOf": [
|
|
306
|
+
{
|
|
307
|
+
"type": "string"
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
"type": "null"
|
|
311
|
+
}
|
|
312
|
+
]
|
|
313
|
+
}
|
|
314
|
+
},
|
|
315
|
+
"required": [
|
|
316
|
+
"withheld",
|
|
317
|
+
"note"
|
|
318
|
+
],
|
|
319
|
+
"additionalProperties": false
|
|
320
|
+
},
|
|
321
|
+
"human-labels": {
|
|
322
|
+
"type": "object",
|
|
323
|
+
"properties": {
|
|
324
|
+
"withheld": {
|
|
325
|
+
"type": "boolean"
|
|
326
|
+
},
|
|
327
|
+
"note": {
|
|
328
|
+
"anyOf": [
|
|
329
|
+
{
|
|
330
|
+
"type": "string"
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
"type": "null"
|
|
334
|
+
}
|
|
335
|
+
]
|
|
336
|
+
}
|
|
337
|
+
},
|
|
338
|
+
"required": [
|
|
339
|
+
"withheld",
|
|
340
|
+
"note"
|
|
341
|
+
],
|
|
342
|
+
"additionalProperties": false
|
|
343
|
+
}
|
|
344
|
+
},
|
|
345
|
+
"required": [
|
|
346
|
+
"original-spec",
|
|
347
|
+
"source-code",
|
|
348
|
+
"repository",
|
|
349
|
+
"builder-transcript",
|
|
350
|
+
"implementation-logs",
|
|
351
|
+
"comparator-results",
|
|
352
|
+
"human-labels"
|
|
353
|
+
],
|
|
354
|
+
"additionalProperties": false,
|
|
355
|
+
"description": "The field AD-16 adds and the prior art lacks: \"the isolation manifest's required fields \u2026 account for each forbidden input by name\". Seven keys, generated from `FORBIDDEN_INPUT_FLOOR` so the floor has one home."
|
|
356
|
+
},
|
|
357
|
+
"violation": {
|
|
358
|
+
"anyOf": [
|
|
359
|
+
{
|
|
360
|
+
"type": "string"
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
"type": "null"
|
|
364
|
+
}
|
|
365
|
+
],
|
|
366
|
+
"description": "The sixteenth of the prior art's sixteen required members, and the one that is not a description of the run: a non-null violation invalidates it. AD-16 says the schema is \"seeded from the prior art's fifteen\"; the prior art's `required` array has sixteen. Settled by construction: the fifteen are the fields describing the run and this is the invalidation outcome. All sixteen are carried."
|
|
367
|
+
}
|
|
368
|
+
},
|
|
369
|
+
"required": [
|
|
370
|
+
"schemaVersion",
|
|
371
|
+
"parentDigest",
|
|
372
|
+
"revisionCount",
|
|
373
|
+
"runId",
|
|
374
|
+
"contractId",
|
|
375
|
+
"conditionArm",
|
|
376
|
+
"modelSnapshot",
|
|
377
|
+
"systemPromptDigest",
|
|
378
|
+
"contractDigest",
|
|
379
|
+
"evaluatorConfigurationDigest",
|
|
380
|
+
"workspaceIdentity",
|
|
381
|
+
"allowedMounts",
|
|
382
|
+
"observedMounts",
|
|
383
|
+
"networkAllowlist",
|
|
384
|
+
"observedNetworkTargets",
|
|
385
|
+
"toolAllowlist",
|
|
386
|
+
"observedToolCalls",
|
|
387
|
+
"resourceCeilings",
|
|
388
|
+
"actualResourceUse",
|
|
389
|
+
"forbiddenInputAccounting",
|
|
390
|
+
"violation"
|
|
391
|
+
],
|
|
392
|
+
"additionalProperties": false,
|
|
393
|
+
"description": "The per-run isolation audit. Succeeds the prior-art `isolation-manifest` schema per AD-24, carrying all sixteen of its required members plus `evaluatorConfigurationDigest`, `forbiddenInputAccounting`, and AD-29's lineage; `taskId` becomes `contractId`, `condition` is demoted to an opaque `conditionArm`, and money in both resource shapes becomes a decimal string. An absent, unparseable, incomplete, or violating manifest invalidates the run under AD-16 and never downgrades a verdict; a schema rejection is the correct expression of unparseable and incomplete, so nothing is admitted for their sake, and the violating case is `core/ingest`'s."
|
|
394
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "urn:eval-quality:schema:preflight-verdict",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"schemaVersion": {
|
|
7
|
+
"type": "integer",
|
|
8
|
+
"minimum": 1,
|
|
9
|
+
"maximum": 9007199254740991,
|
|
10
|
+
"description": "AD-11 requires an integer under this exact name. Deliberately not `z.literal(1)`: the literal exports as `{\"type\":\"number\",\"const\":1}`, losing `integer` for a non-TypeScript consumer, and it would turn a version-2 artifact into an anonymous schema-parse failure instead of AD-28's dedicated `schema-version-mismatch` fault. Version equality belongs to the reader that throws that fault."
|
|
11
|
+
},
|
|
12
|
+
"parentDigest": {
|
|
13
|
+
"anyOf": [
|
|
14
|
+
{
|
|
15
|
+
"type": "string",
|
|
16
|
+
"pattern": "^sha256:[0-9a-f]{64}$",
|
|
17
|
+
"description": "AD-27 digest: \"sha256:\" plus 64 lowercase hexadecimal characters."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"type": "null"
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
"description": "AD-29 lineage. `null` if and only if `revisionCount` is 0. That biconditional is stated here rather than refined: a refinement is silently dropped from the published schema, so a non-TypeScript consumer would never see it, and the constraint ledger records it as not expressible."
|
|
24
|
+
},
|
|
25
|
+
"revisionCount": {
|
|
26
|
+
"type": "integer",
|
|
27
|
+
"minimum": 0,
|
|
28
|
+
"maximum": 9007199254740991,
|
|
29
|
+
"description": "AD-29: one greater than the parent artifact's."
|
|
30
|
+
},
|
|
31
|
+
"runId": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"minLength": 1,
|
|
34
|
+
"description": "An opaque caller label."
|
|
35
|
+
},
|
|
36
|
+
"fixtureDigest": {
|
|
37
|
+
"type": "string",
|
|
38
|
+
"pattern": "^sha256:[0-9a-f]{64}$",
|
|
39
|
+
"description": "Required, not nullable. AD-10 makes the fixture digest a required field of the verdict, and AD-11 names it as one of the scoring version's five inputs, so an absent one leaves the scoring version uncomputable."
|
|
40
|
+
},
|
|
41
|
+
"passed": {
|
|
42
|
+
"type": "boolean"
|
|
43
|
+
},
|
|
44
|
+
"checks": {
|
|
45
|
+
"type": "array",
|
|
46
|
+
"items": {
|
|
47
|
+
"type": "object",
|
|
48
|
+
"properties": {
|
|
49
|
+
"kind": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"enum": [
|
|
52
|
+
"interface-present",
|
|
53
|
+
"input-sensitivity",
|
|
54
|
+
"state-reset",
|
|
55
|
+
"clean-control",
|
|
56
|
+
"seeded-faults-scoped",
|
|
57
|
+
"seeded-fault-fired"
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
"operationId": {
|
|
61
|
+
"anyOf": [
|
|
62
|
+
{
|
|
63
|
+
"type": "string",
|
|
64
|
+
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
|
|
65
|
+
"description": "A kebab-case slug. Excludes \"/\" and \"~\" so an identifier can be embedded in an interaction-rooted pointer without escaping."
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"type": "null"
|
|
69
|
+
}
|
|
70
|
+
],
|
|
71
|
+
"description": "Nullable because AD-10 scopes input sensitivity and state reset per operation and interface presence per interface, so a check that is not per-operation has nothing to name here."
|
|
72
|
+
},
|
|
73
|
+
"outcome": {
|
|
74
|
+
"type": "string",
|
|
75
|
+
"enum": [
|
|
76
|
+
"satisfied",
|
|
77
|
+
"failed",
|
|
78
|
+
"exempt"
|
|
79
|
+
],
|
|
80
|
+
"description": "`exempt` exists because AD-10 says \"an operation declaring no inputs in any channel is exempt and records the exemption\", and an exemption with no spelling is an exemption nobody records. That a failed pre-flight invalidates the run, and that a sensitivity witness resolving `insufficient-evidence` fails rather than passes, are AD-10 semantics for `core/preflight`; the schema carries the outcome and refines nothing."
|
|
81
|
+
},
|
|
82
|
+
"note": {
|
|
83
|
+
"anyOf": [
|
|
84
|
+
{
|
|
85
|
+
"type": "string"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"type": "null"
|
|
89
|
+
}
|
|
90
|
+
]
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"required": [
|
|
94
|
+
"kind",
|
|
95
|
+
"operationId",
|
|
96
|
+
"outcome",
|
|
97
|
+
"note"
|
|
98
|
+
],
|
|
99
|
+
"additionalProperties": false
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
"required": [
|
|
104
|
+
"schemaVersion",
|
|
105
|
+
"parentDigest",
|
|
106
|
+
"revisionCount",
|
|
107
|
+
"runId",
|
|
108
|
+
"fixtureDigest",
|
|
109
|
+
"passed",
|
|
110
|
+
"checks"
|
|
111
|
+
],
|
|
112
|
+
"additionalProperties": false,
|
|
113
|
+
"description": "The pre-flight verdict: a pure function of the observations the environment-probe port returned, with no prior art. AD-10 bounds it to a closed list of check kinds, all six transcribed from that AD's own prose, and requires the fixture digest as a required field. Probing a fixture is not executing the system under test, and a failed pre-flight invalidates the run rather than becoming a contract verdict."
|
|
114
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "urn:eval-quality:schema:private-artifact-manifest",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"schemaVersion": {
|
|
7
|
+
"type": "integer",
|
|
8
|
+
"minimum": 1,
|
|
9
|
+
"maximum": 9007199254740991,
|
|
10
|
+
"description": "AD-11 requires an integer under this exact name. Deliberately not `z.literal(1)`: the literal exports as `{\"type\":\"number\",\"const\":1}`, losing `integer` for a non-TypeScript consumer, and it would turn a version-2 artifact into an anonymous schema-parse failure instead of AD-28's dedicated `schema-version-mismatch` fault. Version equality belongs to the reader that throws that fault."
|
|
11
|
+
},
|
|
12
|
+
"parentDigest": {
|
|
13
|
+
"anyOf": [
|
|
14
|
+
{
|
|
15
|
+
"type": "string",
|
|
16
|
+
"pattern": "^sha256:[0-9a-f]{64}$",
|
|
17
|
+
"description": "AD-27 digest: \"sha256:\" plus 64 lowercase hexadecimal characters."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"type": "null"
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
"description": "AD-29 lineage. `null` if and only if `revisionCount` is 0. That biconditional is stated here rather than refined: a refinement is silently dropped from the published schema, so a non-TypeScript consumer would never see it, and the constraint ledger records it as not expressible."
|
|
24
|
+
},
|
|
25
|
+
"revisionCount": {
|
|
26
|
+
"type": "integer",
|
|
27
|
+
"minimum": 0,
|
|
28
|
+
"maximum": 9007199254740991,
|
|
29
|
+
"description": "AD-29: one greater than the parent artifact's."
|
|
30
|
+
},
|
|
31
|
+
"entries": {
|
|
32
|
+
"type": "array",
|
|
33
|
+
"items": {
|
|
34
|
+
"type": "object",
|
|
35
|
+
"properties": {
|
|
36
|
+
"privateRef": {
|
|
37
|
+
"type": "string",
|
|
38
|
+
"minLength": 1,
|
|
39
|
+
"description": "The opaque handle the corpus port resolves under AD-8. Only emptiness is excluded: an opaque reference with a shape this package understands would stop being opaque."
|
|
40
|
+
},
|
|
41
|
+
"digest": {
|
|
42
|
+
"type": "string",
|
|
43
|
+
"pattern": "^sha256:[0-9a-f]{64}$",
|
|
44
|
+
"description": "The prior art's `sha256`, renamed against the shared AD-27 primitive; the value form is byte-identical. AD-8 is explicit that \"a manifest digest is never a trusted label\": the core recomputes the digest from the resolved bytes and a mismatch is an AD-28 `digest-mismatch` fault at ingest. That is a rule about resolved bytes, which a schema over a string cannot see, so it is recorded here and enforced nowhere in this file."
|
|
45
|
+
},
|
|
46
|
+
"artifactKind": {
|
|
47
|
+
"type": "string",
|
|
48
|
+
"enum": [
|
|
49
|
+
"private-input-record",
|
|
50
|
+
"raw-trace",
|
|
51
|
+
"raw-result",
|
|
52
|
+
"human-label",
|
|
53
|
+
"implementation-patch",
|
|
54
|
+
"isolation-manifest",
|
|
55
|
+
"scripted-baseline-output",
|
|
56
|
+
"other"
|
|
57
|
+
],
|
|
58
|
+
"description": "The prior art's `artifactType`, renamed and ratified with its eight members unchanged."
|
|
59
|
+
},
|
|
60
|
+
"publicSafeRunId": {
|
|
61
|
+
"anyOf": [
|
|
62
|
+
{
|
|
63
|
+
"type": "string"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"type": "null"
|
|
67
|
+
}
|
|
68
|
+
],
|
|
69
|
+
"description": "The run this artifact belongs to, in the public-safe vocabulary. `null` for an artifact belonging to no single run."
|
|
70
|
+
},
|
|
71
|
+
"sanitizationPolicy": {
|
|
72
|
+
"anyOf": [
|
|
73
|
+
{
|
|
74
|
+
"type": "string",
|
|
75
|
+
"minLength": 1
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"type": "null"
|
|
79
|
+
}
|
|
80
|
+
],
|
|
81
|
+
"description": "AD-8 carries \"the sanitization policy applied to it\", and the nearest antecedent is the entry rather than the manifest: a manifest holding a raw trace beside a human label gives the two different treatment, so per-entry is the only reading that survives. Opaque rather than an enum for the reason `ScopedResource.kind` is opaque: no AD supplies a value space, and inventing one is the unshaped-declaration defect in reverse. `null` spells \"none applied\", which must stay representable."
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
"required": [
|
|
85
|
+
"privateRef",
|
|
86
|
+
"digest",
|
|
87
|
+
"artifactKind",
|
|
88
|
+
"publicSafeRunId",
|
|
89
|
+
"sanitizationPolicy"
|
|
90
|
+
],
|
|
91
|
+
"additionalProperties": false
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
"required": [
|
|
96
|
+
"schemaVersion",
|
|
97
|
+
"parentDigest",
|
|
98
|
+
"revisionCount",
|
|
99
|
+
"entries"
|
|
100
|
+
],
|
|
101
|
+
"additionalProperties": false,
|
|
102
|
+
"description": "The public-safe index of every private artifact this repository references. Succeeds the prior-art `private-evidence-manifest` schema per AD-24, with three divergences: the prior art's `manifestVersion: const 1` becomes AD-11's `schemaVersion` alongside AD-29's lineage, `artifactType` becomes `artifactKind` with its eight members ratified unchanged, and each entry gains AD-8's `sanitizationPolicy`. AD-18 binds this artifact hardest: it \"never contains a private path, credential, or domain value\". That prohibition is not expressible over opaque strings, so it is stated here, recorded in the constraint ledger as not expressible, and enforced by review and by the publication guard rather than by this schema."
|
|
103
|
+
}
|