eduevidence 5.2.0 → 6.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 (386) hide show
  1. package/CONTRIBUTING.md +105 -0
  2. package/README.md +142 -75
  3. package/README.zh-CN.md +73 -30
  4. package/SKILL.md +397 -131
  5. package/agents/openai.yaml +4 -0
  6. package/assets/readme/controlled-execution.svg +34 -0
  7. package/assets/readme/landing-tour.gif +0 -0
  8. package/assets/readme/logo.png +0 -0
  9. package/assets/readme/research-workflow.svg +56 -0
  10. package/assets/readme/studio-graph.png +0 -0
  11. package/assets/readme/studio-overview.png +0 -0
  12. package/assets/readme/studio-reports.png +0 -0
  13. package/assets/readme/studio-tour.gif +0 -0
  14. package/autoevolve/config.yaml +17 -0
  15. package/autoevolve/program.md +25 -0
  16. package/autoevolve/protected.manifest.yaml +34 -0
  17. package/benchmarks/adversarial/cases.jsonl +7 -0
  18. package/benchmarks/evidence-library.json +5268 -0
  19. package/benchmarks/partitions.json +8 -0
  20. package/bin/eduevidence.js +2 -1
  21. package/docs/architecture.md +496 -0
  22. package/docs/autoresearch-evolution-plan.md +2903 -0
  23. package/docs/autoresearch-implementation-status.md +101 -0
  24. package/docs/demo-storyboard.md +20 -0
  25. package/docs/demo-workplace-ai.md +92 -0
  26. package/docs/demo.md +32 -0
  27. package/docs/install-guide.md +150 -0
  28. package/docs/orchestration-role-model.md +1254 -0
  29. package/docs/release-closeout/README.md +17 -0
  30. package/docs/release-closeout/frontend-acceptance.md +23 -0
  31. package/docs/release-closeout/issues.md +19 -0
  32. package/docs/release-closeout/verification.md +28 -0
  33. package/docs/release-contract.md +108 -0
  34. package/docs/research-studio-guide.zh-CN.md +166 -0
  35. package/docs/sciverse-api.md +125 -0
  36. package/eduevidence_cli.py +29 -13
  37. package/engine/_resources.py +13 -0
  38. package/engine/autoevolve/__init__.py +3 -0
  39. package/engine/autoevolve/agent_view.py +167 -0
  40. package/engine/autoevolve/core.py +357 -0
  41. package/engine/autoevolve/events.py +11 -0
  42. package/engine/autoevolve/git_workspace.py +77 -0
  43. package/engine/autoevolve/projection.py +23 -0
  44. package/engine/autoevolve/runner.py +413 -0
  45. package/engine/autoevolve/trust.py +146 -0
  46. package/engine/autoresearch/__init__.py +6 -0
  47. package/engine/autoresearch/commit.py +132 -0
  48. package/engine/autoresearch/contracts.py +126 -0
  49. package/engine/autoresearch/controller.py +207 -0
  50. package/engine/autoresearch/events.py +12 -0
  51. package/engine/autoresearch/gap_priority.py +168 -0
  52. package/engine/autoresearch/projection.py +30 -0
  53. package/engine/autoresearch/research_memory.py +59 -0
  54. package/engine/autoresearch/saturation.py +91 -0
  55. package/engine/briefs.py +2 -1
  56. package/engine/capabilities.py +1 -0
  57. package/engine/contracts.py +3 -1
  58. package/engine/decision_policy.py +96 -0
  59. package/engine/evidence_graph.py +14 -10
  60. package/engine/evidencecore.py +7 -5
  61. package/engine/gaps.py +132 -73
  62. package/engine/ids.py +2 -0
  63. package/engine/judge_pack.py +65 -0
  64. package/engine/library.py +6 -2
  65. package/engine/library_builtin.py +3 -1
  66. package/engine/living.py +36 -5
  67. package/engine/meta_synthesis.py +3 -1
  68. package/engine/migration.py +88 -3
  69. package/engine/orchestration.py +460 -0
  70. package/engine/paths.py +2 -0
  71. package/engine/pilot.py +36 -33
  72. package/engine/project.py +2 -2
  73. package/engine/research_service.py +113 -0
  74. package/engine/studio_read_model.py +400 -0
  75. package/engine/taxonomy.py +211 -0
  76. package/engine/tribunal.py +44 -33
  77. package/engine/update.py +1 -0
  78. package/engine/versions.py +1 -1
  79. package/engine/worker_result.py +109 -0
  80. package/engine/workflows.py +70 -0
  81. package/examples/ai-coding-assistant-evidence/EduEvidence_Report.html +2934 -0
  82. package/examples/ai-coding-assistant-evidence/artifact_manifest.json +15 -0
  83. package/examples/ai-coding-assistant-evidence/citation_check.json +79 -0
  84. package/examples/ai-coding-assistant-evidence/claims.jsonl +12 -0
  85. package/examples/ai-coding-assistant-evidence/evaluation.json +35 -0
  86. package/examples/ai-coding-assistant-evidence/evidence.jsonl +12 -0
  87. package/examples/ai-coding-assistant-evidence/final_verdict.json +107 -0
  88. package/examples/ai-coding-assistant-evidence/frame.json +48 -0
  89. package/examples/ai-coding-assistant-evidence/gate_report.json +101 -0
  90. package/examples/ai-coding-assistant-evidence/intervention.json +51 -0
  91. package/examples/ai-coding-assistant-evidence/methodology.json +36 -0
  92. package/examples/ai-coding-assistant-evidence/raw_verdict.json +86 -0
  93. package/examples/ai-coding-assistant-evidence/report_spec.json +230 -0
  94. package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_academic.html +2934 -0
  95. package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_claude.html +2934 -0
  96. package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_datalab-dark.html +2934 -0
  97. package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_datalab.html +2934 -0
  98. package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_presentation.html +2934 -0
  99. package/examples/ai-coding-assistant-evidence/reports-5themes/report_academic.html +2934 -0
  100. package/examples/ai-coding-assistant-evidence/reports-5themes/report_claude.html +2934 -0
  101. package/examples/ai-coding-assistant-evidence/reports-5themes/report_datalab-dark.html +2934 -0
  102. package/examples/ai-coding-assistant-evidence/reports-5themes/report_datalab.html +2934 -0
  103. package/examples/ai-coding-assistant-evidence/reports-5themes/report_presentation.html +2934 -0
  104. package/examples/ai-coding-assistant-evidence/result.json +1457 -0
  105. package/examples/ai-coding-assistant-evidence/result.zh.json +1457 -0
  106. package/examples/ai-coding-assistant-evidence/skeptic.json +72 -0
  107. package/examples/ai-coding-assistant-evidence/sources.jsonl +8 -0
  108. package/examples/ai-coding-assistant-evidence/verdict.json +107 -0
  109. package/examples/spaced-retrieval-practice/applicability.json +14 -0
  110. package/examples/spaced-retrieval-practice/artifact_manifest.json +15 -0
  111. package/examples/spaced-retrieval-practice/claims.jsonl +3 -0
  112. package/examples/spaced-retrieval-practice/evidence.jsonl +6 -0
  113. package/examples/spaced-retrieval-practice/final_verdict.json +93 -0
  114. package/examples/spaced-retrieval-practice/frame.json +58 -0
  115. package/examples/spaced-retrieval-practice/gate_report.json +101 -0
  116. package/examples/spaced-retrieval-practice/methodology.json +78 -0
  117. package/examples/spaced-retrieval-practice/report_spec.json +212 -0
  118. package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_academic.html +2728 -0
  119. package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_claude.html +2728 -0
  120. package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_datalab-dark.html +2728 -0
  121. package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_datalab.html +2728 -0
  122. package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_presentation.html +2728 -0
  123. package/examples/spaced-retrieval-practice/reports-5themes/report_academic.html +2728 -0
  124. package/examples/spaced-retrieval-practice/reports-5themes/report_claude.html +2728 -0
  125. package/examples/spaced-retrieval-practice/reports-5themes/report_datalab-dark.html +2728 -0
  126. package/examples/spaced-retrieval-practice/reports-5themes/report_datalab.html +2728 -0
  127. package/examples/spaced-retrieval-practice/reports-5themes/report_presentation.html +2728 -0
  128. package/examples/spaced-retrieval-practice/result.json +942 -0
  129. package/examples/spaced-retrieval-practice/result.zh.json +942 -0
  130. package/examples/spaced-retrieval-practice/skeptic.json +70 -0
  131. package/examples/spaced-retrieval-practice/sources.jsonl +7 -0
  132. package/examples/spaced-retrieval-practice/verdict.json +93 -0
  133. package/examples/workplace-ai-assistant/artifact_manifest.json +15 -0
  134. package/examples/workplace-ai-assistant/claims.jsonl +4 -0
  135. package/examples/workplace-ai-assistant/evaluation.json +19 -0
  136. package/examples/workplace-ai-assistant/evidence.jsonl +4 -0
  137. package/examples/workplace-ai-assistant/evidence_graph.json +444 -0
  138. package/examples/workplace-ai-assistant/final_verdict.json +78 -0
  139. package/examples/workplace-ai-assistant/frame.json +41 -0
  140. package/examples/workplace-ai-assistant/gate_report.json +101 -0
  141. package/examples/workplace-ai-assistant/intervention.json +27 -0
  142. package/examples/workplace-ai-assistant/legacy-link-check.json +16 -0
  143. package/examples/workplace-ai-assistant/methodology.json +60 -0
  144. package/examples/workplace-ai-assistant/report_spec.json +224 -0
  145. package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_academic.html +2814 -0
  146. package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_claude.html +2814 -0
  147. package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_datalab-dark.html +2814 -0
  148. package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_datalab.html +2814 -0
  149. package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_presentation.html +2814 -0
  150. package/examples/workplace-ai-assistant/reports-5themes/report_academic.html +2814 -0
  151. package/examples/workplace-ai-assistant/reports-5themes/report_claude.html +2814 -0
  152. package/examples/workplace-ai-assistant/reports-5themes/report_datalab-dark.html +2814 -0
  153. package/examples/workplace-ai-assistant/reports-5themes/report_datalab.html +2814 -0
  154. package/examples/workplace-ai-assistant/reports-5themes/report_presentation.html +2814 -0
  155. package/examples/workplace-ai-assistant/result.json +615 -0
  156. package/examples/workplace-ai-assistant/result.zh.json +615 -0
  157. package/examples/workplace-ai-assistant/search_log.json +19 -0
  158. package/examples/workplace-ai-assistant/skeptic.json +72 -0
  159. package/examples/workplace-ai-assistant/sources.jsonl +3 -0
  160. package/examples/workplace-ai-assistant/validation_result.json +9 -0
  161. package/examples/workplace-ai-assistant/verdict.json +78 -0
  162. package/install.sh +7 -7
  163. package/integrations/agent_mcp.py +2 -2
  164. package/integrations/orchestration_dispatch.py +146 -0
  165. package/package.json +46 -3
  166. package/pyproject.toml +14 -22
  167. package/references/autoresearch.md +30 -0
  168. package/references/evaluation-policy.md +24 -0
  169. package/references/orchestration.md +22 -0
  170. package/references/report-copy-style.md +67 -0
  171. package/references/retrieval-compliance.md +75 -0
  172. package/references/retrieval-protocol.md +20 -0
  173. package/references/scientific-invariants.md +19 -0
  174. package/retrieval/audit.py +178 -0
  175. package/retrieval/fetch.py +96 -0
  176. package/retrieval/sciverse.py +398 -0
  177. package/retrieval/search.py +47 -7
  178. package/schemas/applicability.schema.json +94 -0
  179. package/schemas/chart-spec.schema.json +10 -3
  180. package/schemas/evidence.schema.json +316 -43
  181. package/schemas/fetch-result.schema.json +2 -1
  182. package/schemas/intervention.schema.json +106 -21
  183. package/schemas/report-result.schema.json +12 -4
  184. package/schemas/report-spec.schema.json +98 -100
  185. package/schemas/skeptic.schema.json +86 -0
  186. package/schemas/source.schema.json +21 -2
  187. package/schemas/v2/finding.schema.json +5 -1
  188. package/schemas/v2/methodology-audit.schema.json +5 -1
  189. package/schemas/v2/outcome.schema.json +28 -5
  190. package/schemas/v2/project.schema.json +2 -2
  191. package/schemas/v2/run.schema.json +1 -1
  192. package/schemas/v2/study.schema.json +5 -1
  193. package/schemas/vNext/autoevolve-session.schema.json +34 -0
  194. package/schemas/vNext/eval-snapshot.schema.json +77 -0
  195. package/schemas/vNext/execution-plan.schema.json +50 -0
  196. package/schemas/vNext/gap-priority.schema.json +54 -0
  197. package/schemas/vNext/negative-search-record.schema.json +68 -0
  198. package/schemas/vNext/research-iteration.schema.json +87 -0
  199. package/schemas/vNext/research-strategy.schema.json +62 -0
  200. package/schemas/vNext/skill-experiment.schema.json +90 -0
  201. package/schemas/vNext/task-spec.schema.json +156 -0
  202. package/schemas/vNext/worker-result.schema.json +60 -0
  203. package/schemas/verdict.schema.json +164 -28
  204. package/scripts/benchmark_judge.py +2 -2
  205. package/scripts/benchmark_v3.py +26 -43
  206. package/scripts/build_esl_artifacts.py +4 -4
  207. package/scripts/build_evidence_library.py +2 -2
  208. package/scripts/build_gh_pages.py +98 -0
  209. package/scripts/build_readme_diagrams.py +72 -0
  210. package/scripts/build_report_variants.py +101 -0
  211. package/scripts/build_result.py +74 -9
  212. package/scripts/check_autoresearch_invariants.py +95 -0
  213. package/scripts/check_package_parity.py +85 -0
  214. package/scripts/check_protocol_alignment.py +375 -0
  215. package/scripts/check_versioned_schemas.py +254 -0
  216. package/scripts/claim_audit.py +13 -8
  217. package/scripts/compute_confidence.py +10 -0
  218. package/scripts/daily_evolve.py +30 -0
  219. package/scripts/dashboard_server.py +130 -101
  220. package/scripts/did_regression.py +17 -32
  221. package/scripts/enrich_projects_human_and_lieflat.py +1 -1
  222. package/scripts/evidence_score.py +5 -2
  223. package/scripts/generate_metrics.py +4 -3
  224. package/scripts/generate_new_projects.py +5 -5
  225. package/scripts/orchestrator.py +286 -36
  226. package/scripts/pre_verdict_gate.py +224 -26
  227. package/scripts/quickstart.py +18 -2
  228. package/scripts/rebake_all_5themes.py +1 -2
  229. package/scripts/research_auto_cli.py +475 -0
  230. package/scripts/run_workspace.py +24 -8
  231. package/scripts/search_provenance.py +64 -0
  232. package/scripts/serve_web.py +9 -10
  233. package/scripts/skill_lint.py +1 -1
  234. package/scripts/skill_payload.py +81 -0
  235. package/scripts/test_adversarial_empirical.py +26 -19
  236. package/scripts/validate_schema.py +46 -2
  237. package/scripts/vnext_cli.py +133 -0
  238. package/setup.py +12 -0
  239. package/skill/agents/evaluation-designer.md +20 -4
  240. package/skill/agents/evidence-analyst.md +19 -3
  241. package/skill/agents/evidence-judge.md +50 -2
  242. package/skill/agents/evidence-retriever.md +20 -3
  243. package/skill/agents/intervention-designer.md +20 -4
  244. package/skill/agents/method-reviewer.md +18 -2
  245. package/skill/agents/{education-planner.md → research-planner.md} +19 -3
  246. package/skill/agents/skeptic.md +18 -2
  247. package/skill/roles/registry.yaml +45 -0
  248. package/skill/sub-skills/aihot-trend-analysis/SKILL.md +28 -9
  249. package/skill/sub-skills/contradiction-analysis/SKILL.md +31 -11
  250. package/skill/sub-skills/data-analysis/SKILL.md +34 -15
  251. package/skill/sub-skills/ethics-review/SKILL.md +33 -10
  252. package/skill/sub-skills/evidence-extraction/SKILL.md +29 -11
  253. package/skill/sub-skills/evidence-review/SKILL.md +31 -12
  254. package/skill/sub-skills/gap-analysis/SKILL.md +31 -9
  255. package/skill/sub-skills/literature-review/SKILL.md +35 -14
  256. package/skill/sub-skills/methodology-audit/SKILL.md +29 -12
  257. package/skill/sub-skills/report-generation/SKILL.md +40 -6
  258. package/skill/sub-skills/research-planning/SKILL.md +41 -14
  259. package/skill/sub-skills/study-design/SKILL.md +30 -9
  260. package/skill/task-briefs/adjudicate.md +32 -7
  261. package/skill/task-briefs/applicability.md +38 -0
  262. package/skill/task-briefs/audit.md +32 -7
  263. package/skill/task-briefs/challenge.md +34 -5
  264. package/skill/task-briefs/evaluate.md +30 -5
  265. package/skill/task-briefs/extract.md +31 -8
  266. package/skill/task-briefs/frame.md +39 -10
  267. package/skill/task-briefs/intervene.md +32 -6
  268. package/skill/task-briefs/present.md +32 -8
  269. package/skill/task-briefs/projection.md +37 -0
  270. package/skill/task-briefs/retrieve.md +36 -6
  271. package/skill/workflows/decision-and-pilot.md +85 -0
  272. package/skill/workflows/evaluate-and-update.md +93 -0
  273. package/skill/workflows/evidence-review.md +117 -0
  274. package/visualization/eduevidence-report/assets/base.css +2 -2
  275. package/visualization/eduevidence-report/assets/reader.css +752 -0
  276. package/visualization/eduevidence-report/assets/reader.js +132 -0
  277. package/visualization/eduevidence-report/references/chart-selection-catalog.md +109 -0
  278. package/visualization/eduevidence-report/references/lieflat-composition.md +3 -1
  279. package/visualization/eduevidence-report/scripts/build_figures.py +25 -3
  280. package/visualization/eduevidence-report/scripts/build_infographics.py +5 -1
  281. package/visualization/eduevidence-report/scripts/build_report.py +561 -121
  282. package/visualization/eduevidence-report/scripts/charts_data.py +2 -0
  283. package/visualization/eduevidence-report/scripts/lieflat_engine.py +371 -136
  284. package/visualization/eduevidence-report/scripts/zh_labels.py +80 -1
  285. package/visualization/eduevidence-report/themes/academic.css +1 -1
  286. package/visualization/eduevidence-report/themes/claude.css +1 -1
  287. package/visualization/eduevidence-report/themes/datalab-dark.css +2 -2
  288. package/visualization/eduevidence-report/themes/datalab.css +2 -2
  289. package/visualization/eduevidence-report/themes/presentation.css +2 -2
  290. package/web/README.md +18 -0
  291. package/web/architecture.html +14885 -0
  292. package/web/index.html +53 -0
  293. package/web/studio/THIRD_PARTY_LICENSES.txt +146 -0
  294. package/web/studio/assets/index-B8tkF44Q.css +1 -0
  295. package/web/studio/assets/index-CQ6Keoyc.js +230 -0
  296. package/web/studio/config.json +1 -0
  297. package/web/studio/index.html +14 -0
  298. package/engine/__pycache__/__init__.cpython-312.pyc +0 -0
  299. package/engine/__pycache__/analysis.cpython-312.pyc +0 -0
  300. package/engine/__pycache__/bias.cpython-312.pyc +0 -0
  301. package/engine/__pycache__/briefs.cpython-312.pyc +0 -0
  302. package/engine/__pycache__/capabilities.cpython-312.pyc +0 -0
  303. package/engine/__pycache__/citation_check.cpython-312.pyc +0 -0
  304. package/engine/__pycache__/contracts.cpython-312.pyc +0 -0
  305. package/engine/__pycache__/datasets.cpython-312.pyc +0 -0
  306. package/engine/__pycache__/events.cpython-312.pyc +0 -0
  307. package/engine/__pycache__/evidence_graph.cpython-312.pyc +0 -0
  308. package/engine/__pycache__/evidence_review.cpython-312.pyc +0 -0
  309. package/engine/__pycache__/evidencecore.cpython-312.pyc +0 -0
  310. package/engine/__pycache__/gap_lens.cpython-312.pyc +0 -0
  311. package/engine/__pycache__/gaps.cpython-312.pyc +0 -0
  312. package/engine/__pycache__/graph_store.cpython-312.pyc +0 -0
  313. package/engine/__pycache__/graph_validate.cpython-312.pyc +0 -0
  314. package/engine/__pycache__/ids.cpython-312.pyc +0 -0
  315. package/engine/__pycache__/library.cpython-312.pyc +0 -0
  316. package/engine/__pycache__/library_builtin.cpython-312.pyc +0 -0
  317. package/engine/__pycache__/living.cpython-312.pyc +0 -0
  318. package/engine/__pycache__/log.cpython-312.pyc +0 -0
  319. package/engine/__pycache__/meta_analysis.cpython-312.pyc +0 -0
  320. package/engine/__pycache__/meta_synthesis.cpython-312.pyc +0 -0
  321. package/engine/__pycache__/migration.cpython-312.pyc +0 -0
  322. package/engine/__pycache__/mode_router.cpython-312.pyc +0 -0
  323. package/engine/__pycache__/paths.cpython-312.pyc +0 -0
  324. package/engine/__pycache__/pilot.cpython-312.pyc +0 -0
  325. package/engine/__pycache__/planner.cpython-312.pyc +0 -0
  326. package/engine/__pycache__/project.cpython-312.pyc +0 -0
  327. package/engine/__pycache__/projections.cpython-312.pyc +0 -0
  328. package/engine/__pycache__/robustness.cpython-312.pyc +0 -0
  329. package/engine/__pycache__/run.cpython-312.pyc +0 -0
  330. package/engine/__pycache__/semantics.cpython-312.pyc +0 -0
  331. package/engine/__pycache__/study_design.cpython-312.pyc +0 -0
  332. package/engine/__pycache__/synthesis.cpython-312.pyc +0 -0
  333. package/engine/__pycache__/tribunal.cpython-312.pyc +0 -0
  334. package/engine/__pycache__/update.cpython-312.pyc +0 -0
  335. package/engine/__pycache__/versions.cpython-312.pyc +0 -0
  336. package/integrations/__pycache__/__init__.cpython-312.pyc +0 -0
  337. package/integrations/__pycache__/agent_mcp.cpython-312.pyc +0 -0
  338. package/integrations/__pycache__/smart_web_fetch.cpython-312.pyc +0 -0
  339. package/retrieval/__pycache__/__init__.cpython-312.pyc +0 -0
  340. package/retrieval/__pycache__/corpus_store.cpython-312.pyc +0 -0
  341. package/retrieval/__pycache__/dedupe.cpython-312.pyc +0 -0
  342. package/retrieval/__pycache__/failures.cpython-312.pyc +0 -0
  343. package/retrieval/__pycache__/fetch.cpython-312.pyc +0 -0
  344. package/retrieval/__pycache__/search.cpython-312.pyc +0 -0
  345. package/retrieval/__pycache__/source.cpython-312.pyc +0 -0
  346. package/retrieval/__pycache__/validate.cpython-312.pyc +0 -0
  347. package/scripts/__pycache__/__init__.cpython-312.pyc +0 -0
  348. package/scripts/__pycache__/benchmark.cpython-312.pyc +0 -0
  349. package/scripts/__pycache__/benchmark_evaluator.cpython-312.pyc +0 -0
  350. package/scripts/__pycache__/benchmark_judge.cpython-312.pyc +0 -0
  351. package/scripts/__pycache__/benchmark_routing.cpython-312.pyc +0 -0
  352. package/scripts/__pycache__/benchmark_v2.cpython-312.pyc +0 -0
  353. package/scripts/__pycache__/benchmark_v3.cpython-312.pyc +0 -0
  354. package/scripts/__pycache__/build_result.cpython-312.pyc +0 -0
  355. package/scripts/__pycache__/claim_audit.cpython-312.pyc +0 -0
  356. package/scripts/__pycache__/complexity_gate.cpython-312.pyc +0 -0
  357. package/scripts/__pycache__/compute_confidence.cpython-312.pyc +0 -0
  358. package/scripts/__pycache__/dashboard_server.cpython-312.pyc +0 -0
  359. package/scripts/__pycache__/did_regression.cpython-312.pyc +0 -0
  360. package/scripts/__pycache__/effect_calculator.cpython-312.pyc +0 -0
  361. package/scripts/__pycache__/evidence_matrix.cpython-312.pyc +0 -0
  362. package/scripts/__pycache__/evidence_score.cpython-312.pyc +0 -0
  363. package/scripts/__pycache__/evidence_semantics.cpython-312.pyc +0 -0
  364. package/scripts/__pycache__/fetch_benchmark.cpython-312.pyc +0 -0
  365. package/scripts/__pycache__/lint_report_layout.cpython-312.pyc +0 -0
  366. package/scripts/__pycache__/orchestrator.cpython-312.pyc +0 -0
  367. package/scripts/__pycache__/pre_verdict_gate.cpython-312.pyc +0 -0
  368. package/scripts/__pycache__/recompute_demo_quality.cpython-312.pyc +0 -0
  369. package/scripts/__pycache__/render_report.cpython-312.pyc +0 -0
  370. package/scripts/__pycache__/render_report_html.cpython-312.pyc +0 -0
  371. package/scripts/__pycache__/run_workspace.cpython-312.pyc +0 -0
  372. package/scripts/__pycache__/skill_lint.cpython-312.pyc +0 -0
  373. package/scripts/__pycache__/startup_probe.cpython-312.pyc +0 -0
  374. package/scripts/__pycache__/sync_killer_demo_report.cpython-312.pyc +0 -0
  375. package/scripts/__pycache__/test_adversarial_empirical.cpython-312-pytest-9.0.2.pyc +0 -0
  376. package/scripts/__pycache__/test_adversarial_empirical.cpython-312-pytest-9.1.1.pyc +0 -0
  377. package/scripts/__pycache__/validate_schema.cpython-312.pyc +0 -0
  378. package/visualization/eduevidence-report/scripts/__pycache__/adapter_contract.cpython-312.pyc +0 -0
  379. package/visualization/eduevidence-report/scripts/__pycache__/build_artifact_manifest.cpython-312.pyc +0 -0
  380. package/visualization/eduevidence-report/scripts/__pycache__/build_charts.cpython-312.pyc +0 -0
  381. package/visualization/eduevidence-report/scripts/__pycache__/build_figures.cpython-312.pyc +0 -0
  382. package/visualization/eduevidence-report/scripts/__pycache__/build_infographics.cpython-312.pyc +0 -0
  383. package/visualization/eduevidence-report/scripts/__pycache__/build_report.cpython-312.pyc +0 -0
  384. package/visualization/eduevidence-report/scripts/__pycache__/charts_data.cpython-312.pyc +0 -0
  385. package/visualization/eduevidence-report/scripts/__pycache__/lieflat_engine.cpython-312.pyc +0 -0
  386. package/visualization/eduevidence-report/scripts/__pycache__/zh_labels.cpython-312.pyc +0 -0
