eduevidence 6.0.0 → 6.3.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 (267) hide show
  1. package/CHANGELOG.md +395 -0
  2. package/CONTRIBUTING.md +105 -0
  3. package/README.md +113 -49
  4. package/README.zh-CN.md +39 -12
  5. package/SKILL.md +15 -5
  6. package/assets/readme/landing-tour.gif +0 -0
  7. package/assets/readme/studio-tour.gif +0 -0
  8. package/benchmarks/evidence-library.json +277 -1
  9. package/bin/eduevidence.js +2 -1
  10. package/docs/architecture.md +325 -46
  11. package/docs/demo-workplace-ai.md +1 -1
  12. package/docs/install-guide.md +1 -1
  13. package/docs/j-ev-experimental.md +250 -0
  14. package/docs/orchestration-role-model.md +1 -1
  15. package/docs/release-closeout/README.md +1 -1
  16. package/docs/reproducibility.md +138 -0
  17. package/docs/sciverse-api.md +125 -0
  18. package/domains/_neutral/copy/few_shots.json +21 -0
  19. package/domains/_neutral/copy/framing_lexicon.json +19 -0
  20. package/domains/_neutral/copy/module_labels.json +5 -0
  21. package/domains/_neutral/copy/module_labels_footer.json +102 -0
  22. package/domains/_neutral/copy/module_labels_modules.json +204 -0
  23. package/domains/_neutral/copy/module_labels_nav.json +126 -0
  24. package/domains/_neutral/copy/module_labels_summary.json +98 -0
  25. package/domains/_neutral/copy/module_labels_tables.json +164 -0
  26. package/domains/_neutral/copy/module_labels_v2.json +90 -0
  27. package/domains/_neutral/copy/risk_constructs.json +20 -0
  28. package/domains/_neutral/copy/section_titles.json +66 -0
  29. package/domains/_neutral/copy/terminology.json +11 -0
  30. package/domains/check_copy_packs.py +103 -0
  31. package/domains/education/copy/few_shots.json +22 -0
  32. package/domains/education/copy/framing_enums.json +167 -0
  33. package/domains/education/copy/framing_lexicon.json +166 -0
  34. package/domains/education/copy/module_labels.json +169 -0
  35. package/domains/education/copy/risk_constructs.json +48 -0
  36. package/domains/education/copy/section_titles.json +186 -0
  37. package/domains/education/copy/terminology.json +70 -0
  38. package/domains/education/manifest.json +1 -1
  39. package/domains/education/outcome_taxonomy.json +2 -2
  40. package/domains/manifest.json +1 -1
  41. package/domains/policy/copy/few_shots.json +22 -0
  42. package/domains/policy/copy/framing_enums.json +94 -0
  43. package/domains/policy/copy/framing_lexicon.json +174 -0
  44. package/domains/policy/copy/module_labels.json +168 -0
  45. package/domains/policy/copy/risk_constructs.json +33 -0
  46. package/domains/policy/copy/section_titles.json +186 -0
  47. package/domains/policy/copy/terminology.json +64 -0
  48. package/eduevidence_cli.py +10 -0
  49. package/engine/capabilities.py +57 -5
  50. package/engine/decision_policy.py +167 -0
  51. package/engine/evidence_graph.py +14 -10
  52. package/engine/gaps.py +42 -22
  53. package/engine/ids.py +2 -0
  54. package/engine/library.py +6 -2
  55. package/engine/library_builtin.py +7 -4
  56. package/engine/living.py +34 -4
  57. package/engine/migration.py +88 -3
  58. package/engine/orchestration.py +5 -5
  59. package/engine/paths.py +2 -0
  60. package/engine/pilot.py +34 -32
  61. package/engine/taxonomy.py +211 -0
  62. package/engine/tribunal.py +49 -43
  63. package/engine/versions.py +1 -1
  64. package/examples/ai-coding-assistant-evidence/EduEvidence_Report.html +1361 -147
  65. package/examples/ai-coding-assistant-evidence/artifact_manifest.json +3 -3
  66. package/examples/ai-coding-assistant-evidence/citation_check.json +1 -1
  67. package/examples/ai-coding-assistant-evidence/final_verdict.json +107 -0
  68. package/examples/ai-coding-assistant-evidence/gate_report.json +101 -0
  69. package/examples/ai-coding-assistant-evidence/report_spec.json +23 -12
  70. package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_academic.html +448 -128
  71. package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_claude.html +448 -128
  72. package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_datalab-dark.html +448 -128
  73. package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_datalab.html +448 -128
  74. package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_presentation.html +448 -128
  75. package/examples/ai-coding-assistant-evidence/reports-5themes/report_academic.html +1360 -146
  76. package/examples/ai-coding-assistant-evidence/reports-5themes/report_claude.html +1360 -146
  77. package/examples/ai-coding-assistant-evidence/reports-5themes/report_datalab-dark.html +1360 -146
  78. package/examples/ai-coding-assistant-evidence/reports-5themes/report_datalab.html +1360 -146
  79. package/examples/ai-coding-assistant-evidence/reports-5themes/report_presentation.html +1360 -146
  80. package/examples/ai-coding-assistant-evidence/result.json +13 -9
  81. package/examples/ai-coding-assistant-evidence/result.zh.json +45 -41
  82. package/examples/ai-coding-assistant-evidence/skeptic.json +72 -0
  83. package/examples/ai-coding-assistant-evidence/verdict.json +6 -2
  84. package/examples/spaced-retrieval-practice/EduEvidence_Report.html +2728 -0
  85. package/examples/spaced-retrieval-practice/applicability.json +14 -0
  86. package/examples/spaced-retrieval-practice/artifact_manifest.json +15 -0
  87. package/examples/spaced-retrieval-practice/claims.jsonl +3 -0
  88. package/examples/spaced-retrieval-practice/evidence.jsonl +6 -0
  89. package/examples/spaced-retrieval-practice/final_verdict.json +93 -0
  90. package/examples/spaced-retrieval-practice/frame.json +58 -0
  91. package/examples/spaced-retrieval-practice/gate_report.json +101 -0
  92. package/examples/spaced-retrieval-practice/methodology.json +78 -0
  93. package/examples/spaced-retrieval-practice/report.html +2522 -0
  94. package/examples/spaced-retrieval-practice/report_spec.json +212 -0
  95. package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_academic.html +2728 -0
  96. package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_claude.html +2728 -0
  97. package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_datalab-dark.html +2728 -0
  98. package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_datalab.html +2728 -0
  99. package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_presentation.html +2728 -0
  100. package/examples/spaced-retrieval-practice/reports-5themes/report_academic.html +2728 -0
  101. package/examples/spaced-retrieval-practice/reports-5themes/report_claude.html +2728 -0
  102. package/examples/spaced-retrieval-practice/reports-5themes/report_datalab-dark.html +2728 -0
  103. package/examples/spaced-retrieval-practice/reports-5themes/report_datalab.html +2728 -0
  104. package/examples/spaced-retrieval-practice/reports-5themes/report_presentation.html +2728 -0
  105. package/examples/spaced-retrieval-practice/result.json +942 -0
  106. package/examples/spaced-retrieval-practice/result.zh.json +942 -0
  107. package/examples/spaced-retrieval-practice/skeptic.json +70 -0
  108. package/examples/spaced-retrieval-practice/sources.jsonl +7 -0
  109. package/examples/spaced-retrieval-practice/verdict.json +93 -0
  110. package/examples/workplace-ai-assistant/EduEvidence_Report.html +2814 -0
  111. package/examples/workplace-ai-assistant/artifact_manifest.json +15 -0
  112. package/examples/workplace-ai-assistant/claims.jsonl +4 -4
  113. package/examples/workplace-ai-assistant/evidence.jsonl +4 -4
  114. package/examples/workplace-ai-assistant/evidence_graph.json +15 -15
  115. package/examples/workplace-ai-assistant/final_verdict.json +78 -0
  116. package/examples/workplace-ai-assistant/gate_report.json +101 -0
  117. package/examples/workplace-ai-assistant/report_spec.json +209 -40
  118. package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_academic.html +449 -119
  119. package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_claude.html +449 -119
  120. package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_datalab-dark.html +449 -119
  121. package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_datalab.html +449 -119
  122. package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_presentation.html +449 -119
  123. package/examples/workplace-ai-assistant/reports-5themes/report_academic.html +2814 -0
  124. package/examples/workplace-ai-assistant/reports-5themes/report_claude.html +2814 -0
  125. package/examples/workplace-ai-assistant/reports-5themes/report_datalab-dark.html +2814 -0
  126. package/examples/workplace-ai-assistant/reports-5themes/report_datalab.html +2814 -0
  127. package/examples/workplace-ai-assistant/reports-5themes/report_presentation.html +2814 -0
  128. package/examples/workplace-ai-assistant/result.json +82 -20
  129. package/examples/workplace-ai-assistant/result.zh.json +82 -20
  130. package/examples/workplace-ai-assistant/skeptic.json +72 -0
  131. package/examples/workplace-ai-assistant/verdict.json +36 -10
  132. package/integrations/agent_mcp.py +2 -2
  133. package/integrations/jev/__init__.py +115 -0
  134. package/integrations/jev/approval.py +212 -0
  135. package/integrations/jev/cli.py +84 -0
  136. package/integrations/jev/config.py +112 -0
  137. package/integrations/jev/gateway.py +128 -0
  138. package/integrations/jev/modes.py +38 -0
  139. package/integrations/jev/tools_classify.py +88 -0
  140. package/integrations/jev/tools_extract.py +111 -0
  141. package/integrations/jev/tools_rerank.py +71 -0
  142. package/integrations/jev/tools_screen.py +87 -0
  143. package/integrations/jev/tools_verify.py +95 -0
  144. package/integrations/jev_mcp.py +22 -0
  145. package/integrations/semantic_decide.py +286 -0
  146. package/integrations/semdecide_cli.py +55 -0
  147. package/package.json +19 -2
  148. package/pyproject.toml +4 -3
  149. package/references/report-copy-style.md +107 -0
  150. package/references/retrieval-compliance.md +75 -0
  151. package/references/retrieval-protocol.md +20 -0
  152. package/retrieval/audit.py +27 -3
  153. package/retrieval/fetch.py +96 -0
  154. package/retrieval/sciverse.py +398 -0
  155. package/retrieval/search.py +47 -7
  156. package/schemas/applicability.schema.json +94 -0
  157. package/schemas/chart-spec.schema.json +10 -3
  158. package/schemas/evidence.schema.json +316 -43
  159. package/schemas/fetch-result.schema.json +2 -1
  160. package/schemas/report-result.schema.json +3 -3
  161. package/schemas/report-spec.schema.json +98 -100
  162. package/schemas/skeptic.schema.json +86 -0
  163. package/schemas/source.schema.json +21 -2
  164. package/schemas/v2/decision-snapshot.schema.json +20 -9
  165. package/schemas/v2/finding.schema.json +5 -1
  166. package/schemas/v2/intake.schema.json +191 -0
  167. package/schemas/v2/methodology-audit.schema.json +5 -1
  168. package/schemas/v2/outcome.schema.json +28 -5
  169. package/schemas/v2/study.schema.json +5 -1
  170. package/schemas/vNext/autoevolve-session.schema.json +34 -1
  171. package/schemas/vNext/eval-snapshot.schema.json +77 -1
  172. package/schemas/vNext/execution-plan.schema.json +50 -1
  173. package/schemas/vNext/gap-priority.schema.json +54 -1
  174. package/schemas/vNext/negative-search-record.schema.json +68 -1
  175. package/schemas/vNext/research-iteration.schema.json +87 -1
  176. package/schemas/vNext/research-strategy.schema.json +62 -1
  177. package/schemas/vNext/skill-experiment.schema.json +90 -1
  178. package/schemas/vNext/task-spec.schema.json +156 -1
  179. package/schemas/vNext/worker-result.schema.json +60 -1
  180. package/schemas/verdict.schema.json +164 -28
  181. package/scripts/build_evidence_library.py +15 -5
  182. package/scripts/build_report_variants.py +18 -2
  183. package/scripts/build_result.py +74 -9
  184. package/scripts/check_package_parity.py +85 -0
  185. package/scripts/check_protocol_alignment.py +375 -0
  186. package/scripts/check_versioned_schemas.py +254 -0
  187. package/scripts/claim_audit.py +13 -8
  188. package/scripts/compute_confidence.py +10 -0
  189. package/scripts/dashboard_server.py +13 -2
  190. package/scripts/did_regression.py +12 -2
  191. package/scripts/evidence_score.py +5 -2
  192. package/scripts/intake/__init__.py +31 -0
  193. package/scripts/intake/__main__.py +18 -0
  194. package/scripts/intake/background.py +78 -0
  195. package/scripts/intake/browser.py +79 -0
  196. package/scripts/intake/cli.py +57 -0
  197. package/scripts/intake/constants.py +57 -0
  198. package/scripts/intake/depth.py +53 -0
  199. package/scripts/intake/enhancements.py +106 -0
  200. package/scripts/intake/hooks.py +90 -0
  201. package/scripts/intake/prefs.py +76 -0
  202. package/scripts/intake/prompts.py +85 -0
  203. package/scripts/intake/session.py +152 -0
  204. package/scripts/lint_file_layers.py +126 -0
  205. package/scripts/orchestrator.py +187 -40
  206. package/scripts/pre_verdict_gate.py +241 -29
  207. package/scripts/quickstart.py +18 -2
  208. package/scripts/run_workspace.py +7 -1
  209. package/scripts/skill_lint.py +11 -1
  210. package/scripts/skill_payload.py +6 -3
  211. package/scripts/test_adversarial_empirical.py +96 -25
  212. package/scripts/validate_schema.py +31 -1
  213. package/skill/agents/evaluation-designer.md +20 -4
  214. package/skill/agents/evidence-analyst.md +19 -3
  215. package/skill/agents/evidence-judge.md +98 -8
  216. package/skill/agents/evidence-retriever.md +20 -3
  217. package/skill/agents/intervention-designer.md +20 -4
  218. package/skill/agents/method-reviewer.md +18 -2
  219. package/skill/agents/{education-planner.md → research-planner.md} +19 -3
  220. package/skill/agents/skeptic.md +18 -2
  221. package/skill/roles/registry.yaml +11 -11
  222. package/skill/sub-skills/aihot-trend-analysis/SKILL.md +28 -9
  223. package/skill/sub-skills/contradiction-analysis/SKILL.md +31 -11
  224. package/skill/sub-skills/data-analysis/SKILL.md +34 -15
  225. package/skill/sub-skills/ethics-review/SKILL.md +33 -10
  226. package/skill/sub-skills/evidence-extraction/SKILL.md +29 -11
  227. package/skill/sub-skills/evidence-review/SKILL.md +31 -12
  228. package/skill/sub-skills/gap-analysis/SKILL.md +31 -9
  229. package/skill/sub-skills/literature-review/SKILL.md +35 -14
  230. package/skill/sub-skills/methodology-audit/SKILL.md +29 -12
  231. package/skill/sub-skills/report-generation/SKILL.md +28 -0
  232. package/skill/sub-skills/research-planning/SKILL.md +41 -14
  233. package/skill/sub-skills/study-design/SKILL.md +30 -9
  234. package/skill/task-briefs/adjudicate.md +32 -7
  235. package/skill/task-briefs/applicability.md +37 -2
  236. package/skill/task-briefs/audit.md +32 -7
  237. package/skill/task-briefs/challenge.md +34 -5
  238. package/skill/task-briefs/evaluate.md +30 -5
  239. package/skill/task-briefs/extract.md +31 -8
  240. package/skill/task-briefs/frame.md +39 -10
  241. package/skill/task-briefs/intervene.md +32 -6
  242. package/skill/task-briefs/present.md +32 -8
  243. package/skill/task-briefs/projection.md +36 -2
  244. package/skill/task-briefs/retrieve.md +36 -6
  245. package/skill/workflows/decision-and-pilot.md +76 -1
  246. package/skill/workflows/evaluate-and-update.md +83 -0
  247. package/skill/workflows/evidence-review.md +104 -0
  248. package/skill/workflows/experimental-jev.md +170 -0
  249. package/skill/workflows/intake.md +120 -0
  250. package/visualization/eduevidence-report/scripts/build_figures.py +25 -3
  251. package/visualization/eduevidence-report/scripts/build_infographics.py +37 -15
  252. package/visualization/eduevidence-report/scripts/build_report.py +435 -575
  253. package/visualization/eduevidence-report/scripts/charts_data.py +2 -0
  254. package/visualization/eduevidence-report/scripts/lieflat_engine.py +349 -38
  255. package/visualization/eduevidence-report/scripts/report_copy_pack.py +296 -0
  256. package/visualization/eduevidence-report/scripts/report_copy_policy_guard.py +47 -0
  257. package/visualization/eduevidence-report/scripts/zh_labels.py +141 -1
  258. package/web/architecture.html +14885 -0
  259. package/web/studio/assets/index-B8tkF44Q.css +1 -0
  260. package/web/studio/index.html +2 -2
  261. package/scripts/build_esl_artifacts.py +0 -1921
  262. package/scripts/build_killer_demo.py +0 -295
  263. package/scripts/enrich_projects_human_and_lieflat.py +0 -315
  264. package/scripts/generate_new_projects.py +0 -686
  265. package/scripts/sync_killer_demo_report.py +0 -270
  266. package/web/studio/assets/index-CzXocaGv.css +0 -1
  267. /package/web/studio/assets/{index-pa7jD7n4.js → index-CQ6Keoyc.js} +0 -0
