@aiwg/cli 2026.9.21 → 2026.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/agentic/code/providers/capability-matrix.yaml +2 -1
  2. package/dist/src/artifacts/cli.js +23 -18
  3. package/dist/src/artifacts/discovery-shadow-evaluator.js +177 -0
  4. package/dist/src/artifacts/discovery-shadow.js +195 -0
  5. package/dist/src/artifacts/fortemi-core-query-adapter.js +6 -2
  6. package/dist/src/artifacts/index-builder.js +47 -9
  7. package/dist/src/artifacts/query-engine.js +108 -5
  8. package/dist/src/artifacts/types.js +1 -0
  9. package/dist/src/cli/handlers/decision.js +88 -0
  10. package/dist/src/cli/handlers/gates.js +154 -0
  11. package/dist/src/cli/handlers/index.js +5 -1
  12. package/dist/src/cli/handlers/sessions.js +10 -7
  13. package/dist/src/cli/handlers/utilities.js +20 -0
  14. package/dist/src/config/aiwg-config.js +15 -2
  15. package/dist/src/decision/acceptance.js +25 -0
  16. package/dist/src/decision/adapters/jev.js +24 -2
  17. package/dist/src/decision/calibration/registry.js +9 -0
  18. package/dist/src/decision/compose.js +74 -15
  19. package/dist/src/decision/context-live-promotion.js +344 -0
  20. package/dist/src/decision/context-live-qualification.js +591 -0
  21. package/dist/src/decision/context-pruning.js +847 -0
  22. package/dist/src/decision/driver.js +430 -0
  23. package/dist/src/decision/egress-live-qualification.js +874 -0
  24. package/dist/src/decision/ensemble/contract.js +64 -1
  25. package/dist/src/decision/ensemble/index.js +1 -0
  26. package/dist/src/decision/ensemble/report.js +8 -42
  27. package/dist/src/decision/ensemble/runtime.js +571 -0
  28. package/dist/src/decision/ensemble-study/artifacts.js +85 -0
  29. package/dist/src/decision/ensemble-study/calibration.js +443 -0
  30. package/dist/src/decision/ensemble-study/corpus.js +229 -0
  31. package/dist/src/decision/ensemble-study/multifact-artifacts.js +23 -0
  32. package/dist/src/decision/ensemble-study/multifact-study.js +596 -0
  33. package/dist/src/decision/ensemble-study/multifact.js +241 -0
  34. package/dist/src/decision/ensemble-study/protocol.js +77 -0
  35. package/dist/src/decision/ensemble-study/score.js +462 -0
  36. package/dist/src/decision/ensemble-study/staged.js +87 -0
  37. package/dist/src/decision/ensemble-study/statistics.js +84 -0
  38. package/dist/src/decision/evaluate.js +227 -14
  39. package/dist/src/decision/export.js +4 -0
  40. package/dist/src/decision/feature-export.js +1074 -0
  41. package/dist/src/decision/graph-index.js +16 -0
  42. package/dist/src/decision/graph-live-qualification.js +1041 -0
  43. package/dist/src/decision/graph-live-workload.js +245 -0
  44. package/dist/src/decision/graph-skill-bridge.js +21 -3
  45. package/dist/src/decision/heldout/calibration.js +140 -0
  46. package/dist/src/decision/heldout/collector.js +430 -0
  47. package/dist/src/decision/heldout/contract.js +309 -0
  48. package/dist/src/decision/heldout/d29-generator-ids.js +12 -0
  49. package/dist/src/decision/heldout/d29-passage-baseline-v2.js +93 -0
  50. package/dist/src/decision/heldout/d29-passage-baseline-v3.js +100 -0
  51. package/dist/src/decision/heldout/d29-passage-baseline.js +66 -0
  52. package/dist/src/decision/heldout/d29-pools-v8.js +575 -0
  53. package/dist/src/decision/heldout/d29-pools.js +288 -0
  54. package/dist/src/decision/heldout/d29-v6.js +169 -0
  55. package/dist/src/decision/heldout/d29-v7.js +202 -0
  56. package/dist/src/decision/heldout/d29-v8.js +586 -0
  57. package/dist/src/decision/heldout/generator-registry.js +67 -0
  58. package/dist/src/decision/heldout/generators.js +696 -0
  59. package/dist/src/decision/heldout/index.js +8 -0
  60. package/dist/src/decision/heldout/journal.js +346 -0
  61. package/dist/src/decision/heldout/study-generators.js +64 -0
  62. package/dist/src/decision/heldout/types.js +2 -0
  63. package/dist/src/decision/host-policy.js +61 -0
  64. package/dist/src/decision/index.js +11 -0
  65. package/dist/src/decision/interop-profile.v1.json +112 -0
  66. package/dist/src/decision/interop.js +653 -0
  67. package/dist/src/decision/issue-triage/index.js +3 -0
  68. package/dist/src/decision/issue-triage/runtime.js +1069 -0
  69. package/dist/src/decision/issue-triage/types.js +2 -0
  70. package/dist/src/decision/patterns/catalog.js +28 -8
  71. package/dist/src/decision/patterns/playground.js +28 -11
  72. package/dist/src/decision/patterns/specs.js +19 -10
  73. package/dist/src/decision/preprocessed-evidence.js +724 -0
  74. package/dist/src/decision/qualification/capture.js +8 -2
  75. package/dist/src/decision/qualification/gate-evidence.js +19 -4
  76. package/dist/src/decision/qualification/load.js +8 -1
  77. package/dist/src/decision/qualification/quality.js +57 -49
  78. package/dist/src/decision/qualification/release.js +76 -3
  79. package/dist/src/decision/qualification/runner.js +5 -2
  80. package/dist/src/decision/routing/contract.js +175 -0
  81. package/dist/src/decision/routing/index.js +5 -0
  82. package/dist/src/decision/routing/report.js +216 -0
  83. package/dist/src/decision/routing/runtime.js +685 -0
  84. package/dist/src/decision/routing/types.js +2 -0
  85. package/dist/src/decision/sdlc-screening.js +1157 -0
  86. package/dist/src/decision/sensitivity/comparative.js +154 -0
  87. package/dist/src/decision/sensitivity/contract.js +218 -0
  88. package/dist/src/decision/sensitivity/index.js +5 -0
  89. package/dist/src/decision/sensitivity/runtime.js +912 -0
  90. package/dist/src/decision/sensitivity/types.js +2 -0
  91. package/dist/src/decision/validate.js +26 -0
  92. package/dist/src/extensions/commands/definitions.js +38 -0
  93. package/dist/src/extensions/manifest.js +44 -0
  94. package/dist/src/gates/discovery.js +315 -0
  95. package/dist/src/gates/driver.js +388 -0
  96. package/dist/src/gates/evaluate.js +719 -0
  97. package/dist/src/gates/floors.js +255 -0
  98. package/dist/src/gates/index.js +17 -0
  99. package/dist/src/gates/providers/evidence.js +38 -0
  100. package/dist/src/gates/providers/index.js +21 -0
  101. package/dist/src/gates/providers/isolated-child-source.js +446 -0
  102. package/dist/src/gates/providers/loader.js +1069 -0
  103. package/dist/src/gates/providers/paired.js +52 -0
  104. package/dist/src/gates/providers/proportion.js +60 -0
  105. package/dist/src/gates/providers/registry.js +40 -0
  106. package/dist/src/gates/providers/scalar.js +41 -0
  107. package/dist/src/gates/providers/screening.js +53 -0
  108. package/dist/src/gates/providers/types.js +25 -0
  109. package/dist/src/gates/registry.js +1003 -0
  110. package/dist/src/gates/report.js +102 -0
  111. package/dist/src/gates/schema.js +56 -0
  112. package/dist/src/gates/stats/binomial.js +26 -0
  113. package/dist/src/gates/stats/bootstrap.js +62 -0
  114. package/dist/src/gates/stats/clopper-pearson.js +95 -0
  115. package/dist/src/gates/stats/digest.js +26 -0
  116. package/dist/src/gates/stats/error.js +5 -0
  117. package/dist/src/gates/stats/index.js +9 -0
  118. package/dist/src/gates/stats/normal.js +35 -0
  119. package/dist/src/gates/stats/paired.js +120 -0
  120. package/dist/src/gates/stats/splits.js +30 -0
  121. package/dist/src/gates/types.js +8 -0
  122. package/dist/src/governance/redaction.js +14 -4
  123. package/dist/src/mcp/muse-native-config.mjs +123 -0
  124. package/dist/src/mcp/tools/decision.mjs +188 -0
  125. package/dist/src/mcp/tools/subsystems.mjs +2 -0
  126. package/dist/src/providers/capability-matrix.yaml +2 -1
  127. package/dist/src/providers/provider-definitions.js +2 -1
  128. package/dist/src/sessions/adapters/muse.js +336 -39
  129. package/dist/src/sessions/batch-import.js +7 -0
  130. package/dist/src/sessions/workspace-discovery.js +13 -2
  131. package/package.json +1 -1
  132. package/schemas/decision/ConformalFrozenOpenData.v2.schema.json +371 -0
  133. package/schemas/decision/ConformalOpenDataReport.v2.schema.json +421 -0
  134. package/schemas/decision/ConformalPreregistration.v2.schema.json +529 -0
  135. package/schemas/decision/ContextPruningCandidate.v1.schema.json +47 -0
  136. package/schemas/decision/ContextPruningEvaluationReport.v1.schema.json +758 -0
  137. package/schemas/decision/ContextPruningPreregistration.v1.schema.json +175 -0
  138. package/schemas/decision/ContextPruningReceipt.v1.schema.json +72 -0
  139. package/schemas/decision/D17Multifact.v1.schema.json +1851 -0
  140. package/schemas/decision/D17StudyAnalysis.v1.schema.json +42 -0
  141. package/schemas/decision/D17StudyAnalysis.v2.schema.json +51 -0
  142. package/schemas/decision/D17StudyCalibration.v1.schema.json +819 -0
  143. package/schemas/decision/D17StudyDryRun.v1.schema.json +169 -0
  144. package/schemas/decision/D17StudyDryRun.v2.schema.json +239 -0
  145. package/schemas/decision/D17StudyGold.v1.schema.json +108 -0
  146. package/schemas/decision/D17StudyGuide.v1.schema.json +63 -0
  147. package/schemas/decision/D17StudyNativeTemplates.v1.schema.json +619 -0
  148. package/schemas/decision/D17StudyProtocol.v1.schema.json +241 -0
  149. package/schemas/decision/D17StudyReport.v1.schema.json +902 -0
  150. package/schemas/decision/D17StudyReport.v2.schema.json +1319 -0
  151. package/schemas/decision/D17StudyReview.v1.schema.json +175 -0
  152. package/schemas/decision/D17StudySplits.v1.schema.json +217 -0
  153. package/schemas/decision/D29Study.v1.schema.json +1903 -0
  154. package/schemas/decision/D29Study.v2.schema.json +1344 -0
  155. package/schemas/decision/D29Study.v3.schema.json +609 -0
  156. package/schemas/decision/D29Study.v4.schema.json +1133 -0
  157. package/schemas/decision/D29Study.v6.schema.json +1205 -0
  158. package/schemas/decision/D29Study.v7.schema.json +1471 -0
  159. package/schemas/decision/D29Study.v8.schema.json +671 -0
  160. package/schemas/decision/D29Study.v9.schema.json +778 -0
  161. package/schemas/decision/DecisionComparativeReplayAuditSample.v1.schema.json +137 -0
  162. package/schemas/decision/DecisionComparativeReplayCorpus.v1.schema.json +258 -0
  163. package/schemas/decision/DecisionComparativeReplayFreeze.v1.schema.json +74 -0
  164. package/schemas/decision/DecisionComparativeReplayGold.v1.schema.json +50 -0
  165. package/schemas/decision/DecisionComparativeReplayGoldAsset.v1.schema.json +37 -0
  166. package/schemas/decision/DecisionComparativeReplayIntegrity.v1.schema.json +81 -0
  167. package/schemas/decision/DecisionComparativeReplayMembers.v1.schema.json +52 -0
  168. package/schemas/decision/DecisionComparativeReplayPreregistration.v1.schema.json +113 -0
  169. package/schemas/decision/DecisionComparativeReplayReport.v1.schema.json +407 -0
  170. package/schemas/decision/DecisionComparativeReplayReviewPackets.v1.schema.json +260 -0
  171. package/schemas/decision/DecisionComparativeReplaySplit.v1.schema.json +84 -0
  172. package/schemas/decision/DecisionFeatureObservation.v1.schema.json +564 -0
  173. package/schemas/decision/DecisionFeatureSet.v1.schema.json +155 -0
  174. package/schemas/decision/DecisionInteropMapping.v1.schema.json +85 -0
  175. package/schemas/decision/DecisionIssueTriageEvaluationManifest.v1.schema.json +174 -0
  176. package/schemas/decision/DecisionIssueTriageEvaluationReport.v1.schema.json +280 -0
  177. package/schemas/decision/DecisionIssueTriagePilotPack.v1.schema.json +114 -0
  178. package/schemas/decision/DecisionRouteReceipt.v1.schema.json +155 -0
  179. package/schemas/decision/DecisionRoutingPolicy.v1.schema.json +132 -0
  180. package/schemas/decision/DecisionRoutingShadowReport.v1.schema.json +170 -0
  181. package/schemas/decision/DecisionRoutingTask.v1.schema.json +49 -0
  182. package/schemas/decision/DecisionRuleset.schema.json +8 -2
  183. package/schemas/decision/DecisionRuleset.v1alpha2.schema.json +8 -2
  184. package/schemas/decision/DecisionSensitivityPlan.v1.schema.json +191 -0
  185. package/schemas/decision/DecisionSensitivityReport.v1.schema.json +163 -0
  186. package/schemas/decision/HeldoutApproval.v1.schema.json +312 -0
  187. package/schemas/decision/HeldoutAttempt.v1.schema.json +211 -0
  188. package/schemas/decision/HeldoutBaseline.v1.schema.json +90 -0
  189. package/schemas/decision/HeldoutCalibrationPhase.v1.schema.json +87 -0
  190. package/schemas/decision/HeldoutCorpus.v1.schema.json +167 -0
  191. package/schemas/decision/HeldoutEvent.v1.schema.json +41 -0
  192. package/schemas/decision/HeldoutFrozen.v1.schema.json +142 -0
  193. package/schemas/decision/HeldoutPreregistration.v1.schema.json +222 -0
  194. package/schemas/decision/HeldoutSpendEvent.v1.schema.json +122 -0
  195. package/schemas/decision/HeldoutSpendHead.v1.schema.json +25 -0
  196. package/schemas/decision/HeldoutSpendHead.v2.schema.json +46 -0
  197. package/schemas/decision/HeldoutSummary.v1.schema.json +101 -0
  198. package/schemas/decision/OpaDecisionLogExport.v1.schema.json +65 -0
  199. package/schemas/decision/PreprocessedEvidence.v1.schema.json +306 -0
  200. package/schemas/decision/RulesetResult.v1alpha2.schema.json +175 -0
  201. package/schemas/decision/SdlcEvidenceScreening.v1.schema.json +499 -0
  202. package/schemas/decision/SdlcScreeningPreregistration.v1.schema.json +132 -0
  203. package/schemas/decision/SdlcScreeningPreregistration.v2.schema.json +138 -0
  204. package/schemas/decision/SdlcScreeningRelease.v1.schema.json +654 -0
  205. package/schemas/decision/SdlcScreeningRelease.v2.schema.json +654 -0
  206. package/tools/agents/deploy-agents.mjs +1 -1
  207. package/tools/agents/providers/base.mjs +26 -7
  208. package/tools/agents/providers/factory.mjs +10 -2
  209. package/tools/agents/providers/muse-hooks.mjs +1 -29
  210. package/tools/agents/providers/muse.mjs +6 -3
