eduevidence 5.2.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 (312) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +506 -0
  3. package/README.zh-CN.md +434 -0
  4. package/SKILL.md +195 -0
  5. package/bin/eduevidence.js +127 -0
  6. package/domains/education/manifest.json +183 -0
  7. package/domains/education/outcome_taxonomy.json +127 -0
  8. package/domains/manifest.json +26 -0
  9. package/domains/policy/frame.schema.json +234 -0
  10. package/domains/policy/manifest.json +10 -0
  11. package/domains/policy/methodology_checklist.json +109 -0
  12. package/domains/policy/outcome_taxonomy.json +53 -0
  13. package/domains/policy/references/causal-identification.md +45 -0
  14. package/domains/policy/references/cost-evidence.md +44 -0
  15. package/domains/policy/references/equity.md +42 -0
  16. package/domains/policy/references/evidence-hierarchy.md +41 -0
  17. package/domains/policy/references/implementation-evidence.md +47 -0
  18. package/eduevidence_cli.py +26 -0
  19. package/engine/__init__.py +11 -0
  20. package/engine/__pycache__/__init__.cpython-312.pyc +0 -0
  21. package/engine/__pycache__/analysis.cpython-312.pyc +0 -0
  22. package/engine/__pycache__/bias.cpython-312.pyc +0 -0
  23. package/engine/__pycache__/briefs.cpython-312.pyc +0 -0
  24. package/engine/__pycache__/capabilities.cpython-312.pyc +0 -0
  25. package/engine/__pycache__/citation_check.cpython-312.pyc +0 -0
  26. package/engine/__pycache__/contracts.cpython-312.pyc +0 -0
  27. package/engine/__pycache__/datasets.cpython-312.pyc +0 -0
  28. package/engine/__pycache__/events.cpython-312.pyc +0 -0
  29. package/engine/__pycache__/evidence_graph.cpython-312.pyc +0 -0
  30. package/engine/__pycache__/evidence_review.cpython-312.pyc +0 -0
  31. package/engine/__pycache__/evidencecore.cpython-312.pyc +0 -0
  32. package/engine/__pycache__/gap_lens.cpython-312.pyc +0 -0
  33. package/engine/__pycache__/gaps.cpython-312.pyc +0 -0
  34. package/engine/__pycache__/graph_store.cpython-312.pyc +0 -0
  35. package/engine/__pycache__/graph_validate.cpython-312.pyc +0 -0
  36. package/engine/__pycache__/ids.cpython-312.pyc +0 -0
  37. package/engine/__pycache__/library.cpython-312.pyc +0 -0
  38. package/engine/__pycache__/library_builtin.cpython-312.pyc +0 -0
  39. package/engine/__pycache__/living.cpython-312.pyc +0 -0
  40. package/engine/__pycache__/log.cpython-312.pyc +0 -0
  41. package/engine/__pycache__/meta_analysis.cpython-312.pyc +0 -0
  42. package/engine/__pycache__/meta_synthesis.cpython-312.pyc +0 -0
  43. package/engine/__pycache__/migration.cpython-312.pyc +0 -0
  44. package/engine/__pycache__/mode_router.cpython-312.pyc +0 -0
  45. package/engine/__pycache__/paths.cpython-312.pyc +0 -0
  46. package/engine/__pycache__/pilot.cpython-312.pyc +0 -0
  47. package/engine/__pycache__/planner.cpython-312.pyc +0 -0
  48. package/engine/__pycache__/project.cpython-312.pyc +0 -0
  49. package/engine/__pycache__/projections.cpython-312.pyc +0 -0
  50. package/engine/__pycache__/robustness.cpython-312.pyc +0 -0
  51. package/engine/__pycache__/run.cpython-312.pyc +0 -0
  52. package/engine/__pycache__/semantics.cpython-312.pyc +0 -0
  53. package/engine/__pycache__/study_design.cpython-312.pyc +0 -0
  54. package/engine/__pycache__/synthesis.cpython-312.pyc +0 -0
  55. package/engine/__pycache__/tribunal.cpython-312.pyc +0 -0
  56. package/engine/__pycache__/update.cpython-312.pyc +0 -0
  57. package/engine/__pycache__/versions.cpython-312.pyc +0 -0
  58. package/engine/analysis.py +308 -0
  59. package/engine/bias.py +178 -0
  60. package/engine/briefs.py +106 -0
  61. package/engine/capabilities.py +99 -0
  62. package/engine/citation_check.py +192 -0
  63. package/engine/contracts.py +117 -0
  64. package/engine/datasets.py +165 -0
  65. package/engine/events.py +67 -0
  66. package/engine/evidence_graph.py +571 -0
  67. package/engine/evidence_review.py +88 -0
  68. package/engine/evidencecore.py +182 -0
  69. package/engine/gap_lens.py +132 -0
  70. package/engine/gaps.py +169 -0
  71. package/engine/graph_store.py +335 -0
  72. package/engine/graph_validate.py +87 -0
  73. package/engine/ids.py +77 -0
  74. package/engine/library.py +268 -0
  75. package/engine/library_builtin.py +301 -0
  76. package/engine/living.py +671 -0
  77. package/engine/log.py +39 -0
  78. package/engine/meta_analysis.py +333 -0
  79. package/engine/meta_synthesis.py +111 -0
  80. package/engine/migration.py +397 -0
  81. package/engine/mode_router.py +72 -0
  82. package/engine/paths.py +15 -0
  83. package/engine/pilot.py +368 -0
  84. package/engine/planner.py +126 -0
  85. package/engine/project.py +118 -0
  86. package/engine/projections.py +240 -0
  87. package/engine/robustness.py +109 -0
  88. package/engine/run.py +85 -0
  89. package/engine/semantics.py +135 -0
  90. package/engine/study_design.py +87 -0
  91. package/engine/synthesis.py +187 -0
  92. package/engine/tribunal.py +408 -0
  93. package/engine/update.py +113 -0
  94. package/engine/versions.py +12 -0
  95. package/install.sh +510 -0
  96. package/integrations/__init__.py +1 -0
  97. package/integrations/__pycache__/__init__.cpython-312.pyc +0 -0
  98. package/integrations/__pycache__/agent_mcp.cpython-312.pyc +0 -0
  99. package/integrations/__pycache__/smart_web_fetch.cpython-312.pyc +0 -0
  100. package/integrations/agent_mcp.py +856 -0
  101. package/integrations/smart_web_fetch.py +59 -0
  102. package/package.json +50 -0
  103. package/pyproject.toml +55 -0
  104. package/references/applicability-policy.md +88 -0
  105. package/references/education-framing.md +132 -0
  106. package/references/effect_size_formulas.md +35 -0
  107. package/references/evaluation-design.md +111 -0
  108. package/references/evidence-quality.md +79 -0
  109. package/references/grade_framework.md +29 -0
  110. package/references/intervention-design.md +98 -0
  111. package/references/methodology-audit.md +103 -0
  112. package/references/outcome-taxonomy.md +106 -0
  113. package/references/retrieval-protocol.md +142 -0
  114. package/references/skeptic-protocol.md +93 -0
  115. package/references/social_science_pitfalls.md +48 -0
  116. package/references/source-validity.md +140 -0
  117. package/references/tribunal-policy.md +112 -0
  118. package/references/wwc_standards.md +29 -0
  119. package/retrieval/__init__.py +1 -0
  120. package/retrieval/__pycache__/__init__.cpython-312.pyc +0 -0
  121. package/retrieval/__pycache__/corpus_store.cpython-312.pyc +0 -0
  122. package/retrieval/__pycache__/dedupe.cpython-312.pyc +0 -0
  123. package/retrieval/__pycache__/failures.cpython-312.pyc +0 -0
  124. package/retrieval/__pycache__/fetch.cpython-312.pyc +0 -0
  125. package/retrieval/__pycache__/search.cpython-312.pyc +0 -0
  126. package/retrieval/__pycache__/source.cpython-312.pyc +0 -0
  127. package/retrieval/__pycache__/validate.cpython-312.pyc +0 -0
  128. package/retrieval/corpus_store.py +181 -0
  129. package/retrieval/dedupe.py +127 -0
  130. package/retrieval/failures.py +90 -0
  131. package/retrieval/fetch.py +435 -0
  132. package/retrieval/search.py +493 -0
  133. package/retrieval/source.py +160 -0
  134. package/retrieval/validate.py +257 -0
  135. package/schemas/agent-mcp-approval.schema.json +57 -0
  136. package/schemas/chart-spec.schema.json +88 -0
  137. package/schemas/cross-model-review.schema.json +28 -0
  138. package/schemas/education-frame.schema.json +106 -0
  139. package/schemas/evaluation.schema.json +35 -0
  140. package/schemas/evidence.schema.json +81 -0
  141. package/schemas/fetch-result.schema.json +119 -0
  142. package/schemas/intervention.schema.json +46 -0
  143. package/schemas/methodology.schema.json +102 -0
  144. package/schemas/report-result.schema.json +381 -0
  145. package/schemas/report-spec.schema.json +130 -0
  146. package/schemas/source.schema.json +311 -0
  147. package/schemas/v2/analysis-plan.schema.json +28 -0
  148. package/schemas/v2/analysis-run.schema.json +33 -0
  149. package/schemas/v2/claim.schema.json +26 -0
  150. package/schemas/v2/dataset-asset.schema.json +40 -0
  151. package/schemas/v2/decision-snapshot.schema.json +53 -0
  152. package/schemas/v2/evidence-link.schema.json +38 -0
  153. package/schemas/v2/finding.schema.json +47 -0
  154. package/schemas/v2/graph-revision.schema.json +30 -0
  155. package/schemas/v2/knowledge-gap.schema.json +40 -0
  156. package/schemas/v2/methodology-audit.schema.json +30 -0
  157. package/schemas/v2/outcome.schema.json +18 -0
  158. package/schemas/v2/project.schema.json +31 -0
  159. package/schemas/v2/research-intent.schema.json +24 -0
  160. package/schemas/v2/run.schema.json +43 -0
  161. package/schemas/v2/source.schema.json +24 -0
  162. package/schemas/v2/study-design.schema.json +67 -0
  163. package/schemas/v2/study.schema.json +37 -0
  164. package/schemas/v3/pilot-outcome.schema.json +132 -0
  165. package/schemas/v3/run-manifest.schema.json +193 -0
  166. package/schemas/v3/synthesis.schema.json +86 -0
  167. package/schemas/v4/drift-report.schema.json +66 -0
  168. package/schemas/v4/evidence-library.schema.json +42 -0
  169. package/schemas/v4/living-subscription.schema.json +55 -0
  170. package/schemas/v4/meta-analysis.schema.json +152 -0
  171. package/schemas/verdict.schema.json +56 -0
  172. package/scripts/__init__.py +0 -0
  173. package/scripts/__pycache__/__init__.cpython-312.pyc +0 -0
  174. package/scripts/__pycache__/benchmark.cpython-312.pyc +0 -0
  175. package/scripts/__pycache__/benchmark_evaluator.cpython-312.pyc +0 -0
  176. package/scripts/__pycache__/benchmark_judge.cpython-312.pyc +0 -0
  177. package/scripts/__pycache__/benchmark_routing.cpython-312.pyc +0 -0
  178. package/scripts/__pycache__/benchmark_v2.cpython-312.pyc +0 -0
  179. package/scripts/__pycache__/benchmark_v3.cpython-312.pyc +0 -0
  180. package/scripts/__pycache__/build_result.cpython-312.pyc +0 -0
  181. package/scripts/__pycache__/claim_audit.cpython-312.pyc +0 -0
  182. package/scripts/__pycache__/complexity_gate.cpython-312.pyc +0 -0
  183. package/scripts/__pycache__/compute_confidence.cpython-312.pyc +0 -0
  184. package/scripts/__pycache__/dashboard_server.cpython-312.pyc +0 -0
  185. package/scripts/__pycache__/did_regression.cpython-312.pyc +0 -0
  186. package/scripts/__pycache__/effect_calculator.cpython-312.pyc +0 -0
  187. package/scripts/__pycache__/evidence_matrix.cpython-312.pyc +0 -0
  188. package/scripts/__pycache__/evidence_score.cpython-312.pyc +0 -0
  189. package/scripts/__pycache__/evidence_semantics.cpython-312.pyc +0 -0
  190. package/scripts/__pycache__/fetch_benchmark.cpython-312.pyc +0 -0
  191. package/scripts/__pycache__/lint_report_layout.cpython-312.pyc +0 -0
  192. package/scripts/__pycache__/orchestrator.cpython-312.pyc +0 -0
  193. package/scripts/__pycache__/pre_verdict_gate.cpython-312.pyc +0 -0
  194. package/scripts/__pycache__/recompute_demo_quality.cpython-312.pyc +0 -0
  195. package/scripts/__pycache__/render_report.cpython-312.pyc +0 -0
  196. package/scripts/__pycache__/render_report_html.cpython-312.pyc +0 -0
  197. package/scripts/__pycache__/run_workspace.cpython-312.pyc +0 -0
  198. package/scripts/__pycache__/skill_lint.cpython-312.pyc +0 -0
  199. package/scripts/__pycache__/startup_probe.cpython-312.pyc +0 -0
  200. package/scripts/__pycache__/sync_killer_demo_report.cpython-312.pyc +0 -0
  201. package/scripts/__pycache__/test_adversarial_empirical.cpython-312-pytest-9.0.2.pyc +0 -0
  202. package/scripts/__pycache__/test_adversarial_empirical.cpython-312-pytest-9.1.1.pyc +0 -0
  203. package/scripts/__pycache__/validate_schema.cpython-312.pyc +0 -0
  204. package/scripts/audit_dois.py +292 -0
  205. package/scripts/bake_pack.sh +37 -0
  206. package/scripts/benchmark.py +183 -0
  207. package/scripts/benchmark_evaluator.py +371 -0
  208. package/scripts/benchmark_judge.py +535 -0
  209. package/scripts/benchmark_routing.py +120 -0
  210. package/scripts/benchmark_v2.py +304 -0
  211. package/scripts/benchmark_v3.py +552 -0
  212. package/scripts/build_esl_artifacts.py +1921 -0
  213. package/scripts/build_evidence_library.py +307 -0
  214. package/scripts/build_killer_demo.py +295 -0
  215. package/scripts/build_result.py +311 -0
  216. package/scripts/check_version_consistency.py +96 -0
  217. package/scripts/citation_check.py +123 -0
  218. package/scripts/claim_audit.py +157 -0
  219. package/scripts/complexity_gate.py +180 -0
  220. package/scripts/compute_confidence.py +176 -0
  221. package/scripts/dashboard_server.py +536 -0
  222. package/scripts/did_regression.py +315 -0
  223. package/scripts/effect_calculator.py +99 -0
  224. package/scripts/enrich_projects_human_and_lieflat.py +315 -0
  225. package/scripts/evidence_matrix.py +129 -0
  226. package/scripts/evidence_score.py +234 -0
  227. package/scripts/evidence_semantics.py +87 -0
  228. package/scripts/fetch_benchmark.py +177 -0
  229. package/scripts/generate_metrics.py +99 -0
  230. package/scripts/generate_new_projects.py +686 -0
  231. package/scripts/generate_promo.py +192 -0
  232. package/scripts/lint_report_layout.py +182 -0
  233. package/scripts/orchestrator.py +1456 -0
  234. package/scripts/pre_verdict_gate.py +513 -0
  235. package/scripts/quickstart.py +121 -0
  236. package/scripts/rebake_all_5themes.py +88 -0
  237. package/scripts/recompute_demo_quality.py +205 -0
  238. package/scripts/render_report.py +270 -0
  239. package/scripts/render_report_html.py +356 -0
  240. package/scripts/retraction_watch.py +110 -0
  241. package/scripts/run_workspace.py +337 -0
  242. package/scripts/serve_web.py +54 -0
  243. package/scripts/skill_lint.py +150 -0
  244. package/scripts/startup_probe.py +265 -0
  245. package/scripts/sync_killer_demo_report.py +270 -0
  246. package/scripts/test_adversarial_empirical.py +541 -0
  247. package/scripts/validate_schema.py +256 -0
  248. package/skill/agents/education-planner.md +80 -0
  249. package/skill/agents/evaluation-designer.md +74 -0
  250. package/skill/agents/evidence-analyst.md +106 -0
  251. package/skill/agents/evidence-judge.md +111 -0
  252. package/skill/agents/evidence-retriever.md +80 -0
  253. package/skill/agents/intervention-designer.md +82 -0
  254. package/skill/agents/method-reviewer.md +104 -0
  255. package/skill/agents/skeptic.md +89 -0
  256. package/skill/sub-skills/aihot-trend-analysis/SKILL.md +31 -0
  257. package/skill/sub-skills/contradiction-analysis/SKILL.md +17 -0
  258. package/skill/sub-skills/data-analysis/SKILL.md +23 -0
  259. package/skill/sub-skills/ethics-review/SKILL.md +25 -0
  260. package/skill/sub-skills/evidence-extraction/SKILL.md +19 -0
  261. package/skill/sub-skills/evidence-review/SKILL.md +18 -0
  262. package/skill/sub-skills/gap-analysis/SKILL.md +25 -0
  263. package/skill/sub-skills/literature-review/SKILL.md +21 -0
  264. package/skill/sub-skills/methodology-audit/SKILL.md +20 -0
  265. package/skill/sub-skills/report-generation/SKILL.md +51 -0
  266. package/skill/sub-skills/research-planning/SKILL.md +21 -0
  267. package/skill/sub-skills/study-design/SKILL.md +16 -0
  268. package/skill/task-briefs/adjudicate.md +17 -0
  269. package/skill/task-briefs/audit.md +15 -0
  270. package/skill/task-briefs/challenge.md +15 -0
  271. package/skill/task-briefs/evaluate.md +13 -0
  272. package/skill/task-briefs/extract.md +16 -0
  273. package/skill/task-briefs/frame.md +17 -0
  274. package/skill/task-briefs/intervene.md +14 -0
  275. package/skill/task-briefs/present.md +16 -0
  276. package/skill/task-briefs/retrieve.md +15 -0
  277. package/visualization/eduevidence-report/assets/base.css +337 -0
  278. package/visualization/eduevidence-report/motion/motion.css +157 -0
  279. package/visualization/eduevidence-report/motion/motion.js +107 -0
  280. package/visualization/eduevidence-report/references/bilingual-style.md +7 -0
  281. package/visualization/eduevidence-report/references/component-catalog.md +145 -0
  282. package/visualization/eduevidence-report/references/evidence-expansion.md +65 -0
  283. package/visualization/eduevidence-report/references/full-report-outline.md +86 -0
  284. package/visualization/eduevidence-report/references/layout-constraints.md +63 -0
  285. package/visualization/eduevidence-report/references/lieflat-composition.md +79 -0
  286. package/visualization/eduevidence-report/references/motion-system.md +31 -0
  287. package/visualization/eduevidence-report/schemas/adapter-envelope.schema.json +22 -0
  288. package/visualization/eduevidence-report/schemas/visual-layout.schema.json +87 -0
  289. package/visualization/eduevidence-report/scripts/__pycache__/adapter_contract.cpython-312.pyc +0 -0
  290. package/visualization/eduevidence-report/scripts/__pycache__/build_artifact_manifest.cpython-312.pyc +0 -0
  291. package/visualization/eduevidence-report/scripts/__pycache__/build_charts.cpython-312.pyc +0 -0
  292. package/visualization/eduevidence-report/scripts/__pycache__/build_figures.cpython-312.pyc +0 -0
  293. package/visualization/eduevidence-report/scripts/__pycache__/build_infographics.cpython-312.pyc +0 -0
  294. package/visualization/eduevidence-report/scripts/__pycache__/build_report.cpython-312.pyc +0 -0
  295. package/visualization/eduevidence-report/scripts/__pycache__/charts_data.cpython-312.pyc +0 -0
  296. package/visualization/eduevidence-report/scripts/__pycache__/lieflat_engine.cpython-312.pyc +0 -0
  297. package/visualization/eduevidence-report/scripts/__pycache__/zh_labels.cpython-312.pyc +0 -0
  298. package/visualization/eduevidence-report/scripts/adapter_contract.py +72 -0
  299. package/visualization/eduevidence-report/scripts/build_artifact_manifest.py +70 -0
  300. package/visualization/eduevidence-report/scripts/build_charts.py +283 -0
  301. package/visualization/eduevidence-report/scripts/build_figures.py +515 -0
  302. package/visualization/eduevidence-report/scripts/build_infographics.py +268 -0
  303. package/visualization/eduevidence-report/scripts/build_report.py +3211 -0
  304. package/visualization/eduevidence-report/scripts/charts_data.py +617 -0
  305. package/visualization/eduevidence-report/scripts/check_mobile_layout.js +220 -0
  306. package/visualization/eduevidence-report/scripts/lieflat_engine.py +852 -0
  307. package/visualization/eduevidence-report/scripts/zh_labels.py +245 -0
  308. package/visualization/eduevidence-report/themes/academic.css +94 -0
  309. package/visualization/eduevidence-report/themes/claude.css +96 -0
  310. package/visualization/eduevidence-report/themes/datalab-dark.css +147 -0
  311. package/visualization/eduevidence-report/themes/datalab.css +151 -0
  312. package/visualization/eduevidence-report/themes/presentation.css +140 -0