@@ -0,0 +1,105 @@
1
+ # Contributing to EduEvidence
2
+
3
+ EduEvidence 是一个**证据驱动的决策引擎**:它的产出要能被第三方复核。因此本仓库的贡献规则有一条主线——**契约先行**。每个科学概念都在多处声明(协议、能力、角色、简报、子技能、分包),任何一处漂移都会让结论失去可追溯性。
4
+
5
+ ## 1. 环境准备
6
+
7
+ ```bash
8
+ git clone https://github.com/37chengshan/eduevidence.git
9
+ cd eduevidence
10
+ bash install.sh # venv + 依赖 + 自检 + 测试
11
+ # 或最小安装
12
+ python3 -m venv .venv && .venv/bin/pip install -e '.[dev]'
13
+ ```
14
+
15
+ 要求 Python ≥ 3.10;内核(`engine/`、`retrieval/`)零第三方依赖,测试需要 `pytest`。Node 只在构建 Research Studio 前端时需要。
16
+
17
+ ## 2. 提交前必须跑的门
18
+
19
+ ```bash
20
+ python scripts/check_version_consistency.py # 版本口径单一权威
21
+ python scripts/generate_metrics.py --check # 文档数字与仓库一致
22
+ python scripts/skill_lint.py # Skill 结构完整
23
+ python scripts/check_protocol_alignment.py # 协议五方对齐
24
+ ruff check --select E9,F63,F7,F82 .
25
+ python -m pytest -q
26
+ ```
27
+
28
+ CI(`.github/workflows/ci.yml`)会重复执行上述门,外加 wheel 隔离安装冒烟、schema-smoke 与提交包构建。本地全绿是提交的最低门槛。
29
+
30
+ ## 3. 科学不变量(不可协商)
31
+
32
+ - **任务表现 ≠ 学习效果**:任何把任务完成度当作学习收益的写法都会被门拒绝。
33
+ - **snippet ≠ 证据**:检索片段与摘要只是发现线索,只有抓取并通过校验门的正文可以抽取。
34
+ - **缺证据 ≠ 零效应**:证据不足时输出 `INSUFFICIENT EVIDENCE`,不得换算成"无效"。
35
+ - **无证据奠基不得设计新研究**:研究设计必须引用显式的 KnowledgeGap ID。
36
+ - **证据 append-only**:修订产生新 revision 与新 decision snapshot,绝不覆盖历史。
37
+ - **写入者唯一**:图修订只能由规范写入者提交,worker 不得直接写图。
38
+
39
+ 详见 `references/scientific-invariants.md`,由 `scripts/check_autoresearch_invariants.py` 强制。
40
+
41
+ ## 4. 如何新增一项能力(capability)
42
+
43
+ 能力是"协议能做什么"的最小单元,它与模型、CLI、Agent 数量无关。新增一项能力需要同时落地四处,缺一不可:
44
+
45
+ 1. `engine/capabilities.py`:用 `_register(...)` 注册 `capability_id`、输入/输出契约、是否可确定性本地执行,以及(如有)科学门。
46
+ 2. `skill/roles/registry.yaml`:把能力分配给承担它的角色(`capabilities:` 列表)。
47
+ 3. `skill/agents/<role>.md`:在 frontmatter 的 `capabilities` 中同步,并在正文写清产出契约。
48
+ 4. `skill/sub-skills/<name>/SKILL.md`:frontmatter 写 `capability:`,正文按 recipe 模板给出 Inputs / Process / Output Contract / Quality Gates / Anti-Patterns。
49
+
50
+ 跑 `python scripts/check_protocol_alignment.py` 验证五方一致。
51
+
52
+ ## 5. 如何新增一个子技能(sub-skill)
53
+
54
+ 子技能是内部能力配方,不是新的用户入口。模板:
55
+
56
+ ```markdown
57
+ ---
58
+ name: <dir-name> # 必须与目录名一致
59
+ description: "..."
60
+ capability: <capability_id> # 映射到 engine/capabilities.py
61
+ ---
62
+
63
+ # <Title>
64
+ ## When to Use
65
+ ## Inputs
66
+ ## Process
67
+ ## Output Contract
68
+ ## Quality Gates
69
+ ## Anti-Patterns
70
+ ## Worked Example
71
+ ## References
72
+ ```
73
+
74
+ ## 6. 如何新增一个角色(role)
75
+
76
+ 角色是责任单元,不是运行时 Agent。新增角色需要:`skill/roles/registry.yaml`(stage / capability / critical_path)、`skill/agents/<role>.md`(frontmatter 用 `role_id` / `capabilities` / `output_contracts` / `recommended_reasoning`,**不得写死模型或 CLI 名**)、`integrations/agent_mcp.py` 的 `ROLE_REQUIREMENTS`(只写能力等级)。
77
+
78
+ 需要独立性的角色显式声明:`independence_required: different-model-family`(如 skeptic)或 `role-separation`(如 method-reviewer)。
79
+
80
+ ## 7. 如何新增一个检索通道
81
+
82
+ 1. 在 `retrieval/` 下实现 provider(stdlib-only、超时、定型错误,不抛异常到管道)。
83
+ 2. 零配置通道进 `zero_config_academic` / `zero_config_web`;需 key 的学术通道进 `academic_key_providers`,并实现 `is_available()`。
84
+ 3. 命中结果统一为 `SearchHit`;沿用 `doc_id` / `chunk_id` / `offset` 表达定位(如适用)。
85
+ 4. 在 `docs/` 记录端点契约,在 `references/retrieval-compliance.md` 补齐配额与限制,在 `tests/` 用 mock HTTP 覆盖成功与各类失败。
86
+
87
+ ## 8. 证据纪律与文档
88
+
89
+ - 示例与演示必须如实标注 `data_origin`(manual_curated / synthetic / hybrid);不得把手工整理文献说成模型运行结果。
90
+ - 数字口径以 `docs/metrics.json` 为准,文档中不硬编码会漂移的计数。
91
+ - 内部文档用中文,`SKILL.md` 保持英文;协议语义(九步、四态、Projection 边界)不因文档改写而改变。
92
+
93
+ ## 9. PR 检查表
94
+
95
+ - [ ] 五个门本地全绿(版本 / 指标 / skill_lint / 协议对齐 / 测试)。
96
+ - [ ] 新增或改动的契约在五方(协议 / 能力 / 角色 / 简报 / 子技能)一致。
97
+ - [ ] 未引入硬编码的模型名、CLI 名或密钥。
98
+ - [ ] 科学不变量未被弱化;如有例外,在 PR 说明中显式论证。
99
+ - [ ] 文档、CHANGELOG、`docs/plans/STATUS.md` 同步更新。
100
+ - [ ] 未提交本地运行状态、私有数据或凭据。
101
+
102
+ ## 10. 行为准则
103
+
104
+ 讨论以证据为准:提出结论时给出可核验来源;被反驳时更新结论而不是更新措辞。对他人贡献的评审聚焦"证据是否支撑结论",不针对作者。
105
+
package/README.md CHANGED
@@ -1,18 +1,35 @@
1
+ <p align="center">
2
+ <img src="assets/readme/logo.png" width="88" height="88" alt="EduEvidence logo" />
3
+ </p>
4
+
1
5
  # EduEvidence
