evalrx 0.1.2__py3-none-any.whl

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 (339) hide show
  1. evalrx/__init__.py +139 -0
  2. evalrx/agent_assets/__init__.py +2 -0
  3. evalrx/agent_assets/skills/README.md +28 -0
  4. evalrx/agent_assets/skills/eval-chart-style/SKILL.md +172 -0
  5. evalrx/agent_assets/skills/evalrx-report-ui/SKILL.md +116 -0
  6. evalrx/agent_assets/skills/nature-figure/LICENSE +201 -0
  7. evalrx/agent_assets/skills/nature-figure/README.md +412 -0
  8. evalrx/agent_assets/skills/nature-figure/SKILL.md +60 -0
  9. evalrx/agent_assets/skills/nature-figure/manifest.yaml +59 -0
  10. evalrx/agent_assets/skills/nature-figure/references/api.md +436 -0
  11. evalrx/agent_assets/skills/nature-figure/references/backend-selection.md +100 -0
  12. evalrx/agent_assets/skills/nature-figure/references/chart-types.md +281 -0
  13. evalrx/agent_assets/skills/nature-figure/references/common-patterns.md +350 -0
  14. evalrx/agent_assets/skills/nature-figure/references/demos.md +65 -0
  15. evalrx/agent_assets/skills/nature-figure/references/design-theory.md +439 -0
  16. evalrx/agent_assets/skills/nature-figure/references/figure-contract.md +93 -0
  17. evalrx/agent_assets/skills/nature-figure/references/figure-legend-conventions.md +71 -0
  18. evalrx/agent_assets/skills/nature-figure/references/nature-2026-observations.md +112 -0
  19. evalrx/agent_assets/skills/nature-figure/references/qa-contract.md +119 -0
  20. evalrx/agent_assets/skills/nature-figure/references/r-template-index.md +66 -0
  21. evalrx/agent_assets/skills/nature-figure/references/r-workflow.md +161 -0
  22. evalrx/agent_assets/skills/nature-figure/references/tutorials.md +251 -0
  23. evalrx/agent_assets/skills/nature-figure/static/core/contract.md +29 -0
  24. evalrx/agent_assets/skills/nature-figure/static/core/stance.md +37 -0
  25. evalrx/agent_assets/skills/nature-figure/static/fragments/backend/python.md +37 -0
  26. evalrx/agent_assets/skills/nature-figure/static/fragments/backend/r.md +44 -0
  27. evalrx/agent_assets/skills/outcome-driver-analysis/SKILL.md +213 -0
  28. evalrx/agent_assets/skills/outcome-driver-analysis/assets/analysis_report_template.md +53 -0
  29. evalrx/agent_assets/skills/outcome-driver-analysis/references/model_selection.md +72 -0
  30. evalrx/agent_assets/skills/outcome-driver-analysis/scripts/explanatory_var_eda.R +130 -0
  31. evalrx/agent_assets/skills/outcome-driver-analysis/scripts/explanatory_var_eda.py +150 -0
  32. evalrx/agent_assets/skills/outcome-driver-analysis/scripts/fit_outcome_model.R +181 -0
  33. evalrx/agent_assets/skills/outcome-driver-analysis/scripts/fit_outcome_model.py +186 -0
  34. evalrx/agent_assets/skills/outcome-driver-analysis/scripts/univariate_eda.R +149 -0
  35. evalrx/agent_assets/skills/outcome-driver-analysis/scripts/univariate_eda.py +177 -0
  36. evalrx/agent_assets/skills.py +27 -0
  37. evalrx/agent_runtime/__init__.py +78 -0
  38. evalrx/agent_runtime/_docker_runner.py +89 -0
  39. evalrx/agent_runtime/cli_runtime.py +103 -0
  40. evalrx/agent_runtime/cli_transcript.py +138 -0
  41. evalrx/agent_runtime/cli_types.py +68 -0
  42. evalrx/agent_runtime/codegen/__init__.py +5 -0
  43. evalrx/agent_runtime/codegen/runner.py +94 -0
  44. evalrx/agent_runtime/experiment_harness.py +117 -0
  45. evalrx/agent_runtime/factory.py +102 -0
  46. evalrx/agent_runtime/json_shape.py +44 -0
  47. evalrx/agent_runtime/judges/__init__.py +28 -0
  48. evalrx/agent_runtime/judges/agy.py +179 -0
  49. evalrx/agent_runtime/judges/autodetect.py +135 -0
  50. evalrx/agent_runtime/judges/claude.py +159 -0
  51. evalrx/agent_runtime/judges/codex.py +120 -0
  52. evalrx/agent_runtime/providers/__init__.py +21 -0
  53. evalrx/agent_runtime/providers/antigravity.py +31 -0
  54. evalrx/agent_runtime/providers/base.py +145 -0
  55. evalrx/agent_runtime/providers/claude_code.py +49 -0
  56. evalrx/agent_runtime/providers/codex.py +37 -0
  57. evalrx/agent_runtime/providers/gemini_cli.py +26 -0
  58. evalrx/agent_runtime/providers/kimi_cli.py +27 -0
  59. evalrx/agent_runtime/providers/opencode.py +27 -0
  60. evalrx/agent_runtime/providers/registry.py +58 -0
  61. evalrx/agent_runtime/sandbox.py +517 -0
  62. evalrx/agent_runtime/skill_audit.py +143 -0
  63. evalrx/agent_runtime/skills/__init__.py +19 -0
  64. evalrx/agent_runtime/skills/installer.py +68 -0
  65. evalrx/agent_runtime/skills/prompt_policy.py +86 -0
  66. evalrx/agent_runtime/skills/resolver.py +19 -0
  67. evalrx/analysis/__init__.py +132 -0
  68. evalrx/analysis/adjudicate.py +154 -0
  69. evalrx/analysis/analysis_module.py +361 -0
  70. evalrx/analysis/api.py +171 -0
  71. evalrx/analysis/case_studio.py +651 -0
  72. evalrx/analysis/cli.py +114 -0
  73. evalrx/analysis/dashboard.py +350 -0
  74. evalrx/analysis/eval_case_matrix.py +118 -0
  75. evalrx/analysis/eval_viz_theme.py +833 -0
  76. evalrx/analysis/explore_run.py +333 -0
  77. evalrx/analysis/explorer.py +1276 -0
  78. evalrx/analysis/failure_modes.py +607 -0
  79. evalrx/analysis/fused_pipeline.py +489 -0
  80. evalrx/analysis/holdout.py +300 -0
  81. evalrx/analysis/hypothesis_agent.py +230 -0
  82. evalrx/analysis/narration.py +177 -0
  83. evalrx/analysis/operationalize.py +442 -0
  84. evalrx/analysis/plain_language.py +42 -0
  85. evalrx/analysis/planner.py +283 -0
  86. evalrx/analysis/probe_search.py +203 -0
  87. evalrx/analysis/profile.py +268 -0
  88. evalrx/analysis/prompts/__init__.py +0 -0
  89. evalrx/analysis/prompts/explorer.py +417 -0
  90. evalrx/analysis/prompts/failure_modes.py +33 -0
  91. evalrx/analysis/prompts/holdout.py +27 -0
  92. evalrx/analysis/prompts/hypothesis_agent.py +78 -0
  93. evalrx/analysis/prompts/run_codebase.py +47 -0
  94. evalrx/analysis/prompts/stats_agent.py +72 -0
  95. evalrx/analysis/prompts/stats_tool_generator.py +43 -0
  96. evalrx/analysis/result_marker.py +47 -0
  97. evalrx/analysis/run_codebase.py +242 -0
  98. evalrx/analysis/run_view.py +205 -0
  99. evalrx/analysis/stage_views.py +93 -0
  100. evalrx/analysis/stats_agent.py +944 -0
  101. evalrx/analysis/stats_tool_agent.py +261 -0
  102. evalrx/analysis/stats_tool_generator.py +415 -0
  103. evalrx/analysis/stats_tools.py +1153 -0
  104. evalrx/analysis/trajectory_records.py +193 -0
  105. evalrx/analysis/workbench.py +431 -0
  106. evalrx/analyzers/__init__.py +42 -0
  107. evalrx/analyzers/agent/__init__.py +25 -0
  108. evalrx/analyzers/agent/counterfactual.py +84 -0
  109. evalrx/analyzers/agent/first_error_judge.py +96 -0
  110. evalrx/analyzers/agent/ignored_obs.py +81 -0
  111. evalrx/analyzers/agent/loop_detect.py +79 -0
  112. evalrx/analyzers/agent/reliability.py +165 -0
  113. evalrx/analyzers/agent/tool_shap.py +225 -0
  114. evalrx/analyzers/agent/trajectory_rubric.py +168 -0
  115. evalrx/analyzers/attention/__init__.py +19 -0
  116. evalrx/analyzers/attention/relative_attn.py +610 -0
  117. evalrx/analyzers/attention/rollout.py +73 -0
  118. evalrx/analyzers/attention/sink.py +56 -0
  119. evalrx/analyzers/attention/summary.py +190 -0
  120. evalrx/analyzers/attribution/__init__.py +6 -0
  121. evalrx/analyzers/attribution/generic_attn.py +31 -0
  122. evalrx/analyzers/attribution/gradcam.py +30 -0
  123. evalrx/analyzers/base.py +12 -0
  124. evalrx/analyzers/geometry/__init__.py +6 -0
  125. evalrx/analyzers/geometry/cka.py +70 -0
  126. evalrx/analyzers/geometry/linear_probe.py +157 -0
  127. evalrx/analyzers/hallucination/__init__.py +9 -0
  128. evalrx/analyzers/hallucination/chair.py +78 -0
  129. evalrx/analyzers/hallucination/opera.py +29 -0
  130. evalrx/analyzers/hallucination/pope.py +119 -0
  131. evalrx/analyzers/hallucination/selfcheck.py +155 -0
  132. evalrx/analyzers/hallucination/vcd.py +29 -0
  133. evalrx/analyzers/lens/__init__.py +7 -0
  134. evalrx/analyzers/lens/layer_contrast.py +133 -0
  135. evalrx/analyzers/lens/logit_lens.py +138 -0
  136. evalrx/analyzers/lens/tuned_lens.py +30 -0
  137. evalrx/analyzers/patching/__init__.py +5 -0
  138. evalrx/analyzers/patching/causal_trace.py +30 -0
  139. evalrx/analyzers/perturbation/__init__.py +23 -0
  140. evalrx/analyzers/perturbation/_shapley.py +54 -0
  141. evalrx/analyzers/perturbation/context_shap.py +174 -0
  142. evalrx/analyzers/perturbation/cot_faithfulness.py +239 -0
  143. evalrx/analyzers/perturbation/format_sensitivity.py +237 -0
  144. evalrx/analyzers/perturbation/mm_shap.py +146 -0
  145. evalrx/analyzers/perturbation/modality_ablation.py +196 -0
  146. evalrx/analyzers/perturbation/perturbation_battery.py +274 -0
  147. evalrx/analyzers/perturbation/prompt_contrast.py +265 -0
  148. evalrx/analyzers/perturbation/rise.py +94 -0
  149. evalrx/analyzers/perturbation/vl_shap.py +102 -0
  150. evalrx/analyzers/reasoning/__init__.py +33 -0
  151. evalrx/analyzers/reasoning/_text.py +328 -0
  152. evalrx/analyzers/reasoning/answer_extraction_audit.py +327 -0
  153. evalrx/analyzers/reasoning/arith_audit.py +226 -0
  154. evalrx/analyzers/reasoning/contamination.py +214 -0
  155. evalrx/analyzers/reasoning/knowledge_split.py +253 -0
  156. evalrx/analyzers/reasoning/self_repair.py +246 -0
  157. evalrx/analyzers/reasoning/step_rollout_value.py +216 -0
  158. evalrx/analyzers/reasoning/termination_audit.py +258 -0
  159. evalrx/analyzers/uncertainty/__init__.py +18 -0
  160. evalrx/analyzers/uncertainty/calibration.py +174 -0
  161. evalrx/analyzers/uncertainty/coverage_gap.py +199 -0
  162. evalrx/analyzers/uncertainty/entropy.py +90 -0
  163. evalrx/analyzers/uncertainty/logprob_entropy.py +69 -0
  164. evalrx/analyzers/uncertainty/self_consistency.py +204 -0
  165. evalrx/analyzers/uncertainty/verbalized_conf.py +64 -0
  166. evalrx/cli.py +411 -0
  167. evalrx/config.py +77 -0
  168. evalrx/contract/__init__.py +179 -0
  169. evalrx/contract/common.py +452 -0
  170. evalrx/contract/emit.py +948 -0
  171. evalrx/contract/export.py +237 -0
  172. evalrx/contract/m1.py +325 -0
  173. evalrx/contract/m2.py +317 -0
  174. evalrx/contract/m3.py +165 -0
  175. evalrx/contract/m4.py +130 -0
  176. evalrx/contract/m5.py +292 -0
  177. evalrx/contract/methodology.py +76 -0
  178. evalrx/contract/pre_m1.py +58 -0
  179. evalrx/contract/typescript.py +140 -0
  180. evalrx/core/__init__.py +85 -0
  181. evalrx/core/analyzer.py +174 -0
  182. evalrx/core/capability.py +54 -0
  183. evalrx/core/case.py +443 -0
  184. evalrx/core/experiment.py +106 -0
  185. evalrx/core/model.py +198 -0
  186. evalrx/core/pipeline.py +42 -0
  187. evalrx/core/registry.py +142 -0
  188. evalrx/core/result.py +64 -0
  189. evalrx/core/spec.py +173 -0
  190. evalrx/core/tokentype.py +165 -0
  191. evalrx/core/tool.py +92 -0
  192. evalrx/datasets/__init__.py +41 -0
  193. evalrx/datasets/base.py +68 -0
  194. evalrx/datasets/gui_os.py +52 -0
  195. evalrx/datasets/llm_qa.py +57 -0
  196. evalrx/datasets/pure_qa.py +12 -0
  197. evalrx/datasets/vlm_qa.py +695 -0
  198. evalrx/datasets/web_search_qa.py +52 -0
  199. evalrx/eval_agent/__init__.py +341 -0
  200. evalrx/eval_agent/_tools.py +81 -0
  201. evalrx/eval_agent/ab_runner.py +50 -0
  202. evalrx/eval_agent/agentic/__init__.py +43 -0
  203. evalrx/eval_agent/agentic/actions.py +216 -0
  204. evalrx/eval_agent/agentic/board.py +107 -0
  205. evalrx/eval_agent/agentic/loop.py +190 -0
  206. evalrx/eval_agent/agentic/tools.py +538 -0
  207. evalrx/eval_agent/checkpoint.py +57 -0
  208. evalrx/eval_agent/cli_agent.py +59 -0
  209. evalrx/eval_agent/cli_skills.py +5 -0
  210. evalrx/eval_agent/evolution.py +396 -0
  211. evalrx/eval_agent/git_manager.py +215 -0
  212. evalrx/eval_agent/hypothesis.py +172 -0
  213. evalrx/eval_agent/label_quarantine.py +209 -0
  214. evalrx/eval_agent/legacy.py +530 -0
  215. evalrx/eval_agent/log_schema.py +497 -0
  216. evalrx/eval_agent/loop.py +2159 -0
  217. evalrx/eval_agent/loop_reports.py +116 -0
  218. evalrx/eval_agent/model_instrumentation.py +282 -0
  219. evalrx/eval_agent/narration.py +193 -0
  220. evalrx/eval_agent/nl_runner.py +460 -0
  221. evalrx/eval_agent/orchestrator.py +61 -0
  222. evalrx/eval_agent/preregister.py +93 -0
  223. evalrx/eval_agent/prompts/__init__.py +1 -0
  224. evalrx/eval_agent/prompts/agentic.py +46 -0
  225. evalrx/eval_agent/prompts/case_discovery.py +25 -0
  226. evalrx/eval_agent/prompts/diagnosis.py +125 -0
  227. evalrx/eval_agent/prompts/experiment_writer.py +265 -0
  228. evalrx/eval_agent/prompts/explore_step.py +37 -0
  229. evalrx/eval_agent/prompts/fix_agent.py +257 -0
  230. evalrx/eval_agent/prompts/hypothesis_tester.py +15 -0
  231. evalrx/eval_agent/prompts/nl_runner.py +38 -0
  232. evalrx/eval_agent/prompts/probe_agent.py +25 -0
  233. evalrx/eval_agent/prompts/probe_candidate_generator.py +14 -0
  234. evalrx/eval_agent/prompts/probe_generator.py +35 -0
  235. evalrx/eval_agent/prompts/whitebox_probe_generator.py +38 -0
  236. evalrx/eval_agent/report.py +58 -0
  237. evalrx/eval_agent/run_context.py +354 -0
  238. evalrx/eval_agent/run_log.schema.json +1215 -0
  239. evalrx/eval_agent/run_logger_v2.py +1764 -0
  240. evalrx/eval_agent/run_metadata.py +208 -0
  241. evalrx/eval_agent/stages/__init__.py +56 -0
  242. evalrx/eval_agent/stages/case_discovery.py +293 -0
  243. evalrx/eval_agent/stages/diagnosis.py +1017 -0
  244. evalrx/eval_agent/stages/experiment_writer.py +1634 -0
  245. evalrx/eval_agent/stages/fix_agent.py +3916 -0
  246. evalrx/eval_agent/stages/fix_internals.py +499 -0
  247. evalrx/eval_agent/stages/fix_pipeline.py +725 -0
  248. evalrx/eval_agent/stages/fix_tiers.py +187 -0
  249. evalrx/eval_agent/stages/fix_tools.py +1034 -0
  250. evalrx/eval_agent/stages/hypothesis_tester.py +1014 -0
  251. evalrx/eval_agent/stages/probe.py +439 -0
  252. evalrx/eval_agent/stages/probe_agent.py +1079 -0
  253. evalrx/eval_agent/stages/probe_candidate_generator.py +128 -0
  254. evalrx/eval_agent/stages/probe_generator.py +326 -0
  255. evalrx/eval_agent/stages/probe_search_agent.py +106 -0
  256. evalrx/eval_agent/stages/protocol.py +112 -0
  257. evalrx/eval_agent/stages/repair_catalog.py +273 -0
  258. evalrx/eval_agent/stages/surgery.py +524 -0
  259. evalrx/eval_agent/stages/whitebox_probe_generator.py +351 -0
  260. evalrx/eval_agent/store.py +231 -0
  261. evalrx/logging_utils.py +112 -0
  262. evalrx/models/__init__.py +161 -0
  263. evalrx/models/_discover.py +101 -0
  264. evalrx/models/agent.py +380 -0
  265. evalrx/models/backends/__init__.py +58 -0
  266. evalrx/models/backends/api.py +169 -0
  267. evalrx/models/backends/base.py +57 -0
  268. evalrx/models/backends/gemini_compat.py +579 -0
  269. evalrx/models/backends/hf_local.py +2074 -0
  270. evalrx/models/backends/openai_compat.py +301 -0
  271. evalrx/models/backends/vllm_offline.py +116 -0
  272. evalrx/models/base.py +24 -0
  273. evalrx/models/blackbox/__init__.py +4 -0
  274. evalrx/models/blackbox/agent.py +31 -0
  275. evalrx/models/blackbox/base.py +29 -0
  276. evalrx/models/blackbox/gemini.py +279 -0
  277. evalrx/models/blackbox/llm_api.py +17 -0
  278. evalrx/models/blackbox/vlm_api.py +17 -0
  279. evalrx/models/compose.py +66 -0
  280. evalrx/models/inference.py +88 -0
  281. evalrx/models/paper_methods/__init__.py +8 -0
  282. evalrx/models/paper_methods/aad.py +53 -0
  283. evalrx/models/paper_methods/ifcd.py +204 -0
  284. evalrx/models/paper_methods/pai.py +164 -0
  285. evalrx/models/paper_methods/tcd.py +202 -0
  286. evalrx/models/paper_methods/vcd.py +45 -0
  287. evalrx/models/paper_methods/vicrop.py +137 -0
  288. evalrx/models/toolcodec.py +143 -0
  289. evalrx/models/tools/__init__.py +20 -0
  290. evalrx/models/tools/perception.py +300 -0
  291. evalrx/models/tools/visual.py +174 -0
  292. evalrx/models/whitebox/__init__.py +26 -0
  293. evalrx/models/whitebox/agent.py +31 -0
  294. evalrx/models/whitebox/base.py +24 -0
  295. evalrx/models/whitebox/qwen.py +61 -0
  296. evalrx/models/whitebox/qwen2_5_omni.py +29 -0
  297. evalrx/models/whitebox/qwen2_audio.py +25 -0
  298. evalrx/models/whitebox/qwen_omni.py +53 -0
  299. evalrx/models/whitebox/qwen_vl.py +62 -0
  300. evalrx/observability/__init__.py +21 -0
  301. evalrx/observability/envelope.py +122 -0
  302. evalrx/observability/outbox.py +111 -0
  303. evalrx/observability/tracer.py +882 -0
  304. evalrx/reporting/__init__.py +28 -0
  305. evalrx/reporting/case_study.py +947 -0
  306. evalrx/reporting/compiler.py +587 -0
  307. evalrx/reporting/dynamic.py +1882 -0
  308. evalrx/reporting/html_report.py +2225 -0
  309. evalrx/reporting/langfuse_exporter.py +38 -0
  310. evalrx/reporting/langfuse_source.py +155 -0
  311. evalrx/reporting/model.py +151 -0
  312. evalrx/reporting/run_events.py +184 -0
  313. evalrx/reporting/server.py +557 -0
  314. evalrx/reporting/stages.py +58 -0
  315. evalrx/reporting/static_export.py +142 -0
  316. evalrx/reporting/web_dist/index.html +146 -0
  317. evalrx/specs.py +727 -0
  318. evalrx/stats/__init__.py +47 -0
  319. evalrx/stats/api.py +192 -0
  320. evalrx/stats/bootstrap.py +86 -0
  321. evalrx/stats/ebh.py +27 -0
  322. evalrx/stats/evalue.py +98 -0
  323. evalrx/stats/friedman.py +138 -0
  324. evalrx/stats/mcnemar.py +40 -0
  325. evalrx/stats/multiplicity.py +159 -0
  326. evalrx/stats/subset_sampling.py +55 -0
  327. evalrx/term_links.py +43 -0
  328. evalrx/viz/__init__.py +7 -0
  329. evalrx/viz/labels.py +77 -0
  330. evalrx/viz/prompts.py +39 -0
  331. evalrx/viz/renderer.py +590 -0
  332. evalrx/viz/schema.py +36 -0
  333. evalrx/viz/style.py +134 -0
  334. evalrx-0.1.2.dist-info/METADATA +532 -0
  335. evalrx-0.1.2.dist-info/RECORD +339 -0
  336. evalrx-0.1.2.dist-info/WHEEL +5 -0
  337. evalrx-0.1.2.dist-info/entry_points.txt +3 -0
  338. evalrx-0.1.2.dist-info/licenses/LICENSE +121 -0
  339. evalrx-0.1.2.dist-info/top_level.txt +1 -0