@@ -0,0 +1,1903 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://aiwg.io/schemas/decision/D29Study.v1.schema.json",
4
+ "title": "D29Study",
5
+ "oneOf": [
6
+ {
7
+ "$ref": "#/$defs/analysis"
8
+ },
9
+ {
10
+ "$ref": "#/$defs/gold"
11
+ },
12
+ {
13
+ "$ref": "#/$defs/review"
14
+ },
15
+ {
16
+ "$ref": "#/$defs/readiness"
17
+ },
18
+ {
19
+ "$ref": "#/$defs/access"
20
+ },
21
+ {
22
+ "$ref": "#/$defs/score"
23
+ },
24
+ {
25
+ "$ref": "#/$defs/calibrationReview"
26
+ }
27
+ ],
28
+ "$defs": {
29
+ "analysis": {
30
+ "type": "object",
31
+ "additionalProperties": false,
32
+ "required": [
33
+ "schemaVersion",
34
+ "syntheticOnly",
35
+ "splits",
36
+ "native",
37
+ "external",
38
+ "calibration",
39
+ "review",
40
+ "missingPolicy",
41
+ "conditionalRates"
42
+ ],
43
+ "properties": {
44
+ "schemaVersion": {
45
+ "const": "decision-d29-analysis/v1"
46
+ },
47
+ "syntheticOnly": {
48
+ "const": true
49
+ },
50
+ "splits": {
51
+ "type": "array",
52
+ "items": {
53
+ "type": "object",
54
+ "additionalProperties": false,
55
+ "required": [
56
+ "name",
57
+ "ids",
58
+ "digest"
59
+ ],
60
+ "properties": {
61
+ "name": {
62
+ "enum": [
63
+ "tuning",
64
+ "calibration",
65
+ "test"
66
+ ]
67
+ },
68
+ "ids": {
69
+ "type": "array",
70
+ "items": {
71
+ "type": "string",
72
+ "minLength": 1
73
+ },
74
+ "minItems": 1,
75
+ "uniqueItems": true
76
+ },
77
+ "digest": {
78
+ "type": "string",
79
+ "pattern": "^sha256:[a-f0-9]{64}$"
80
+ }
81
+ }
82
+ },
83
+ "minItems": 3,
84
+ "maxItems": 3
85
+ },
86
+ "native": {
87
+ "$ref": "https://aiwg.io/schemas/decision/SdlcScreeningPreregistration.v1.schema.json"
88
+ },
89
+ "external": {
90
+ "type": "object",
91
+ "additionalProperties": false,
92
+ "required": [
93
+ "minimumAcceptedCoverageLowerBps",
94
+ "maximumBlockingSliceFalseReadyEvents",
95
+ "maximumBlockingSliceFalseReadyUpperBps"
96
+ ],
97
+ "properties": {
98
+ "minimumAcceptedCoverageLowerBps": {
99
+ "type": "integer",
100
+ "minimum": 0,
101
+ "maximum": 10000
102
+ },
103
+ "maximumBlockingSliceFalseReadyEvents": {
104
+ "type": "integer",
105
+ "minimum": 0
106
+ },
107
+ "maximumBlockingSliceFalseReadyUpperBps": {
108
+ "type": "integer",
109
+ "minimum": 0,
110
+ "maximum": 10000
111
+ }
112
+ }
113
+ },
114
+ "calibration": {
115
+ "type": "object",
116
+ "additionalProperties": false,
117
+ "required": [
118
+ "method",
119
+ "minimumCellN",
120
+ "smoothing",
121
+ "split",
122
+ "profile"
123
+ ],
124
+ "properties": {
125
+ "method": {
126
+ "const": "kind-and-semantic-ready-frequency-v1"
127
+ },
128
+ "minimumCellN": {
129
+ "type": "integer",
130
+ "minimum": 1
131
+ },
132
+ "smoothing": {
133
+ "const": "laplace-1"
134
+ },
135
+ "split": {
136
+ "const": "calibration"
137
+ },
138
+ "profile": {
139
+ "$ref": "https://aiwg.io/schemas/decision/CalibrationArtifact.v1.schema.json#/properties/profile"
140
+ }
141
+ }
142
+ },
143
+ "review": {
144
+ "type": "object",
145
+ "additionalProperties": false,
146
+ "required": [
147
+ "development",
148
+ "holdout",
149
+ "delayedRepeats",
150
+ "reviewer"
151
+ ],
152
+ "properties": {
153
+ "development": {
154
+ "const": 40
155
+ },
156
+ "holdout": {
157
+ "const": 80
158
+ },
159
+ "delayedRepeats": {
160
+ "const": 12
161
+ },
162
+ "reviewer": {
163
+ "const": "roctinam"
164
+ }
165
+ }
166
+ },
167
+ "missingPolicy": {
168
+ "const": "withhold-native-report; complete-case-description; missing-as-error"
169
+ },
170
+ "conditionalRates": {
171
+ "type": "array",
172
+ "items": {
173
+ "type": "string",
174
+ "minLength": 1
175
+ },
176
+ "minItems": 4,
177
+ "maxItems": 4,
178
+ "uniqueItems": true
179
+ }
180
+ }
181
+ },
182
+ "gold": {
183
+ "type": "object",
184
+ "additionalProperties": false,
185
+ "required": [
186
+ "schemaVersion",
187
+ "syntheticOnly",
188
+ "rows"
189
+ ],
190
+ "properties": {
191
+ "schemaVersion": {
192
+ "const": "decision-d29-gold/v1"
193
+ },
194
+ "syntheticOnly": {
195
+ "const": true
196
+ },
197
+ "rows": {
198
+ "type": "array",
199
+ "items": {
200
+ "type": "object",
201
+ "additionalProperties": false,
202
+ "required": [
203
+ "id",
204
+ "world",
205
+ "gold"
206
+ ],
207
+ "properties": {
208
+ "id": {
209
+ "type": "string",
210
+ "minLength": 1
211
+ },
212
+ "world": {
213
+ "type": "object",
214
+ "additionalProperties": false,
215
+ "required": [
216
+ "kind",
217
+ "sourceAttribute",
218
+ "claimAttribute",
219
+ "sourceValue",
220
+ "claimValue",
221
+ "uncertain",
222
+ "injected",
223
+ "artifactPresent",
224
+ "testPassed",
225
+ "required",
226
+ "covered"
227
+ ],
228
+ "properties": {
229
+ "kind": {
230
+ "enum": [
231
+ "citation",
232
+ "phase-criterion"
233
+ ]
234
+ },
235
+ "sourceAttribute": {
236
+ "type": "string",
237
+ "minLength": 1
238
+ },
239
+ "claimAttribute": {
240
+ "type": "string",
241
+ "minLength": 1
242
+ },
243
+ "sourceValue": {
244
+ "type": "integer",
245
+ "minimum": 0
246
+ },
247
+ "claimValue": {
248
+ "type": "integer",
249
+ "minimum": 0
250
+ },
251
+ "uncertain": {
252
+ "type": "boolean"
253
+ },
254
+ "injected": {
255
+ "type": "boolean"
256
+ },
257
+ "artifactPresent": {
258
+ "type": "boolean"
259
+ },
260
+ "testPassed": {
261
+ "type": "boolean"
262
+ },
263
+ "required": {
264
+ "type": "string",
265
+ "minLength": 1
266
+ },
267
+ "covered": {
268
+ "type": "array",
269
+ "items": {
270
+ "type": "string",
271
+ "minLength": 1
272
+ }
273
+ }
274
+ }
275
+ },
276
+ "gold": {
277
+ "type": "object",
278
+ "additionalProperties": false,
279
+ "required": [
280
+ "ready",
281
+ "support"
282
+ ],
283
+ "properties": {
284
+ "ready": {
285
+ "type": "boolean"
286
+ },
287
+ "support": {
288
+ "enum": [
289
+ "supports",
290
+ "contradicts",
291
+ "unclear",
292
+ "does-not-support",
293
+ null
294
+ ]
295
+ }
296
+ }
297
+ }
298
+ }
299
+ },
300
+ "minItems": 1600,
301
+ "maxItems": 1600
302
+ }
303
+ }
304
+ },
305
+ "review": {
306
+ "type": "object",
307
+ "additionalProperties": false,
308
+ "required": [
309
+ "schemaVersion",
310
+ "reviewer",
311
+ "corpusDigest",
312
+ "assessments",
313
+ "preregistrationReview",
314
+ "finalDispositionReview"
315
+ ],
316
+ "properties": {
317
+ "schemaVersion": {
318
+ "const": "decision-d29-review/v1"
319
+ },
320
+ "reviewer": {
321
+ "const": "roctinam"
322
+ },
323
+ "corpusDigest": {
324
+ "type": "string",
325
+ "pattern": "^sha256:[a-f0-9]{64}$"
326
+ },
327
+ "assessments": {
328
+ "type": "array",
329
+ "items": {
330
+ "type": "object",
331
+ "additionalProperties": false,
332
+ "required": [
333
+ "assessmentId",
334
+ "phase",
335
+ "id",
336
+ "goldCorrect",
337
+ "goldRationale",
338
+ "blindReviewedAt",
339
+ "agreed",
340
+ "overridden",
341
+ "rationale",
342
+ "unblindedAt"
343
+ ],
344
+ "properties": {
345
+ "assessmentId": {
346
+ "type": "string",
347
+ "minLength": 1
348
+ },
349
+ "phase": {
350
+ "enum": [
351
+ "development",
352
+ "holdout",
353
+ "delayed-repeat"
354
+ ]
355
+ },
356
+ "id": {
357
+ "type": "string",
358
+ "minLength": 1
359
+ },
360
+ "goldCorrect": {
361
+ "anyOf": [
362
+ {
363
+ "type": "boolean"
364
+ },
365
+ {
366
+ "type": "null"
367
+ }
368
+ ]
369
+ },
370
+ "goldRationale": {
371
+ "anyOf": [
372
+ {
373
+ "type": "string",
374
+ "minLength": 1
375
+ },
376
+ {
377
+ "type": "null"
378
+ }
379
+ ]
380
+ },
381
+ "blindReviewedAt": {
382
+ "anyOf": [
383
+ {
384
+ "type": "string",
385
+ "format": "date-time"
386
+ },
387
+ {
388
+ "type": "null"
389
+ }
390
+ ]
391
+ },
392
+ "agreed": {
393
+ "anyOf": [
394
+ {
395
+ "type": "boolean"
396
+ },
397
+ {
398
+ "type": "null"
399
+ }
400
+ ]
401
+ },
402
+ "overridden": {
403
+ "anyOf": [
404
+ {
405
+ "type": "boolean"
406
+ },
407
+ {
408
+ "type": "null"
409
+ }
410
+ ]
411
+ },
412
+ "rationale": {
413
+ "anyOf": [
414
+ {
415
+ "type": "string",
416
+ "minLength": 1
417
+ },
418
+ {
419
+ "type": "null"
420
+ }
421
+ ]
422
+ },
423
+ "unblindedAt": {
424
+ "anyOf": [
425
+ {
426
+ "type": "string",
427
+ "format": "date-time"
428
+ },
429
+ {
430
+ "type": "null"
431
+ }
432
+ ]
433
+ }
434
+ }
435
+ },
436
+ "minItems": 132,
437
+ "maxItems": 132
438
+ },
439
+ "preregistrationReview": {
440
+ "anyOf": [
441
+ {
442
+ "type": "string",
443
+ "minLength": 1
444
+ },
445
+ {
446
+ "type": "null"
447
+ }
448
+ ]
449
+ },
450
+ "finalDispositionReview": {
451
+ "anyOf": [
452
+ {
453
+ "type": "string",
454
+ "minLength": 1
455
+ },
456
+ {
457
+ "type": "null"
458
+ }
459
+ ]
460
+ }
461
+ }
462
+ },
463
+ "readiness": {
464
+ "type": "object",
465
+ "additionalProperties": false,
466
+ "required": [
467
+ "schemaVersion",
468
+ "model",
469
+ "method",
470
+ "splitDigest",
471
+ "definitionDigest",
472
+ "evidenceDigest",
473
+ "cells"
474
+ ],
475
+ "properties": {
476
+ "schemaVersion": {
477
+ "const": "decision-d29-readiness/v1"
478
+ },
479
+ "model": {
480
+ "const": "jev-1.13.0"
481
+ },
482
+ "method": {
483
+ "const": "kind-and-semantic-ready-frequency-v1"
484
+ },
485
+ "splitDigest": {
486
+ "type": "string",
487
+ "pattern": "^sha256:[a-f0-9]{64}$"
488
+ },
489
+ "definitionDigest": {
490
+ "type": "string",
491
+ "pattern": "^sha256:[a-f0-9]{64}$"
492
+ },
493
+ "evidenceDigest": {
494
+ "type": "string",
495
+ "pattern": "^sha256:[a-f0-9]{64}$"
496
+ },
497
+ "cells": {
498
+ "type": "object",
499
+ "additionalProperties": false,
500
+ "required": [
501
+ "citation:true",
502
+ "citation:false",
503
+ "phase-criterion:true",
504
+ "phase-criterion:false"
505
+ ],
506
+ "properties": {
507
+ "citation:true": {
508
+ "type": "object",
509
+ "additionalProperties": false,
510
+ "required": [
511
+ "n",
512
+ "ready",
513
+ "probability"
514
+ ],
515
+ "properties": {
516
+ "n": {
517
+ "type": "integer",
518
+ "minimum": 0
519
+ },
520
+ "ready": {
521
+ "type": "integer",
522
+ "minimum": 0
523
+ },
524
+ "probability": {
525
+ "type": "number",
526
+ "minimum": 0,
527
+ "maximum": 1
528
+ }
529
+ }
530
+ },
531
+ "citation:false": {
532
+ "type": "object",
533
+ "additionalProperties": false,
534
+ "required": [
535
+ "n",
536
+ "ready",
537
+ "probability"
538
+ ],
539
+ "properties": {
540
+ "n": {
541
+ "type": "integer",
542
+ "minimum": 0
543
+ },
544
+ "ready": {
545
+ "type": "integer",
546
+ "minimum": 0
547
+ },
548
+ "probability": {
549
+ "type": "number",
550
+ "minimum": 0,
551
+ "maximum": 1
552
+ }
553
+ }
554
+ },
555
+ "phase-criterion:true": {
556
+ "type": "object",
557
+ "additionalProperties": false,
558
+ "required": [
559
+ "n",
560
+ "ready",
561
+ "probability"
562
+ ],
563
+ "properties": {
564
+ "n": {
565
+ "type": "integer",
566
+ "minimum": 0
567
+ },
568
+ "ready": {
569
+ "type": "integer",
570
+ "minimum": 0
571
+ },
572
+ "probability": {
573
+ "type": "number",
574
+ "minimum": 0,
575
+ "maximum": 1
576
+ }
577
+ }
578
+ },
579
+ "phase-criterion:false": {
580
+ "type": "object",
581
+ "additionalProperties": false,
582
+ "required": [
583
+ "n",
584
+ "ready",
585
+ "probability"
586
+ ],
587
+ "properties": {
588
+ "n": {
589
+ "type": "integer",
590
+ "minimum": 0
591
+ },
592
+ "ready": {
593
+ "type": "integer",
594
+ "minimum": 0
595
+ },
596
+ "probability": {
597
+ "type": "number",
598
+ "minimum": 0,
599
+ "maximum": 1
600
+ }
601
+ }
602
+ }
603
+ }
604
+ }
605
+ }
606
+ },
607
+ "access": {
608
+ "type": "object",
609
+ "additionalProperties": false,
610
+ "required": [
611
+ "schemaVersion",
612
+ "analysisDigest",
613
+ "anchoredAt",
614
+ "firstTestAccessAt",
615
+ "reference"
616
+ ],
617
+ "properties": {
618
+ "schemaVersion": {
619
+ "const": "decision-d29-access/v1"
620
+ },
621
+ "analysisDigest": {
622
+ "type": "string",
623
+ "pattern": "^sha256:[a-f0-9]{64}$"
624
+ },
625
+ "anchoredAt": {
626
+ "type": "string",
627
+ "format": "date-time"
628
+ },
629
+ "firstTestAccessAt": {
630
+ "type": "string",
631
+ "format": "date-time"
632
+ },
633
+ "reference": {
634
+ "type": "string",
635
+ "minLength": 1
636
+ }
637
+ }
638
+ },
639
+ "external": {
640
+ "oneOf": [
641
+ {
642
+ "type": "object",
643
+ "additionalProperties": false,
644
+ "required": [
645
+ "decision",
646
+ "reasons",
647
+ "coverage",
648
+ "blocking",
649
+ "confusion",
650
+ "readinessConfusion",
651
+ "classes",
652
+ "conditional"
653
+ ],
654
+ "properties": {
655
+ "decision": {
656
+ "enum": [
657
+ "pass",
658
+ "HOLD"
659
+ ]
660
+ },
661
+ "reasons": {
662
+ "type": "array",
663
+ "items": {
664
+ "type": "string",
665
+ "minLength": 1
666
+ }
667
+ },
668
+ "coverage": {
669
+ "type": "object",
670
+ "additionalProperties": false,
671
+ "required": [
672
+ "events",
673
+ "n",
674
+ "rateBps",
675
+ "lowerBps",
676
+ "upperBps"
677
+ ],
678
+ "properties": {
679
+ "events": {
680
+ "type": "integer",
681
+ "minimum": 0
682
+ },
683
+ "n": {
684
+ "type": "integer",
685
+ "minimum": 0
686
+ },
687
+ "rateBps": {
688
+ "anyOf": [
689
+ {
690
+ "type": "integer",
691
+ "minimum": 0
692
+ },
693
+ {
694
+ "type": "null"
695
+ }
696
+ ]
697
+ },
698
+ "lowerBps": {
699
+ "anyOf": [
700
+ {
701
+ "type": "integer",
702
+ "minimum": 0
703
+ },
704
+ {
705
+ "type": "null"
706
+ }
707
+ ]
708
+ },
709
+ "upperBps": {
710
+ "anyOf": [
711
+ {
712
+ "type": "integer",
713
+ "minimum": 0
714
+ },
715
+ {
716
+ "type": "null"
717
+ }
718
+ ]
719
+ }
720
+ }
721
+ },
722
+ "blocking": {
723
+ "type": "object",
724
+ "additionalProperties": {
725
+ "type": "object",
726
+ "additionalProperties": false,
727
+ "required": [
728
+ "events",
729
+ "n",
730
+ "rateBps",
731
+ "lowerBps",
732
+ "upperBps"
733
+ ],
734
+ "properties": {
735
+ "events": {
736
+ "type": "integer",
737
+ "minimum": 0
738
+ },
739
+ "n": {
740
+ "type": "integer",
741
+ "minimum": 0
742
+ },
743
+ "rateBps": {
744
+ "anyOf": [
745
+ {
746
+ "type": "integer",
747
+ "minimum": 0
748
+ },
749
+ {
750
+ "type": "null"
751
+ }
752
+ ]
753
+ },
754
+ "lowerBps": {
755
+ "anyOf": [
756
+ {
757
+ "type": "integer",
758
+ "minimum": 0
759
+ },
760
+ {
761
+ "type": "null"
762
+ }
763
+ ]
764
+ },
765
+ "upperBps": {
766
+ "anyOf": [
767
+ {
768
+ "type": "integer",
769
+ "minimum": 0
770
+ },
771
+ {
772
+ "type": "null"
773
+ }
774
+ ]
775
+ }
776
+ }
777
+ }
778
+ },
779
+ "confusion": {
780
+ "type": "object",
781
+ "additionalProperties": false,
782
+ "required": [
783
+ "supports",
784
+ "contradicts",
785
+ "unclear",
786
+ "does-not-support"
787
+ ],
788
+ "properties": {
789
+ "supports": {
790
+ "type": "object",
791
+ "additionalProperties": false,
792
+ "required": [
793
+ "supports",
794
+ "contradicts",
795
+ "unclear",
796
+ "does-not-support"
797
+ ],
798
+ "properties": {
799
+ "supports": {
800
+ "type": "integer",
801
+ "minimum": 0
802
+ },
803
+ "contradicts": {
804
+ "type": "integer",
805
+ "minimum": 0
806
+ },
807
+ "unclear": {
808
+ "type": "integer",
809
+ "minimum": 0
810
+ },
811
+ "does-not-support": {
812
+ "type": "integer",
813
+ "minimum": 0
814
+ }
815
+ }
816
+ },
817
+ "contradicts": {
818
+ "type": "object",
819
+ "additionalProperties": false,
820
+ "required": [
821
+ "supports",
822
+ "contradicts",
823
+ "unclear",
824
+ "does-not-support"
825
+ ],
826
+ "properties": {
827
+ "supports": {
828
+ "type": "integer",
829
+ "minimum": 0
830
+ },
831
+ "contradicts": {
832
+ "type": "integer",
833
+ "minimum": 0
834
+ },
835
+ "unclear": {
836
+ "type": "integer",
837
+ "minimum": 0
838
+ },
839
+ "does-not-support": {
840
+ "type": "integer",
841
+ "minimum": 0
842
+ }
843
+ }
844
+ },
845
+ "unclear": {
846
+ "type": "object",
847
+ "additionalProperties": false,
848
+ "required": [
849
+ "supports",
850
+ "contradicts",
851
+ "unclear",
852
+ "does-not-support"
853
+ ],
854
+ "properties": {
855
+ "supports": {
856
+ "type": "integer",
857
+ "minimum": 0
858
+ },
859
+ "contradicts": {
860
+ "type": "integer",
861
+ "minimum": 0
862
+ },
863
+ "unclear": {
864
+ "type": "integer",
865
+ "minimum": 0
866
+ },
867
+ "does-not-support": {
868
+ "type": "integer",
869
+ "minimum": 0
870
+ }
871
+ }
872
+ },
873
+ "does-not-support": {
874
+ "type": "object",
875
+ "additionalProperties": false,
876
+ "required": [
877
+ "supports",
878
+ "contradicts",
879
+ "unclear",
880
+ "does-not-support"
881
+ ],
882
+ "properties": {
883
+ "supports": {
884
+ "type": "integer",
885
+ "minimum": 0
886
+ },
887
+ "contradicts": {
888
+ "type": "integer",
889
+ "minimum": 0
890
+ },
891
+ "unclear": {
892
+ "type": "integer",
893
+ "minimum": 0
894
+ },
895
+ "does-not-support": {
896
+ "type": "integer",
897
+ "minimum": 0
898
+ }
899
+ }
900
+ }
901
+ }
902
+ },
903
+ "readinessConfusion": {
904
+ "type": "object",
905
+ "additionalProperties": false,
906
+ "required": [
907
+ "trueReady",
908
+ "falseReady",
909
+ "trueNonReady",
910
+ "falseNonReady"
911
+ ],
912
+ "properties": {
913
+ "trueReady": {
914
+ "type": "integer",
915
+ "minimum": 0
916
+ },
917
+ "falseReady": {
918
+ "type": "integer",
919
+ "minimum": 0
920
+ },
921
+ "trueNonReady": {
922
+ "type": "integer",
923
+ "minimum": 0
924
+ },
925
+ "falseNonReady": {
926
+ "type": "integer",
927
+ "minimum": 0
928
+ }
929
+ }
930
+ },
931
+ "classes": {
932
+ "type": "object",
933
+ "additionalProperties": false,
934
+ "required": [
935
+ "supports",
936
+ "contradicts",
937
+ "unclear",
938
+ "does-not-support"
939
+ ],
940
+ "properties": {
941
+ "supports": {
942
+ "type": "object",
943
+ "additionalProperties": false,
944
+ "required": [
945
+ "n",
946
+ "precisionBps",
947
+ "recallBps"
948
+ ],
949
+ "properties": {
950
+ "n": {
951
+ "type": "integer",
952
+ "minimum": 0
953
+ },
954
+ "precisionBps": {
955
+ "anyOf": [
956
+ {
957
+ "type": "integer",
958
+ "minimum": 0
959
+ },
960
+ {
961
+ "type": "null"
962
+ }
963
+ ]
964
+ },
965
+ "recallBps": {
966
+ "anyOf": [
967
+ {
968
+ "type": "integer",
969
+ "minimum": 0
970
+ },
971
+ {
972
+ "type": "null"
973
+ }
974
+ ]
975
+ }
976
+ }
977
+ },
978
+ "contradicts": {
979
+ "type": "object",
980
+ "additionalProperties": false,
981
+ "required": [
982
+ "n",
983
+ "precisionBps",
984
+ "recallBps"
985
+ ],
986
+ "properties": {
987
+ "n": {
988
+ "type": "integer",
989
+ "minimum": 0
990
+ },
991
+ "precisionBps": {
992
+ "anyOf": [
993
+ {
994
+ "type": "integer",
995
+ "minimum": 0
996
+ },
997
+ {
998
+ "type": "null"
999
+ }
1000
+ ]
1001
+ },
1002
+ "recallBps": {
1003
+ "anyOf": [
1004
+ {
1005
+ "type": "integer",
1006
+ "minimum": 0
1007
+ },
1008
+ {
1009
+ "type": "null"
1010
+ }
1011
+ ]
1012
+ }
1013
+ }
1014
+ },
1015
+ "unclear": {
1016
+ "type": "object",
1017
+ "additionalProperties": false,
1018
+ "required": [
1019
+ "n",
1020
+ "precisionBps",
1021
+ "recallBps"
1022
+ ],
1023
+ "properties": {
1024
+ "n": {
1025
+ "type": "integer",
1026
+ "minimum": 0
1027
+ },
1028
+ "precisionBps": {
1029
+ "anyOf": [
1030
+ {
1031
+ "type": "integer",
1032
+ "minimum": 0
1033
+ },
1034
+ {
1035
+ "type": "null"
1036
+ }
1037
+ ]
1038
+ },
1039
+ "recallBps": {
1040
+ "anyOf": [
1041
+ {
1042
+ "type": "integer",
1043
+ "minimum": 0
1044
+ },
1045
+ {
1046
+ "type": "null"
1047
+ }
1048
+ ]
1049
+ }
1050
+ }
1051
+ },
1052
+ "does-not-support": {
1053
+ "type": "object",
1054
+ "additionalProperties": false,
1055
+ "required": [
1056
+ "n",
1057
+ "precisionBps",
1058
+ "recallBps"
1059
+ ],
1060
+ "properties": {
1061
+ "n": {
1062
+ "type": "integer",
1063
+ "minimum": 0
1064
+ },
1065
+ "precisionBps": {
1066
+ "anyOf": [
1067
+ {
1068
+ "type": "integer",
1069
+ "minimum": 0
1070
+ },
1071
+ {
1072
+ "type": "null"
1073
+ }
1074
+ ]
1075
+ },
1076
+ "recallBps": {
1077
+ "anyOf": [
1078
+ {
1079
+ "type": "integer",
1080
+ "minimum": 0
1081
+ },
1082
+ {
1083
+ "type": "null"
1084
+ }
1085
+ ]
1086
+ }
1087
+ }
1088
+ }
1089
+ }
1090
+ },
1091
+ "conditional": {
1092
+ "type": "object",
1093
+ "additionalProperties": false,
1094
+ "required": [
1095
+ "falseSupportAmongNonSupport",
1096
+ "falseSupportAmongAcceptedSupport",
1097
+ "falseReadyAmongNonReady",
1098
+ "falseReadyAmongAcceptedReady"
1099
+ ],
1100
+ "properties": {
1101
+ "falseSupportAmongNonSupport": {
1102
+ "type": "object",
1103
+ "additionalProperties": false,
1104
+ "required": [
1105
+ "events",
1106
+ "n",
1107
+ "rateBps",
1108
+ "lowerBps",
1109
+ "upperBps"
1110
+ ],
1111
+ "properties": {
1112
+ "events": {
1113
+ "type": "integer",
1114
+ "minimum": 0
1115
+ },
1116
+ "n": {
1117
+ "type": "integer",
1118
+ "minimum": 0
1119
+ },
1120
+ "rateBps": {
1121
+ "anyOf": [
1122
+ {
1123
+ "type": "integer",
1124
+ "minimum": 0
1125
+ },
1126
+ {
1127
+ "type": "null"
1128
+ }
1129
+ ]
1130
+ },
1131
+ "lowerBps": {
1132
+ "anyOf": [
1133
+ {
1134
+ "type": "integer",
1135
+ "minimum": 0
1136
+ },
1137
+ {
1138
+ "type": "null"
1139
+ }
1140
+ ]
1141
+ },
1142
+ "upperBps": {
1143
+ "anyOf": [
1144
+ {
1145
+ "type": "integer",
1146
+ "minimum": 0
1147
+ },
1148
+ {
1149
+ "type": "null"
1150
+ }
1151
+ ]
1152
+ }
1153
+ }
1154
+ },
1155
+ "falseSupportAmongAcceptedSupport": {
1156
+ "type": "object",
1157
+ "additionalProperties": false,
1158
+ "required": [
1159
+ "events",
1160
+ "n",
1161
+ "rateBps",
1162
+ "lowerBps",
1163
+ "upperBps"
1164
+ ],
1165
+ "properties": {
1166
+ "events": {
1167
+ "type": "integer",
1168
+ "minimum": 0
1169
+ },
1170
+ "n": {
1171
+ "type": "integer",
1172
+ "minimum": 0
1173
+ },
1174
+ "rateBps": {
1175
+ "anyOf": [
1176
+ {
1177
+ "type": "integer",
1178
+ "minimum": 0
1179
+ },
1180
+ {
1181
+ "type": "null"
1182
+ }
1183
+ ]
1184
+ },
1185
+ "lowerBps": {
1186
+ "anyOf": [
1187
+ {
1188
+ "type": "integer",
1189
+ "minimum": 0
1190
+ },
1191
+ {
1192
+ "type": "null"
1193
+ }
1194
+ ]
1195
+ },
1196
+ "upperBps": {
1197
+ "anyOf": [
1198
+ {
1199
+ "type": "integer",
1200
+ "minimum": 0
1201
+ },
1202
+ {
1203
+ "type": "null"
1204
+ }
1205
+ ]
1206
+ }
1207
+ }
1208
+ },
1209
+ "falseReadyAmongNonReady": {
1210
+ "type": "object",
1211
+ "additionalProperties": false,
1212
+ "required": [
1213
+ "events",
1214
+ "n",
1215
+ "rateBps",
1216
+ "lowerBps",
1217
+ "upperBps"
1218
+ ],
1219
+ "properties": {
1220
+ "events": {
1221
+ "type": "integer",
1222
+ "minimum": 0
1223
+ },
1224
+ "n": {
1225
+ "type": "integer",
1226
+ "minimum": 0
1227
+ },
1228
+ "rateBps": {
1229
+ "anyOf": [
1230
+ {
1231
+ "type": "integer",
1232
+ "minimum": 0
1233
+ },
1234
+ {
1235
+ "type": "null"
1236
+ }
1237
+ ]
1238
+ },
1239
+ "lowerBps": {
1240
+ "anyOf": [
1241
+ {
1242
+ "type": "integer",
1243
+ "minimum": 0
1244
+ },
1245
+ {
1246
+ "type": "null"
1247
+ }
1248
+ ]
1249
+ },
1250
+ "upperBps": {
1251
+ "anyOf": [
1252
+ {
1253
+ "type": "integer",
1254
+ "minimum": 0
1255
+ },
1256
+ {
1257
+ "type": "null"
1258
+ }
1259
+ ]
1260
+ }
1261
+ }
1262
+ },
1263
+ "falseReadyAmongAcceptedReady": {
1264
+ "type": "object",
1265
+ "additionalProperties": false,
1266
+ "required": [
1267
+ "events",
1268
+ "n",
1269
+ "rateBps",
1270
+ "lowerBps",
1271
+ "upperBps"
1272
+ ],
1273
+ "properties": {
1274
+ "events": {
1275
+ "type": "integer",
1276
+ "minimum": 0
1277
+ },
1278
+ "n": {
1279
+ "type": "integer",
1280
+ "minimum": 0
1281
+ },
1282
+ "rateBps": {
1283
+ "anyOf": [
1284
+ {
1285
+ "type": "integer",
1286
+ "minimum": 0
1287
+ },
1288
+ {
1289
+ "type": "null"
1290
+ }
1291
+ ]
1292
+ },
1293
+ "lowerBps": {
1294
+ "anyOf": [
1295
+ {
1296
+ "type": "integer",
1297
+ "minimum": 0
1298
+ },
1299
+ {
1300
+ "type": "null"
1301
+ }
1302
+ ]
1303
+ },
1304
+ "upperBps": {
1305
+ "anyOf": [
1306
+ {
1307
+ "type": "integer",
1308
+ "minimum": 0
1309
+ },
1310
+ {
1311
+ "type": "null"
1312
+ }
1313
+ ]
1314
+ }
1315
+ }
1316
+ }
1317
+ }
1318
+ }
1319
+ }
1320
+ },
1321
+ {
1322
+ "type": "object",
1323
+ "additionalProperties": false,
1324
+ "required": [
1325
+ "decision",
1326
+ "reasons"
1327
+ ],
1328
+ "properties": {
1329
+ "decision": {
1330
+ "const": "HOLD"
1331
+ },
1332
+ "reasons": {
1333
+ "type": "array",
1334
+ "items": {
1335
+ "type": "string",
1336
+ "minLength": 1
1337
+ }
1338
+ }
1339
+ }
1340
+ }
1341
+ ]
1342
+ },
1343
+ "score": {
1344
+ "oneOf": [
1345
+ {
1346
+ "type": "object",
1347
+ "additionalProperties": false,
1348
+ "required": [
1349
+ "schemaVersion",
1350
+ "decision",
1351
+ "native",
1352
+ "external",
1353
+ "heldout",
1354
+ "provenance",
1355
+ "reviewerN",
1356
+ "missingInputs",
1357
+ "completeCase",
1358
+ "failureAsError",
1359
+ "proposedStatisticalDisposition",
1360
+ "limitations"
1361
+ ],
1362
+ "properties": {
1363
+ "schemaVersion": {
1364
+ "const": "decision-d29-score/v1"
1365
+ },
1366
+ "decision": {
1367
+ "enum": [
1368
+ "HOLD",
1369
+ "ROLLBACK"
1370
+ ]
1371
+ },
1372
+ "native": {
1373
+ "$ref": "https://aiwg.io/schemas/decision/SdlcScreeningRelease.v1.schema.json"
1374
+ },
1375
+ "external": {
1376
+ "$ref": "#/$defs/external"
1377
+ },
1378
+ "heldout": {
1379
+ "anyOf": [
1380
+ {
1381
+ "type": "object",
1382
+ "additionalProperties": false,
1383
+ "required": [
1384
+ "schemaVersion",
1385
+ "evaluatedAt",
1386
+ "splits",
1387
+ "samples"
1388
+ ],
1389
+ "properties": {
1390
+ "schemaVersion": {
1391
+ "const": "decision-sdlc-screening-heldout-records/v1"
1392
+ },
1393
+ "evaluatedAt": {
1394
+ "type": "string",
1395
+ "format": "date-time"
1396
+ },
1397
+ "splits": {
1398
+ "type": "array",
1399
+ "items": {
1400
+ "type": "object",
1401
+ "additionalProperties": false,
1402
+ "required": [
1403
+ "name",
1404
+ "ids",
1405
+ "digest"
1406
+ ],
1407
+ "properties": {
1408
+ "name": {
1409
+ "enum": [
1410
+ "tuning",
1411
+ "calibration",
1412
+ "test"
1413
+ ]
1414
+ },
1415
+ "ids": {
1416
+ "type": "array",
1417
+ "items": {
1418
+ "type": "string",
1419
+ "minLength": 1
1420
+ },
1421
+ "minItems": 1,
1422
+ "uniqueItems": true
1423
+ },
1424
+ "digest": {
1425
+ "type": "string",
1426
+ "pattern": "^sha256:[a-f0-9]{64}$"
1427
+ }
1428
+ }
1429
+ },
1430
+ "minItems": 3,
1431
+ "maxItems": 3
1432
+ },
1433
+ "samples": {
1434
+ "type": "array",
1435
+ "items": {
1436
+ "type": "object",
1437
+ "additionalProperties": false,
1438
+ "required": [
1439
+ "id",
1440
+ "kind",
1441
+ "slice",
1442
+ "gold",
1443
+ "candidate",
1444
+ "baseline",
1445
+ "reviewer"
1446
+ ],
1447
+ "properties": {
1448
+ "id": {
1449
+ "type": "string",
1450
+ "minLength": 1
1451
+ },
1452
+ "kind": {
1453
+ "enum": [
1454
+ "citation",
1455
+ "phase-criterion"
1456
+ ]
1457
+ },
1458
+ "slice": {
1459
+ "type": "string",
1460
+ "minLength": 1
1461
+ },
1462
+ "gold": {
1463
+ "type": "object",
1464
+ "additionalProperties": false,
1465
+ "required": [
1466
+ "ready",
1467
+ "support"
1468
+ ],
1469
+ "properties": {
1470
+ "ready": {
1471
+ "type": "boolean"
1472
+ },
1473
+ "support": {
1474
+ "enum": [
1475
+ "supports",
1476
+ "contradicts",
1477
+ "unclear",
1478
+ "does-not-support",
1479
+ null
1480
+ ]
1481
+ }
1482
+ }
1483
+ },
1484
+ "candidate": {
1485
+ "type": "object",
1486
+ "additionalProperties": false,
1487
+ "required": [
1488
+ "route",
1489
+ "support",
1490
+ "readyProbability",
1491
+ "latencyMs",
1492
+ "inputTokens",
1493
+ "outputTokens",
1494
+ "costUsd",
1495
+ "calls",
1496
+ "retries",
1497
+ "fallbacks"
1498
+ ],
1499
+ "properties": {
1500
+ "route": {
1501
+ "enum": [
1502
+ "ADVISORY_READY",
1503
+ "REVIEW",
1504
+ "FAIL",
1505
+ "INSUFFICIENT_EVIDENCE"
1506
+ ]
1507
+ },
1508
+ "support": {
1509
+ "enum": [
1510
+ "supports",
1511
+ "contradicts",
1512
+ "unclear",
1513
+ "does-not-support",
1514
+ null
1515
+ ]
1516
+ },
1517
+ "readyProbability": {
1518
+ "type": "number",
1519
+ "minimum": 0,
1520
+ "maximum": 1
1521
+ },
1522
+ "latencyMs": {
1523
+ "type": "number",
1524
+ "minimum": 0
1525
+ },
1526
+ "inputTokens": {
1527
+ "anyOf": [
1528
+ {
1529
+ "type": "integer",
1530
+ "minimum": 0
1531
+ },
1532
+ {
1533
+ "type": "null"
1534
+ }
1535
+ ]
1536
+ },
1537
+ "outputTokens": {
1538
+ "anyOf": [
1539
+ {
1540
+ "type": "integer",
1541
+ "minimum": 0
1542
+ },
1543
+ {
1544
+ "type": "null"
1545
+ }
1546
+ ]
1547
+ },
1548
+ "costUsd": {
1549
+ "anyOf": [
1550
+ {
1551
+ "type": "number",
1552
+ "minimum": 0
1553
+ },
1554
+ {
1555
+ "type": "null"
1556
+ }
1557
+ ]
1558
+ },
1559
+ "calls": {
1560
+ "type": "integer",
1561
+ "minimum": 0
1562
+ },
1563
+ "retries": {
1564
+ "type": "integer",
1565
+ "minimum": 0
1566
+ },
1567
+ "fallbacks": {
1568
+ "type": "integer",
1569
+ "minimum": 0
1570
+ }
1571
+ }
1572
+ },
1573
+ "baseline": {
1574
+ "type": "object",
1575
+ "additionalProperties": false,
1576
+ "required": [
1577
+ "correct",
1578
+ "costUsd"
1579
+ ],
1580
+ "properties": {
1581
+ "correct": {
1582
+ "type": "boolean"
1583
+ },
1584
+ "costUsd": {
1585
+ "anyOf": [
1586
+ {
1587
+ "type": "number",
1588
+ "minimum": 0
1589
+ },
1590
+ {
1591
+ "type": "null"
1592
+ }
1593
+ ]
1594
+ }
1595
+ }
1596
+ },
1597
+ "reviewer": {
1598
+ "anyOf": [
1599
+ {
1600
+ "type": "object",
1601
+ "additionalProperties": false,
1602
+ "required": [
1603
+ "agreed",
1604
+ "overridden"
1605
+ ],
1606
+ "properties": {
1607
+ "agreed": {
1608
+ "type": "boolean"
1609
+ },
1610
+ "overridden": {
1611
+ "type": "boolean"
1612
+ }
1613
+ }
1614
+ },
1615
+ {
1616
+ "type": "null"
1617
+ }
1618
+ ]
1619
+ }
1620
+ }
1621
+ }
1622
+ }
1623
+ }
1624
+ },
1625
+ {
1626
+ "type": "null"
1627
+ }
1628
+ ]
1629
+ },
1630
+ "provenance": {
1631
+ "type": "array",
1632
+ "items": {
1633
+ "type": "object",
1634
+ "additionalProperties": false,
1635
+ "required": [
1636
+ "id",
1637
+ "receiptDigest",
1638
+ "attempts",
1639
+ "mappingDigest",
1640
+ "baseline",
1641
+ "baselineDigest",
1642
+ "reservationUsdMicros"
1643
+ ],
1644
+ "properties": {
1645
+ "id": {
1646
+ "type": "string",
1647
+ "minLength": 1
1648
+ },
1649
+ "receiptDigest": {
1650
+ "type": "string",
1651
+ "pattern": "^sha256:[a-f0-9]{64}$"
1652
+ },
1653
+ "attempts": {
1654
+ "type": "array",
1655
+ "items": {
1656
+ "type": "string",
1657
+ "pattern": "^sha256:[a-f0-9]{64}$"
1658
+ }
1659
+ },
1660
+ "mappingDigest": {
1661
+ "type": "string",
1662
+ "pattern": "^sha256:[a-f0-9]{64}$"
1663
+ },
1664
+ "baseline": {
1665
+ "type": "object",
1666
+ "additionalProperties": false,
1667
+ "required": [
1668
+ "route",
1669
+ "support"
1670
+ ],
1671
+ "properties": {
1672
+ "route": {
1673
+ "enum": [
1674
+ "ADVISORY_READY",
1675
+ "REVIEW"
1676
+ ]
1677
+ },
1678
+ "support": {
1679
+ "enum": [
1680
+ "supports",
1681
+ "contradicts",
1682
+ "unclear",
1683
+ "does-not-support",
1684
+ null
1685
+ ]
1686
+ }
1687
+ }
1688
+ },
1689
+ "baselineDigest": {
1690
+ "type": "string",
1691
+ "pattern": "^sha256:[a-f0-9]{64}$"
1692
+ },
1693
+ "reservationUsdMicros": {
1694
+ "type": "integer",
1695
+ "minimum": 0
1696
+ }
1697
+ }
1698
+ }
1699
+ },
1700
+ "reviewerN": {
1701
+ "type": "integer",
1702
+ "minimum": 0
1703
+ },
1704
+ "missingInputs": {
1705
+ "type": "array",
1706
+ "items": {
1707
+ "type": "string",
1708
+ "minLength": 1
1709
+ }
1710
+ },
1711
+ "completeCase": {
1712
+ "type": "object",
1713
+ "additionalProperties": false,
1714
+ "required": [
1715
+ "n",
1716
+ "correct",
1717
+ "external"
1718
+ ],
1719
+ "properties": {
1720
+ "n": {
1721
+ "type": "integer",
1722
+ "minimum": 0
1723
+ },
1724
+ "correct": {
1725
+ "type": "integer",
1726
+ "minimum": 0
1727
+ },
1728
+ "external": {
1729
+ "$ref": "#/$defs/external"
1730
+ }
1731
+ }
1732
+ },
1733
+ "failureAsError": {
1734
+ "type": "object",
1735
+ "additionalProperties": false,
1736
+ "required": [
1737
+ "counts",
1738
+ "interval",
1739
+ "missingCandidateErrors",
1740
+ "denominator",
1741
+ "promotable"
1742
+ ],
1743
+ "properties": {
1744
+ "counts": {
1745
+ "type": "object",
1746
+ "additionalProperties": false,
1747
+ "required": [
1748
+ "both",
1749
+ "candidateOnly",
1750
+ "baselineOnly",
1751
+ "neither"
1752
+ ],
1753
+ "properties": {
1754
+ "both": {
1755
+ "type": "integer",
1756
+ "minimum": 0
1757
+ },
1758
+ "candidateOnly": {
1759
+ "type": "integer",
1760
+ "minimum": 0
1761
+ },
1762
+ "baselineOnly": {
1763
+ "type": "integer",
1764
+ "minimum": 0
1765
+ },
1766
+ "neither": {
1767
+ "type": "integer",
1768
+ "minimum": 0
1769
+ }
1770
+ }
1771
+ },
1772
+ "interval": {
1773
+ "type": "object",
1774
+ "additionalProperties": false,
1775
+ "required": [
1776
+ "lowerBps",
1777
+ "upperBps",
1778
+ "estimateBps",
1779
+ "n",
1780
+ "method"
1781
+ ],
1782
+ "properties": {
1783
+ "lowerBps": {
1784
+ "type": "integer",
1785
+ "minimum": -10000,
1786
+ "maximum": 10000
1787
+ },
1788
+ "upperBps": {
1789
+ "type": "integer",
1790
+ "minimum": -10000,
1791
+ "maximum": 10000
1792
+ },
1793
+ "estimateBps": {
1794
+ "type": "integer",
1795
+ "minimum": -10000,
1796
+ "maximum": 10000
1797
+ },
1798
+ "n": {
1799
+ "type": "integer",
1800
+ "minimum": 0
1801
+ },
1802
+ "method": {
1803
+ "const": "newcombe-hybrid-score"
1804
+ }
1805
+ }
1806
+ },
1807
+ "missingCandidateErrors": {
1808
+ "type": "integer",
1809
+ "minimum": 0
1810
+ },
1811
+ "denominator": {
1812
+ "const": 1200
1813
+ },
1814
+ "promotable": {
1815
+ "const": false
1816
+ }
1817
+ }
1818
+ },
1819
+ "proposedStatisticalDisposition": {
1820
+ "enum": [
1821
+ "pass",
1822
+ "HOLD"
1823
+ ]
1824
+ },
1825
+ "limitations": {
1826
+ "type": "array",
1827
+ "items": {
1828
+ "type": "string",
1829
+ "minLength": 1
1830
+ }
1831
+ }
1832
+ }
1833
+ },
1834
+ {
1835
+ "type": "object",
1836
+ "additionalProperties": false,
1837
+ "required": [
1838
+ "schemaVersion",
1839
+ "decision",
1840
+ "native",
1841
+ "missingInputs"
1842
+ ],
1843
+ "properties": {
1844
+ "schemaVersion": {
1845
+ "const": "decision-d29-score/v1"
1846
+ },
1847
+ "decision": {
1848
+ "enum": [
1849
+ "HOLD",
1850
+ "ROLLBACK"
1851
+ ]
1852
+ },
1853
+ "native": {
1854
+ "type": "null"
1855
+ },
1856
+ "missingInputs": {
1857
+ "type": "array",
1858
+ "items": {
1859
+ "type": "string",
1860
+ "minLength": 1
1861
+ }
1862
+ }
1863
+ }
1864
+ }
1865
+ ]
1866
+ },
1867
+ "calibrationReview": {
1868
+ "type": "object",
1869
+ "additionalProperties": false,
1870
+ "required": [
1871
+ "schemaVersion",
1872
+ "approved",
1873
+ "reviewer",
1874
+ "calibrationArtifactDigest",
1875
+ "approvalReference",
1876
+ "reviewedAt"
1877
+ ],
1878
+ "properties": {
1879
+ "schemaVersion": {
1880
+ "const": "decision-d29-calibration-review/v1"
1881
+ },
1882
+ "approved": {
1883
+ "const": true
1884
+ },
1885
+ "reviewer": {
1886
+ "const": "roctinam"
1887
+ },
1888
+ "calibrationArtifactDigest": {
1889
+ "type": "string",
1890
+ "pattern": "^sha256:[0-9a-f]{64}$"
1891
+ },
1892
+ "approvalReference": {
1893
+ "type": "string",
1894
+ "minLength": 1
1895
+ },
1896
+ "reviewedAt": {
1897
+ "type": "string",
1898
+ "format": "date-time"
1899
+ }
1900
+ }
1901
+ }
1902
+ }
1903
+ }