2
6
 
3
7
  > **🌐 English | [中文](README.zh-CN.md)**
4
8
 
5
- ## EduEvidence Research Engine — Evidence-Based Education Decision Skill
9
+ ## EduEvidence Research Engine — Evidence Research & Decision Skill
10
+
11
+ > **From Research Questions to Evidence-Based Decisions.** · Current release **6.2.0**
6
12
 
7
- > **From Education Questions to Evidence-Based Decisions.**
13
+ > **▶ Live demo:** [Landing](https://37chengshan.github.io/eduevidence/) · [Research Studio](https://37chengshan.github.io/eduevidence/studio/) · [Deep Research comparison](https://37chengshan.github.io/eduevidence/comparison.html)
8
14
 
9
15
  EduEvidence is delivered as an **AI Agent Skill**; inside the Skill operates
10
16
  the **EduEvidence Research Engine** — a persistent, auditable engine that
11
- turns education questions into evidence-grounded decisions.
12
-
13
- - **Two Research Modes** **Evidence Review** (secondary-evidence research)
14
- and **Full Research Cycle** (Evidence Review Knowledge Gap study design
15
- your data analysis → updated decision).
17
+ turns a decision question into an evidence-grounded answer. It is **multi-domain**:
18
+ the domain registry (`domains/manifest.json`) ships **education** and **policy**
19
+ today, each declaring its own frame schema, outcome taxonomy and methodology
20
+ checklist, so one nine-stage protocol serves education and applied social science
21
+ work without forking the engine.
22
+
23
+ - **Three public workflows** — **Evidence Review**, **Decision & Pilot**, and
24
+ **Evaluate & Update**. A full research cycle connects existing evidence,
25
+ grounded knowledge gaps, a study design, new data and a revised decision.
26
+ - **Multi-domain by contract** — `education` and `policy` are registered domains;
27
+ a run validates against its own domain's frame schema and outcome taxonomy
28
+ (`engine/taxonomy.py` is the single authority; unknown tokens fail closed).
29
+ - **Retrieval that stays traceable** — zero-config channels (OpenAlex / Semantic
30
+ Scholar / CrossRef / AIHot / AgentSearch / DuckDuckGo) plus key-based channels:
31
+ **Sciverse** (citation-grade academic retrieval with full-text locators),
32
+ Tavily and Brave. A lookup snippet is a locator, never evidence.
16
33
  - **Project Workspace + Evidence Graph** — long-lived Projects with versioned,
17
34
  immutable graph revisions; `result.json`/HTML/Markdown are projections, not
18
35
  fact stores.
@@ -21,18 +38,38 @@ turns education questions into evidence-grounded decisions.
21
38
  - **Frozen scientific rule** — *No new study design without evidence
22
39
  grounding*: designs must reference explicit, evidence-grounded Knowledge
23
40
  Gap IDs.
24
- - ⚖️ It does not generate answers for teachers — it shows what the evidence supports, what it cannot support, who it applies to, and how to pilot and verify it.
41
+ - ⚖️ Inspect what the evidence supports, what it cannot support, who it applies to, and how to pilot and verify it.
25
42
  - 🧪 Built on real research (examples include CHI 2023 / PNAS 2025 / ACL 2025 / Springer 2024 empirical evidence); no claims without sources.
26
- - 🚦 The output is not a binary "allow/forbid" answer but a four-state decision — **ADOPT / PILOT / REJECT / INSUFFICIENT EVIDENCE** — plus an actionable teaching intervention and evaluation plan.
43
+ - 🚦 The output is not a binary "allow/forbid" answer but a four-state decision — **ADOPT / PILOT / REJECT / INSUFFICIENT EVIDENCE** — plus an actionable intervention and evaluation plan.
27
44
  - 🧩 The engine is an internal capability architecture — not a standalone
28
45
  server/app; Native Core runs on Python stdlib only and never requires
29
46
  Agent MCP or a daemon.
30
47
 
31
- ![EduEvidence overview banner](assets/top-banner.jpg)
48
+ ![Research Studio walkthrough: overview, report library, and the five report identities](assets/readme/studio-tour.gif)
49
+
50
+ *Recorded from the actual local Studio — no mockups: overview → report library → five report identities. Below, the introduction page walkthrough:*
51
+
52
+ ![Introduction page walkthrough: hero, nine-step protocol, five report systems](assets/readme/landing-tour.gif)
32
53
 
33
54
  ---
34
55
 
35
- ## Quick Install
56
+ ## Quick Start
57
+
58
+ **Fastest path — read a finished report (no install):**
59
+
60
+ ```bash
61
+ open examples/ai-coding-assistant-evidence/EduEvidence_Report.html
62
+ open examples/spaced-retrieval-practice/EduEvidence_Report.html # real Sciverse run
63
+ ```
64
+
65
+ **Look at the console (Python 3.10+, Node not required):**
66
+
67
+ ```bash
68
+ python3 scripts/dashboard_server.py --host 127.0.0.1 --port 8765
69
+ # browser: http://127.0.0.1:8765/studio/ (read-only research console)
70
+ ```
71
+
72
+ **Install it:**
36
73
 
37
74
  **npm (recommended for Skill install)**
38
75
 
@@ -54,7 +91,7 @@ bash install.sh # one-click: venv + deps + self-check + tests
54
91
  Open the example report right away:
55
92
 
56
93
  ```bash
57
- open examples/ai-coding-assistant/EduEvidence_Report.html
94
+ open examples/ai-coding-assistant-evidence/EduEvidence_Report.html
58
95
  ```
59
96
 
60
97
  > Requires Python 3.10+; the core has zero third-party dependencies. `pip install matplotlib` is optional for academic-figure PNG/PDF export.
@@ -129,7 +166,7 @@ runnable + sample report renderable).
129
166
 