@@ -10,7 +10,11 @@
10
10
  "independence_key", "identity_status", "extensions"
11
11
  ],
12
12
  "properties": {
13
- "study_id": { "type": "string", "pattern": "^(STU-|STUDY-)" },
13
+ "study_id": {
14
+ "type": "string",
15
+ "pattern": "^(ST-|STU-|STUDY-)",
16
+ "description": "Study identity. ST- is the placeholder prefix some legacy/curated packs used before STU-/STUDY-; migration preserves original ids rather than renaming them."
17
+ },
14
18
  "source_ids": {
15
19
  "type": "array",
16
20
  "items": { "type": "string", "pattern": "^(SRC-|S-)" },
@@ -1 +1,34 @@
1
- {"$schema":"http://json-schema.org/draft-07/schema#","type":"object","required":["session_id","status","max_experiments","promotion","experiments"],"properties":{"session_id":{"type":"string"},"status":{"enum":["initialized","running","plateau","budget_exhausted","completed","blocked"]},"max_experiments":{"type":"integer","minimum":1,"maximum":50},"max_cost_usd":{"type":"number","minimum":0},"max_wall_minutes":{"type":"integer","minimum":1},"promotion":{"const":"branch_only"},"experiments":{"type":"array","items":{"type":"string"}},"best_experiment_id":{"type":["string","null"]},"protected_integrity":{"type":"boolean"}},"additionalProperties":false}
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://github.com/37chengshan/eduevidence/schemas/vNext/autoevolve-session.schema.json",
4
+ "title": "AutoevolveSessionReport",
5
+ "description": "Daily self-evolution session report (engine/autoevolve/runner.py -> state_root/daily-report.json). Records one bounded branch-only session: how many experiments ran, their promotion statuses, the stopping reason, cost and wall time, and whether runner-owned isolation was verified. Automatic KEEP requires verified OS isolation; evaluator self-attestation is ignored.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "run_tag", "branch", "experiments", "statuses", "cost", "wall_minutes",
10
+ "plateau", "stop_reason", "promotion", "holdout_isolation_verified", "mutation_view"
11
+ ],
12
+ "properties": {
13
+ "run_tag": {"type": "string", "minLength": 1, "description": "Session tag; also the SkillExperiment.session_id of every experiment in this session."},
14
+ "branch": {"type": "string", "minLength": 1, "description": "Branch the session ran on. Promotion is branch-only."},
15
+ "experiments": {"type": "integer", "minimum": 0, "description": "Number of experiments attempted."},
16
+ "statuses": {"type": "array", "items": {"enum": ["created", "KEEP", "REJECT", "RETEST", "HUMAN_REVIEW", "CRASH", "INVALID"]}, "description": "Per-experiment promotion verdict, in attempt order."},
17
+ "best_experiment_id": {"type": ["string", "null"]},
18
+ "best_candidate_commit": {"type": ["string", "null"]},
19
+ "cost": {"type": "number", "minimum": 0, "description": "Cumulative session cost in USD, as reported by the agent and evaluator."},
20
+ "wall_minutes": {"type": "number", "minimum": 0},
21
+ "plateau": {"type": "boolean"},
22
+ "stop_reason": {"type": "string", "minLength": 1, "description": "Why the loop stopped (for example budget_exhausted, plateau, completed)."},
23
+ "promotion": {"const": "branch_only", "description": "Daily mode never promotes directly; KEEP only marks a candidate branch."},
24
+ "branch_push_requested": {"type": "boolean"},
25
+ "branch_pushed": {"type": "boolean"},
26
+ "mutation_view": {"type": "string", "minLength": 1, "description": "Isolation actually used for the mutation view."},
27
+ "holdout_isolation_verified": {"type": "boolean", "description": "Runner-owned OS isolation verification. Automatic KEEP requires true."},
28
+ "isolation_provider": {"type": "string"},
29
+ "isolation_reason": {"type": "string"},
30
+ "eval_suite_hash": {"type": "string", "description": "Trusted evaluation suite hash captured before the session; a mid-session change invalidates the experiment."},
31
+ "security_note": {"type": "string"},
32
+ "candidate_artifacts": {"type": "string", "description": "Where candidate artifacts live; local session state is never auto-pushed."}
33
+ }
34
+ }
@@ -1 +1,77 @@
1
- {"$schema":"http://json-schema.org/draft-07/schema#","type":"object","required":["eval_id","hard_gates_passed","science_score","research_score","robustness","cost","latency","complexity","repeats","noise_floor","dev_passed","holdout_passed","adversarial_passed","holdout_isolation_verified","eval_suite_hash"],"properties":{"eval_id":{"type":"string"},"hard_gates_passed":{"type":"boolean"},"science_score":{"type":"number"},"research_score":{"type":"number"},"robustness":{"type":"number"},"cost":{"type":"number","minimum":0},"latency":{"type":"number","minimum":0},"complexity":{"type":"number","minimum":0},"repeats":{"type":"integer","minimum":1},"noise_floor":{"type":"number","minimum":0},"dev_passed":{"type":"boolean"},"holdout_passed":{"type":"boolean"},"adversarial_passed":{"type":"boolean"},"holdout_isolation_verified":{"type":"boolean"},"eval_suite_hash":{"type":"string","minLength":1}},"additionalProperties":false}
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "EvalSnapshot",
4
+ "description": "The measurement record for one self-evolution candidate (engine/autoevolve/core.py). Carries gate outcomes, science/research scores, robustness, cost, latency, repeats and the trusted eval-suite hash. Runner-owned snapshots ignore evaluator self-attestation; a mid-session suite-hash change invalidates the experiment.",
5
+ "type": "object",
6
+ "required": [
7
+ "eval_id",
8
+ "hard_gates_passed",
9
+ "science_score",
10
+ "research_score",
11
+ "robustness",
12
+ "cost",
13
+ "latency",
14
+ "complexity",
15
+ "repeats",
16
+ "noise_floor",
17
+ "dev_passed",
18
+ "holdout_passed",
19
+ "adversarial_passed",
20
+ "holdout_isolation_verified",
21
+ "eval_suite_hash"
22
+ ],
23
+ "properties": {
24
+ "eval_id": {
25
+ "type": "string"
26
+ },
27
+ "hard_gates_passed": {
28
+ "type": "boolean"
29
+ },
30
+ "science_score": {
31
+ "type": "number"
32
+ },
33
+ "research_score": {
34
+ "type": "number"
35
+ },
36
+ "robustness": {
37
+ "type": "number"
38
+ },
39
+ "cost": {
40
+ "type": "number",
41
+ "minimum": 0
42
+ },
43
+ "latency": {
44
+ "type": "number",
45
+ "minimum": 0
46
+ },
47
+ "complexity": {
48
+ "type": "number",
49
+ "minimum": 0
50
+ },
51
+ "repeats": {
52
+ "type": "integer",
53
+ "minimum": 1
54
+ },
55
+ "noise_floor": {
56
+ "type": "number",
57
+ "minimum": 0
58
+ },
59
+ "dev_passed": {
60
+ "type": "boolean"
61
+ },
62
+ "holdout_passed": {
63
+ "type": "boolean"
64
+ },
65
+ "adversarial_passed": {
66
+ "type": "boolean"
67
+ },
68
+ "holdout_isolation_verified": {
69
+ "type": "boolean"
70
+ },
71
+ "eval_suite_hash": {
72
+ "type": "string",
73
+ "minLength": 1
74
+ }
75
+ },
76
+ "additionalProperties": false
77
+ }
@@ -1 +1,50 @@
1
- {"$schema":"http://json-schema.org/draft-07/schema#","type":"object","required":["complexity","tasks","max_parallel_workers","parallel_groups","plan_id"],"properties":{"complexity":{"enum":["S","M","L"]},"tasks":{"type":"array","items":{"$ref":"task-spec.schema.json"}},"max_parallel_workers":{"type":"integer","minimum":0,"maximum":6},"parallel_groups":{"type":"array","items":{"type":"array","minItems":1,"items":{"type":"string"}}},"plan_id":{"type":["string","null"]}},"additionalProperties":false}
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "ExecutionPlan",
4
+ "description": "The plan for one research run (engine/orchestration.py ExecutionPlanner.plan). Complexity level, the ordered TaskSpecs, the maximum parallel workers and the parallel groups; S delegates zero tasks, M and L are capped by policy. scripts/check_autoresearch_invariants.py enforces those caps.",
5
+ "type": "object",
6
+ "required": [
7
+ "complexity",
8
+ "tasks",
9
+ "max_parallel_workers",
10
+ "parallel_groups",
11
+ "plan_id"
12
+ ],
13
+ "properties": {
14
+ "complexity": {
15
+ "enum": [
16
+ "S",
17
+ "M",
18
+ "L"
19
+ ]
20
+ },
21
+ "tasks": {
22
+ "type": "array",
23
+ "items": {
24
+ "$ref": "task-spec.schema.json"
25
+ }
26
+ },
27
+ "max_parallel_workers": {
28
+ "type": "integer",
29
+ "minimum": 0,
30
+ "maximum": 6
31
+ },
32
+ "parallel_groups": {
33
+ "type": "array",
34
+ "items": {
35
+ "type": "array",
36
+ "minItems": 1,
37
+ "items": {
38
+ "type": "string"
39
+ }
40
+ }
41
+ },
42
+ "plan_id": {
43
+ "type": [
44
+ "string",
45
+ "null"
46
+ ]
47
+ }
48
+ },
49
+ "additionalProperties": false
50
+ }
@@ -1 +1,54 @@
1
- {"$schema":"http://json-schema.org/draft-07/schema#","type":"object","required":["gap_id","dvi_band","cost_band","decision_material","drivers","next_research_mode","score"],"properties":{"gap_id":{"type":"string"},"dvi_band":{"enum":["HIGH","MEDIUM","LOW"]},"cost_band":{"enum":["HIGH","MEDIUM","LOW"]},"decision_material":{"type":"boolean"},"drivers":{"type":"array","items":{"type":"string"}},"next_research_mode":{"enum":["secondary_evidence_search","defer","empirical_evidence_needed"]},"score":{"type":"integer"}},"additionalProperties":false}
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "GapPriority",
4
+ "description": "Ranking of one knowledge gap for research attention (engine/autoresearch/gap_priority.py). Combines decision sensitivity, current uncertainty, directness deficit, applicability, availability and risk minus cost into a score, and names the next research mode. Produced by controllers.select_gap(), not by an LLM.",
5
+ "type": "object",
6
+ "required": [
7
+ "gap_id",
8
+ "dvi_band",
9
+ "cost_band",
10
+ "decision_material",
11
+ "drivers",
12
+ "next_research_mode",
13
+ "score"
14
+ ],
15
+ "properties": {
16
+ "gap_id": {
17
+ "type": "string"
18
+ },
19
+ "dvi_band": {
20
+ "enum": [
21
+ "HIGH",
22
+ "MEDIUM",
23
+ "LOW"
24
+ ]
25
+ },
26
+ "cost_band": {
27
+ "enum": [
28
+ "HIGH",
29
+ "MEDIUM",
30
+ "LOW"
31
+ ]
32
+ },
33
+ "decision_material": {
34
+ "type": "boolean"
35
+ },
36
+ "drivers": {
37
+ "type": "array",
38
+ "items": {
39
+ "type": "string"
40
+ }
41
+ },
42
+ "next_research_mode": {
43
+ "enum": [
44
+ "secondary_evidence_search",
45
+ "defer",
46
+ "empirical_evidence_needed"
47
+ ]
48
+ },
49
+ "score": {
50
+ "type": "integer"
51
+ }
52
+ },
53
+ "additionalProperties": false
54
+ }
@@ -1 +1,68 @@
1
- {"$schema":"http://json-schema.org/draft-07/schema#","type":"object","required":["negative_search_id","research_iteration_id","gap_id","queries","providers","candidate_count","fetched_count","eligible_count","conclusion"],"properties":{"negative_search_id":{"type":"string"},"research_iteration_id":{"type":"string"},"gap_id":{"type":"string"},"queries":{"type":"array","items":{"type":"string"}},"providers":{"type":"array","items":{"type":"string"}},"candidate_count":{"type":"integer","minimum":0},"fetched_count":{"type":"integer","minimum":0},"eligible_count":{"const":0},"exclusion_reasons":{"type":"object","additionalProperties":{"type":"integer","minimum":0}},"scope":{"type":"object"},"searched_at":{"type":"string"},"conclusion":{"const":"no_eligible_evidence_found_within_search_scope"}},"additionalProperties":false}
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "NegativeSearchRecord",
4
+ "description": "A search that legitimately returned nothing usable (engine/autoresearch/contracts.py NegativeSearchRecord). Zero-result searches are recorded rather than discarded: without them, absence of evidence is indistinguishable from failure to look, and retrieval saturation cannot be judged. Written by ResearchMemory.append_negative_search().",
5
+ "type": "object",
6
+ "required": [
7
+ "negative_search_id",
8
+ "research_iteration_id",
9
+ "gap_id",
10
+ "queries",
11
+ "providers",
12
+ "candidate_count",
13
+ "fetched_count",
14
+ "eligible_count",
15
+ "conclusion"
16
+ ],
17
+ "properties": {
18
+ "negative_search_id": {
19
+ "type": "string"
20
+ },
21
+ "research_iteration_id": {
22
+ "type": "string"
23
+ },
24
+ "gap_id": {
25
+ "type": "string"
26
+ },
27
+ "queries": {
28
+ "type": "array",
29
+ "items": {
30
+ "type": "string"
31
+ }
32
+ },
33
+ "providers": {
34
+ "type": "array",
35
+ "items": {
36
+ "type": "string"
37
+ }
38
+ },
39
+ "candidate_count": {
40
+ "type": "integer",
41
+ "minimum": 0
42
+ },
43
+ "fetched_count": {
44
+ "type": "integer",
45
+ "minimum": 0
46
+ },
47
+ "eligible_count": {
48
+ "const": 0
49
+ },
50
+ "exclusion_reasons": {
51
+ "type": "object",
52
+ "additionalProperties": {
53
+ "type": "integer",
54
+ "minimum": 0
55
+ }
56
+ },
57
+ "scope": {
58
+ "type": "object"
59
+ },
60
+ "searched_at": {
61
+ "type": "string"
62
+ },
63
+ "conclusion": {
64
+ "const": "no_eligible_evidence_found_within_search_scope"
65
+ }
66
+ },
67
+ "additionalProperties": false
68
+ }
@@ -1 +1,87 @@
1
- {"$schema":"http://json-schema.org/draft-07/schema#","type":"object","required":["iteration_id","project_id","base_graph_revision","gap_id","strategy","status"],"properties":{"iteration_id":{"type":"string"},"project_id":{"type":"string"},"base_graph_revision":{"type":"integer","minimum":0},"gap_id":{"type":"string"},"gap_lineage_key":{"type":["string","null"],"pattern":"^KGK-"},"strategy":{"type":"object"},"validated_evidence_ids":{"type":"array","items":{"type":"string"}},"negative_search_ids":{"type":"array","items":{"type":"string"}},"evidence_gain":{"type":"object"},"new_graph_revision":{"type":["integer","null"]},"decision_snapshot_id":{"type":["string","null"]},"status":{"enum":["completed_gain","completed_no_gain","search_saturated","empirical_needed","budget_exhausted","tool_failure","invalid"]},"started_at":{"type":"string"},"completed_at":{"type":["string","null"]}},"additionalProperties":true}
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "ResearchIteration",
4
+ "description": "One autoresearch loop iteration (engine/autoresearch/contracts.py ResearchIteration, persisted by ResearchMemory.append_iteration). Records which knowledge gap was attacked, the strategy and budget used, what was retrieved and validated, whether a new GraphRevision was created, and how the loop stopped. Written by scripts/research_auto_cli.py.",
5
+ "type": "object",
6
+ "required": [
7
+ "iteration_id",
8
+ "project_id",
9
+ "base_graph_revision",
10
+ "gap_id",
11
+ "strategy",
12
+ "status"
13
+ ],
14
+ "properties": {
15
+ "iteration_id": {
16
+ "type": "string"
17
+ },
18
+ "project_id": {
19
+ "type": "string"
20
+ },
21
+ "base_graph_revision": {
22
+ "type": "integer",
23
+ "minimum": 0
24
+ },
25
+ "gap_id": {
26
+ "type": "string"
27
+ },
28
+ "gap_lineage_key": {
29
+ "type": [
30
+ "string",
31
+ "null"
32
+ ],
33
+ "pattern": "^KGK-"
34
+ },
35
+ "strategy": {
36
+ "type": "object"
37
+ },
38
+ "validated_evidence_ids": {
39
+ "type": "array",
40
+ "items": {
41
+ "type": "string"
42
+ }
43
+ },
44
+ "negative_search_ids": {
45
+ "type": "array",
46
+ "items": {
47
+ "type": "string"
48
+ }
49
+ },
50
+ "evidence_gain": {
51
+ "type": "object"
52
+ },
53
+ "new_graph_revision": {
54
+ "type": [
55
+ "integer",
56
+ "null"
57
+ ]
58
+ },
59
+ "decision_snapshot_id": {
60
+ "type": [
61
+ "string",
62
+ "null"
63
+ ]
64
+ },
65
+ "status": {
66
+ "enum": [
67
+ "completed_gain",
68
+ "completed_no_gain",
69
+ "search_saturated",
70
+ "empirical_needed",
71
+ "budget_exhausted",
72
+ "tool_failure",
73
+ "invalid"
74
+ ]
75
+ },
76
+ "started_at": {
77
+ "type": "string"
78
+ },
79
+ "completed_at": {
80
+ "type": [
81
+ "string",
82
+ "null"
83
+ ]
84
+ }
85
+ },
86
+ "additionalProperties": true
87
+ }
@@ -1 +1,62 @@
1
- {"$schema":"http://json-schema.org/draft-07/schema#","type":"object","required":["strategy_id","experiment_type","hypothesis","expected_gain","budget"],"properties":{"strategy_id":{"type":"string","minLength":1},"experiment_type":{"enum":["TARGETED_RETRIEVAL","COUNTER_EVIDENCE_RETRIEVAL","APPLICABILITY_RETRIEVAL","TEMPORAL_REFRESH","CITATION_CHAINING","SCREENING_PRIORITY","SOURCE_RECOVERY"]},"hypothesis":{"type":"string","minLength":1},"expected_gain":{"type":"string","minLength":1},"budget":{"type":"object","required":["max_queries","max_candidates","max_fulltext_fetches"],"properties":{"max_queries":{"type":"integer","minimum":0},"max_candidates":{"type":"integer","minimum":0},"max_fulltext_fetches":{"type":"integer","minimum":0}},"additionalProperties":false}},"additionalProperties":false}
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "ResearchStrategy",
4
+ "description": "The planned attack on one knowledge gap (engine/autoresearch/contracts.py ResearchStrategy). Names the experiment type, the hypothesis it tests, the expected gain, and the research budget. strategy_id/hypothesis/expected_gain are required by ResearchStrategy.validate().",
5
+ "type": "object",
6
+ "required": [
7
+ "strategy_id",
8
+ "experiment_type",
9
+ "hypothesis",
10
+ "expected_gain",
11
+ "budget"
12
+ ],
13
+ "properties": {
14
+ "strategy_id": {
15
+ "type": "string",
16
+ "minLength": 1
17
+ },
18
+ "experiment_type": {
19
+ "enum": [
20
+ "TARGETED_RETRIEVAL",
21
+ "COUNTER_EVIDENCE_RETRIEVAL",
22
+ "APPLICABILITY_RETRIEVAL",
23
+ "TEMPORAL_REFRESH",
24
+ "CITATION_CHAINING",
25
+ "SCREENING_PRIORITY",
26
+ "SOURCE_RECOVERY"
27
+ ]
28
+ },
29
+ "hypothesis": {
30
+ "type": "string",
31
+ "minLength": 1
32
+ },
33
+ "expected_gain": {
34
+ "type": "string",
35
+ "minLength": 1
36
+ },
37
+ "budget": {
38
+ "type": "object",
39
+ "required": [
40
+ "max_queries",
41
+ "max_candidates",
42
+ "max_fulltext_fetches"
43
+ ],
44
+ "properties": {
45
+ "max_queries": {
46
+ "type": "integer",
47
+ "minimum": 0
48
+ },
49
+ "max_candidates": {
50
+ "type": "integer",
51
+ "minimum": 0
52
+ },
53
+ "max_fulltext_fetches": {
54
+ "type": "integer",
55
+ "minimum": 0
56
+ }
57
+ },
58
+ "additionalProperties": false
59
+ }
60
+ },
61
+ "additionalProperties": false
62
+ }
@@ -1 +1,90 @@
1
- {"$schema":"http://json-schema.org/draft-07/schema#","type":"object","required":["experiment_id","session_id","parent_skill_revision","hypothesis","mutation_scope","status"],"properties":{"experiment_id":{"type":"string"},"session_id":{"type":"string"},"parent_skill_revision":{"type":"string"},"hypothesis":{"type":"string","minLength":1},"mutation_scope":{"type":"array","items":{"type":"string"},"minItems":1},"changed_files":{"type":"array","items":{"type":"string"}},"candidate_commit":{"type":["string","null"]},"baseline_eval_id":{"type":["string","null"]},"candidate_eval_id":{"type":["string","null"]},"protected_hash_before":{"type":["string","null"]},"protected_hash_after":{"type":["string","null"]},"status":{"enum":["created","KEEP","REJECT","RETEST","HUMAN_REVIEW","CRASH","INVALID"]},"promotion_reason":{"type":"string"},"complexity_delta":{"type":"number"}},"additionalProperties":false}
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "SkillExperiment",
4
+ "description": "One bounded self-evolution experiment (engine/autoevolve/core.py). Pairs a hypothesis and mutation scope with the baseline and candidate evaluation ids and the protected-tree hashes before and after, then records the promotion verdict. Automatic KEEP requires runner-owned isolation and an intact protected tree.",
5
+ "type": "object",
6
+ "required": [
7
+ "experiment_id",
8
+ "session_id",
9
+ "parent_skill_revision",
10
+ "hypothesis",
11
+ "mutation_scope",
12
+ "status"
13
+ ],
14
+ "properties": {
15
+ "experiment_id": {
16
+ "type": "string"
17
+ },
18
+ "session_id": {
19
+ "type": "string"
20
+ },
21
+ "parent_skill_revision": {
22
+ "type": "string"
23
+ },
24
+ "hypothesis": {
25
+ "type": "string",
26
+ "minLength": 1
27
+ },
28
+ "mutation_scope": {
29
+ "type": "array",
30
+ "items": {
31
+ "type": "string"
32
+ },
33
+ "minItems": 1
34
+ },
35
+ "changed_files": {
36
+ "type": "array",
37
+ "items": {
38
+ "type": "string"
39
+ }
40
+ },
41
+ "candidate_commit": {
42
+ "type": [
43
+ "string",
44
+ "null"
45
+ ]
46
+ },
47
+ "baseline_eval_id": {
48
+ "type": [
49
+ "string",
50
+ "null"
51
+ ]
52
+ },
53
+ "candidate_eval_id": {
54
+ "type": [
55
+ "string",
56
+ "null"
57
+ ]
58
+ },
59
+ "protected_hash_before": {
60
+ "type": [
61
+ "string",
62
+ "null"
63
+ ]
64
+ },
65
+ "protected_hash_after": {
66
+ "type": [
67
+ "string",
68
+ "null"
69
+ ]
70
+ },
71
+ "status": {
72
+ "enum": [
73
+ "created",
74
+ "KEEP",
75
+ "REJECT",
76
+ "RETEST",
77
+ "HUMAN_REVIEW",
78
+ "CRASH",
79
+ "INVALID"
80
+ ]
81
+ },
82
+ "promotion_reason": {
83
+ "type": "string"
84
+ },
85
+ "complexity_delta": {
86
+ "type": "number"
87
+ }
88
+ },
89
+ "additionalProperties": false
90
+ }