@bjoernrochel/sevro 1.0.0 → 1.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.
Files changed (403) hide show
  1. package/CONTRIBUTING.md +34 -4
  2. package/README.md +7 -6
  3. package/dist/examples/basic/graded.json +13 -0
  4. package/dist/examples/basic/host.js +9 -0
  5. package/dist/examples/basic/host.js.map +1 -0
  6. package/dist/examples/basic/prompt-only.json +7 -0
  7. package/dist/examples/recipes/candidate.js +23 -0
  8. package/dist/examples/recipes/candidate.js.map +1 -0
  9. package/dist/examples/recipes/cases/coding-change.json +21 -0
  10. package/dist/examples/recipes/cases/host-tools.json +21 -0
  11. package/dist/examples/recipes/cases/mise.json +21 -0
  12. package/dist/examples/recipes/cases/node.json +21 -0
  13. package/dist/examples/recipes/cases/python-uv.json +21 -0
  14. package/dist/examples/recipes/cases/semantic.json +17 -0
  15. package/dist/examples/recipes/coding-change/check.js +16 -0
  16. package/dist/examples/recipes/coding-change/check.js.map +1 -0
  17. package/dist/examples/recipes/executable.js +20 -0
  18. package/dist/examples/recipes/executable.js.map +1 -0
  19. package/dist/examples/recipes/extension-artifacts.js +56 -0
  20. package/dist/examples/recipes/extension-artifacts.js.map +1 -0
  21. package/dist/examples/recipes/extension-methods.js +167 -0
  22. package/dist/examples/recipes/extension-methods.js.map +1 -0
  23. package/dist/examples/recipes/extension.js +28 -0
  24. package/dist/examples/recipes/extension.js.map +1 -0
  25. package/dist/examples/recipes/modules.js +9 -0
  26. package/dist/examples/recipes/modules.js.map +1 -0
  27. package/dist/examples/recipes/repository-skill/.agents/skills/startup-guide/SKILL.md +7 -0
  28. package/dist/examples/recipes/repository-skill/.claude/skills/startup-guide/SKILL.md +7 -0
  29. package/dist/examples/recipes/repository-skill/README.md +3 -0
  30. package/dist/examples/recipes/run-inputs.js +144 -0
  31. package/dist/examples/recipes/run-inputs.js.map +1 -0
  32. package/dist/examples/recipes/run-options.js +103 -0
  33. package/dist/examples/recipes/run-options.js.map +1 -0
  34. package/dist/examples/recipes/run.js +62 -0
  35. package/dist/examples/recipes/run.js.map +1 -0
  36. package/dist/examples/recipes/runtime/empty.json +1 -0
  37. package/dist/examples/recipes/runtime/goals.json +1 -0
  38. package/dist/examples/recipes/runtime/mise.json +6 -0
  39. package/dist/examples/recipes/runtime/path.json +1 -0
  40. package/dist/examples/recipes/runtime/plugins.json +4 -0
  41. package/dist/examples/recipes/runtime/python-uv.json +10 -0
  42. package/dist/examples/recipes/semantic-judge.js +27 -0
  43. package/dist/examples/recipes/semantic-judge.js.map +1 -0
  44. package/dist/examples/templates/coding/adapter.js +14 -0
  45. package/dist/examples/templates/coding/adapter.js.map +1 -0
  46. package/dist/examples/templates/coding/case.json +15 -0
  47. package/dist/examples/templates/repository-skill/.agents/skills/startup-guide/SKILL.md +6 -0
  48. package/dist/examples/templates/repository-skill/extension-data.js +61 -0
  49. package/dist/examples/templates/repository-skill/extension-data.js.map +1 -0
  50. package/dist/examples/templates/repository-skill/extension.js +29 -0
  51. package/dist/examples/templates/repository-skill/extension.js.map +1 -0
  52. package/dist/examples/templates/response/adapter.js +13 -0
  53. package/dist/examples/templates/response/adapter.js.map +1 -0
  54. package/dist/examples/templates/response/case.json +13 -0
  55. package/dist/src/advisory.js +86 -0
  56. package/dist/src/advisory.js.map +1 -0
  57. package/dist/src/candidate-artifacts.js +139 -0
  58. package/dist/src/candidate-artifacts.js.map +1 -0
  59. package/dist/src/candidate-codex-state.js +110 -0
  60. package/dist/src/candidate-codex-state.js.map +1 -0
  61. package/dist/src/case-validation.js +92 -0
  62. package/dist/src/case-validation.js.map +1 -0
  63. package/dist/src/cli/cancellation.js +21 -0
  64. package/dist/src/cli/cancellation.js.map +1 -0
  65. package/dist/src/cli/command.js +60 -0
  66. package/dist/src/cli/command.js.map +1 -0
  67. package/dist/src/cli/completion.js +14 -0
  68. package/dist/src/cli/completion.js.map +1 -0
  69. package/dist/src/cli/demo.js +45 -0
  70. package/dist/src/cli/demo.js.map +1 -0
  71. package/dist/src/cli/evaluation.js +40 -0
  72. package/dist/src/cli/evaluation.js.map +1 -0
  73. package/dist/src/cli/extension.js +54 -0
  74. package/dist/src/cli/extension.js.map +1 -0
  75. package/dist/src/cli/help.js +190 -0
  76. package/dist/src/cli/help.js.map +1 -0
  77. package/dist/src/cli/hosts.js +33 -0
  78. package/dist/src/cli/hosts.js.map +1 -0
  79. package/dist/src/cli/init-settings.js +29 -0
  80. package/dist/src/cli/init-settings.js.map +1 -0
  81. package/dist/src/cli/init.js +82 -0
  82. package/dist/src/cli/init.js.map +1 -0
  83. package/dist/src/cli/invocation.js +431 -0
  84. package/dist/src/cli/invocation.js.map +1 -0
  85. package/dist/src/cli/loading.js +110 -0
  86. package/dist/src/cli/loading.js.map +1 -0
  87. package/dist/src/cli/preparation.js +88 -0
  88. package/dist/src/cli/preparation.js.map +1 -0
  89. package/dist/src/cli/presentation.js +61 -0
  90. package/dist/src/cli/presentation.js.map +1 -0
  91. package/dist/src/cli/progress.js +5 -0
  92. package/dist/src/cli/progress.js.map +1 -0
  93. package/dist/src/cli/run-manifest.js +108 -0
  94. package/dist/src/cli/run-manifest.js.map +1 -0
  95. package/dist/src/cli/run-options.js +367 -0
  96. package/dist/src/cli/run-options.js.map +1 -0
  97. package/dist/src/cli/run-overrides.js +51 -0
  98. package/dist/src/cli/run-overrides.js.map +1 -0
  99. package/dist/src/cli/settings.js +127 -0
  100. package/dist/src/cli/settings.js.map +1 -0
  101. package/dist/src/cli/summary.js +28 -0
  102. package/dist/src/cli/summary.js.map +1 -0
  103. package/dist/src/cli.js +20 -0
  104. package/dist/src/cli.js.map +1 -0
  105. package/dist/src/contract-types.js +2 -0
  106. package/dist/src/contract-types.js.map +1 -0
  107. package/dist/src/engine.js +4 -0
  108. package/dist/src/engine.js.map +1 -0
  109. package/dist/src/evaluation/advisory.js +85 -0
  110. package/dist/src/evaluation/advisory.js.map +1 -0
  111. package/dist/src/evaluation/check-plan.js +292 -0
  112. package/dist/src/evaluation/check-plan.js.map +1 -0
  113. package/dist/src/evaluation/collection.js +61 -0
  114. package/dist/src/evaluation/collection.js.map +1 -0
  115. package/dist/src/evaluation/context.js +2 -0
  116. package/dist/src/evaluation/context.js.map +1 -0
  117. package/dist/src/evaluation/grading-host.js +28 -0
  118. package/dist/src/evaluation/grading-host.js.map +1 -0
  119. package/dist/src/evaluation/grading.js +154 -0
  120. package/dist/src/evaluation/grading.js.map +1 -0
  121. package/dist/src/evaluation/invocation-plan.js +312 -0
  122. package/dist/src/evaluation/invocation-plan.js.map +1 -0
  123. package/dist/src/evaluation/plan.js +376 -0
  124. package/dist/src/evaluation/plan.js.map +1 -0
  125. package/dist/src/evaluation/progress.js +14 -0
  126. package/dist/src/evaluation/progress.js.map +1 -0
  127. package/dist/src/evaluation/resources.js +159 -0
  128. package/dist/src/evaluation/resources.js.map +1 -0
  129. package/dist/src/evaluation/run.js +148 -0
  130. package/dist/src/evaluation/run.js.map +1 -0
  131. package/dist/src/evaluation/scheduler.js +27 -0
  132. package/dist/src/evaluation/scheduler.js.map +1 -0
  133. package/dist/src/evaluation/semantic.js +183 -0
  134. package/dist/src/evaluation/semantic.js.map +1 -0
  135. package/dist/src/evaluation/trial.js +593 -0
  136. package/dist/src/evaluation/trial.js.map +1 -0
  137. package/dist/src/evaluation/types.js +20 -0
  138. package/dist/src/evaluation/types.js.map +1 -0
  139. package/dist/src/evidence/host-results.js +67 -0
  140. package/dist/src/evidence/host-results.js.map +1 -0
  141. package/dist/src/evidence/retained-artifacts.js +17 -0
  142. package/dist/src/evidence/retained-artifacts.js.map +1 -0
  143. package/dist/src/evidence/trial-writer.js +131 -0
  144. package/dist/src/evidence/trial-writer.js.map +1 -0
  145. package/dist/src/evidence/usage.js +14 -0
  146. package/dist/src/evidence/usage.js.map +1 -0
  147. package/dist/src/executable.js +20 -0
  148. package/dist/src/executable.js.map +1 -0
  149. package/dist/src/extension-client.js +212 -0
  150. package/dist/src/extension-client.js.map +1 -0
  151. package/dist/src/extension-session.js +236 -0
  152. package/dist/src/extension-session.js.map +1 -0
  153. package/dist/src/fixtures/advisory.js +206 -0
  154. package/dist/src/fixtures/advisory.js.map +1 -0
  155. package/dist/src/fixtures/bin.js +41 -0
  156. package/dist/src/fixtures/bin.js.map +1 -0
  157. package/dist/src/fixtures/cleanup.js +43 -0
  158. package/dist/src/fixtures/cleanup.js.map +1 -0
  159. package/dist/src/fixtures/create.js +94 -0
  160. package/dist/src/fixtures/create.js.map +1 -0
  161. package/dist/src/fixtures/generated.js +181 -0
  162. package/dist/src/fixtures/generated.js.map +1 -0
  163. package/dist/src/fixtures/git-hooks.js +16 -0
  164. package/dist/src/fixtures/git-hooks.js.map +1 -0
  165. package/dist/src/fixtures/preparation.js +201 -0
  166. package/dist/src/fixtures/preparation.js.map +1 -0
  167. package/dist/src/fixtures/repository.js +255 -0
  168. package/dist/src/fixtures/repository.js.map +1 -0
  169. package/dist/src/fixtures/setup.js +175 -0
  170. package/dist/src/fixtures/setup.js.map +1 -0
  171. package/dist/src/fixtures/tools.js +57 -0
  172. package/dist/src/fixtures/tools.js.map +1 -0
  173. package/dist/src/fixtures/workspace-state.js +155 -0
  174. package/dist/src/fixtures/workspace-state.js.map +1 -0
  175. package/dist/src/generated/cli-result.cjs +2 -0
  176. package/dist/src/generated/extension.cjs +2 -0
  177. package/dist/src/generated/report.cjs +2 -0
  178. package/dist/src/generated/run-evidence.cjs +2 -0
  179. package/dist/src/generated/runtime.cjs +2 -0
  180. package/dist/src/git.js +72 -0
  181. package/dist/src/git.js.map +1 -0
  182. package/dist/src/graders/artifact.js +68 -0
  183. package/dist/src/graders/artifact.js.map +1 -0
  184. package/dist/src/graders/git-head.js +112 -0
  185. package/dist/src/graders/git-head.js.map +1 -0
  186. package/dist/src/graders/output.js +345 -0
  187. package/dist/src/graders/output.js.map +1 -0
  188. package/dist/src/graders/semantic.js +132 -0
  189. package/dist/src/graders/semantic.js.map +1 -0
  190. package/dist/src/graders/shell.js +321 -0
  191. package/dist/src/graders/shell.js.map +1 -0
  192. package/dist/src/host-diagnostic-redaction.js +52 -0
  193. package/dist/src/host-diagnostic-redaction.js.map +1 -0
  194. package/dist/src/host-diagnostics.js +248 -0
  195. package/dist/src/host-diagnostics.js.map +1 -0
  196. package/dist/src/hosts/claude-continuation.js +89 -0
  197. package/dist/src/hosts/claude-continuation.js.map +1 -0
  198. package/dist/src/hosts/claude-credential.js +121 -0
  199. package/dist/src/hosts/claude-credential.js.map +1 -0
  200. package/dist/src/hosts/claude-events.js +136 -0
  201. package/dist/src/hosts/claude-events.js.map +1 -0
  202. package/dist/src/hosts/claude-keychain.js +100 -0
  203. package/dist/src/hosts/claude-keychain.js.map +1 -0
  204. package/dist/src/hosts/claude-login-recovery.js +67 -0
  205. package/dist/src/hosts/claude-login-recovery.js.map +1 -0
  206. package/dist/src/hosts/claude-login-refresh.js +146 -0
  207. package/dist/src/hosts/claude-login-refresh.js.map +1 -0
  208. package/dist/src/hosts/claude-login-store.js +124 -0
  209. package/dist/src/hosts/claude-login-store.js.map +1 -0
  210. package/dist/src/hosts/claude-login.js +74 -0
  211. package/dist/src/hosts/claude-login.js.map +1 -0
  212. package/dist/src/hosts/claude-native-goal.js +138 -0
  213. package/dist/src/hosts/claude-native-goal.js.map +1 -0
  214. package/dist/src/hosts/claude-process.js +10 -0
  215. package/dist/src/hosts/claude-process.js.map +1 -0
  216. package/dist/src/hosts/claude-refresh-lock.js +76 -0
  217. package/dist/src/hosts/claude-refresh-lock.js.map +1 -0
  218. package/dist/src/hosts/claude-repository-invocation.js +229 -0
  219. package/dist/src/hosts/claude-repository-invocation.js.map +1 -0
  220. package/dist/src/hosts/claude-settings.js +156 -0
  221. package/dist/src/hosts/claude-settings.js.map +1 -0
  222. package/dist/src/hosts/claude-skill-activations.js +131 -0
  223. package/dist/src/hosts/claude-skill-activations.js.map +1 -0
  224. package/dist/src/hosts/claude-state.js +237 -0
  225. package/dist/src/hosts/claude-state.js.map +1 -0
  226. package/dist/src/hosts/claude-tool-calls.js +150 -0
  227. package/dist/src/hosts/claude-tool-calls.js.map +1 -0
  228. package/dist/src/hosts/claude.js +373 -0
  229. package/dist/src/hosts/claude.js.map +1 -0
  230. package/dist/src/hosts/codex-app-server.js +764 -0
  231. package/dist/src/hosts/codex-app-server.js.map +1 -0
  232. package/dist/src/hosts/codex-configuration.js +91 -0
  233. package/dist/src/hosts/codex-configuration.js.map +1 -0
  234. package/dist/src/hosts/codex-events.js +104 -0
  235. package/dist/src/hosts/codex-events.js.map +1 -0
  236. package/dist/src/hosts/codex-exec-controls.js +434 -0
  237. package/dist/src/hosts/codex-exec-controls.js.map +1 -0
  238. package/dist/src/hosts/codex-invocation.js +54 -0
  239. package/dist/src/hosts/codex-invocation.js.map +1 -0
  240. package/dist/src/hosts/codex-marketplace.js +185 -0
  241. package/dist/src/hosts/codex-marketplace.js.map +1 -0
  242. package/dist/src/hosts/codex-native-calls.js +516 -0
  243. package/dist/src/hosts/codex-native-calls.js.map +1 -0
  244. package/dist/src/hosts/codex-process.js +10 -0
  245. package/dist/src/hosts/codex-process.js.map +1 -0
  246. package/dist/src/hosts/codex-profile.js +206 -0
  247. package/dist/src/hosts/codex-profile.js.map +1 -0
  248. package/dist/src/hosts/codex-session-files.js +89 -0
  249. package/dist/src/hosts/codex-session-files.js.map +1 -0
  250. package/dist/src/hosts/codex-state.js +310 -0
  251. package/dist/src/hosts/codex-state.js.map +1 -0
  252. package/dist/src/hosts/codex.js +527 -0
  253. package/dist/src/hosts/codex.js.map +1 -0
  254. package/dist/src/hosts/isolation-common.js +43 -0
  255. package/dist/src/hosts/isolation-common.js.map +1 -0
  256. package/dist/src/hosts/isolation-roots.js +64 -0
  257. package/dist/src/hosts/isolation-roots.js.map +1 -0
  258. package/dist/src/hosts/isolation.js +12 -0
  259. package/dist/src/hosts/isolation.js.map +1 -0
  260. package/dist/src/hosts/linux-sandbox.js +127 -0
  261. package/dist/src/hosts/linux-sandbox.js.map +1 -0
  262. package/dist/src/hosts/mac-sandbox.js +137 -0
  263. package/dist/src/hosts/mac-sandbox.js.map +1 -0
  264. package/dist/src/hosts/native-controls.js +151 -0
  265. package/dist/src/hosts/native-controls.js.map +1 -0
  266. package/dist/src/hosts/native-request.js +33 -0
  267. package/dist/src/hosts/native-request.js.map +1 -0
  268. package/dist/src/hosts/process-lifecycle.js +167 -0
  269. package/dist/src/hosts/process-lifecycle.js.map +1 -0
  270. package/dist/src/hosts/protected-worktrees.js +81 -0
  271. package/dist/src/hosts/protected-worktrees.js.map +1 -0
  272. package/dist/src/hosts/skill-hook-catalog.js +100 -0
  273. package/dist/src/hosts/skill-hook-catalog.js.map +1 -0
  274. package/dist/src/hosts/skill-hook-handler.js +228 -0
  275. package/dist/src/hosts/skill-hook-handler.js.map +1 -0
  276. package/dist/src/hosts/skill-hooks.js +423 -0
  277. package/dist/src/hosts/skill-hooks.js.map +1 -0
  278. package/dist/src/hosts/workspace-fingerprint.js +72 -0
  279. package/dist/src/hosts/workspace-fingerprint.js.map +1 -0
  280. package/dist/src/identity.js +167 -0
  281. package/dist/src/identity.js.map +1 -0
  282. package/dist/src/instrumentation.js +83 -0
  283. package/dist/src/instrumentation.js.map +1 -0
  284. package/dist/src/native-transcript-state.js +85 -0
  285. package/dist/src/native-transcript-state.js.map +1 -0
  286. package/dist/src/native-transcript-view.js +65 -0
  287. package/dist/src/native-transcript-view.js.map +1 -0
  288. package/dist/src/native-transcripts.js +208 -0
  289. package/dist/src/native-transcripts.js.map +1 -0
  290. package/dist/src/paths.js +13 -0
  291. package/dist/src/paths.js.map +1 -0
  292. package/dist/src/process-lifecycle.js +101 -0
  293. package/dist/src/process-lifecycle.js.map +1 -0
  294. package/dist/src/provenance.js +263 -0
  295. package/dist/src/provenance.js.map +1 -0
  296. package/dist/src/prune.js +228 -0
  297. package/dist/src/prune.js.map +1 -0
  298. package/dist/src/report.js +276 -0
  299. package/dist/src/report.js.map +1 -0
  300. package/dist/src/resolved-case.js +29 -0
  301. package/dist/src/resolved-case.js.map +1 -0
  302. package/dist/src/results-lock.js +40 -0
  303. package/dist/src/results-lock.js.map +1 -0
  304. package/dist/src/results.js +127 -0
  305. package/dist/src/results.js.map +1 -0
  306. package/dist/src/run-owner.js +283 -0
  307. package/dist/src/run-owner.js.map +1 -0
  308. package/dist/src/runner-paths.js +11 -0
  309. package/dist/src/runner-paths.js.map +1 -0
  310. package/dist/src/runtime/config.js +323 -0
  311. package/dist/src/runtime/config.js.map +1 -0
  312. package/dist/src/runtime/discovery-apple.js +65 -0
  313. package/dist/src/runtime/discovery-apple.js.map +1 -0
  314. package/dist/src/runtime/discovery-providers.js +37 -0
  315. package/dist/src/runtime/discovery-providers.js.map +1 -0
  316. package/dist/src/runtime/discovery.js +40 -0
  317. package/dist/src/runtime/discovery.js.map +1 -0
  318. package/dist/src/runtime/hook-processes.js +81 -0
  319. package/dist/src/runtime/hook-processes.js.map +1 -0
  320. package/dist/src/runtime/hooks.js +304 -0
  321. package/dist/src/runtime/hooks.js.map +1 -0
  322. package/dist/src/runtime/paths.js +244 -0
  323. package/dist/src/runtime/paths.js.map +1 -0
  324. package/dist/src/runtime/query.js +76 -0
  325. package/dist/src/runtime/query.js.map +1 -0
  326. package/dist/src/runtime/seeds.js +98 -0
  327. package/dist/src/runtime/seeds.js.map +1 -0
  328. package/dist/src/runtime/shared-cache.js +81 -0
  329. package/dist/src/runtime/shared-cache.js.map +1 -0
  330. package/dist/src/runtime/state.js +106 -0
  331. package/dist/src/runtime/state.js.map +1 -0
  332. package/dist/src/runtime-process.js +148 -0
  333. package/dist/src/runtime-process.js.map +1 -0
  334. package/dist/src/schema-types.js +2 -0
  335. package/dist/src/schema-types.js.map +1 -0
  336. package/dist/src/schema.js +16 -0
  337. package/dist/src/schema.js.map +1 -0
  338. package/dist/src/shell.js +5 -0
  339. package/dist/src/shell.js.map +1 -0
  340. package/dist/src/sqlite-lock.js +18 -0
  341. package/dist/src/sqlite-lock.js.map +1 -0
  342. package/dist/src/storage.js +21 -0
  343. package/dist/src/storage.js.map +1 -0
  344. package/dist/src/transcript-retention.js +109 -0
  345. package/dist/src/transcript-retention.js.map +1 -0
  346. package/dist/src/value-guards.js +26 -0
  347. package/dist/src/value-guards.js.map +1 -0
  348. package/docs/architecture.md +5 -2
  349. package/docs/creating-cases.md +2 -3
  350. package/docs/development-cli.md +12 -7
  351. package/docs/documentation-quality.md +4 -3
  352. package/docs/evaluation-workflow.md +8 -8
  353. package/docs/getting-started.md +7 -6
  354. package/docs/guide-evaluation.md +1 -1
  355. package/docs/identity-v1.md +4 -1
  356. package/docs/installing.md +31 -13
  357. package/docs/licensing.md +2 -2
  358. package/docs/native-hosts.md +1 -1
  359. package/docs/recipes.md +41 -40
  360. package/docs/releases.md +20 -4
  361. package/docs/run-settings-v1.md +3 -3
  362. package/docs/specs/repository-guide.md +1 -1
  363. package/docs/troubleshooting.md +1 -1
  364. package/docs/typescript-quality.md +18 -1
  365. package/examples/recipes/executable.ts +19 -0
  366. package/examples/recipes/extension-artifacts.ts +1 -1
  367. package/examples/recipes/extension.ts +2 -1
  368. package/examples/recipes/modules.ts +9 -0
  369. package/examples/recipes/run-inputs.ts +14 -19
  370. package/examples/recipes/run-options.ts +9 -8
  371. package/examples/recipes/run.ts +21 -7
  372. package/examples/templates/repository-skill/extension-data.ts +1 -1
  373. package/examples/templates/repository-skill/extension.ts +2 -1
  374. package/package.json +14 -6
  375. package/src/cli/demo.ts +3 -2
  376. package/src/cli/help.ts +4 -3
  377. package/src/cli/init-settings.ts +5 -4
  378. package/src/cli/init.ts +9 -8
  379. package/src/cli/invocation.ts +2 -1
  380. package/src/cli/preparation.ts +2 -2
  381. package/src/cli.ts +1 -1
  382. package/src/executable.ts +19 -0
  383. package/src/extension-client.ts +6 -12
  384. package/src/fixtures/setup.ts +3 -2
  385. package/src/git.ts +2 -1
  386. package/src/graders/git-head.ts +3 -2
  387. package/src/graders/shell.ts +4 -3
  388. package/src/hosts/claude-keychain.ts +3 -2
  389. package/src/hosts/claude-login-refresh.ts +3 -2
  390. package/src/hosts/claude-refresh-lock.ts +2 -1
  391. package/src/hosts/isolation-roots.ts +3 -2
  392. package/src/hosts/process-lifecycle.ts +4 -6
  393. package/src/hosts/protected-worktrees.ts +2 -1
  394. package/src/hosts/skill-hook-handler.ts +1 -1
  395. package/src/hosts/skill-hooks.ts +10 -2
  396. package/src/provenance.ts +7 -6
  397. package/src/results-lock.ts +4 -4
  398. package/src/run-owner.ts +15 -9
  399. package/src/runner-paths.ts +21 -0
  400. package/src/runtime/hook-processes.ts +2 -1
  401. package/src/runtime/hooks.ts +9 -7
  402. package/src/runtime-process.ts +194 -0
  403. package/src/sqlite-lock.ts +25 -0