130
167
  ## What Problem We Solve
131
168
 
132
- A typical AI answers an education question like this:
169
+ A typical AI answers a decision question like this:
133
170
 
134
171
  ```text
135
172
  Question → Search a few sources → Summarize opinions → Give advice
@@ -138,15 +175,15 @@ Question → Search a few sources → Summarize opinions → Give advice
138
175
  EduEvidence does this instead:
139
176
 
140
177
  ```text
141
- Education question
142
- Education Research Framing (learner / intervention / comparison / outcomes / context)
178
+ Decision question (education or applied social science)
179
+ Domain Research Framing (learner or decision object / intervention / comparison / outcomes / context)
143
180
  → Literature & evidence retrieval (supporting evidence + independent counter-evidence)
144
181
  → Claim-Level Evidence Extraction
145
182
  → Skeptic challenge protocol + Method Reviewer audit
146
183
  → Evidence Tribunal
147
184
  → Applicability Analysis
148
185
  → Decision: ADOPT / PILOT / REJECT / INSUFFICIENT EVIDENCE
149
- Teaching Intervention (minimum viable pilot)
186
+ → Intervention (minimum viable pilot)
150
187
  → Evaluation Plan
151
188
  ```
152
189
 
@@ -155,43 +192,44 @@ It answers six questions:
155
192
  1. What does the current evidence actually support?
156
193
  2. What can the current evidence not support?
157
194
  3. Why do different studies reach different results?
158
- 4. Which students, which courses, under which conditions does it apply to?
159
- 5. If an institution adopts it, how to roll it out with low risk?
195
+ 4. Which population, in which setting, under which conditions does it apply to?
196
+ 5. If an institution adopts it, how should it be rolled out with low risk?
160
197
  6. How to verify whether it actually works after implementation?
161
198
 
162
- ## 30-second Demo
199
+ ## 30-second tour
163
200
 
164
- > Main demo: **Should first-year C programming students be allowed to use generative AI coding assistants?**
201
+ > Flagship question: **Should first-year C programming students be allowed to use generative AI coding assistants?**
165
202
 
166
203
  | Time | Stage |
167
204
  |---|---|
168
- | 0–20s | Ask the education question |
169
- | 20–45s | Education Research Frame |
205
+ | 0–20s | Ask the decision question |
206
+ | 20–45s | Research Frame (domain-specific schema) |
170
207
  | 45–75s | Evidence Retrieval |
171
208
  | 75–110s | Evidence Matrix |
172
209
  | 110–135s | Methodology + Skeptic |
173
210
  | 135–155s | Evidence Tribunal |
174
- | 155–170s | Teaching Intervention + Evaluation |
211
+ | 155–170s | Intervention + Evaluation |
175
212
  | 170–180s | Benchmark |
176
213
 
177
- Full example pack: [`examples/ai-coding-assistant/`](examples/ai-coding-assistant/).
214
+ Full example pack: [`examples/ai-coding-assistant-evidence/`](examples/ai-coding-assistant-evidence/).
178
215
 
179
- ## Why Education Evidence Is Hard
216
+ ## Why Evidence Decisions Are Hard
180
217
 
181
- Education evidence has natural pitfalls. EduEvidence's core contribution is standardizing the countermeasures:
218
+ Evidence across education and applied social science shares the same natural pitfalls. EduEvidence's core contribution is standardizing the countermeasures:
182
219
 
183
220
  - **Outcome Separation**: `faster task completion ≠ actually learning to program`; `short-term score gains ≠ long-term retention`; `completing tasks with AI ≠ transferring skills without AI`.
184
221
  - **Counter-Evidence Search**: it does not just verify the user's initial assumption — it independently searches for null / negative / contradictory evidence, AI dependency, novelty effects, self-selection bias, and more.
185
222
  - **Evidence Tribunal**: instead of listing pros and cons, it judges which studies are more credible, whether conflicts come from samples / measurement / course / tool / design, and what can be concluded so far.
186
- - **Evidence-to-Action Bridge**: it does not stop at "research shows…" — it connects to applicability, the teaching decision, pilot intervention, and evaluation design.
223
+ - **Evidence-to-Action Bridge**: it does not stop at "research shows…" — it connects to applicability, the decision, pilot intervention, and evaluation design.
187
224
 
188
225
  ## How EduEvidence Works
189
226
 
190
227
  ```text