@@ -0,0 +1,193 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://github.com/37chengshan/eduevidence/schemas/v3/run-manifest.schema.json",
4
+ "title": "BenchmarkRunManifest",
5
+ "description": "Layer B empirical benchmark run manifest (v3). Every empirical run MUST record the full environment so results are reproducible: model family/version, temperature, tool set, search provider, question-set version, timestamps, per-attempt usage (tokens/latency/cost) and failures. SIMULATED runs must set run_mode=simulated and may never be presented as model performance.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "run_id",
10
+ "run_mode",
11
+ "created_at",
12
+ "questions_version",
13
+ "baselines",
14
+ "repeats",
15
+ "environment",
16
+ "attempts"
17
+ ],
18
+ "properties": {
19
+ "run_id": {
20
+ "type": "string",
21
+ "pattern": "^run-[0-9]{8}-[0-9]{6}$"
22
+ },
23
+ "run_mode": {
24
+ "type": "string",
25
+ "enum": [
26
+ "empirical",
27
+ "simulated"
28
+ ]
29
+ },
30
+ "created_at": {
31
+ "type": "string",
32
+ "format": "date-time"
33
+ },
34
+ "questions_version": {
35
+ "type": "string",
36
+ "description": "git commit or tag of benchmarks/questions.jsonl used"
37
+ },
38
+ "baselines": {
39
+ "type": "array",
40
+ "items": {
41
+ "type": "string",
42
+ "enum": [
43
+ "B0_direct_llm",
44
+ "B1_search_llm",
45
+ "B2_standard_agent",
46
+ "B3_eduevidence_single",
47
+ "B4_eduevidence_agent_mcp"
48
+ ]
49
+ }
50
+ },
51
+ "repeats": {
52
+ "type": "integer",
53
+ "minimum": 1
54
+ },
55
+ "budget_tokens": {
56
+ "type": [
57
+ "integer",
58
+ "null"
59
+ ]
60
+ },
61
+ "environment": {
62
+ "type": "object",
63
+ "additionalProperties": false,
64
+ "required": [
65
+ "driver",
66
+ "model_family",
67
+ "model_version",
68
+ "temperature",
69
+ "tools",
70
+ "search_provider",
71
+ "agent_mcp_used"
72
+ ],
73
+ "properties": {
74
+ "driver": {
75
+ "type": "string",
76
+ "enum": [
77
+ "api",
78
+ "cli",
79
+ "sim"
80
+ ]
81
+ },
82
+ "model_family": {
83
+ "type": "string"
84
+ },
85
+ "model_version": {
86
+ "type": "string"
87
+ },
88
+ "temperature": {
89
+ "type": "number"
90
+ },
91
+ "tools": {
92
+ "type": "array",
93
+ "items": {
94
+ "type": "string"
95
+ }
96
+ },
97
+ "search_provider": {
98
+ "type": "string"
99
+ },
100
+ "agent_mcp_used": {
101
+ "type": "boolean"
102
+ }
103
+ }
104
+ },
105
+ "attempts": {
106
+ "type": "array",
107
+ "items": {
108
+ "type": "object",
109
+ "additionalProperties": false,
110
+ "required": [
111
+ "attempt_id",
112
+ "question_id",
113
+ "baseline",
114
+ "attempt",
115
+ "status",
116
+ "started_at",
117
+ "finished_at"
118
+ ],
119
+ "properties": {
120
+ "attempt_id": {
121
+ "type": "string"
122
+ },
123
+ "question_id": {
124
+ "type": "string"
125
+ },
126
+ "baseline": {
127
+ "type": "string"
128
+ },
129
+ "attempt": {
130
+ "type": "integer",
131
+ "minimum": 1
132
+ },
133
+ "status": {
134
+ "type": "string",
135
+ "enum": [
136
+ "completed",
137
+ "failed",
138
+ "budget_stopped"
139
+ ]
140
+ },
141
+ "error": {
142
+ "type": [
143
+ "string",
144
+ "null"
145
+ ]
146
+ },
147
+ "started_at": {
148
+ "type": "string",
149
+ "format": "date-time"
150
+ },
151
+ "finished_at": {
152
+ "type": "string",
153
+ "format": "date-time"
154
+ },
155
+ "prompt_tokens": {
156
+ "type": [
157
+ "integer",
158
+ "null"
159
+ ]
160
+ },
161
+ "completion_tokens": {
162
+ "type": [
163
+ "integer",
164
+ "null"
165
+ ]
166
+ },
167
+ "latency_s": {
168
+ "type": [
169
+ "number",
170
+ "null"
171
+ ]
172
+ },
173
+ "cost_usd": {
174
+ "type": [
175
+ "number",
176
+ "null"
177
+ ]
178
+ },
179
+ "artifacts": {
180
+ "type": "array",
181
+ "items": {
182
+ "type": "string"
183
+ },
184
+ "description": "Relative paths of per-attempt artifact files (response text / parsed result)."
185
+ }
186
+ }
187
+ }
188
+ },
189
+ "notes": {
190
+ "type": "string"
191
+ }
192
+ }
193
+ }
@@ -0,0 +1,86 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://github.com/37chengshan/eduevidence/schemas/v3/synthesis.schema.json",
4
+ "title": "LibrarySynthesis",
5
+ "description": "Cross-project synthesis over the Shared Research Library (v3): aggregates verified facts (sources/studies/findings/audits) from one immutable library revision into an outcome-level overview. Interpretive summary only - it never rewrites library state.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "synthesis_id",
10
+ "library_revision",
11
+ "generated_at",
12
+ "independent_studies",
13
+ "source_count",
14
+ "outcomes",
15
+ "extensions"
16
+ ],
17
+ "properties": {
18
+ "synthesis_id": {
19
+ "type": "string",
20
+ "pattern": "^SYN-[0-9a-f]{8}$"
21
+ },
22
+ "library_revision": {
23
+ "type": "integer",
24
+ "minimum": 0
25
+ },
26
+ "generated_at": {
27
+ "type": "string",
28
+ "format": "date-time"
29
+ },
30
+ "independent_studies": {
31
+ "type": "integer",
32
+ "minimum": 0
33
+ },
34
+ "source_count": {
35
+ "type": "integer",
36
+ "minimum": 0
37
+ },
38
+ "outcomes": {
39
+ "type": "array",
40
+ "items": {
41
+ "type": "object",
42
+ "additionalProperties": false,
43
+ "required": [
44
+ "outcome_token",
45
+ "positive_findings",
46
+ "negative_findings",
47
+ "null_findings",
48
+ "study_keys"
49
+ ],
50
+ "properties": {
51
+ "outcome_token": {
52
+ "type": "string"
53
+ },
54
+ "positive_findings": {
55
+ "type": "array",
56
+ "items": {
57
+ "type": "string"
58
+ }
59
+ },
60
+ "negative_findings": {
61
+ "type": "array",
62
+ "items": {
63
+ "type": "string"
64
+ }
65
+ },
66
+ "null_findings": {
67
+ "type": "array",
68
+ "items": {
69
+ "type": "string"
70
+ }
71
+ },
72
+ "study_keys": {
73
+ "type": "array",
74
+ "items": {
75
+ "type": "string"
76
+ }
77
+ }
78
+ }
79
+ }
80
+ },
81
+ "extensions": {
82
+ "type": "object",
83
+ "additionalProperties": true
84
+ }
85
+ }
86
+ }
@@ -0,0 +1,66 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://github.com/37chengshan/eduevidence/schemas/v4/drift-report.schema.json",
4
+ "title": "DriftReport",
5
+ "description": "One living-evidence refresh outcome (v4): how the graph revision and adjudication moved between the tracked DecisionSnapshot and the fresh one, which new evidence entered the graph, and a suggested_action for a human reviewer.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "drift_id",
10
+ "subscription_id",
11
+ "from_revision",
12
+ "to_revision",
13
+ "generated_at",
14
+ "new_evidence_ids",
15
+ "summary",
16
+ "suggested_action",
17
+ "extensions"
18
+ ],
19
+ "properties": {
20
+ "drift_id": {
21
+ "type": "string",
22
+ "pattern": "^DRF-"
23
+ },
24
+ "subscription_id": {
25
+ "type": "string",
26
+ "pattern": "^SUB-"
27
+ },
28
+ "from_revision": {
29
+ "type": "integer",
30
+ "minimum": 0
31
+ },
32
+ "to_revision": {
33
+ "type": "integer",
34
+ "minimum": 0
35
+ },
36
+ "generated_at": {
37
+ "type": "string",
38
+ "format": "date-time"
39
+ },
40
+ "new_evidence_ids": {
41
+ "type": "array",
42
+ "items": {
43
+ "type": "string",
44
+ "minLength": 1
45
+ },
46
+ "uniqueItems": true
47
+ },
48
+ "summary": {
49
+ "type": "string",
50
+ "minLength": 1
51
+ },
52
+ "suggested_action": {
53
+ "type": "string",
54
+ "enum": [
55
+ "confirmed",
56
+ "changed",
57
+ "needs_review"
58
+ ]
59
+ },
60
+ "extensions": {
61
+ "type": "object",
62
+ "additionalProperties": true,
63
+ "description": "Carries the machine-readable decision_diff plus evidence hashes committed by this refresh."
64
+ }
65
+ }
66
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://github.com/37chengshan/eduevidence/schemas/v4/evidence-library.schema.json",
4
+ "title": "BuiltinEvidenceLibrary",
5
+ "description": "Offline builtin evidence library (v4). A snapshot of condensed evidence summaries extracted from the gold benchmark annotations (benchmarks/annotations/gold-Q01..Q30: key_claims / key_supporting_sources / known_contradictions / correct_outcome_types) plus the three example workflow evidence.jsonl files (ai-coding-assistant, ai-tutor, ai-writing-assistant). Entries are deduplicated on (source_id, outcome_token, claim_text). The library powers the offline preliminary verdict (engine/library_builtin.preliminary_verdict): direction=support means the evidence favors adopting the intervention (=> pilot), direction=contradict means it opposes adoption (=> reject), direction=neutral is inconclusive. The library is conservative by design: it never yields adopt.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": ["library_id", "version", "generated_at", "entries", "coverage_note"],
9
+ "properties": {
10
+ "library_id": { "type": "string", "description": "Stable identifier of this builtin library." },
11
+ "version": { "type": "string", "description": "Library version string, echoed by preliminary_verdict as library_version." },
12
+ "generated_at": { "type": "string", "format": "date-time", "description": "RFC 3339 UTC timestamp of generation." },
13
+ "coverage_note": { "type": "string", "description": "Provenance note: extraction sources, dedup key, direction semantics and known limitations." },
14
+ "entries": {
15
+ "type": "array",
16
+ "minItems": 1,
17
+ "items": {
18
+ "type": "object",
19
+ "additionalProperties": false,
20
+ "required": [
21
+ "entry_id", "source_id", "title", "year", "outcome_token",
22
+ "direction", "study_type", "claim_text", "effect_summary",
23
+ "confidence_markers", "domains"
24
+ ],
25
+ "properties": {
26
+ "entry_id": { "type": "string", "description": "Unique entry id inside this library (lib-... / gold-...)." },
27
+ "source_id": { "type": "string", "description": "Stable source identifier (e.g. GOLD-Q01 or S-2023-kazemitabaar)." },
28
+ "title": { "type": "string", "description": "Human-readable title of the underlying source / annotation unit." },
29
+ "year": { "type": ["integer", "null"], "description": "Publication year of the underlying source; null when unknown (e.g. gold annotation units)." },
30
+ "outcome_token": { "type": "string", "description": "Primary taxonomy outcome token the evidence speaks to (accuracy, retention, transfer, ...)." },
31
+ "outcome_tokens": { "type": "array", "items": { "type": "string" }, "description": "All taxonomy outcome tokens the evidence speaks to (multi-outcome gold questions)." },
32
+ "direction": { "type": "string", "enum": ["support", "contradict", "neutral"], "description": "Adoption-relevant direction: support => favors adoption (pilot), contradict => opposes adoption (reject), neutral => inconclusive." },
33
+ "study_type": { "type": "string", "enum": ["rct", "quasi_experimental", "observational", "survey", "qualitative", "meta_analysis", "literature_review", "case_study", "mixed_methods", "benchmark_annotation", "example_workflow"], "description": "Study design / provenance kind of the underlying evidence." },
34
+ "claim_text": { "type": "string", "description": "The claim this entry condenses (verbatim from the source where possible)." },
35
+ "effect_summary": { "type": "string", "description": "One-line summary of the observed effect / direction." },
36
+ "confidence_markers": { "type": "array", "items": { "type": "string" }, "description": "Provenance & confidence markers (gold_annotation, evidence_level, quality_score, expected_decision, ...)." },
37
+ "domains": { "type": "array", "items": { "type": "string" }, "description": "Benchmark domains the entry applies to (ai_higher_education, teaching_methods, learning_psychology, assessment_edtech, example workflow names)." }
38
+ }
39
+ }
40
+ }
41
+ }
42
+ }
@@ -0,0 +1,55 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://github.com/37chengshan/eduevidence/schemas/v4/living-subscription.schema.json",
4
+ "title": "LivingEvidenceSubscription",
5
+ "description": "A living-evidence watch (v4): binds a revision-bound DecisionSnapshot to a question and query terms, so refresh() can fold newly discovered evidence into the graph and emit drift reports. Subscriptions are durable project records under living/subscriptions/.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "subscription_id",
10
+ "decision_snapshot_id",
11
+ "question",
12
+ "query_terms",
13
+ "status",
14
+ "created_at",
15
+ "extensions"
16
+ ],
17
+ "properties": {
18
+ "subscription_id": {
19
+ "type": "string",
20
+ "pattern": "^SUB-"
21
+ },
22
+ "decision_snapshot_id": {
23
+ "type": "string",
24
+ "pattern": "^DEC-"
25
+ },
26
+ "question": {
27
+ "type": "string",
28
+ "minLength": 1
29
+ },
30
+ "query_terms": {
31
+ "type": "array",
32
+ "items": {
33
+ "type": "string",
34
+ "minLength": 1
35
+ },
36
+ "uniqueItems": true
37
+ },
38
+ "status": {
39
+ "type": "string",
40
+ "enum": [
41
+ "active",
42
+ "paused"
43
+ ]
44
+ },
45
+ "created_at": {
46
+ "type": "string",
47
+ "format": "date-time"
48
+ },
49
+ "extensions": {
50
+ "type": "object",
51
+ "additionalProperties": true,
52
+ "description": "Refresh state: last_snapshot_id / last_drift_id / last_refreshed_at / from_graph_revision / to_graph_revision / ingested_evidence_hashes."
53
+ }
54
+ }
55
+ }
@@ -0,0 +1,152 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://github.com/37chengshan/eduevidence/schemas/v4/meta-analysis.schema.json",
4
+ "title": "MetaAnalysisV4",
5
+ "description": "v4 quantitative evidence synthesis (meta-analysis) contract: fixed/random effect-size pooling with heterogeneity statistics (Q, I2, tau2), publication-bias diagnostics (Egger regression, Rosenthal fail-safe N), leave-one-out robustness and a final robust/fragile label. Produced by engine/meta_analysis.run_meta_analysis; interpretive output only, never rewrites library state.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "meta_analysis_id", "outcome_id", "generated_at", "k",
10
+ "pooled_fixed", "pooled_random", "Q", "df", "I2", "tau2",
11
+ "egger", "fail_safe_n", "leave_one_out", "label", "studies"
12
+ ],
13
+ "properties": {
14
+ "meta_analysis_id": { "type": "string", "pattern": "^MA-" },
15
+ "outcome_id": { "type": "string", "minLength": 1 },
16
+ "generated_at": { "type": "string", "format": "date-time" },
17
+ "k": { "type": "integer", "minimum": 0 },
18
+ "pooled_fixed": { "$ref": "#/definitions/pooled" },
19
+ "pooled_random": { "$ref": "#/definitions/pooled" },
20
+ "Q": { "type": "number", "minimum": 0 },
21
+ "df": { "type": "integer", "minimum": 0 },
22
+ "I2": { "type": "number", "minimum": 0, "maximum": 100 },
23
+ "tau2": { "type": "number", "minimum": 0 },
24
+ "egger": { "$ref": "#/definitions/egger" },
25
+ "fail_safe_n": { "$ref": "#/definitions/fail_safe_n" },
26
+ "leave_one_out": { "$ref": "#/definitions/leave_one_out" },
27
+ "label": { "type": "string", "enum": ["robust", "fragile"] },
28
+ "studies": {
29
+ "type": "array",
30
+ "items": { "$ref": "#/definitions/study_row" }
31
+ },
32
+ "not_extractable": {
33
+ "type": "array",
34
+ "items": { "$ref": "#/definitions/not_extractable_row" }
35
+ }
36
+ },
37
+ "definitions": {
38
+ "pooled": {
39
+ "type": "object",
40
+ "additionalProperties": false,
41
+ "required": ["method", "k", "d", "se", "ci_low", "ci_high", "z", "p_value"],
42
+ "properties": {
43
+ "method": { "type": "string", "enum": ["fixed_effect", "random_effect"] },
44
+ "k": { "type": "integer", "minimum": 0 },
45
+ "d": { "type": "number" },
46
+ "se": { "type": "number", "minimum": 0 },
47
+ "ci_low": { "type": "number" },
48
+ "ci_high": { "type": "number" },
49
+ "z": { "type": "number" },
50
+ "p_value": { "type": "number", "minimum": 0, "maximum": 1 },
51
+ "weights": { "type": "array", "items": { "type": "number" } },
52
+ "sum_w": { "type": "number", "minimum": 0 },
53
+ "tau2": { "type": "number", "minimum": 0 },
54
+ "Q": { "type": "number", "minimum": 0 },
55
+ "df": { "type": "integer", "minimum": 0 },
56
+ "I2": { "type": "number", "minimum": 0, "maximum": 100 }
57
+ }
58
+ },
59
+ "study_row": {
60
+ "type": "object",
61
+ "additionalProperties": false,
62
+ "required": ["study_id", "outcome_id", "d", "se", "n"],
63
+ "properties": {
64
+ "study_id": { "type": "string", "minLength": 1 },
65
+ "outcome_id": { "type": "string", "minLength": 1 },
66
+ "d": { "type": "number" },
67
+ "se": { "type": "number", "minimum": 0 },
68
+ "n": { "type": ["integer", "null"], "minimum": 0 },
69
+ "not_extractable": { "type": "boolean" },
70
+ "reason": { "type": ["string", "null"] }
71
+ }
72
+ },
73
+ "not_extractable_row": {
74
+ "type": "object",
75
+ "additionalProperties": false,
76
+ "required": ["study_id", "outcome_id", "d", "se", "n", "not_extractable", "reason"],
77
+ "properties": {
78
+ "study_id": { "type": "string", "minLength": 1 },
79
+ "outcome_id": { "type": "string", "minLength": 1 },
80
+ "d": { "type": ["number", "null"] },
81
+ "se": { "type": ["number", "null"] },
82
+ "n": { "type": ["integer", "null"], "minimum": 0 },
83
+ "not_extractable": { "type": "boolean", "const": true },
84
+ "reason": { "type": "string", "minLength": 1 }
85
+ }
86
+ },
87
+ "egger": {
88
+ "type": "object",
89
+ "additionalProperties": false,
90
+ "required": ["applicable"],
91
+ "properties": {
92
+ "applicable": { "type": "boolean" },
93
+ "reason": { "type": "string" },
94
+ "k": { "type": "integer", "minimum": 0 },
95
+ "intercept": { "type": "number" },
96
+ "se_intercept": { "type": "number", "minimum": 0 },
97
+ "slope": { "type": "number" },
98
+ "t": { "type": "number" },
99
+ "p_value": { "type": "number", "minimum": 0, "maximum": 1 },
100
+ "significant": { "type": "boolean" },
101
+ "bias_detected": { "type": "boolean" }
102
+ }
103
+ },
104
+ "fail_safe_n": {
105
+ "type": "object",
106
+ "additionalProperties": false,
107
+ "required": ["method", "k", "sum_z", "n_fail_safe", "tolerates_5"],
108
+ "properties": {
109
+ "method": { "type": "string", "enum": ["rosenthal"] },
110
+ "k": { "type": "integer", "minimum": 0 },
111
+ "sum_z": { "type": "number" },
112
+ "z_crit": { "type": "number", "minimum": 0 },
113
+ "z_crit_squared": { "type": "number", "minimum": 0 },
114
+ "n_fail_safe": { "type": "number", "minimum": 0 },
115
+ "tolerates_5": { "type": "boolean" }
116
+ }
117
+ },
118
+ "leave_one_out": {
119
+ "type": "object",
120
+ "additionalProperties": false,
121
+ "required": [
122
+ "method", "k", "full_pooled", "iterations",
123
+ "n_direction_flips", "n_ci_crossings", "n_decision_changes"
124
+ ],
125
+ "properties": {
126
+ "method": { "type": "string", "enum": ["leave_one_out"] },
127
+ "k": { "type": "integer", "minimum": 0 },
128
+ "full_pooled": { "$ref": "#/definitions/pooled" },
129
+ "iterations": {
130
+ "type": "array",
131
+ "items": { "$ref": "#/definitions/loo_iteration" }
132
+ },
133
+ "n_direction_flips": { "type": "integer", "minimum": 0 },
134
+ "n_ci_crossings": { "type": "integer", "minimum": 0 },
135
+ "n_decision_changes": { "type": "integer", "minimum": 0 }
136
+ }
137
+ },
138
+ "loo_iteration": {
139
+ "type": "object",
140
+ "additionalProperties": false,
141
+ "required": ["removed_study_id", "pooled", "direction_flip", "ci_crosses_zero", "decision_changed"],
142
+ "properties": {
143
+ "removed_study_id": { "type": "string", "minLength": 1 },
144
+ "removed_index": { "type": "integer", "minimum": 0 },
145
+ "pooled": { "$ref": "#/definitions/pooled" },
146
+ "direction_flip": { "type": "boolean" },
147
+ "ci_crosses_zero": { "type": "boolean" },
148
+ "decision_changed": { "type": "boolean" }
149
+ }
150
+ }
151
+ }
152
+ }
@@ -0,0 +1,56 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://github.com/37chengshan/eduevidence/schemas/verdict.schema.json",
4
+ "title": "EducationVerdict",
5
+ "description": "Output of the Evidence Tribunal: what the evidence supports, cannot support, and the recommended action. Decision is one of ADOPT / PILOT / REJECT / INSUFFICIENT EVIDENCE (expressed here as adopt|pilot|reject|insufficient_evidence). confidence 由 scripts/compute_confidence.py 确定性计算并覆盖模型值;confidence_score 是规则化指数(0-1),不是概率。扩展字段一律放在 extensions 内。",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": ["decision_question", "recommended_action", "confidence"],
9
+ "properties": {
10
+ "decision_question": { "type": "string" },
11
+ "target_population": { "type": "string" },
12
+ "target_context": { "type": "string" },
13
+ "supported_claims": { "type": "array", "items": { "type": "string" } },
14
+ "uncertain_claims": { "type": "array", "items": { "type": "string" } },
15
+ "contradicted_claims": { "type": "array", "items": { "type": "string" } },
16
+ "reason_for_disagreement": { "type": "string" },
17
+ "methodology_summary": { "type": "string" },
18
+ "outcome_specific_findings": { "type": "object", "additionalProperties": true },
19
+ "short_term_effect": { "type": ["string", "null"] },
20
+ "long_term_effect": { "type": ["string", "null"] },
21
+ "transfer_effect": { "type": ["string", "null"] },
22
+ "risk_effect": { "type": ["string", "null"] },
23
+ "applicability": { "type": "object", "additionalProperties": true },
24
+ "confidence": { "type": "string", "enum": ["High", "Moderate", "Low", "Insufficient"] },
25
+ "confidence_score": {
26
+ "type": ["number", "null"],
27
+ "minimum": 0,
28
+ "maximum": 1,
29
+ "description": "规则化置信度指数(0-1),由 compute_confidence.py 覆盖模型值。不是概率,禁止宣传为百分比。"
30
+ },
31
+ "confidence_policy_version": { "type": "string", "description": "确定性置信度策略版本号(如 2026-08-12.v1)。" },
32
+ "independent_studies": { "type": ["integer", "null"], "minimum": 0, "description": "独立研究数(按 study_id/source_id 去重)。" },
33
+ "independent_samples": { "type": ["integer", "null"], "minimum": 0, "description": "独立样本数(按 sample_id 去重)。" },
34
+ "confidence_breakdown": {
35
+ "type": "object",
36
+ "additionalProperties": true,
37
+ "description": "Rule-based components: evidence_quality, consistency, directness, evidence_count, independent_studies, independent_samples, conflict_penalty, unsupported_penalty."
38
+ },
39
+ "raw_model_confidence": {
40
+ "type": ["string", "null"],
41
+ "description": "模型原始 confidence 输出(被确定性值覆盖前的值,仅供审计比对)。"
42
+ },
43
+ "raw_model_confidence_breakdown": { "type": "object", "additionalProperties": true },
44
+ "what_can_be_claimed": { "type": "array", "items": { "type": "string" } },
45
+ "what_cannot_be_claimed": { "type": "array", "items": { "type": "string" } },
46
+ "missing_evidence": { "type": "array", "items": { "type": "string" } },
47
+ "recommended_action": { "type": "string", "enum": ["adopt", "pilot", "reject", "insufficient_evidence"] },
48
+ "decision_rationale": { "type": "string" },
49
+ "exceeds_evidence_boundary": { "type": "array", "items": { "type": "string" }, "description": "Conclusions that currently go beyond the evidence boundary." },
50
+ "extensions": {
51
+ "type": "object",
52
+ "description": "结构化扩展字段的统一容器(P1-01)。未列入本 schema 的字段必须放在这里,禁止在顶层新增属性。",
53
+ "additionalProperties": true
54
+ }
55
+ }
56
+ }
File without changes