@@ -0,0 +1,2 @@
1
+ // Generated by bun run schemas:generate; do not edit.
2
+ "use strict";module.exports = validate35;module.exports.default = validate35;const schema90 = {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"urn:sevro:schema:report:v1","title":"Sevro report v1","type":"object","required":["format","inputs","rows","summary"],"properties":{"format":{"const":"sevro.report.v1"},"inputs":{"type":"array","minItems":1,"items":{"$ref":"#/$defs/input"}},"rows":{"type":"array","items":{"$ref":"#/$defs/row"}},"summary":{"type":"object","required":["cases","passed","failed","notAssessed"],"properties":{"cases":{"type":"integer","minimum":0},"passed":{"type":"integer","minimum":0},"failed":{"type":"integer","minimum":0},"notAssessed":{"type":"integer","minimum":0}},"additionalProperties":false}},"additionalProperties":false,"$defs":{"path":{"type":"string","minLength":1},"digest":{"type":"string","pattern":"^[a-f0-9]{64}$"},"state":{"enum":["completed","failed","cancelled","not_run","error","unavailable","not_requested"]},"verdict":{"enum":["passed","failed","not_assessed"]},"input":{"type":"object","required":["resultFile","execution","grading","task","exitCode","caseCount"],"properties":{"resultFile":{"$ref":"#/$defs/path"},"execution":{"enum":["completed","failed","cancelled","not_run"]},"grading":{"enum":["completed","error","unavailable","not_requested"]},"task":{"$ref":"#/$defs/verdict"},"exitCode":{"enum":[0,1,2,3,4,64,70,130,143]},"caseCount":{"type":"integer","minimum":0}},"additionalProperties":false},"route":{"type":"object","required":["host","model","effort"],"properties":{"host":{"type":"string","minLength":1},"model":{"type":"string","minLength":1},"effort":{"type":"string","minLength":1}},"additionalProperties":false},"outcome":{"type":"object","required":["trial","id","status"],"properties":{"trial":{"type":"integer","minimum":1},"id":{"type":"string","minLength":1},"status":{"enum":["passed","failed","unavailable"]}},"additionalProperties":false},"row":{"type":"object","required":["resultFile","evidencePath","runId","caseId","execution","grading","task","exitCode","trialCount","taskPassRate","candidateDurationMs","inputTokens","outputTokens","costUsd","runnerBuildDigest","evaluationDigest","requestedCondition","actualCondition","candidateRoute","routes","domainOutcomes"],"properties":{"nativeTranscripts":{"type":"object","required":["retained","pruned"],"properties":{"retained":{"type":"integer","minimum":0},"pruned":{"type":"integer","minimum":0}},"additionalProperties":false},"resultFile":{"$ref":"#/$defs/path"},"evidencePath":{"type":["string","null"]},"runId":{"type":["string","null"]},"caseId":{"type":"string","minLength":1},"execution":{"$ref":"#/$defs/state"},"grading":{"$ref":"#/$defs/state"},"task":{"$ref":"#/$defs/verdict"},"exitCode":{"enum":[0,1,2,3,4,64,70,130,143]},"trialCount":{"type":"integer","minimum":0},"taskPassRate":{"type":["number","null"],"minimum":0,"maximum":1},"candidateDurationMs":{"type":["number","null"],"minimum":0},"inputTokens":{"type":["integer","null"],"minimum":0},"outputTokens":{"type":["integer","null"],"minimum":0},"costUsd":{"type":["number","null"],"minimum":0},"runnerBuildDigest":{"oneOf":[{"$ref":"#/$defs/digest"},{"type":"null"}]},"evaluationDigest":{"oneOf":[{"$ref":"#/$defs/digest"},{"type":"null"}]},"requestedCondition":{"enum":["passive","enforced",null]},"actualCondition":{"enum":["passive","enforced","unknown",null]},"candidateRoute":{"oneOf":[{"$ref":"#/$defs/route"},{"type":"null"}]},"routes":{"type":"array","items":{"type":"object","required":["role","host","model","effort"],"properties":{"role":{"enum":["candidate","semantic","advisory"]},"host":{"type":"string","minLength":1},"model":{"type":"string","minLength":1},"effort":{"type":"string","minLength":1}},"additionalProperties":false}},"domainOutcomes":{"type":"array","items":{"$ref":"#/$defs/outcome"}}},"additionalProperties":false}}};const schema91 = {"type":"object","required":["resultFile","execution","grading","task","exitCode","caseCount"],"properties":{"resultFile":{"$ref":"#/$defs/path"},"execution":{"enum":["completed","failed","cancelled","not_run"]},"grading":{"enum":["completed","error","unavailable","not_requested"]},"task":{"$ref":"#/$defs/verdict"},"exitCode":{"enum":[0,1,2,3,4,64,70,130,143]},"caseCount":{"type":"integer","minimum":0}},"additionalProperties":false};const schema92 = {"type":"string","minLength":1};const schema93 = {"enum":["passed","failed","not_assessed"]};const func2 = require("ajv/dist/runtime/ucs2length").default;function validate36(data, {instancePath="", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate36.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(errors === 0){if(data && typeof data == "object" && !Array.isArray(data)){let missing0;if(((((((data.resultFile === undefined) && (missing0 = "resultFile")) || ((data.execution === undefined) && (missing0 = "execution"))) || ((data.grading === undefined) && (missing0 = "grading"))) || ((data.task === undefined) && (missing0 = "task"))) || ((data.exitCode === undefined) && (missing0 = "exitCode"))) || ((data.caseCount === undefined) && (missing0 = "caseCount"))){validate36.errors = [{instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: missing0},message:"must have required property '"+missing0+"'"}];return false;}else {const _errs1 = errors;for(const key0 in data){if(!((((((key0 === "resultFile") || (key0 === "execution")) || (key0 === "grading")) || (key0 === "task")) || (key0 === "exitCode")) || (key0 === "caseCount"))){validate36.errors = [{instancePath,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key0},message:"must NOT have additional properties"}];return false;break;}}if(_errs1 === errors){if(data.resultFile !== undefined){let data0 = data.resultFile;const _errs2 = errors;const _errs3 = errors;if(errors === _errs3){if(typeof data0 === "string"){if(func2(data0) < 1){validate36.errors = [{instancePath:instancePath+"/resultFile",schemaPath:"#/$defs/path/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters"}];return false;}}else {validate36.errors = [{instancePath:instancePath+"/resultFile",schemaPath:"#/$defs/path/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid0 = _errs2 === errors;}else {var valid0 = true;}if(valid0){if(data.execution !== undefined){let data1 = data.execution;const _errs5 = errors;if(!((((data1 === "completed") || (data1 === "failed")) || (data1 === "cancelled")) || (data1 === "not_run"))){validate36.errors = [{instancePath:instancePath+"/execution",schemaPath:"#/properties/execution/enum",keyword:"enum",params:{allowedValues: schema91.properties.execution.enum},message:"must be equal to one of the allowed values"}];return false;}var valid0 = _errs5 === errors;}else {var valid0 = true;}if(valid0){if(data.grading !== undefined){let data2 = data.grading;const _errs6 = errors;if(!((((data2 === "completed") || (data2 === "error")) || (data2 === "unavailable")) || (data2 === "not_requested"))){validate36.errors = [{instancePath:instancePath+"/grading",schemaPath:"#/properties/grading/enum",keyword:"enum",params:{allowedValues: schema91.properties.grading.enum},message:"must be equal to one of the allowed values"}];return false;}var valid0 = _errs6 === errors;}else {var valid0 = true;}if(valid0){if(data.task !== undefined){let data3 = data.task;const _errs7 = errors;if(!(((data3 === "passed") || (data3 === "failed")) || (data3 === "not_assessed"))){validate36.errors = [{instancePath:instancePath+"/task",schemaPath:"#/$defs/verdict/enum",keyword:"enum",params:{allowedValues: schema93.enum},message:"must be equal to one of the allowed values"}];return false;}var valid0 = _errs7 === errors;}else {var valid0 = true;}if(valid0){if(data.exitCode !== undefined){let data4 = data.exitCode;const _errs9 = errors;if(!(((((((((data4 === 0) || (data4 === 1)) || (data4 === 2)) || (data4 === 3)) || (data4 === 4)) || (data4 === 64)) || (data4 === 70)) || (data4 === 130)) || (data4 === 143))){validate36.errors = [{instancePath:instancePath+"/exitCode",schemaPath:"#/properties/exitCode/enum",keyword:"enum",params:{allowedValues: schema91.properties.exitCode.enum},message:"must be equal to one of the allowed values"}];return false;}var valid0 = _errs9 === errors;}else {var valid0 = true;}if(valid0){if(data.caseCount !== undefined){let data5 = data.caseCount;const _errs10 = errors;if(!(((typeof data5 == "number") && (!(data5 % 1) && !isNaN(data5))) && (isFinite(data5)))){validate36.errors = [{instancePath:instancePath+"/caseCount",schemaPath:"#/properties/caseCount/type",keyword:"type",params:{type: "integer"},message:"must be integer"}];return false;}if(errors === _errs10){if((typeof data5 == "number") && (isFinite(data5))){if(data5 < 0 || isNaN(data5)){validate36.errors = [{instancePath:instancePath+"/caseCount",schemaPath:"#/properties/caseCount/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"}];return false;}}}var valid0 = _errs10 === errors;}else {var valid0 = true;}}}}}}}}}else {validate36.errors = [{instancePath,schemaPath:"#/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}validate36.errors = vErrors;return errors === 0;}validate36.evaluated = {"props":true,"dynamicProps":false,"dynamicItems":false};const schema94 = {"type":"object","required":["resultFile","evidencePath","runId","caseId","execution","grading","task","exitCode","trialCount","taskPassRate","candidateDurationMs","inputTokens","outputTokens","costUsd","runnerBuildDigest","evaluationDigest","requestedCondition","actualCondition","candidateRoute","routes","domainOutcomes"],"properties":{"nativeTranscripts":{"type":"object","required":["retained","pruned"],"properties":{"retained":{"type":"integer","minimum":0},"pruned":{"type":"integer","minimum":0}},"additionalProperties":false},"resultFile":{"$ref":"#/$defs/path"},"evidencePath":{"type":["string","null"]},"runId":{"type":["string","null"]},"caseId":{"type":"string","minLength":1},"execution":{"$ref":"#/$defs/state"},"grading":{"$ref":"#/$defs/state"},"task":{"$ref":"#/$defs/verdict"},"exitCode":{"enum":[0,1,2,3,4,64,70,130,143]},"trialCount":{"type":"integer","minimum":0},"taskPassRate":{"type":["number","null"],"minimum":0,"maximum":1},"candidateDurationMs":{"type":["number","null"],"minimum":0},"inputTokens":{"type":["integer","null"],"minimum":0},"outputTokens":{"type":["integer","null"],"minimum":0},"costUsd":{"type":["number","null"],"minimum":0},"runnerBuildDigest":{"oneOf":[{"$ref":"#/$defs/digest"},{"type":"null"}]},"evaluationDigest":{"oneOf":[{"$ref":"#/$defs/digest"},{"type":"null"}]},"requestedCondition":{"enum":["passive","enforced",null]},"actualCondition":{"enum":["passive","enforced","unknown",null]},"candidateRoute":{"oneOf":[{"$ref":"#/$defs/route"},{"type":"null"}]},"routes":{"type":"array","items":{"type":"object","required":["role","host","model","effort"],"properties":{"role":{"enum":["candidate","semantic","advisory"]},"host":{"type":"string","minLength":1},"model":{"type":"string","minLength":1},"effort":{"type":"string","minLength":1}},"additionalProperties":false}},"domainOutcomes":{"type":"array","items":{"$ref":"#/$defs/outcome"}}},"additionalProperties":false};const schema96 = {"enum":["completed","failed","cancelled","not_run","error","unavailable","not_requested"]};const schema99 = {"type":"string","pattern":"^[a-f0-9]{64}$"};const schema101 = {"type":"object","required":["host","model","effort"],"properties":{"host":{"type":"string","minLength":1},"model":{"type":"string","minLength":1},"effort":{"type":"string","minLength":1}},"additionalProperties":false};const schema102 = {"type":"object","required":["trial","id","status"],"properties":{"trial":{"type":"integer","minimum":1},"id":{"type":"string","minLength":1},"status":{"enum":["passed","failed","unavailable"]}},"additionalProperties":false};const func1 = Object.prototype.hasOwnProperty;const pattern5 = new RegExp("^[a-f0-9]{64}$", "u");function validate38(data, {instancePath="", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate38.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(errors === 0){if(data && typeof data == "object" && !Array.isArray(data)){let missing0;if((((((((((((((((((((((data.resultFile === undefined) && (missing0 = "resultFile")) || ((data.evidencePath === undefined) && (missing0 = "evidencePath"))) || ((data.runId === undefined) && (missing0 = "runId"))) || ((data.caseId === undefined) && (missing0 = "caseId"))) || ((data.execution === undefined) && (missing0 = "execution"))) || ((data.grading === undefined) && (missing0 = "grading"))) || ((data.task === undefined) && (missing0 = "task"))) || ((data.exitCode === undefined) && (missing0 = "exitCode"))) || ((data.trialCount === undefined) && (missing0 = "trialCount"))) || ((data.taskPassRate === undefined) && (missing0 = "taskPassRate"))) || ((data.candidateDurationMs === undefined) && (missing0 = "candidateDurationMs"))) || ((data.inputTokens === undefined) && (missing0 = "inputTokens"))) || ((data.outputTokens === undefined) && (missing0 = "outputTokens"))) || ((data.costUsd === undefined) && (missing0 = "costUsd"))) || ((data.runnerBuildDigest === undefined) && (missing0 = "runnerBuildDigest"))) || ((data.evaluationDigest === undefined) && (missing0 = "evaluationDigest"))) || ((data.requestedCondition === undefined) && (missing0 = "requestedCondition"))) || ((data.actualCondition === undefined) && (missing0 = "actualCondition"))) || ((data.candidateRoute === undefined) && (missing0 = "candidateRoute"))) || ((data.routes === undefined) && (missing0 = "routes"))) || ((data.domainOutcomes === undefined) && (missing0 = "domainOutcomes"))){validate38.errors = [{instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: missing0},message:"must have required property '"+missing0+"'"}];return false;}else {const _errs1 = errors;for(const key0 in data){if(!(func1.call(schema94.properties, key0))){validate38.errors = [{instancePath,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key0},message:"must NOT have additional properties"}];return false;break;}}if(_errs1 === errors){if(data.nativeTranscripts !== undefined){let data0 = data.nativeTranscripts;const _errs2 = errors;if(errors === _errs2){if(data0 && typeof data0 == "object" && !Array.isArray(data0)){let missing1;if(((data0.retained === undefined) && (missing1 = "retained")) || ((data0.pruned === undefined) && (missing1 = "pruned"))){validate38.errors = [{instancePath:instancePath+"/nativeTranscripts",schemaPath:"#/properties/nativeTranscripts/required",keyword:"required",params:{missingProperty: missing1},message:"must have required property '"+missing1+"'"}];return false;}else {const _errs4 = errors;for(const key1 in data0){if(!((key1 === "retained") || (key1 === "pruned"))){validate38.errors = [{instancePath:instancePath+"/nativeTranscripts",schemaPath:"#/properties/nativeTranscripts/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key1},message:"must NOT have additional properties"}];return false;break;}}if(_errs4 === errors){if(data0.retained !== undefined){let data1 = data0.retained;const _errs5 = errors;if(!(((typeof data1 == "number") && (!(data1 % 1) && !isNaN(data1))) && (isFinite(data1)))){validate38.errors = [{instancePath:instancePath+"/nativeTranscripts/retained",schemaPath:"#/properties/nativeTranscripts/properties/retained/type",keyword:"type",params:{type: "integer"},message:"must be integer"}];return false;}if(errors === _errs5){if((typeof data1 == "number") && (isFinite(data1))){if(data1 < 0 || isNaN(data1)){validate38.errors = [{instancePath:instancePath+"/nativeTranscripts/retained",schemaPath:"#/properties/nativeTranscripts/properties/retained/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"}];return false;}}}var valid1 = _errs5 === errors;}else {var valid1 = true;}if(valid1){if(data0.pruned !== undefined){let data2 = data0.pruned;const _errs7 = errors;if(!(((typeof data2 == "number") && (!(data2 % 1) && !isNaN(data2))) && (isFinite(data2)))){validate38.errors = [{instancePath:instancePath+"/nativeTranscripts/pruned",schemaPath:"#/properties/nativeTranscripts/properties/pruned/type",keyword:"type",params:{type: "integer"},message:"must be integer"}];return false;}if(errors === _errs7){if((typeof data2 == "number") && (isFinite(data2))){if(data2 < 0 || isNaN(data2)){validate38.errors = [{instancePath:instancePath+"/nativeTranscripts/pruned",schemaPath:"#/properties/nativeTranscripts/properties/pruned/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"}];return false;}}}var valid1 = _errs7 === errors;}else {var valid1 = true;}}}}}else {validate38.errors = [{instancePath:instancePath+"/nativeTranscripts",schemaPath:"#/properties/nativeTranscripts/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid0 = _errs2 === errors;}else {var valid0 = true;}if(valid0){if(data.resultFile !== undefined){let data3 = data.resultFile;const _errs9 = errors;const _errs10 = errors;if(errors === _errs10){if(typeof data3 === "string"){if(func2(data3) < 1){validate38.errors = [{instancePath:instancePath+"/resultFile",schemaPath:"#/$defs/path/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters"}];return false;}}else {validate38.errors = [{instancePath:instancePath+"/resultFile",schemaPath:"#/$defs/path/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid0 = _errs9 === errors;}else {var valid0 = true;}if(valid0){if(data.evidencePath !== undefined){let data4 = data.evidencePath;const _errs12 = errors;if((typeof data4 !== "string") && (data4 !== null)){validate38.errors = [{instancePath:instancePath+"/evidencePath",schemaPath:"#/properties/evidencePath/type",keyword:"type",params:{type: schema94.properties.evidencePath.type},message:"must be string,null"}];return false;}var valid0 = _errs12 === errors;}else {var valid0 = true;}if(valid0){if(data.runId !== undefined){let data5 = data.runId;const _errs14 = errors;if((typeof data5 !== "string") && (data5 !== null)){validate38.errors = [{instancePath:instancePath+"/runId",schemaPath:"#/properties/runId/type",keyword:"type",params:{type: schema94.properties.runId.type},message:"must be string,null"}];return false;}var valid0 = _errs14 === errors;}else {var valid0 = true;}if(valid0){if(data.caseId !== undefined){let data6 = data.caseId;const _errs16 = errors;if(errors === _errs16){if(typeof data6 === "string"){if(func2(data6) < 1){validate38.errors = [{instancePath:instancePath+"/caseId",schemaPath:"#/properties/caseId/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters"}];return false;}}else {validate38.errors = [{instancePath:instancePath+"/caseId",schemaPath:"#/properties/caseId/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid0 = _errs16 === errors;}else {var valid0 = true;}if(valid0){if(data.execution !== undefined){let data7 = data.execution;const _errs18 = errors;if(!(((((((data7 === "completed") || (data7 === "failed")) || (data7 === "cancelled")) || (data7 === "not_run")) || (data7 === "error")) || (data7 === "unavailable")) || (data7 === "not_requested"))){validate38.errors = [{instancePath:instancePath+"/execution",schemaPath:"#/$defs/state/enum",keyword:"enum",params:{allowedValues: schema96.enum},message:"must be equal to one of the allowed values"}];return false;}var valid0 = _errs18 === errors;}else {var valid0 = true;}if(valid0){if(data.grading !== undefined){let data8 = data.grading;const _errs20 = errors;if(!(((((((data8 === "completed") || (data8 === "failed")) || (data8 === "cancelled")) || (data8 === "not_run")) || (data8 === "error")) || (data8 === "unavailable")) || (data8 === "not_requested"))){validate38.errors = [{instancePath:instancePath+"/grading",schemaPath:"#/$defs/state/enum",keyword:"enum",params:{allowedValues: schema96.enum},message:"must be equal to one of the allowed values"}];return false;}var valid0 = _errs20 === errors;}else {var valid0 = true;}if(valid0){if(data.task !== undefined){let data9 = data.task;const _errs22 = errors;if(!(((data9 === "passed") || (data9 === "failed")) || (data9 === "not_assessed"))){validate38.errors = [{instancePath:instancePath+"/task",schemaPath:"#/$defs/verdict/enum",keyword:"enum",params:{allowedValues: schema93.enum},message:"must be equal to one of the allowed values"}];return false;}var valid0 = _errs22 === errors;}else {var valid0 = true;}if(valid0){if(data.exitCode !== undefined){let data10 = data.exitCode;const _errs24 = errors;if(!(((((((((data10 === 0) || (data10 === 1)) || (data10 === 2)) || (data10 === 3)) || (data10 === 4)) || (data10 === 64)) || (data10 === 70)) || (data10 === 130)) || (data10 === 143))){validate38.errors = [{instancePath:instancePath+"/exitCode",schemaPath:"#/properties/exitCode/enum",keyword:"enum",params:{allowedValues: schema94.properties.exitCode.enum},message:"must be equal to one of the allowed values"}];return false;}var valid0 = _errs24 === errors;}else {var valid0 = true;}if(valid0){if(data.trialCount !== undefined){let data11 = data.trialCount;const _errs25 = errors;if(!(((typeof data11 == "number") && (!(data11 % 1) && !isNaN(data11))) && (isFinite(data11)))){validate38.errors = [{instancePath:instancePath+"/trialCount",schemaPath:"#/properties/trialCount/type",keyword:"type",params:{type: "integer"},message:"must be integer"}];return false;}if(errors === _errs25){if((typeof data11 == "number") && (isFinite(data11))){if(data11 < 0 || isNaN(data11)){validate38.errors = [{instancePath:instancePath+"/trialCount",schemaPath:"#/properties/trialCount/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"}];return false;}}}var valid0 = _errs25 === errors;}else {var valid0 = true;}if(valid0){if(data.taskPassRate !== undefined){let data12 = data.taskPassRate;const _errs27 = errors;if((!((typeof data12 == "number") && (isFinite(data12)))) && (data12 !== null)){validate38.errors = [{instancePath:instancePath+"/taskPassRate",schemaPath:"#/properties/taskPassRate/type",keyword:"type",params:{type: schema94.properties.taskPassRate.type},message:"must be number,null"}];return false;}if(errors === _errs27){if((typeof data12 == "number") && (isFinite(data12))){if(data12 > 1 || isNaN(data12)){validate38.errors = [{instancePath:instancePath+"/taskPassRate",schemaPath:"#/properties/taskPassRate/maximum",keyword:"maximum",params:{comparison: "<=", limit: 1},message:"must be <= 1"}];return false;}else {if(data12 < 0 || isNaN(data12)){validate38.errors = [{instancePath:instancePath+"/taskPassRate",schemaPath:"#/properties/taskPassRate/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"}];return false;}}}}var valid0 = _errs27 === errors;}else {var valid0 = true;}if(valid0){if(data.candidateDurationMs !== undefined){let data13 = data.candidateDurationMs;const _errs29 = errors;if((!((typeof data13 == "number") && (isFinite(data13)))) && (data13 !== null)){validate38.errors = [{instancePath:instancePath+"/candidateDurationMs",schemaPath:"#/properties/candidateDurationMs/type",keyword:"type",params:{type: schema94.properties.candidateDurationMs.type},message:"must be number,null"}];return false;}if(errors === _errs29){if((typeof data13 == "number") && (isFinite(data13))){if(data13 < 0 || isNaN(data13)){validate38.errors = [{instancePath:instancePath+"/candidateDurationMs",schemaPath:"#/properties/candidateDurationMs/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"}];return false;}}}var valid0 = _errs29 === errors;}else {var valid0 = true;}if(valid0){if(data.inputTokens !== undefined){let data14 = data.inputTokens;const _errs31 = errors;if((!(((typeof data14 == "number") && (!(data14 % 1) && !isNaN(data14))) && (isFinite(data14)))) && (data14 !== null)){validate38.errors = [{instancePath:instancePath+"/inputTokens",schemaPath:"#/properties/inputTokens/type",keyword:"type",params:{type: schema94.properties.inputTokens.type},message:"must be integer,null"}];return false;}if(errors === _errs31){if((typeof data14 == "number") && (isFinite(data14))){if(data14 < 0 || isNaN(data14)){validate38.errors = [{instancePath:instancePath+"/inputTokens",schemaPath:"#/properties/inputTokens/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"}];return false;}}}var valid0 = _errs31 === errors;}else {var valid0 = true;}if(valid0){if(data.outputTokens !== undefined){let data15 = data.outputTokens;const _errs33 = errors;if((!(((typeof data15 == "number") && (!(data15 % 1) && !isNaN(data15))) && (isFinite(data15)))) && (data15 !== null)){validate38.errors = [{instancePath:instancePath+"/outputTokens",schemaPath:"#/properties/outputTokens/type",keyword:"type",params:{type: schema94.properties.outputTokens.type},message:"must be integer,null"}];return false;}if(errors === _errs33){if((typeof data15 == "number") && (isFinite(data15))){if(data15 < 0 || isNaN(data15)){validate38.errors = [{instancePath:instancePath+"/outputTokens",schemaPath:"#/properties/outputTokens/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"}];return false;}}}var valid0 = _errs33 === errors;}else {var valid0 = true;}if(valid0){if(data.costUsd !== undefined){let data16 = data.costUsd;const _errs35 = errors;if((!((typeof data16 == "number") && (isFinite(data16)))) && (data16 !== null)){validate38.errors = [{instancePath:instancePath+"/costUsd",schemaPath:"#/properties/costUsd/type",keyword:"type",params:{type: schema94.properties.costUsd.type},message:"must be number,null"}];return false;}if(errors === _errs35){if((typeof data16 == "number") && (isFinite(data16))){if(data16 < 0 || isNaN(data16)){validate38.errors = [{instancePath:instancePath+"/costUsd",schemaPath:"#/properties/costUsd/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"}];return false;}}}var valid0 = _errs35 === errors;}else {var valid0 = true;}if(valid0){if(data.runnerBuildDigest !== undefined){let data17 = data.runnerBuildDigest;const _errs37 = errors;const _errs38 = errors;let valid6 = false;let passing0 = null;const _errs39 = errors;const _errs40 = errors;if(errors === _errs40){if(typeof data17 === "string"){if(!pattern5.test(data17)){const err0 = {instancePath:instancePath+"/runnerBuildDigest",schemaPath:"#/$defs/digest/pattern",keyword:"pattern",params:{pattern: "^[a-f0-9]{64}$"},message:"must match pattern \""+"^[a-f0-9]{64}$"+"\""};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}}else {const err1 = {instancePath:instancePath+"/runnerBuildDigest",schemaPath:"#/$defs/digest/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}}var _valid0 = _errs39 === errors;if(_valid0){valid6 = true;passing0 = 0;}const _errs42 = errors;if(data17 !== null){const err2 = {instancePath:instancePath+"/runnerBuildDigest",schemaPath:"#/properties/runnerBuildDigest/oneOf/1/type",keyword:"type",params:{type: "null"},message:"must be null"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}var _valid0 = _errs42 === errors;if(_valid0 && valid6){valid6 = false;passing0 = [passing0, 1];}else {if(_valid0){valid6 = true;passing0 = 1;}}if(!valid6){const err3 = {instancePath:instancePath+"/runnerBuildDigest",schemaPath:"#/properties/runnerBuildDigest/oneOf",keyword:"oneOf",params:{passingSchemas: passing0},message:"must match exactly one schema in oneOf"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;validate38.errors = vErrors;return false;}else {errors = _errs38;if(vErrors !== null){if(_errs38){vErrors.length = _errs38;}else {vErrors = null;}}}var valid0 = _errs37 === errors;}else {var valid0 = true;}if(valid0){if(data.evaluationDigest !== undefined){let data18 = data.evaluationDigest;const _errs44 = errors;const _errs45 = errors;let valid8 = false;let passing1 = null;const _errs46 = errors;const _errs47 = errors;if(errors === _errs47){if(typeof data18 === "string"){if(!pattern5.test(data18)){const err4 = {instancePath:instancePath+"/evaluationDigest",schemaPath:"#/$defs/digest/pattern",keyword:"pattern",params:{pattern: "^[a-f0-9]{64}$"},message:"must match pattern \""+"^[a-f0-9]{64}$"+"\""};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}}else {const err5 = {instancePath:instancePath+"/evaluationDigest",schemaPath:"#/$defs/digest/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}}var _valid1 = _errs46 === errors;if(_valid1){valid8 = true;passing1 = 0;}const _errs49 = errors;if(data18 !== null){const err6 = {instancePath:instancePath+"/evaluationDigest",schemaPath:"#/properties/evaluationDigest/oneOf/1/type",keyword:"type",params:{type: "null"},message:"must be null"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}var _valid1 = _errs49 === errors;if(_valid1 && valid8){valid8 = false;passing1 = [passing1, 1];}else {if(_valid1){valid8 = true;passing1 = 1;}}if(!valid8){const err7 = {instancePath:instancePath+"/evaluationDigest",schemaPath:"#/properties/evaluationDigest/oneOf",keyword:"oneOf",params:{passingSchemas: passing1},message:"must match exactly one schema in oneOf"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;validate38.errors = vErrors;return false;}else {errors = _errs45;if(vErrors !== null){if(_errs45){vErrors.length = _errs45;}else {vErrors = null;}}}var valid0 = _errs44 === errors;}else {var valid0 = true;}if(valid0){if(data.requestedCondition !== undefined){let data19 = data.requestedCondition;const _errs51 = errors;if(!(((data19 === "passive") || (data19 === "enforced")) || (data19 === null))){validate38.errors = [{instancePath:instancePath+"/requestedCondition",schemaPath:"#/properties/requestedCondition/enum",keyword:"enum",params:{allowedValues: schema94.properties.requestedCondition.enum},message:"must be equal to one of the allowed values"}];return false;}var valid0 = _errs51 === errors;}else {var valid0 = true;}if(valid0){if(data.actualCondition !== undefined){let data20 = data.actualCondition;const _errs52 = errors;if(!((((data20 === "passive") || (data20 === "enforced")) || (data20 === "unknown")) || (data20 === null))){validate38.errors = [{instancePath:instancePath+"/actualCondition",schemaPath:"#/properties/actualCondition/enum",keyword:"enum",params:{allowedValues: schema94.properties.actualCondition.enum},message:"must be equal to one of the allowed values"}];return false;}var valid0 = _errs52 === errors;}else {var valid0 = true;}if(valid0){if(data.candidateRoute !== undefined){let data21 = data.candidateRoute;const _errs53 = errors;const _errs54 = errors;let valid10 = false;let passing2 = null;const _errs55 = errors;const _errs56 = errors;if(errors === _errs56){if(data21 && typeof data21 == "object" && !Array.isArray(data21)){let missing2;if((((data21.host === undefined) && (missing2 = "host")) || ((data21.model === undefined) && (missing2 = "model"))) || ((data21.effort === undefined) && (missing2 = "effort"))){const err8 = {instancePath:instancePath+"/candidateRoute",schemaPath:"#/$defs/route/required",keyword:"required",params:{missingProperty: missing2},message:"must have required property '"+missing2+"'"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}else {const _errs58 = errors;for(const key2 in data21){if(!(((key2 === "host") || (key2 === "model")) || (key2 === "effort"))){const err9 = {instancePath:instancePath+"/candidateRoute",schemaPath:"#/$defs/route/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key2},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;break;}}if(_errs58 === errors){if(data21.host !== undefined){let data22 = data21.host;const _errs59 = errors;if(errors === _errs59){if(typeof data22 === "string"){if(func2(data22) < 1){const err10 = {instancePath:instancePath+"/candidateRoute/host",schemaPath:"#/$defs/route/properties/host/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}}else {const err11 = {instancePath:instancePath+"/candidateRoute/host",schemaPath:"#/$defs/route/properties/host/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}}var valid12 = _errs59 === errors;}else {var valid12 = true;}if(valid12){if(data21.model !== undefined){let data23 = data21.model;const _errs61 = errors;if(errors === _errs61){if(typeof data23 === "string"){if(func2(data23) < 1){const err12 = {instancePath:instancePath+"/candidateRoute/model",schemaPath:"#/$defs/route/properties/model/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}}else {const err13 = {instancePath:instancePath+"/candidateRoute/model",schemaPath:"#/$defs/route/properties/model/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}}var valid12 = _errs61 === errors;}else {var valid12 = true;}if(valid12){if(data21.effort !== undefined){let data24 = data21.effort;const _errs63 = errors;if(errors === _errs63){if(typeof data24 === "string"){if(func2(data24) < 1){const err14 = {instancePath:instancePath+"/candidateRoute/effort",schemaPath:"#/$defs/route/properties/effort/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}else {const err15 = {instancePath:instancePath+"/candidateRoute/effort",schemaPath:"#/$defs/route/properties/effort/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}}var valid12 = _errs63 === errors;}else {var valid12 = true;}}}}}}else {const err16 = {instancePath:instancePath+"/candidateRoute",schemaPath:"#/$defs/route/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}}var _valid2 = _errs55 === errors;if(_valid2){valid10 = true;passing2 = 0;}const _errs65 = errors;if(data21 !== null){const err17 = {instancePath:instancePath+"/candidateRoute",schemaPath:"#/properties/candidateRoute/oneOf/1/type",keyword:"type",params:{type: "null"},message:"must be null"};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}var _valid2 = _errs65 === errors;if(_valid2 && valid10){valid10 = false;passing2 = [passing2, 1];}else {if(_valid2){valid10 = true;passing2 = 1;}}if(!valid10){const err18 = {instancePath:instancePath+"/candidateRoute",schemaPath:"#/properties/candidateRoute/oneOf",keyword:"oneOf",params:{passingSchemas: passing2},message:"must match exactly one schema in oneOf"};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;validate38.errors = vErrors;return false;}else {errors = _errs54;if(vErrors !== null){if(_errs54){vErrors.length = _errs54;}else {vErrors = null;}}}var valid0 = _errs53 === errors;}else {var valid0 = true;}if(valid0){if(data.routes !== undefined){let data25 = data.routes;const _errs67 = errors;if(errors === _errs67){if(Array.isArray(data25)){var valid13 = true;const len0 = data25.length;for(let i0=0; i0<len0; i0++){let data26 = data25[i0];const _errs69 = errors;if(errors === _errs69){if(data26 && typeof data26 == "object" && !Array.isArray(data26)){let missing3;if(((((data26.role === undefined) && (missing3 = "role")) || ((data26.host === undefined) && (missing3 = "host"))) || ((data26.model === undefined) && (missing3 = "model"))) || ((data26.effort === undefined) && (missing3 = "effort"))){validate38.errors = [{instancePath:instancePath+"/routes/" + i0,schemaPath:"#/properties/routes/items/required",keyword:"required",params:{missingProperty: missing3},message:"must have required property '"+missing3+"'"}];return false;}else {const _errs71 = errors;for(const key3 in data26){if(!((((key3 === "role") || (key3 === "host")) || (key3 === "model")) || (key3 === "effort"))){validate38.errors = [{instancePath:instancePath+"/routes/" + i0,schemaPath:"#/properties/routes/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key3},message:"must NOT have additional properties"}];return false;break;}}if(_errs71 === errors){if(data26.role !== undefined){let data27 = data26.role;const _errs72 = errors;if(!(((data27 === "candidate") || (data27 === "semantic")) || (data27 === "advisory"))){validate38.errors = [{instancePath:instancePath+"/routes/" + i0+"/role",schemaPath:"#/properties/routes/items/properties/role/enum",keyword:"enum",params:{allowedValues: schema94.properties.routes.items.properties.role.enum},message:"must be equal to one of the allowed values"}];return false;}var valid14 = _errs72 === errors;}else {var valid14 = true;}if(valid14){if(data26.host !== undefined){let data28 = data26.host;const _errs73 = errors;if(errors === _errs73){if(typeof data28 === "string"){if(func2(data28) < 1){validate38.errors = [{instancePath:instancePath+"/routes/" + i0+"/host",schemaPath:"#/properties/routes/items/properties/host/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters"}];return false;}}else {validate38.errors = [{instancePath:instancePath+"/routes/" + i0+"/host",schemaPath:"#/properties/routes/items/properties/host/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid14 = _errs73 === errors;}else {var valid14 = true;}if(valid14){if(data26.model !== undefined){let data29 = data26.model;const _errs75 = errors;if(errors === _errs75){if(typeof data29 === "string"){if(func2(data29) < 1){validate38.errors = [{instancePath:instancePath+"/routes/" + i0+"/model",schemaPath:"#/properties/routes/items/properties/model/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters"}];return false;}}else {validate38.errors = [{instancePath:instancePath+"/routes/" + i0+"/model",schemaPath:"#/properties/routes/items/properties/model/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid14 = _errs75 === errors;}else {var valid14 = true;}if(valid14){if(data26.effort !== undefined){let data30 = data26.effort;const _errs77 = errors;if(errors === _errs77){if(typeof data30 === "string"){if(func2(data30) < 1){validate38.errors = [{instancePath:instancePath+"/routes/" + i0+"/effort",schemaPath:"#/properties/routes/items/properties/effort/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters"}];return false;}}else {validate38.errors = [{instancePath:instancePath+"/routes/" + i0+"/effort",schemaPath:"#/properties/routes/items/properties/effort/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid14 = _errs77 === errors;}else {var valid14 = true;}}}}}}}else {validate38.errors = [{instancePath:instancePath+"/routes/" + i0,schemaPath:"#/properties/routes/items/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid13 = _errs69 === errors;if(!valid13){break;}}}else {validate38.errors = [{instancePath:instancePath+"/routes",schemaPath:"#/properties/routes/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid0 = _errs67 === errors;}else {var valid0 = true;}if(valid0){if(data.domainOutcomes !== undefined){let data31 = data.domainOutcomes;const _errs79 = errors;if(errors === _errs79){if(Array.isArray(data31)){var valid15 = true;const len1 = data31.length;for(let i1=0; i1<len1; i1++){let data32 = data31[i1];const _errs81 = errors;const _errs82 = errors;if(errors === _errs82){if(data32 && typeof data32 == "object" && !Array.isArray(data32)){let missing4;if((((data32.trial === undefined) && (missing4 = "trial")) || ((data32.id === undefined) && (missing4 = "id"))) || ((data32.status === undefined) && (missing4 = "status"))){validate38.errors = [{instancePath:instancePath+"/domainOutcomes/" + i1,schemaPath:"#/$defs/outcome/required",keyword:"required",params:{missingProperty: missing4},message:"must have required property '"+missing4+"'"}];return false;}else {const _errs84 = errors;for(const key4 in data32){if(!(((key4 === "trial") || (key4 === "id")) || (key4 === "status"))){validate38.errors = [{instancePath:instancePath+"/domainOutcomes/" + i1,schemaPath:"#/$defs/outcome/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key4},message:"must NOT have additional properties"}];return false;break;}}if(_errs84 === errors){if(data32.trial !== undefined){let data33 = data32.trial;const _errs85 = errors;if(!(((typeof data33 == "number") && (!(data33 % 1) && !isNaN(data33))) && (isFinite(data33)))){validate38.errors = [{instancePath:instancePath+"/domainOutcomes/" + i1+"/trial",schemaPath:"#/$defs/outcome/properties/trial/type",keyword:"type",params:{type: "integer"},message:"must be integer"}];return false;}if(errors === _errs85){if((typeof data33 == "number") && (isFinite(data33))){if(data33 < 1 || isNaN(data33)){validate38.errors = [{instancePath:instancePath+"/domainOutcomes/" + i1+"/trial",schemaPath:"#/$defs/outcome/properties/trial/minimum",keyword:"minimum",params:{comparison: ">=", limit: 1},message:"must be >= 1"}];return false;}}}var valid17 = _errs85 === errors;}else {var valid17 = true;}if(valid17){if(data32.id !== undefined){let data34 = data32.id;const _errs87 = errors;if(errors === _errs87){if(typeof data34 === "string"){if(func2(data34) < 1){validate38.errors = [{instancePath:instancePath+"/domainOutcomes/" + i1+"/id",schemaPath:"#/$defs/outcome/properties/id/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters"}];return false;}}else {validate38.errors = [{instancePath:instancePath+"/domainOutcomes/" + i1+"/id",schemaPath:"#/$defs/outcome/properties/id/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid17 = _errs87 === errors;}else {var valid17 = true;}if(valid17){if(data32.status !== undefined){let data35 = data32.status;const _errs89 = errors;if(!(((data35 === "passed") || (data35 === "failed")) || (data35 === "unavailable"))){validate38.errors = [{instancePath:instancePath+"/domainOutcomes/" + i1+"/status",schemaPath:"#/$defs/outcome/properties/status/enum",keyword:"enum",params:{allowedValues: schema102.properties.status.enum},message:"must be equal to one of the allowed values"}];return false;}var valid17 = _errs89 === errors;}else {var valid17 = true;}}}}}}else {validate38.errors = [{instancePath:instancePath+"/domainOutcomes/" + i1,schemaPath:"#/$defs/outcome/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid15 = _errs81 === errors;if(!valid15){break;}}}else {validate38.errors = [{instancePath:instancePath+"/domainOutcomes",schemaPath:"#/properties/domainOutcomes/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid0 = _errs79 === errors;}else {var valid0 = true;}}}}}}}}}}}}}}}}}}}}}}}}}else {validate38.errors = [{instancePath,schemaPath:"#/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}validate38.errors = vErrors;return errors === 0;}validate38.evaluated = {"props":true,"dynamicProps":false,"dynamicItems":false};function validate35(data, {instancePath="", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){/*# sourceURL="urn:sevro:schema:report:v1" */;let vErrors = null;let errors = 0;const evaluated0 = validate35.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(errors === 0){if(data && typeof data == "object" && !Array.isArray(data)){let missing0;if(((((data.format === undefined) && (missing0 = "format")) || ((data.inputs === undefined) && (missing0 = "inputs"))) || ((data.rows === undefined) && (missing0 = "rows"))) || ((data.summary === undefined) && (missing0 = "summary"))){validate35.errors = [{instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: missing0},message:"must have required property '"+missing0+"'"}];return false;}else {const _errs1 = errors;for(const key0 in data){if(!((((key0 === "format") || (key0 === "inputs")) || (key0 === "rows")) || (key0 === "summary"))){validate35.errors = [{instancePath,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key0},message:"must NOT have additional properties"}];return false;break;}}if(_errs1 === errors){if(data.format !== undefined){const _errs2 = errors;if("sevro.report.v1" !== data.format){validate35.errors = [{instancePath:instancePath+"/format",schemaPath:"#/properties/format/const",keyword:"const",params:{allowedValue: "sevro.report.v1"},message:"must be equal to constant"}];return false;}var valid0 = _errs2 === errors;}else {var valid0 = true;}if(valid0){if(data.inputs !== undefined){let data1 = data.inputs;const _errs3 = errors;if(errors === _errs3){if(Array.isArray(data1)){if(data1.length < 1){validate35.errors = [{instancePath:instancePath+"/inputs",schemaPath:"#/properties/inputs/minItems",keyword:"minItems",params:{limit: 1},message:"must NOT have fewer than 1 items"}];return false;}else {var valid1 = true;const len0 = data1.length;for(let i0=0; i0<len0; i0++){const _errs5 = errors;if(!(validate36(data1[i0], {instancePath:instancePath+"/inputs/" + i0,parentData:data1,parentDataProperty:i0,rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate36.errors : vErrors.concat(validate36.errors);errors = vErrors.length;}var valid1 = _errs5 === errors;if(!valid1){break;}}}}else {validate35.errors = [{instancePath:instancePath+"/inputs",schemaPath:"#/properties/inputs/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid0 = _errs3 === errors;}else {var valid0 = true;}if(valid0){if(data.rows !== undefined){let data3 = data.rows;const _errs6 = errors;if(errors === _errs6){if(Array.isArray(data3)){var valid2 = true;const len1 = data3.length;for(let i1=0; i1<len1; i1++){const _errs8 = errors;if(!(validate38(data3[i1], {instancePath:instancePath+"/rows/" + i1,parentData:data3,parentDataProperty:i1,rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate38.errors : vErrors.concat(validate38.errors);errors = vErrors.length;}var valid2 = _errs8 === errors;if(!valid2){break;}}}else {validate35.errors = [{instancePath:instancePath+"/rows",schemaPath:"#/properties/rows/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid0 = _errs6 === errors;}else {var valid0 = true;}if(valid0){if(data.summary !== undefined){let data5 = data.summary;const _errs9 = errors;if(errors === _errs9){if(data5 && typeof data5 == "object" && !Array.isArray(data5)){let missing1;if(((((data5.cases === undefined) && (missing1 = "cases")) || ((data5.passed === undefined) && (missing1 = "passed"))) || ((data5.failed === undefined) && (missing1 = "failed"))) || ((data5.notAssessed === undefined) && (missing1 = "notAssessed"))){validate35.errors = [{instancePath:instancePath+"/summary",schemaPath:"#/properties/summary/required",keyword:"required",params:{missingProperty: missing1},message:"must have required property '"+missing1+"'"}];return false;}else {const _errs11 = errors;for(const key1 in data5){if(!((((key1 === "cases") || (key1 === "passed")) || (key1 === "failed")) || (key1 === "notAssessed"))){validate35.errors = [{instancePath:instancePath+"/summary",schemaPath:"#/properties/summary/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key1},message:"must NOT have additional properties"}];return false;break;}}if(_errs11 === errors){if(data5.cases !== undefined){let data6 = data5.cases;const _errs12 = errors;if(!(((typeof data6 == "number") && (!(data6 % 1) && !isNaN(data6))) && (isFinite(data6)))){validate35.errors = [{instancePath:instancePath+"/summary/cases",schemaPath:"#/properties/summary/properties/cases/type",keyword:"type",params:{type: "integer"},message:"must be integer"}];return false;}if(errors === _errs12){if((typeof data6 == "number") && (isFinite(data6))){if(data6 < 0 || isNaN(data6)){validate35.errors = [{instancePath:instancePath+"/summary/cases",schemaPath:"#/properties/summary/properties/cases/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"}];return false;}}}var valid3 = _errs12 === errors;}else {var valid3 = true;}if(valid3){if(data5.passed !== undefined){let data7 = data5.passed;const _errs14 = errors;if(!(((typeof data7 == "number") && (!(data7 % 1) && !isNaN(data7))) && (isFinite(data7)))){validate35.errors = [{instancePath:instancePath+"/summary/passed",schemaPath:"#/properties/summary/properties/passed/type",keyword:"type",params:{type: "integer"},message:"must be integer"}];return false;}if(errors === _errs14){if((typeof data7 == "number") && (isFinite(data7))){if(data7 < 0 || isNaN(data7)){validate35.errors = [{instancePath:instancePath+"/summary/passed",schemaPath:"#/properties/summary/properties/passed/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"}];return false;}}}var valid3 = _errs14 === errors;}else {var valid3 = true;}if(valid3){if(data5.failed !== undefined){let data8 = data5.failed;const _errs16 = errors;if(!(((typeof data8 == "number") && (!(data8 % 1) && !isNaN(data8))) && (isFinite(data8)))){validate35.errors = [{instancePath:instancePath+"/summary/failed",schemaPath:"#/properties/summary/properties/failed/type",keyword:"type",params:{type: "integer"},message:"must be integer"}];return false;}if(errors === _errs16){if((typeof data8 == "number") && (isFinite(data8))){if(data8 < 0 || isNaN(data8)){validate35.errors = [{instancePath:instancePath+"/summary/failed",schemaPath:"#/properties/summary/properties/failed/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"}];return false;}}}var valid3 = _errs16 === errors;}else {var valid3 = true;}if(valid3){if(data5.notAssessed !== undefined){let data9 = data5.notAssessed;const _errs18 = errors;if(!(((typeof data9 == "number") && (!(data9 % 1) && !isNaN(data9))) && (isFinite(data9)))){validate35.errors = [{instancePath:instancePath+"/summary/notAssessed",schemaPath:"#/properties/summary/properties/notAssessed/type",keyword:"type",params:{type: "integer"},message:"must be integer"}];return false;}if(errors === _errs18){if((typeof data9 == "number") && (isFinite(data9))){if(data9 < 0 || isNaN(data9)){validate35.errors = [{instancePath:instancePath+"/summary/notAssessed",schemaPath:"#/properties/summary/properties/notAssessed/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"}];return false;}}}var valid3 = _errs18 === errors;}else {var valid3 = true;}}}}}}}else {validate35.errors = [{instancePath:instancePath+"/summary",schemaPath:"#/properties/summary/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid0 = _errs9 === errors;}else {var valid0 = true;}}}}}}}else {validate35.errors = [{instancePath,schemaPath:"#/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}validate35.errors = vErrors;return errors === 0;}validate35.evaluated = {"props":true,"dynamicProps":false,"dynamicItems":false};