191
228
  ┌─────────────────────────────────────┐
192
229
  │ EduEvidence │
193
- education knowledge + decision +
194
- intervention + evaluation
230
+ domain contracts (education /
231
+ policy) + decision + intervention
232
+ │ + evaluation │
195
233
  └────────────────┬────────────────────┘
196
234
 
197
235
  ┌────────────────▼────────────────────┐
@@ -209,22 +247,24 @@ Education evidence has natural pitfalls. EduEvidence's core contribution is stan
209
247
  The 9-step workflow:
210
248
 
211
249
  ```text
212
- 1. Frame Build the EducationResearchFrame
250
+ 1. Frame Build the domain frame (education frame / policy frame)
213
251
  2. Retrieve Retrieve literature & evidence (support + independent counter-evidence)
214
252
  3. Extract Extract claim-level evidence (bound to outcomes)
215
253
  4. Challenge Skeptic protocol (fixed 9 checks)
216
254
  5. Audit Method Reviewer audit (15-item checklist)
217
255
  6. Adjudicate Evidence Tribunal (Evidence Matrix + Verdict)
218
256
  7. Applicability Applicability analysis
219
- 8. Intervene Teaching Intervention design (minimum viable pilot)
257
+ 8. Intervene Intervention design (minimum viable pilot)
220
258
  9. Evaluate Evaluation Plan design
221
259
  ```