@@ -0,0 +1,1215 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://evalrx.dev/schemas/run_log.schema.json",
4
+ "title": "EvalRX run event",
5
+ "description": "One logged event, wherever a run stores it (run.json / M<n>/log.json). Discriminated on `event`; matches schema_version 6. Permissive: extra (additive) fields are allowed.",
6
+ "$defs": {
7
+ "envelope": {
8
+ "type": "object",
9
+ "required": [
10
+ "event",
11
+ "schema_version",
12
+ "ts",
13
+ "trace_id",
14
+ "event_seq",
15
+ "stage",
16
+ "span_id"
17
+ ],
18
+ "properties": {
19
+ "event": {
20
+ "type": "string",
21
+ "enum": [
22
+ "run_start",
23
+ "probe",
24
+ "explore",
25
+ "analysis",
26
+ "diagnosis",
27
+ "surgery",
28
+ "experiment",
29
+ "fix",
30
+ "loop_end",
31
+ "tool_codegen",
32
+ "tool_registry",
33
+ "agent_decision",
34
+ "agent_tool",
35
+ "case_record",
36
+ "report_published",
37
+ "stage_skipped",
38
+ "model_call",
39
+ "diagnose_report",
40
+ "unrouted"
41
+ ]
42
+ },
43
+ "schema_version": {
44
+ "const": 6
45
+ },
46
+ "ts": {
47
+ "type": "string",
48
+ "format": "date-time",
49
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})?$"
50
+ },
51
+ "trace_id": {
52
+ "type": "string"
53
+ },
54
+ "event_seq": {
55
+ "type": "integer",
56
+ "minimum": 1
57
+ },
58
+ "span_id": {
59
+ "type": "string"
60
+ },
61
+ "stage": {
62
+ "enum": [
63
+ "RUN",
64
+ "M1",
65
+ "M2",
66
+ "M3",
67
+ "M4",
68
+ "M5"
69
+ ]
70
+ },
71
+ "cycle": {
72
+ "type": "integer"
73
+ }
74
+ }
75
+ },
76
+ "run_start": {
77
+ "allOf": [
78
+ {
79
+ "$ref": "#/$defs/envelope"
80
+ },
81
+ {
82
+ "type": "object",
83
+ "properties": {
84
+ "event": {
85
+ "const": "run_start"
86
+ },
87
+ "evalrx_version": {
88
+ "type": "string"
89
+ },
90
+ "python_version": {
91
+ "type": "string"
92
+ },
93
+ "git_commit": {
94
+ "type": [
95
+ "string",
96
+ "null"
97
+ ]
98
+ },
99
+ "data_fingerprint": {
100
+ "type": "string"
101
+ },
102
+ "label_distribution": {
103
+ "type": "object"
104
+ },
105
+ "n_cases": {
106
+ "type": "integer"
107
+ },
108
+ "model": {
109
+ "type": "string"
110
+ },
111
+ "decision_judge": {
112
+ "type": "string"
113
+ },
114
+ "max_actions": {
115
+ "type": "integer"
116
+ },
117
+ "explorer": {
118
+ "type": "string"
119
+ }
120
+ },
121
+ "required": [
122
+ "event"
123
+ ]
124
+ }
125
+ ]
126
+ },
127
+ "probe": {
128
+ "allOf": [
129
+ {
130
+ "$ref": "#/$defs/envelope"
131
+ },
132
+ {
133
+ "type": "object",
134
+ "properties": {
135
+ "event": {
136
+ "const": "probe"
137
+ },
138
+ "analyzers": {
139
+ "type": "array",
140
+ "items": {
141
+ "type": "string"
142
+ }
143
+ },
144
+ "findings": {
145
+ "type": "object"
146
+ },
147
+ "artifact_paths": {
148
+ "type": "object"
149
+ },
150
+ "selection_rationale": {
151
+ "type": "string"
152
+ },
153
+ "judge_io": {
154
+ "type": "object",
155
+ "properties": {
156
+ "prompt_path": {
157
+ "type": "string"
158
+ },
159
+ "prompt_chars": {
160
+ "type": "integer"
161
+ },
162
+ "raw_path": {
163
+ "type": "string"
164
+ },
165
+ "raw_chars": {
166
+ "type": "integer"
167
+ }
168
+ }
169
+ },
170
+ "duration_sec": {
171
+ "type": "number"
172
+ },
173
+ "n_model_calls": {
174
+ "type": "integer"
175
+ },
176
+ "model_calls_path": {
177
+ "type": "string"
178
+ }
179
+ },
180
+ "required": [
181
+ "event",
182
+ "cycle",
183
+ "analyzers",
184
+ "findings",
185
+ "artifact_paths"
186
+ ]
187
+ }
188
+ ]
189
+ },
190
+ "analysis": {
191
+ "allOf": [
192
+ {
193
+ "$ref": "#/$defs/envelope"
194
+ },
195
+ {
196
+ "type": "object",
197
+ "properties": {
198
+ "event": {
199
+ "const": "analysis"
200
+ },
201
+ "severity": {
202
+ "type": "string"
203
+ },
204
+ "n_findings": {
205
+ "type": "integer"
206
+ },
207
+ "findings": {
208
+ "type": "array",
209
+ "items": {
210
+ "type": "string"
211
+ }
212
+ },
213
+ "narrative": {
214
+ "type": "string"
215
+ },
216
+ "conclusion": {
217
+ "type": "string"
218
+ },
219
+ "evidence_chain": {
220
+ "type": "array"
221
+ },
222
+ "stats_tool_results": {
223
+ "type": [
224
+ "object",
225
+ "array"
226
+ ]
227
+ },
228
+ "stats_plan": {
229
+ "type": [
230
+ "object",
231
+ "array"
232
+ ]
233
+ },
234
+ "stats_results": {
235
+ "type": [
236
+ "object",
237
+ "array"
238
+ ]
239
+ },
240
+ "corrected_rejections": {
241
+ "type": [
242
+ "object",
243
+ "array"
244
+ ]
245
+ },
246
+ "visualizations": {
247
+ "type": "array"
248
+ },
249
+ "figures": {
250
+ "type": "array"
251
+ },
252
+ "judge_io": {
253
+ "type": "object",
254
+ "properties": {
255
+ "prompt_path": {
256
+ "type": "string"
257
+ },
258
+ "prompt_chars": {
259
+ "type": "integer"
260
+ },
261
+ "raw_path": {
262
+ "type": "string"
263
+ },
264
+ "raw_chars": {
265
+ "type": "integer"
266
+ }
267
+ }
268
+ },
269
+ "duration_sec": {
270
+ "type": "number"
271
+ }
272
+ },
273
+ "required": [
274
+ "event",
275
+ "cycle",
276
+ "severity",
277
+ "n_findings",
278
+ "findings",
279
+ "narrative"
280
+ ]
281
+ }
282
+ ]
283
+ },
284
+ "explore": {
285
+ "allOf": [
286
+ {
287
+ "$ref": "#/$defs/envelope"
288
+ },
289
+ {
290
+ "type": "object",
291
+ "properties": {
292
+ "event": {
293
+ "const": "explore"
294
+ },
295
+ "ok": {
296
+ "type": "boolean"
297
+ },
298
+ "n_observations": {
299
+ "type": "integer"
300
+ },
301
+ "n_charts": {
302
+ "type": "integer"
303
+ },
304
+ "n_charts_rendered": {
305
+ "type": "integer"
306
+ },
307
+ "n_tables": {
308
+ "type": "integer"
309
+ },
310
+ "n_candidate_signals": {
311
+ "type": "integer"
312
+ },
313
+ "n_hypotheses": {
314
+ "type": "integer"
315
+ },
316
+ "adjudication": {
317
+ "type": "object"
318
+ },
319
+ "observations": {
320
+ "type": "array",
321
+ "items": {
322
+ "type": "string"
323
+ }
324
+ },
325
+ "caveats": {
326
+ "type": "array",
327
+ "items": {
328
+ "type": "string"
329
+ }
330
+ },
331
+ "figures": {
332
+ "type": "array",
333
+ "items": {
334
+ "type": "string"
335
+ }
336
+ },
337
+ "attempts": {
338
+ "type": "integer"
339
+ },
340
+ "error": {
341
+ "type": "string"
342
+ },
343
+ "out_dir": {
344
+ "type": "string"
345
+ },
346
+ "report_path": {
347
+ "type": "string"
348
+ },
349
+ "duration_sec": {
350
+ "type": "number"
351
+ }
352
+ },
353
+ "required": [
354
+ "event",
355
+ "cycle",
356
+ "ok",
357
+ "n_observations",
358
+ "n_charts",
359
+ "n_tables"
360
+ ]
361
+ }
362
+ ]
363
+ },
364
+ "diagnosis": {
365
+ "allOf": [
366
+ {
367
+ "$ref": "#/$defs/envelope"
368
+ },
369
+ {
370
+ "type": "object",
371
+ "properties": {
372
+ "event": {
373
+ "const": "diagnosis"
374
+ },
375
+ "model_name": {
376
+ "type": [
377
+ "string",
378
+ "null"
379
+ ]
380
+ },
381
+ "n_hypotheses": {
382
+ "type": "integer"
383
+ },
384
+ "hypotheses": {
385
+ "type": "array",
386
+ "items": {
387
+ "type": "object",
388
+ "properties": {
389
+ "statement": {
390
+ "type": "string"
391
+ },
392
+ "plain_statement": {
393
+ "type": [
394
+ "string",
395
+ "null"
396
+ ]
397
+ },
398
+ "failure_mode": {
399
+ "type": [
400
+ "string",
401
+ "null"
402
+ ]
403
+ },
404
+ "status": {
405
+ "type": [
406
+ "string",
407
+ "null"
408
+ ]
409
+ },
410
+ "test_design": {
411
+ "type": [
412
+ "string",
413
+ "null"
414
+ ]
415
+ }
416
+ }
417
+ }
418
+ },
419
+ "raw_judge_output": {
420
+ "type": [
421
+ "string",
422
+ "null"
423
+ ]
424
+ },
425
+ "referenced_charts": {
426
+ "type": "array",
427
+ "items": {
428
+ "type": "string"
429
+ }
430
+ },
431
+ "explore_context_used": {
432
+ "type": "boolean"
433
+ },
434
+ "explore_figures": {
435
+ "type": "array",
436
+ "items": {
437
+ "type": "string"
438
+ }
439
+ },
440
+ "failure_modes_used": {
441
+ "type": "boolean"
442
+ },
443
+ "judge_io": {
444
+ "type": "object",
445
+ "properties": {
446
+ "prompt_path": {
447
+ "type": "string"
448
+ },
449
+ "prompt_chars": {
450
+ "type": "integer"
451
+ },
452
+ "raw_path": {
453
+ "type": "string"
454
+ },
455
+ "raw_chars": {
456
+ "type": "integer"
457
+ }
458
+ }
459
+ },
460
+ "duration_sec": {
461
+ "type": "number"
462
+ }
463
+ },
464
+ "required": [
465
+ "event",
466
+ "cycle",
467
+ "model_name",
468
+ "n_hypotheses",
469
+ "hypotheses",
470
+ "raw_judge_output"
471
+ ]
472
+ }
473
+ ]
474
+ },
475
+ "surgery": {
476
+ "allOf": [
477
+ {
478
+ "$ref": "#/$defs/envelope"
479
+ },
480
+ {
481
+ "type": "object",
482
+ "properties": {
483
+ "event": {
484
+ "const": "surgery"
485
+ },
486
+ "module": {
487
+ "type": "string"
488
+ },
489
+ "hypothesis": {
490
+ "type": "string"
491
+ },
492
+ "failure_mode": {
493
+ "type": [
494
+ "string",
495
+ "null"
496
+ ]
497
+ },
498
+ "status": {
499
+ "type": "string"
500
+ },
501
+ "fixed": {
502
+ "type": "boolean"
503
+ },
504
+ "confidence_score": {
505
+ "type": [
506
+ "number",
507
+ "null"
508
+ ]
509
+ },
510
+ "evidence": {
511
+ "type": [
512
+ "object",
513
+ "null"
514
+ ]
515
+ },
516
+ "n_refocused_cases": {
517
+ "type": [
518
+ "integer",
519
+ "null"
520
+ ]
521
+ },
522
+ "duration_sec": {
523
+ "type": "number"
524
+ },
525
+ "judge_io": {
526
+ "type": "object",
527
+ "properties": {
528
+ "prompt_path": {
529
+ "type": "string"
530
+ },
531
+ "prompt_chars": {
532
+ "type": "integer"
533
+ },
534
+ "raw_path": {
535
+ "type": "string"
536
+ },
537
+ "raw_chars": {
538
+ "type": "integer"
539
+ }
540
+ }
541
+ }
542
+ },
543
+ "required": [
544
+ "event",
545
+ "cycle",
546
+ "module",
547
+ "hypothesis",
548
+ "failure_mode",
549
+ "status",
550
+ "fixed"
551
+ ]
552
+ }
553
+ ]
554
+ },
555
+ "experiment": {
556
+ "allOf": [
557
+ {
558
+ "$ref": "#/$defs/envelope"
559
+ },
560
+ {
561
+ "type": "object",
562
+ "properties": {
563
+ "event": {
564
+ "const": "experiment"
565
+ },
566
+ "module": {
567
+ "type": "string"
568
+ },
569
+ "hypothesis": {
570
+ "type": "string"
571
+ },
572
+ "failure_mode": {
573
+ "type": [
574
+ "string",
575
+ "null"
576
+ ]
577
+ },
578
+ "status": {
579
+ "type": [
580
+ "string",
581
+ "null"
582
+ ]
583
+ },
584
+ "fixed": {
585
+ "type": "boolean"
586
+ },
587
+ "provider": {
588
+ "type": [
589
+ "string",
590
+ "null"
591
+ ]
592
+ },
593
+ "metrics": {
594
+ "type": [
595
+ "object",
596
+ "null"
597
+ ]
598
+ },
599
+ "returncode": {
600
+ "type": [
601
+ "integer",
602
+ "null"
603
+ ]
604
+ },
605
+ "timed_out": {
606
+ "type": [
607
+ "boolean",
608
+ "null"
609
+ ]
610
+ },
611
+ "llm_calls": {
612
+ "type": [
613
+ "integer",
614
+ "null"
615
+ ]
616
+ },
617
+ "code_paths": {
618
+ "type": "object"
619
+ },
620
+ "output_paths": {
621
+ "type": "object"
622
+ },
623
+ "workspace_snapshot": {
624
+ "type": [
625
+ "object",
626
+ "null"
627
+ ]
628
+ },
629
+ "record": {
630
+ "type": "string"
631
+ }
632
+ },
633
+ "required": [
634
+ "event",
635
+ "cycle",
636
+ "module",
637
+ "hypothesis",
638
+ "failure_mode",
639
+ "status",
640
+ "fixed"
641
+ ]
642
+ }
643
+ ]
644
+ },
645
+ "fix": {
646
+ "allOf": [
647
+ {
648
+ "$ref": "#/$defs/envelope"
649
+ },
650
+ {
651
+ "type": "object",
652
+ "properties": {
653
+ "event": {
654
+ "const": "fix"
655
+ },
656
+ "module": {
657
+ "type": "string"
658
+ },
659
+ "record": {
660
+ "type": "string"
661
+ }
662
+ },
663
+ "required": [
664
+ "event",
665
+ "cycle",
666
+ "module"
667
+ ]
668
+ }
669
+ ]
670
+ },
671
+ "loop_end": {
672
+ "allOf": [
673
+ {
674
+ "$ref": "#/$defs/envelope"
675
+ },
676
+ {
677
+ "type": "object",
678
+ "properties": {
679
+ "event": {
680
+ "const": "loop_end"
681
+ },
682
+ "cycles": {
683
+ "type": "integer"
684
+ },
685
+ "tokens_used": {
686
+ "type": [
687
+ "integer",
688
+ "null"
689
+ ]
690
+ },
691
+ "timings_sec": {
692
+ "type": "object"
693
+ },
694
+ "total_duration_sec": {
695
+ "type": "number"
696
+ },
697
+ "resolved": {
698
+ "type": "boolean"
699
+ },
700
+ "n_hypotheses": {
701
+ "type": "integer"
702
+ },
703
+ "final_hypotheses": {
704
+ "type": "array",
705
+ "items": {
706
+ "type": "object",
707
+ "properties": {
708
+ "statement": {
709
+ "type": "string"
710
+ },
711
+ "plain_statement": {
712
+ "type": [
713
+ "string",
714
+ "null"
715
+ ]
716
+ },
717
+ "failure_mode": {
718
+ "type": [
719
+ "string",
720
+ "null"
721
+ ]
722
+ },
723
+ "status": {
724
+ "type": [
725
+ "string",
726
+ "null"
727
+ ]
728
+ },
729
+ "test_design": {
730
+ "type": [
731
+ "string",
732
+ "null"
733
+ ]
734
+ }
735
+ }
736
+ }
737
+ },
738
+ "stopped_by": {
739
+ "type": [
740
+ "string",
741
+ "null"
742
+ ]
743
+ },
744
+ "n_verified": {
745
+ "type": "integer"
746
+ },
747
+ "verified_hypotheses": {
748
+ "type": "array"
749
+ }
750
+ },
751
+ "required": [
752
+ "event",
753
+ "cycles"
754
+ ]
755
+ }
756
+ ]
757
+ },
758
+ "tool_codegen": {
759
+ "allOf": [
760
+ {
761
+ "$ref": "#/$defs/envelope"
762
+ },
763
+ {
764
+ "type": "object",
765
+ "properties": {
766
+ "event": {
767
+ "const": "tool_codegen"
768
+ },
769
+ "module": {
770
+ "type": "string"
771
+ },
772
+ "tool_name": {
773
+ "type": "string"
774
+ },
775
+ "need": {
776
+ "type": "string"
777
+ },
778
+ "source": {
779
+ "type": "string"
780
+ },
781
+ "ok": {
782
+ "type": "boolean"
783
+ },
784
+ "error": {
785
+ "type": [
786
+ "string",
787
+ "null"
788
+ ]
789
+ },
790
+ "code_paths": {
791
+ "type": "object"
792
+ }
793
+ },
794
+ "required": [
795
+ "event",
796
+ "cycle",
797
+ "module",
798
+ "tool_name",
799
+ "need",
800
+ "source",
801
+ "ok"
802
+ ]
803
+ }
804
+ ]
805
+ },
806
+ "tool_registry": {
807
+ "allOf": [
808
+ {
809
+ "$ref": "#/$defs/envelope"
810
+ },
811
+ {
812
+ "type": "object",
813
+ "properties": {
814
+ "event": {
815
+ "const": "tool_registry"
816
+ },
817
+ "module": {
818
+ "type": "string"
819
+ },
820
+ "n_tools": {
821
+ "type": "integer"
822
+ },
823
+ "tools": {
824
+ "type": "array"
825
+ }
826
+ },
827
+ "required": [
828
+ "event",
829
+ "cycle",
830
+ "module",
831
+ "n_tools",
832
+ "tools"
833
+ ]
834
+ }
835
+ ]
836
+ },
837
+ "agent_decision": {
838
+ "allOf": [
839
+ {
840
+ "$ref": "#/$defs/envelope"
841
+ },
842
+ {
843
+ "type": "object",
844
+ "properties": {
845
+ "event": {
846
+ "const": "agent_decision"
847
+ },
848
+ "step": {
849
+ "type": "integer"
850
+ },
851
+ "action": {
852
+ "type": "string"
853
+ },
854
+ "params": {
855
+ "type": "object"
856
+ },
857
+ "rationale": {
858
+ "type": "string"
859
+ },
860
+ "valid": {
861
+ "type": "boolean"
862
+ },
863
+ "repair_attempts": {
864
+ "type": "integer"
865
+ },
866
+ "fallback_used": {
867
+ "type": "boolean"
868
+ },
869
+ "judge_io": {
870
+ "type": "object",
871
+ "properties": {
872
+ "prompt_path": {
873
+ "type": "string"
874
+ },
875
+ "prompt_chars": {
876
+ "type": "integer"
877
+ },
878
+ "raw_path": {
879
+ "type": "string"
880
+ },
881
+ "raw_chars": {
882
+ "type": "integer"
883
+ }
884
+ }
885
+ },
886
+ "duration_sec": {
887
+ "type": "number"
888
+ }
889
+ },
890
+ "required": [
891
+ "event",
892
+ "step",
893
+ "action",
894
+ "valid"
895
+ ]
896
+ }
897
+ ]
898
+ },
899
+ "agent_tool": {
900
+ "allOf": [
901
+ {
902
+ "$ref": "#/$defs/envelope"
903
+ },
904
+ {
905
+ "type": "object",
906
+ "properties": {
907
+ "event": {
908
+ "const": "agent_tool"
909
+ },
910
+ "step": {
911
+ "type": "integer"
912
+ },
913
+ "tool": {
914
+ "type": "string"
915
+ },
916
+ "ok": {
917
+ "type": "boolean"
918
+ },
919
+ "summary": {
920
+ "type": "string"
921
+ },
922
+ "error": {
923
+ "type": [
924
+ "string",
925
+ "null"
926
+ ]
927
+ },
928
+ "duration_sec": {
929
+ "type": "number"
930
+ }
931
+ },
932
+ "required": [
933
+ "event",
934
+ "step",
935
+ "tool",
936
+ "ok"
937
+ ]
938
+ }
939
+ ]
940
+ },
941
+ "case_record": {
942
+ "allOf": [
943
+ {
944
+ "$ref": "#/$defs/envelope"
945
+ },
946
+ {
947
+ "type": "object",
948
+ "properties": {
949
+ "event": {
950
+ "const": "case_record"
951
+ },
952
+ "case_id": {
953
+ "type": "string"
954
+ },
955
+ "case": {
956
+ "type": "object"
957
+ },
958
+ "media_paths": {
959
+ "type": "array",
960
+ "items": {
961
+ "type": "string"
962
+ }
963
+ }
964
+ },
965
+ "required": [
966
+ "event",
967
+ "case_id",
968
+ "case",
969
+ "media_paths"
970
+ ]
971
+ }
972
+ ]
973
+ },
974
+ "report_published": {
975
+ "allOf": [
976
+ {
977
+ "$ref": "#/$defs/envelope"
978
+ },
979
+ {
980
+ "type": "object",
981
+ "properties": {
982
+ "event": {
983
+ "const": "report_published"
984
+ },
985
+ "report_schema_version": {
986
+ "type": "integer"
987
+ },
988
+ "catalog_version": {
989
+ "type": "string"
990
+ },
991
+ "json_render_version": {
992
+ "type": "string"
993
+ },
994
+ "source_event_seq": {
995
+ "type": "integer"
996
+ },
997
+ "sha256": {
998
+ "type": "string"
999
+ },
1000
+ "generated_by": {
1001
+ "type": "object"
1002
+ },
1003
+ "report_paths": {
1004
+ "type": "array",
1005
+ "items": {
1006
+ "type": "string"
1007
+ }
1008
+ }
1009
+ },
1010
+ "required": [
1011
+ "event",
1012
+ "report_schema_version",
1013
+ "catalog_version",
1014
+ "sha256",
1015
+ "generated_by"
1016
+ ]
1017
+ }
1018
+ ]
1019
+ },
1020
+ "stage_skipped": {
1021
+ "allOf": [
1022
+ {
1023
+ "$ref": "#/$defs/envelope"
1024
+ },
1025
+ {
1026
+ "type": "object",
1027
+ "properties": {
1028
+ "event": {
1029
+ "const": "stage_skipped"
1030
+ },
1031
+ "stage": {
1032
+ "type": "string"
1033
+ },
1034
+ "reason_code": {
1035
+ "type": "string"
1036
+ },
1037
+ "detail": {
1038
+ "type": "string"
1039
+ }
1040
+ },
1041
+ "required": [
1042
+ "event",
1043
+ "stage",
1044
+ "cycle",
1045
+ "reason_code"
1046
+ ]
1047
+ }
1048
+ ]
1049
+ },
1050
+ "model_call": {
1051
+ "allOf": [
1052
+ {
1053
+ "$ref": "#/$defs/envelope"
1054
+ },
1055
+ {
1056
+ "type": "object",
1057
+ "properties": {
1058
+ "event": {
1059
+ "const": "model_call"
1060
+ },
1061
+ "duration_sec": {
1062
+ "type": "number"
1063
+ },
1064
+ "error": {
1065
+ "type": [
1066
+ "string",
1067
+ "null"
1068
+ ]
1069
+ }
1070
+ },
1071
+ "required": [
1072
+ "event",
1073
+ "cycle",
1074
+ "inputs",
1075
+ "output"
1076
+ ],
1077
+ "anyOf": [
1078
+ {
1079
+ "required": [
1080
+ "analyzer",
1081
+ "method",
1082
+ "call_index"
1083
+ ]
1084
+ },
1085
+ {
1086
+ "required": [
1087
+ "role",
1088
+ "operation"
1089
+ ]
1090
+ }
1091
+ ]
1092
+ }
1093
+ ]
1094
+ },
1095
+ "diagnose_report": {
1096
+ "allOf": [
1097
+ {
1098
+ "$ref": "#/$defs/envelope"
1099
+ },
1100
+ {
1101
+ "type": "object",
1102
+ "properties": {
1103
+ "event": {
1104
+ "const": "diagnose_report"
1105
+ },
1106
+ "hypotheses": {
1107
+ "type": "array"
1108
+ },
1109
+ "m4_results": {
1110
+ "type": "array"
1111
+ },
1112
+ "discovery": {
1113
+ "type": "array"
1114
+ }
1115
+ },
1116
+ "required": [
1117
+ "event",
1118
+ "cycles",
1119
+ "hypotheses",
1120
+ "m4_results",
1121
+ "discovery"
1122
+ ]
1123
+ }
1124
+ ]
1125
+ },
1126
+ "unrouted": {
1127
+ "allOf": [
1128
+ {
1129
+ "$ref": "#/$defs/envelope"
1130
+ },
1131
+ {
1132
+ "type": "object",
1133
+ "properties": {
1134
+ "event": {
1135
+ "const": "unrouted"
1136
+ },
1137
+ "key": {
1138
+ "type": "string"
1139
+ },
1140
+ "tag": {
1141
+ "type": [
1142
+ "string",
1143
+ "null"
1144
+ ]
1145
+ }
1146
+ },
1147
+ "required": [
1148
+ "event",
1149
+ "key",
1150
+ "tag"
1151
+ ]
1152
+ }
1153
+ ]
1154
+ }
1155
+ },
1156
+ "oneOf": [
1157
+ {
1158
+ "$ref": "#/$defs/run_start"
1159
+ },
1160
+ {
1161
+ "$ref": "#/$defs/probe"
1162
+ },
1163
+ {
1164
+ "$ref": "#/$defs/analysis"
1165
+ },
1166
+ {
1167
+ "$ref": "#/$defs/explore"
1168
+ },
1169
+ {
1170
+ "$ref": "#/$defs/diagnosis"
1171
+ },
1172
+ {
1173
+ "$ref": "#/$defs/surgery"
1174
+ },
1175
+ {
1176
+ "$ref": "#/$defs/experiment"
1177
+ },
1178
+ {
1179
+ "$ref": "#/$defs/fix"
1180
+ },
1181
+ {
1182
+ "$ref": "#/$defs/loop_end"
1183
+ },
1184
+ {
1185
+ "$ref": "#/$defs/tool_codegen"
1186
+ },
1187
+ {
1188
+ "$ref": "#/$defs/tool_registry"
1189
+ },
1190
+ {
1191
+ "$ref": "#/$defs/agent_decision"
1192
+ },
1193
+ {
1194
+ "$ref": "#/$defs/agent_tool"
1195
+ },
1196
+ {
1197
+ "$ref": "#/$defs/case_record"
1198
+ },
1199
+ {
1200
+ "$ref": "#/$defs/report_published"
1201
+ },
1202
+ {
1203
+ "$ref": "#/$defs/stage_skipped"
1204
+ },
1205
+ {
1206
+ "$ref": "#/$defs/model_call"
1207
+ },
1208
+ {
1209
+ "$ref": "#/$defs/diagnose_report"
1210
+ },
1211
+ {
1212
+ "$ref": "#/$defs/unrouted"
1213
+ }
1214
+ ]
1215
+ }