222
260
 
223
- Every step is validated against JSON Schemas (`schemas/`), deterministic logic lives in `scripts/`, and the education methodology is documented independently in `references/`.
261
+ Every step is validated against JSON Schemas (`schemas/`), deterministic logic lives in `scripts/`, and the methodology is documented independently in `references/` (21 documents: evidence quality, skeptic protocol, tribunal policy, WWC/GRADE standards, social-science pitfalls, retrieval protocol, report copy style …; counts in `docs/metrics.json`).
224
262
 
225
263
  ## Outcome Separation
226
264
 
227
- EduEvidence enforces 20 outcome types (`references/outcome-taxonomy.md`):
265
+ Outcome tokens are domain-owned. The education taxonomy declares **20 tokens** in four categories (`domains/education/outcome_taxonomy.json`); the policy domain declares its own categories and tokens (`domains/policy/outcome_taxonomy.json`). `engine/taxonomy.py` is the only reader: an unknown token or unregistered domain **fails closed** instead of being silently classified as a learning outcome.
266
+
267
+ The education set (`references/outcome-taxonomy.md`):
228
268
 
229
269
  ```text
230
270
  Learning: Knowledge Gain / Concept Understanding / Retention / Transfer / Independent Problem Solving
@@ -233,25 +273,25 @@ Process: Engagement / Motivation / Cognitive Load / Help-Seeking / Metacogni
233
273
  Risk: AI Dependency / Over-reliance / Reduced Effort / Reduced Transfer / Academic Integrity Risk / False Confidence
234
274
  ```
235
275
 
236
- The demo's highlight: in Kazemitabaar et al. (CHI 2023), the AI code assistant raised task completion by 1.15× and correctness by 1.8×, but the one-week retention test showed no significant difference — **task performance ≠ learning**.
276
+ The flagship demo's highlight: in Kazemitabaar et al. (CHI 2023), the AI code assistant raised task completion by 1.15× and correctness by 1.8×, but the one-week retention test showed no significant difference — **task performance ≠ learning**.
237
277
 
238
278
  ## Evidence Tribunal
239
279
 
240
- `references/tribunal-policy.md` defines the adjudication rules: input = Frame + Evidence Matrix + Skeptic Findings + Method Reviews; output = EducationVerdict (`schemas/verdict.schema.json`), including:
280
+ `references/tribunal-policy.md` defines the adjudication rules: input = Frame + Evidence Matrix + Skeptic Findings + Method Reviews; output = the domain Verdict (`schemas/verdict.schema.json`), including:
241
281
 
242
282
  - supported / uncertain / contradicted claims
243
283
  - conflict-source analysis (sample / measurement / course / tool / design)
244
284
  - Can Claim / Cannot Claim boundaries
245
285
  - four-state decision + Confidence (rule-based, not model-generated freely)
246
286
 
247
- ![Evidence Tribunal Workflow](assets/tribunal-workflow.jpg)
287
+ ![Evidence Tribunal Workflow](assets/readme/research-workflow.svg)
248
288
 
249
289
  ## From Evidence to Action
250
290
 
251
- Evidence must connect to the real classroom (`references/applicability-policy.md`, `intervention-design.md`, `evaluation-design.md`):
291
+ Evidence must connect to the real setting — a classroom, a support team, a policy roll-out (`references/applicability-policy.md`, `intervention-design.md`, `evaluation-design.md`):
252
292
 
253
- - **Applicability**: For whom? For which course? For which outcome? Under what conditions? With what AI usage policy?
254
- - **Intervention**: always a "minimum viable pilot", never direct full deployment; includes AI usage rules, teacher/student roles, reflection requirements, and stop conditions.
293
+ - **Applicability**: For whom? In which setting? For which outcome? Under what conditions? With what AI usage policy?
294
+ - **Intervention**: always a "minimum viable pilot", never direct full deployment; includes AI usage rules, staff/user roles, reflection requirements, and stop conditions.
255
295
  - **Evaluation**: every PILOT/ADOPT recommendation must come with an evaluation plan; distinguishes baseline / post-test / retention / transfer, and task-performance vs learning metrics.
256
296
 
257
297
  ## Benchmark
@@ -276,47 +316,51 @@ Key metrics: Citation Support Precision / Unsupported Claim Rate / Contradiction
276
316
 
277
317
  > **Should first-year C programming students be allowed to use generative AI coding assistants?**
278
318
 
279
- `examples/ai-coding-assistant/` shows the full path from question to decision:
319
+ `examples/ai-coding-assistant-evidence/` shows the full path from question to decision:
280
320
 
281
- - **Evidence** (7 items, all bound to real sources): task-performance gains (Kazemitabaar 2023), unguarded access harming independent exam performance by −17% (Bastani 2025, PNAS), guardrails eliminating the negative effect (Bastani 2025), formative-feedback writing evidence (Marzuki 2024).
321
+ - **Evidence** (12 findings from 8 sources): task-performance gains (Kazemitabaar 2023), unguarded access harming independent exam performance by −17% (Bastani 2025, PNAS), guardrails eliminating the negative effect (Bastani 2025), formative-feedback writing evidence (Marzuki 2024).
282
322
  - **Decision**: **PILOT** — task-performance evidence is strong, but direct learning-effect evidence for university programming courses is missing, and the unguarded-access risk is documented.
283
323
  - **Intervention**: 4-phase pilot (Independent Foundation → Explain Don't Solve → Structured Collaboration → Transfer Check).
284
324
  - **Evaluation**: no-AI baseline / post-test / final-exam retention / no-AI transfer task + AI-dependency risk metrics.
285
325
 
286
- Two more examples AI writing assistant (`examples/ai-writing-assistant/`) and a calculus AI tutor (`examples/ai-tutor/`) show the skill is not hard-coded to one question.
326
+ A second public example, `examples/workplace-ai-assistant/`, evaluates AI assistance in enterprise customer support using the policy domain: 4 findings from 3 studies, with direct and indirect evidence distinguished. Its proposed supervised pilot has not been executed.
327
+
328
+ The third public example, `examples/spaced-retrieval-practice/`, asks whether spaced repetition and retrieval practice should replace massed review in an introductory programming course. It is the first pack whose sources were located through the **Sciverse** channel (`discovery_provider=sciverse`, `fetch_provider=sciverse_content`) and whose `meta.data_origin` is `real_run_sciverse`: 6 findings from 7 tier-1 DOI sources, decision **ADOPT** (High confidence). It is the worked example that the ADOPT path is reachable: retention and transfer - the two primary outcomes - carry direct, consistent evidence at directness 2, while the coding and workplace cases stay bounded at PILOT because their primary learning evidence is missing.
287
329
 
288
- **Example provenance (read before citing)**: every example pack carries a `data_origin`
289
- badge in its report header and in `result.json.meta`:
330
+ Each pack ships `result.json` + `result.zh.json` (bilingual parallel data), a packaged-`EduEvidence_Report.html` root report, and `reports-5themes/` with the five standalone theme HTML files.
290
331
 
291
- - `examples/ai-coding-assistant-evidence/` **flagship, real literature**: 8 sources with
292
- registry-verified DOIs (Crossref/DataCite audit: `benchmarks/doi-audit/report.md`),
293
- engine-computed confidence; data_origin=`manual_curated`.
294
- - `examples/ai-coding-assistant/`, `ai-tutor/`, `ai-writing-assistant/` — real-source
295
- walkthrough packs.
296
- - `examples/esl-academic-writing-ai/`, `highschool-math-ai-tutor/` — **synthetic
297
- demonstrations** (data_origin=`synthetic`). Their numbers and citations are illustrative,
298
- not real studies; reports carry a loud SYNTHETIC badge. Do not cite them as evidence.
332
+ All three public examples are literature demonstrations, and their `data_origin` says exactly what produced them. The coding and workplace cases are **manually curated** (`manual_curated`); the spaced-retrieval case is a recorded **Sciverse-backed run** (`real_run_sciverse`). A rendered report never establishes that an agent completed the whole nine-stage research workflow. See [the workplace evidence notes](docs/demo-workplace-ai.md) for source versions and limitations, and [`docs/reproducibility.md`](docs/reproducibility.md) for how `data_origin` is declared.
299
333
 
300
334
  ### Start your own research in ~30 minutes
301
335
 
302
336
  ```bash
303
- python3 scripts/quickstart.py "你的教育研究问题" # creates runs/<id> + NEXT_STEPS.md
337
+ python3 scripts/quickstart.py "你的研究问题" # creates runs/<id> + NEXT_STEPS.md
304
338
  # hand the LLM stages to your AI agent per NEXT_STEPS.md, then finish with:
305
339
  python3 scripts/orchestrator.py adjudicate --project runs/<id>
306
340
  bash scripts/bake_pack.sh <pack_dir> # 5-theme bilingual report
307
341
  python3 scripts/citation_check.py --pack <pack_dir> --write-back # DOI ✓ badges
308
342
  ```
309
343
 
344
+ ## Studio in use
345
+
346
+ Select a graph node to trace source → finding → claim. The flow is a visual aid; it does not signal an active research run.
347
+
348
+ ![Actual provenance graph](assets/readme/studio-graph.png)
349
+
350
+ Read the same evidence through five independent report themes, with bilingual and brief/full views.
351
+
352
+ ![Actual report reading room](assets/readme/studio-reports.png)
353
+
310
354
  ## Visualization: Bilingual HTML Report + Infographics + Academic Figures
311
355
 
312
- After research completes, `result.json` is rendered into three visualization outputs by deterministic Python adapters. The adapters themselves use the standard library; the optional Web Studio chart enhancement has a separate browser dependency.
356
+ After research completes, `result.json` is rendered into three visualization outputs by deterministic Python adapters. The adapters themselves use the standard library; legacy ECharts enhancement is optional and is not required by the new Research Studio.
313
357
 
314
358
  ```text
315
359
  result.json + result.zh.json (Chinese parallel data)
316
- ├─ build_charts.py → chart_specs.json (ECharts option data; no ECharts runtime bundled)
317
- ├─ build_infographics.py → infographics.json (hand-authored SVGs)
318
- ├─ build_figures.py → figures/ (publication figures: figure_data.json + SVG/PNG/PDF)
319
- └─ build_report.py → EduEvidence_Report.html (single-file bilingual report + report_spec.json)
360
+ ├─ visualization/eduevidence-report/scripts/build_charts.py → chart_specs.json (ECharts option data; no ECharts runtime bundled)
361
+ ├─ visualization/eduevidence-report/scripts/build_infographics.py → infographics.json (hand-authored SVGs)
362
+ ├─ visualization/eduevidence-report/scripts/build_figures.py → figures/ (publication figures: figure_data.json + SVG/PNG/PDF)
363
+ └─ visualization/eduevidence-report/scripts/build_report.py → EduEvidence_Report.html (single-file bilingual report + report_spec.json)
320
364
  ```
321
365
 
322
366
  **EduEvidence_Report.html (main deliverable)**:
@@ -328,14 +372,33 @@ result.json + result.zh.json (Chinese parallel data)
328
372
  - **Static-first**: decision, matrix, tribunal, intervention and sources remain readable without JavaScript; ECharts is an optional enhancement.
329
373
  - **Integrity gate**: chart numbers are checked against result.json item by item; publishing is blocked with `REPORT_INVALID` on mismatch.
330
374
 
331
- **Local Web Studio** (`python3 scripts/dashboard_server.py --port 8765`) has exactly three read-only views: Dashboard, Report Browser and Data Visualization. It loads ECharts 5.4.3 from jsDelivr for interactive charts; the submission package does not bundle that runtime, so Web interactivity requires network access. The baked report's static HTML/SVG remains the offline artifact.
375
+ **Research Studio** is a read-only research workspace. Start `python3 scripts/dashboard_server.py --port 8765` and open `/studio/` to inspect projects, evidence, sources, recorded runs, committed revisions and five report identities. Skill Autoevolve has a separate observation view; the console cannot start research, mutate evidence or dispatch agents.
376
+
377
+ The React + TypeScript frontend ships as static assets: Node is needed only for development, not for running the packaged Skill. Its charts do not depend on a remote ECharts CDN and never compute a pooled effect in the browser. Local research remains local; GitHub Pages exports public example packs only. Report themes are generated from complete bilingual inputs with explicit missing-data states, not fabricated fallback claims.
378
+
379
+ See [Research Studio workflow and delivery guide](docs/research-studio-guide.zh-CN.md).
380
+
381
+ > Open the example directly: `examples/ai-coding-assistant-evidence/EduEvidence_Report.html`
332
382
 
333
- > Open the example directly: `examples/ai-coding-assistant/EduEvidence_Report.html`
383
+
384
+ ### Optional key-based retrieval channels
385
+
386
+ Zero-config retrieval (OpenAlex / Semantic Scholar / CrossRef / AIHot / AgentSearch) works out of the box. These channels activate once a key is present and stay silently inactive otherwise — the scientific gates never depend on them:
387
+
388
+ ```bash
389
+ export SCIVERSE_API_TOKEN=sv-... # citation-grade academic retrieval + full-text location
390
+ export TAVILY_API_KEY=... # general web search
391
+ export BRAVE_API_KEY=... # general web search
392
+ ```
393
+
394
+ The Sciverse channel treats an `/agentic-search` chunk as a **locator**: it must be expanded through `/content` and pass the validation gate before it may enter evidence extraction (RULE 2, machine-enforced). Contract: `docs/sciverse-api.md`; compliance: `references/retrieval-compliance.md`.
334
395
 
335
396
  ## Architecture
336
397
 
337
398
  The repository is a complete **Skill package**: `SKILL.md` is the entry point; everything else is layered as *skill core → quality assurance → demos*. See [`docs/architecture.md`](docs/architecture.md):
338
399
 
400
+ Read the illustrated single-file walkthrough of the same architecture (nine-step protocol, roles and independence, artifact/state map, execution and approval loop) at [`web/architecture.html`](web/architecture.html).
401
+
339
402
  ```text
340
403
  EduEvidence/ (= one Skill package)
341
404
 
@@ -360,14 +423,14 @@ EduEvidence/ (= one Skill package)
360
423
  │ bilingual HTML composer + V2 project surfaces)
361
424
 
362
425
  ├─ Quality assurance
363
- │ ├─ tests/ pytest test matrix (V1–V4, 752 test functions / 73 files — docs/metrics.json)
426
+ │ ├─ tests/ pytest test matrix (V1–V4, current counts in docs/metrics.json)
364
427
  │ └─ benchmarks/ V1 questions + benchmarks/v2/ (graph/contract metrics)
365
428
 
366
429
  └─ Demos & distribution
367
430
  ├─ examples/ Research & Decision Packs + full-research-cycle-fixture (synthetic)
368
431
  ├─ docs/ architecture / methodology / benchmark / demo / reproducibility
369
432
  ├─ install.sh one-click install (local / multi-agent Skill) + self-check
370
- ├─ pyproject.toml packaging metadata (wheel ships CLI + engine; stdlib-only core)
433
+ ├─ pyproject.toml packaging metadata (wheel ships CLI, engine and installed runtime resources; stdlib-only core)
371
434
  └─ README(.en).md bilingual docs
372
435
  ```
373
436
 
@@ -419,7 +482,7 @@ Agent MCP is a **performance & reliability enhancement layer, not a prerequisite
419
482
 
420
483
  > 🔒 Agent MCP principle: **Scan first. Recommend second. Ask the user. Execute only after explicit confirmation.** No spawn without user approval; reject → fall back to Native.
421
484
 
422
- ![Controlled Multi-Agent Research](assets/multi-agent-research.jpg)
485
+ ![Controlled Multi-Agent Research](assets/readme/controlled-execution.svg)
423
486
 
424
487
 
425
488
  ## Usage
@@ -427,33 +490,37 @@ Agent MCP is a **performance & reliability enhancement layer, not a prerequisite
427
490
  ```bash
428
491
  # 1. Validate data against the schema contracts
429
492
  python3 scripts/validate_schema.py --schema schemas/evidence.schema.json \
430
- --data examples/ai-coding-assistant/evidence.jsonl
493
+ --data examples/ai-coding-assistant-evidence/evidence.jsonl
431
494
 
432
495
  # 2. Compute evidence quality scores and Confidence
433
- python3 scripts/evidence_score.py examples/ai-coding-assistant/evidence.jsonl
496
+ python3 scripts/evidence_score.py examples/ai-coding-assistant-evidence/evidence.jsonl
434
497
 
435
498
  # 3. Generate the Evidence Matrix (one of the core views)
436
- python3 scripts/evidence_matrix.py examples/ai-coding-assistant/evidence.jsonl
499
+ python3 scripts/evidence_matrix.py examples/ai-coding-assistant-evidence/evidence.jsonl
437
500
 
438
501
  # 4. Run the Citation Audit (claim-evidence traceability)
439
- python3 scripts/claim_audit.py --claims claims.jsonl --evidence evidence.jsonl
502
+ python3 scripts/claim_audit.py \
503
+ --claims examples/ai-coding-assistant-evidence/claims.jsonl \
504
+ --evidence examples/ai-coding-assistant-evidence/evidence.jsonl
440
505
 
441
506
  # 5. Render the Research & Decision Pack (Markdown)
442
507
  python3 scripts/render_report.py \
443
- --frame examples/ai-coding-assistant/frame.json \
444
- --evidence examples/ai-coding-assistant/evidence.jsonl \
445
- --methodology examples/ai-coding-assistant/methodology.json \
446
- --verdict examples/ai-coding-assistant/verdict.json \
447
- --intervention examples/ai-coding-assistant/intervention.json \
448
- --evaluation examples/ai-coding-assistant/evaluation.json \
508
+ --frame examples/ai-coding-assistant-evidence/frame.json \
509
+ --evidence examples/ai-coding-assistant-evidence/evidence.jsonl \
510
+ --methodology examples/ai-coding-assistant-evidence/methodology.json \
511
+ --verdict examples/ai-coding-assistant-evidence/verdict.json \
512
+ --intervention examples/ai-coding-assistant-evidence/intervention.json \
513
+ --evaluation examples/ai-coding-assistant-evidence/evaluation.json \
449
514
  --out REPORT.md
450
515
 
451
516
  # 6. Render the single-file bilingual HTML report (main deliverable)
452
517
  python3 visualization/eduevidence-report/scripts/build_report.py \
453
- --result examples/ai-coding-assistant/result.json \
454
- --out examples/ai-coding-assistant/EduEvidence_Report.html
518
+ --result examples/ai-coding-assistant-evidence/result.json \
519
+ --out examples/ai-coding-assistant-evidence/EduEvidence_Report.html
455
520
 
456
521
  # 7. Validate the benchmark question set
522
+ # Source checkout only: benchmarks/questions.jsonl is not part of the
523
+ # shipped Skill package (see packaging/upload-layout.md).
457
524
  python3 scripts/benchmark.py --questions benchmarks/questions.jsonl
458
525
 
459
526
  # 8. Run the tests