eduevidence 6.0.0 → 6.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (267) hide show
  1. package/CHANGELOG.md +395 -0
  2. package/CONTRIBUTING.md +105 -0
  3. package/README.md +113 -49
  4. package/README.zh-CN.md +39 -12
  5. package/SKILL.md +15 -5
  6. package/assets/readme/landing-tour.gif +0 -0
  7. package/assets/readme/studio-tour.gif +0 -0
  8. package/benchmarks/evidence-library.json +277 -1
  9. package/bin/eduevidence.js +2 -1
  10. package/docs/architecture.md +325 -46
  11. package/docs/demo-workplace-ai.md +1 -1
  12. package/docs/install-guide.md +1 -1
  13. package/docs/j-ev-experimental.md +250 -0
  14. package/docs/orchestration-role-model.md +1 -1
  15. package/docs/release-closeout/README.md +1 -1
  16. package/docs/reproducibility.md +138 -0
  17. package/docs/sciverse-api.md +125 -0
  18. package/domains/_neutral/copy/few_shots.json +21 -0
  19. package/domains/_neutral/copy/framing_lexicon.json +19 -0
  20. package/domains/_neutral/copy/module_labels.json +5 -0
  21. package/domains/_neutral/copy/module_labels_footer.json +102 -0
  22. package/domains/_neutral/copy/module_labels_modules.json +204 -0
  23. package/domains/_neutral/copy/module_labels_nav.json +126 -0
  24. package/domains/_neutral/copy/module_labels_summary.json +98 -0
  25. package/domains/_neutral/copy/module_labels_tables.json +164 -0
  26. package/domains/_neutral/copy/module_labels_v2.json +90 -0
  27. package/domains/_neutral/copy/risk_constructs.json +20 -0
  28. package/domains/_neutral/copy/section_titles.json +66 -0
  29. package/domains/_neutral/copy/terminology.json +11 -0
  30. package/domains/check_copy_packs.py +103 -0
  31. package/domains/education/copy/few_shots.json +22 -0
  32. package/domains/education/copy/framing_enums.json +167 -0
  33. package/domains/education/copy/framing_lexicon.json +166 -0
  34. package/domains/education/copy/module_labels.json +169 -0
  35. package/domains/education/copy/risk_constructs.json +48 -0
  36. package/domains/education/copy/section_titles.json +186 -0
  37. package/domains/education/copy/terminology.json +70 -0
  38. package/domains/education/manifest.json +1 -1
  39. package/domains/education/outcome_taxonomy.json +2 -2
  40. package/domains/manifest.json +1 -1
  41. package/domains/policy/copy/few_shots.json +22 -0
  42. package/domains/policy/copy/framing_enums.json +94 -0
  43. package/domains/policy/copy/framing_lexicon.json +174 -0
  44. package/domains/policy/copy/module_labels.json +168 -0
  45. package/domains/policy/copy/risk_constructs.json +33 -0
  46. package/domains/policy/copy/section_titles.json +186 -0
  47. package/domains/policy/copy/terminology.json +64 -0
  48. package/eduevidence_cli.py +10 -0
  49. package/engine/capabilities.py +57 -5
  50. package/engine/decision_policy.py +167 -0
  51. package/engine/evidence_graph.py +14 -10
  52. package/engine/gaps.py +42 -22
  53. package/engine/ids.py +2 -0
  54. package/engine/library.py +6 -2
  55. package/engine/library_builtin.py +7 -4
  56. package/engine/living.py +34 -4
  57. package/engine/migration.py +88 -3
  58. package/engine/orchestration.py +5 -5
  59. package/engine/paths.py +2 -0
  60. package/engine/pilot.py +34 -32
  61. package/engine/taxonomy.py +211 -0
  62. package/engine/tribunal.py +49 -43
  63. package/engine/versions.py +1 -1
  64. package/examples/ai-coding-assistant-evidence/EduEvidence_Report.html +1361 -147
  65. package/examples/ai-coding-assistant-evidence/artifact_manifest.json +3 -3
  66. package/examples/ai-coding-assistant-evidence/citation_check.json +1 -1
  67. package/examples/ai-coding-assistant-evidence/final_verdict.json +107 -0
  68. package/examples/ai-coding-assistant-evidence/gate_report.json +101 -0
  69. package/examples/ai-coding-assistant-evidence/report_spec.json +23 -12
  70. package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_academic.html +448 -128
  71. package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_claude.html +448 -128
  72. package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_datalab-dark.html +448 -128
  73. package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_datalab.html +448 -128
  74. package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_presentation.html +448 -128
  75. package/examples/ai-coding-assistant-evidence/reports-5themes/report_academic.html +1360 -146
  76. package/examples/ai-coding-assistant-evidence/reports-5themes/report_claude.html +1360 -146
  77. package/examples/ai-coding-assistant-evidence/reports-5themes/report_datalab-dark.html +1360 -146
  78. package/examples/ai-coding-assistant-evidence/reports-5themes/report_datalab.html +1360 -146
  79. package/examples/ai-coding-assistant-evidence/reports-5themes/report_presentation.html +1360 -146
  80. package/examples/ai-coding-assistant-evidence/result.json +13 -9
  81. package/examples/ai-coding-assistant-evidence/result.zh.json +45 -41
  82. package/examples/ai-coding-assistant-evidence/skeptic.json +72 -0
  83. package/examples/ai-coding-assistant-evidence/verdict.json +6 -2
  84. package/examples/spaced-retrieval-practice/EduEvidence_Report.html +2728 -0
  85. package/examples/spaced-retrieval-practice/applicability.json +14 -0
  86. package/examples/spaced-retrieval-practice/artifact_manifest.json +15 -0
  87. package/examples/spaced-retrieval-practice/claims.jsonl +3 -0
  88. package/examples/spaced-retrieval-practice/evidence.jsonl +6 -0
  89. package/examples/spaced-retrieval-practice/final_verdict.json +93 -0
  90. package/examples/spaced-retrieval-practice/frame.json +58 -0
  91. package/examples/spaced-retrieval-practice/gate_report.json +101 -0
  92. package/examples/spaced-retrieval-practice/methodology.json +78 -0
  93. package/examples/spaced-retrieval-practice/report.html +2522 -0
  94. package/examples/spaced-retrieval-practice/report_spec.json +212 -0
  95. package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_academic.html +2728 -0
  96. package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_claude.html +2728 -0
  97. package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_datalab-dark.html +2728 -0
  98. package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_datalab.html +2728 -0
  99. package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_presentation.html +2728 -0
  100. package/examples/spaced-retrieval-practice/reports-5themes/report_academic.html +2728 -0
  101. package/examples/spaced-retrieval-practice/reports-5themes/report_claude.html +2728 -0
  102. package/examples/spaced-retrieval-practice/reports-5themes/report_datalab-dark.html +2728 -0
  103. package/examples/spaced-retrieval-practice/reports-5themes/report_datalab.html +2728 -0
  104. package/examples/spaced-retrieval-practice/reports-5themes/report_presentation.html +2728 -0
  105. package/examples/spaced-retrieval-practice/result.json +942 -0
  106. package/examples/spaced-retrieval-practice/result.zh.json +942 -0
  107. package/examples/spaced-retrieval-practice/skeptic.json +70 -0
  108. package/examples/spaced-retrieval-practice/sources.jsonl +7 -0
  109. package/examples/spaced-retrieval-practice/verdict.json +93 -0
  110. package/examples/workplace-ai-assistant/EduEvidence_Report.html +2814 -0
  111. package/examples/workplace-ai-assistant/artifact_manifest.json +15 -0
  112. package/examples/workplace-ai-assistant/claims.jsonl +4 -4
  113. package/examples/workplace-ai-assistant/evidence.jsonl +4 -4
  114. package/examples/workplace-ai-assistant/evidence_graph.json +15 -15
  115. package/examples/workplace-ai-assistant/final_verdict.json +78 -0
  116. package/examples/workplace-ai-assistant/gate_report.json +101 -0
  117. package/examples/workplace-ai-assistant/report_spec.json +209 -40
  118. package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_academic.html +449 -119
  119. package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_claude.html +449 -119
  120. package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_datalab-dark.html +449 -119
  121. package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_datalab.html +449 -119
  122. package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_presentation.html +449 -119
  123. package/examples/workplace-ai-assistant/reports-5themes/report_academic.html +2814 -0
  124. package/examples/workplace-ai-assistant/reports-5themes/report_claude.html +2814 -0
  125. package/examples/workplace-ai-assistant/reports-5themes/report_datalab-dark.html +2814 -0
  126. package/examples/workplace-ai-assistant/reports-5themes/report_datalab.html +2814 -0
  127. package/examples/workplace-ai-assistant/reports-5themes/report_presentation.html +2814 -0
  128. package/examples/workplace-ai-assistant/result.json +82 -20
  129. package/examples/workplace-ai-assistant/result.zh.json +82 -20
  130. package/examples/workplace-ai-assistant/skeptic.json +72 -0
  131. package/examples/workplace-ai-assistant/verdict.json +36 -10
  132. package/integrations/agent_mcp.py +2 -2
  133. package/integrations/jev/__init__.py +115 -0
  134. package/integrations/jev/approval.py +212 -0
  135. package/integrations/jev/cli.py +84 -0
  136. package/integrations/jev/config.py +112 -0
  137. package/integrations/jev/gateway.py +128 -0
  138. package/integrations/jev/modes.py +38 -0
  139. package/integrations/jev/tools_classify.py +88 -0
  140. package/integrations/jev/tools_extract.py +111 -0
  141. package/integrations/jev/tools_rerank.py +71 -0
  142. package/integrations/jev/tools_screen.py +87 -0
  143. package/integrations/jev/tools_verify.py +95 -0
  144. package/integrations/jev_mcp.py +22 -0
  145. package/integrations/semantic_decide.py +286 -0
  146. package/integrations/semdecide_cli.py +55 -0
  147. package/package.json +19 -2
  148. package/pyproject.toml +4 -3
  149. package/references/report-copy-style.md +107 -0
  150. package/references/retrieval-compliance.md +75 -0
  151. package/references/retrieval-protocol.md +20 -0
  152. package/retrieval/audit.py +27 -3
  153. package/retrieval/fetch.py +96 -0
  154. package/retrieval/sciverse.py +398 -0
  155. package/retrieval/search.py +47 -7
  156. package/schemas/applicability.schema.json +94 -0
  157. package/schemas/chart-spec.schema.json +10 -3
  158. package/schemas/evidence.schema.json +316 -43
  159. package/schemas/fetch-result.schema.json +2 -1
  160. package/schemas/report-result.schema.json +3 -3
  161. package/schemas/report-spec.schema.json +98 -100
  162. package/schemas/skeptic.schema.json +86 -0
  163. package/schemas/source.schema.json +21 -2
  164. package/schemas/v2/decision-snapshot.schema.json +20 -9
  165. package/schemas/v2/finding.schema.json +5 -1
  166. package/schemas/v2/intake.schema.json +191 -0
  167. package/schemas/v2/methodology-audit.schema.json +5 -1
  168. package/schemas/v2/outcome.schema.json +28 -5
  169. package/schemas/v2/study.schema.json +5 -1
  170. package/schemas/vNext/autoevolve-session.schema.json +34 -1
  171. package/schemas/vNext/eval-snapshot.schema.json +77 -1
  172. package/schemas/vNext/execution-plan.schema.json +50 -1
  173. package/schemas/vNext/gap-priority.schema.json +54 -1
  174. package/schemas/vNext/negative-search-record.schema.json +68 -1
  175. package/schemas/vNext/research-iteration.schema.json +87 -1
  176. package/schemas/vNext/research-strategy.schema.json +62 -1
  177. package/schemas/vNext/skill-experiment.schema.json +90 -1
  178. package/schemas/vNext/task-spec.schema.json +156 -1
  179. package/schemas/vNext/worker-result.schema.json +60 -1
  180. package/schemas/verdict.schema.json +164 -28
  181. package/scripts/build_evidence_library.py +15 -5
  182. package/scripts/build_report_variants.py +18 -2
  183. package/scripts/build_result.py +74 -9
  184. package/scripts/check_package_parity.py +85 -0
  185. package/scripts/check_protocol_alignment.py +375 -0
  186. package/scripts/check_versioned_schemas.py +254 -0
  187. package/scripts/claim_audit.py +13 -8
  188. package/scripts/compute_confidence.py +10 -0
  189. package/scripts/dashboard_server.py +13 -2
  190. package/scripts/did_regression.py +12 -2
  191. package/scripts/evidence_score.py +5 -2
  192. package/scripts/intake/__init__.py +31 -0
  193. package/scripts/intake/__main__.py +18 -0
  194. package/scripts/intake/background.py +78 -0
  195. package/scripts/intake/browser.py +79 -0
  196. package/scripts/intake/cli.py +57 -0
  197. package/scripts/intake/constants.py +57 -0
  198. package/scripts/intake/depth.py +53 -0
  199. package/scripts/intake/enhancements.py +106 -0
  200. package/scripts/intake/hooks.py +90 -0
  201. package/scripts/intake/prefs.py +76 -0
  202. package/scripts/intake/prompts.py +85 -0
  203. package/scripts/intake/session.py +152 -0
  204. package/scripts/lint_file_layers.py +126 -0
  205. package/scripts/orchestrator.py +187 -40
  206. package/scripts/pre_verdict_gate.py +241 -29
  207. package/scripts/quickstart.py +18 -2
  208. package/scripts/run_workspace.py +7 -1
  209. package/scripts/skill_lint.py +11 -1
  210. package/scripts/skill_payload.py +6 -3
  211. package/scripts/test_adversarial_empirical.py +96 -25
  212. package/scripts/validate_schema.py +31 -1
  213. package/skill/agents/evaluation-designer.md +20 -4
  214. package/skill/agents/evidence-analyst.md +19 -3
  215. package/skill/agents/evidence-judge.md +98 -8
  216. package/skill/agents/evidence-retriever.md +20 -3
  217. package/skill/agents/intervention-designer.md +20 -4
  218. package/skill/agents/method-reviewer.md +18 -2
  219. package/skill/agents/{education-planner.md → research-planner.md} +19 -3
  220. package/skill/agents/skeptic.md +18 -2
  221. package/skill/roles/registry.yaml +11 -11
  222. package/skill/sub-skills/aihot-trend-analysis/SKILL.md +28 -9
  223. package/skill/sub-skills/contradiction-analysis/SKILL.md +31 -11
  224. package/skill/sub-skills/data-analysis/SKILL.md +34 -15
  225. package/skill/sub-skills/ethics-review/SKILL.md +33 -10
  226. package/skill/sub-skills/evidence-extraction/SKILL.md +29 -11
  227. package/skill/sub-skills/evidence-review/SKILL.md +31 -12
  228. package/skill/sub-skills/gap-analysis/SKILL.md +31 -9
  229. package/skill/sub-skills/literature-review/SKILL.md +35 -14
  230. package/skill/sub-skills/methodology-audit/SKILL.md +29 -12
  231. package/skill/sub-skills/report-generation/SKILL.md +28 -0
  232. package/skill/sub-skills/research-planning/SKILL.md +41 -14
  233. package/skill/sub-skills/study-design/SKILL.md +30 -9
  234. package/skill/task-briefs/adjudicate.md +32 -7
  235. package/skill/task-briefs/applicability.md +37 -2
  236. package/skill/task-briefs/audit.md +32 -7
  237. package/skill/task-briefs/challenge.md +34 -5
  238. package/skill/task-briefs/evaluate.md +30 -5
  239. package/skill/task-briefs/extract.md +31 -8
  240. package/skill/task-briefs/frame.md +39 -10
  241. package/skill/task-briefs/intervene.md +32 -6
  242. package/skill/task-briefs/present.md +32 -8
  243. package/skill/task-briefs/projection.md +36 -2
  244. package/skill/task-briefs/retrieve.md +36 -6
  245. package/skill/workflows/decision-and-pilot.md +76 -1
  246. package/skill/workflows/evaluate-and-update.md +83 -0
  247. package/skill/workflows/evidence-review.md +104 -0
  248. package/skill/workflows/experimental-jev.md +170 -0
  249. package/skill/workflows/intake.md +120 -0
  250. package/visualization/eduevidence-report/scripts/build_figures.py +25 -3
  251. package/visualization/eduevidence-report/scripts/build_infographics.py +37 -15
  252. package/visualization/eduevidence-report/scripts/build_report.py +435 -575
  253. package/visualization/eduevidence-report/scripts/charts_data.py +2 -0
  254. package/visualization/eduevidence-report/scripts/lieflat_engine.py +349 -38
  255. package/visualization/eduevidence-report/scripts/report_copy_pack.py +296 -0
  256. package/visualization/eduevidence-report/scripts/report_copy_policy_guard.py +47 -0
  257. package/visualization/eduevidence-report/scripts/zh_labels.py +141 -1
  258. package/web/architecture.html +14885 -0
  259. package/web/studio/assets/index-B8tkF44Q.css +1 -0
  260. package/web/studio/index.html +2 -2
  261. package/scripts/build_esl_artifacts.py +0 -1921
  262. package/scripts/build_killer_demo.py +0 -295
  263. package/scripts/enrich_projects_human_and_lieflat.py +0 -315
  264. package/scripts/generate_new_projects.py +0 -686
  265. package/scripts/sync_killer_demo_report.py +0 -270
  266. package/web/studio/assets/index-CzXocaGv.css +0 -1
  267. /package/web/studio/assets/{index-pa7jD7n4.js → index-CQ6Keoyc.js} +0 -0
@@ -0,0 +1,174 @@
1
+ {
2
+ "domain": "policy",
3
+ "purpose": "policy frame field/subfield labels (framing_lexicon part 1).",
4
+ "frame_fields": {
5
+ "zh": {
6
+ "question": "研究问题",
7
+ "decision_object": "决策对象",
8
+ "intervention": "干预方案",
9
+ "population": "目标人群",
10
+ "stakeholders": "利益相关者",
11
+ "outcomes": "结果构念",
12
+ "context": "政策情境",
13
+ "scope": "研究范围",
14
+ "comparison": "比较条件",
15
+ "success": "决策成功条件",
16
+ "success_condition": "决策成功条件",
17
+ "learner": "目标人群",
18
+ "course": "适用情境"
19
+ },
20
+ "en": {
21
+ "question": "Research question",
22
+ "decision_object": "Decision object",
23
+ "intervention": "Intervention plan",
24
+ "population": "Target population",
25
+ "stakeholders": "Stakeholders",
26
+ "outcomes": "Outcome constructs",
27
+ "context": "Policy context",
28
+ "scope": "Research scope",
29
+ "comparison": "Comparison",
30
+ "success": "Decision success condition",
31
+ "success_condition": "Decision success condition",
32
+ "learner": "Target population",
33
+ "course": "Operating context"
34
+ }
35
+ },
36
+ "frame_subfields": {
37
+ "zh": {
38
+ "learner": {
39
+ "education_level": "覆盖层级",
40
+ "major": "岗位序列",
41
+ "prior_knowledge": "先验经验",
42
+ "special_characteristics": "人群特征"
43
+ },
44
+ "course": {
45
+ "subject": "业务域",
46
+ "course_type": "组织形态",
47
+ "duration": "实施周期"
48
+ },
49
+ "intervention": {
50
+ "teaching_method": "干预方式",
51
+ "ai_tool": "技术工具",
52
+ "allowed_usage": "允许使用",
53
+ "frequency": "使用频率",
54
+ "duration": "干预周期",
55
+ "policy_name": "政策名称",
56
+ "policy_type": "政策类型",
57
+ "jurisdiction": "适用辖区",
58
+ "mechanism": "作用机制"
59
+ },
60
+ "population": {
61
+ "definition": "人群定义",
62
+ "size": "覆盖规模",
63
+ "vulnerability": "脆弱性"
64
+ },
65
+ "scope": {
66
+ "time_range": "时间范围",
67
+ "geography": "地域",
68
+ "study_types": "研究设计"
69
+ }
70
+ },
71
+ "en": {
72
+ "learner": {
73
+ "education_level": "Coverage level",
74
+ "major": "Role track",
75
+ "prior_knowledge": "Prior experience",
76
+ "special_characteristics": "Population characteristics"
77
+ },
78
+ "course": {
79
+ "subject": "Domain",
80
+ "course_type": "Organisation type",
81
+ "duration": "Rollout window"
82
+ },
83
+ "intervention": {
84
+ "teaching_method": "Method",
85
+ "ai_tool": "Technology",
86
+ "allowed_usage": "Allowed usage",
87
+ "frequency": "Frequency",
88
+ "duration": "Duration",
89
+ "policy_name": "Policy",
90
+ "policy_type": "Policy type",
91
+ "jurisdiction": "Jurisdiction",
92
+ "mechanism": "Mechanism"
93
+ },
94
+ "population": {
95
+ "definition": "Definition",
96
+ "size": "Scale",
97
+ "vulnerability": "Vulnerability"
98
+ },
99
+ "scope": {
100
+ "time_range": "Time range",
101
+ "geography": "Geography",
102
+ "study_types": "Study designs"
103
+ }
104
+ }
105
+ },
106
+ "evidence_detail_labels": {
107
+ "zh": {
108
+ "study_id": "研究 ID",
109
+ "sample_id": "样本 ID",
110
+ "title": "研究标题",
111
+ "year": "年份",
112
+ "study_type": "研究设计",
113
+ "education_level": "覆盖层级",
114
+ "population": "研究人群",
115
+ "sample_size": "样本量",
116
+ "intervention": "干预方案",
117
+ "comparison": "对照 / 比较条件",
118
+ "outcome_measure": "结果测量",
119
+ "claim": "完整主张",
120
+ "effect": "效应 / 结果",
121
+ "effect_direction": "效应方向",
122
+ "relation_to_claim": "与主张关系",
123
+ "duration": "干预时长",
124
+ "method": "方法",
125
+ "strengths": "优势",
126
+ "limitations": "局限",
127
+ "confounders": "混杂因素",
128
+ "quality_dimensions": "质量维度",
129
+ "quality_score": "质量分",
130
+ "evidence_level": "证据等级",
131
+ "directness": "直接性",
132
+ "applicability": "适用性",
133
+ "confidence": "置信度",
134
+ "status": "证据状态",
135
+ "source_location": "来源位置",
136
+ "source_title": "来源标题",
137
+ "source_url": "可验证链接",
138
+ "claim_id": "Claim ID"
139
+ },
140
+ "en": {
141
+ "study_id": "Study ID",
142
+ "sample_id": "Sample ID",
143
+ "title": "Study title",
144
+ "year": "Year",
145
+ "study_type": "Study design",
146
+ "education_level": "Coverage level",
147
+ "population": "Population",
148
+ "sample_size": "Sample size",
149
+ "intervention": "Intervention plan",
150
+ "comparison": "Comparison",
151
+ "outcome_measure": "Outcome measure",
152
+ "claim": "Full claim",
153
+ "effect": "Effect / result",
154
+ "effect_direction": "Effect direction",
155
+ "relation_to_claim": "Relation to claim",
156
+ "duration": "Duration",
157
+ "method": "Method",
158
+ "strengths": "Strengths",
159
+ "limitations": "Limitations",
160
+ "confounders": "Confounders",
161
+ "quality_dimensions": "Quality dimensions",
162
+ "quality_score": "Quality score",
163
+ "evidence_level": "Evidence level",
164
+ "directness": "Directness",
165
+ "applicability": "Applicability",
166
+ "confidence": "Confidence",
167
+ "status": "Evidence status",
168
+ "source_location": "Source location",
169
+ "source_title": "Source title",
170
+ "source_url": "Verifiable URL",
171
+ "claim_id": "Claim ID"
172
+ }
173
+ }
174
+ }
@@ -0,0 +1,168 @@
1
+ {
2
+ "domain": "policy",
3
+ "purpose": "Domain-sensitive module/UI labels (policy voice). target_learners displays as 目标人群; intervention is 干预方案.",
4
+ "labels": {
5
+ "outcome_separation_title": {
6
+ "zh": "结果分离 · 过程产出 ≠ 政策效果",
7
+ "en": "Outcome Separation · Process output ≠ policy effect"
8
+ },
9
+ "outcome_sep_note": {
10
+ "zh": "将不同结果类型分开裁决,避免把试点期产出或效率提升直接等同于真实政策效果。",
11
+ "en": "Outcomes are adjudicated separately so pilot throughput or efficiency gains are not silently treated as real policy effects."
12
+ },
13
+ "outcome_group_task": {
14
+ "zh": "过程 / 近端产出",
15
+ "en": "Process / proximal output"
16
+ },
17
+ "outcome_group_learning": {
18
+ "zh": "效果 / 目标结果",
19
+ "en": "Effect / target outcome"
20
+ },
21
+ "outcome_group_risk": {
22
+ "zh": "风险 / 实施风险",
23
+ "en": "Risk / implementation risk"
24
+ },
25
+ "outcome_group_other": {
26
+ "zh": "其他结果",
27
+ "en": "Other outcomes"
28
+ },
29
+ "method_guard": {
30
+ "zh": "产出 vs 效果护栏",
31
+ "en": "Output vs effect guard"
32
+ },
33
+ "applicability": {
34
+ "zh": [
35
+ "适用于谁",
36
+ "适用辖区",
37
+ "适用结果",
38
+ "适用条件",
39
+ "目标人群",
40
+ "目标情境"
41
+ ],
42
+ "en": [
43
+ "Suitable for",
44
+ "Jurisdiction",
45
+ "Outcomes",
46
+ "Conditions",
47
+ "Target population",
48
+ "Target context"
49
+ ]
50
+ },
51
+ "intervention_learners": {
52
+ "zh": "目标人群",
53
+ "en": "Target population"
54
+ },
55
+ "intervention_population": {
56
+ "zh": "目标人群",
57
+ "en": "Target population"
58
+ },
59
+ "intervention_duration": {
60
+ "zh": "试点时长",
61
+ "en": "Pilot duration"
62
+ },
63
+ "intervention_policy": {
64
+ "zh": "干预使用规则",
65
+ "en": "Intervention usage policy"
66
+ },
67
+ "intervention_rule": {
68
+ "zh": "干预规则",
69
+ "en": "Intervention rule"
70
+ },
71
+ "intervention_activities": {
72
+ "zh": "活动",
73
+ "en": "Activities"
74
+ },
75
+ "intervention_check": {
76
+ "zh": "结果检查",
77
+ "en": "Outcome check"
78
+ },
79
+ "intervention_stop": {
80
+ "zh": "停止条件",
81
+ "en": "Stop conditions"
82
+ },
83
+ "intervention_timeline": {
84
+ "zh": "干预方案时间线信息图",
85
+ "en": "Intervention plan timeline infographic"
86
+ },
87
+ "evaluation_measures": {
88
+ "zh": [
89
+ "基线",
90
+ "试点结束",
91
+ "持续监测",
92
+ "扩展评估"
93
+ ],
94
+ "en": [
95
+ "Baseline",
96
+ "Pilot end",
97
+ "Durability",
98
+ "Scale-out"
99
+ ]
100
+ },
101
+ "evaluation_metrics": {
102
+ "zh": [
103
+ "过程指标",
104
+ "效果指标",
105
+ "风险指标"
106
+ ],
107
+ "en": [
108
+ "Process metrics",
109
+ "Effect metrics",
110
+ "Risk metrics"
111
+ ]
112
+ },
113
+ "evaluation_question": {
114
+ "zh": "研究问题",
115
+ "en": "Research question"
116
+ },
117
+ "evaluation_threshold": {
118
+ "zh": "成功阈值",
119
+ "en": "Success threshold"
120
+ },
121
+ "evaluation_plan": {
122
+ "zh": "分析计划",
123
+ "en": "Analysis plan"
124
+ },
125
+ "evaluation_figure": {
126
+ "zh": "评价设计信息图",
127
+ "en": "Evaluation design infographic"
128
+ },
129
+ "svg_intervention_title": {
130
+ "zh": "干预方案时间线",
131
+ "en": "Intervention plan timeline"
132
+ },
133
+ "svg_intervention_desc": {
134
+ "zh": "各试点阶段的短名称与活动数量;完整干预使用规则见阶段说明块。",
135
+ "en": "Short phase names and activity counts; full intervention usage rules are in the phase blocks."
136
+ },
137
+ "svg_evaluation_title": {
138
+ "zh": "评价设计流程",
139
+ "en": "Evaluation design flow"
140
+ },
141
+ "svg_evaluation_desc": {
142
+ "zh": "基线、试点结束、持续监测与扩展评估的评价流程;完整指标与分析计划见评估章节。",
143
+ "en": "Evaluation flow across baseline, pilot end, durability and scale-out; full metrics and analysis plan are in the evaluation section."
144
+ },
145
+ "svg_workflow_desc": {
146
+ "zh": "从问题框架、检索、抓取验证、证据抽取、反方质疑、方法审计、裁决到适用性与干预评价的完整流程。",
147
+ "en": "Research flow from framing, retrieval, fetch/verify, extraction, challenge, method audit and adjudication to applicability and intervention evaluation."
148
+ },
149
+ "decision_kpi": {
150
+ "zh": [
151
+ "决策",
152
+ "置信度",
153
+ "证据最充分的结果",
154
+ "最不确定的结果",
155
+ "主要风险",
156
+ "来源数量"
157
+ ],
158
+ "en": [
159
+ "Decision",
160
+ "Confidence",
161
+ "Best-supported outcome",
162
+ "Most uncertain outcome",
163
+ "Main risk",
164
+ "Sources"
165
+ ]
166
+ }
167
+ }
168
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "domain": "policy",
3
+ "purpose": "Outcome grouping + separation guard constructs (process output is not policy effect). No teaching vocabulary.",
4
+ "outcome_groups": {
5
+ "task": [
6
+ "cost_effectiveness",
7
+ "feasibility"
8
+ ],
9
+ "learning": [
10
+ "policy_effectiveness",
11
+ "equity"
12
+ ],
13
+ "risk": [
14
+ "implementation_risk"
15
+ ]
16
+ },
17
+ "separation_title": {
18
+ "zh": "结果分离 · 过程产出 ≠ 政策效果",
19
+ "en": "Outcome Separation · Process output ≠ policy effect"
20
+ },
21
+ "separation_note": {
22
+ "zh": "将不同结果类型分开裁决,避免把试点期产出或效率提升直接等同于真实政策效果。",
23
+ "en": "Outcomes are adjudicated separately so pilot throughput or efficiency gains are not silently treated as real policy effects."
24
+ },
25
+ "method_guard": {
26
+ "zh": "产出 vs 效果护栏",
27
+ "en": "Output vs effect guard"
28
+ },
29
+ "guard_principle": {
30
+ "zh": "过程产出提升 ≠ 政策效果实现;ADOPT 需要独立效果、持续性与公平证据。",
31
+ "en": "Process output is not policy effect; ADOPT requires independent effect, durability and equity evidence."
32
+ }
33
+ }
@@ -0,0 +1,186 @@
1
+ {
2
+ "domain": "policy",
3
+ "purpose": "Section titles/leads + default full-report chapter plan (policy voice; no teaching vocabulary).",
4
+ "section_titles": {
5
+ "zh": {
6
+ "01": "01 执行决策",
7
+ "02": "02 结果证据概览",
8
+ "03": "03 证据矩阵",
9
+ "04": "04 证据裁决",
10
+ "05": "05 方法学审计",
11
+ "06": "06 冲突分析",
12
+ "07": "07 主张-证据追溯",
13
+ "08": "08 适用性",
14
+ "09": "09 干预方案",
15
+ "10": "10 评价方案",
16
+ "11": "11 基准测试",
17
+ "12": "12 来源与溯源"
18
+ },
19
+ "en": {
20
+ "01": "01 Executive Decision",
21
+ "02": "02 Outcome Evidence Overview",
22
+ "03": "03 Evidence Matrix",
23
+ "04": "04 Evidence Tribunal",
24
+ "05": "05 Methodology Audit",
25
+ "06": "06 Conflict Analysis",
26
+ "07": "07 Claim-Evidence Trace",
27
+ "08": "08 Applicability",
28
+ "09": "09 Intervention Plan",
29
+ "10": "10 Evaluation Plan",
30
+ "11": "11 Benchmark",
31
+ "12": "12 Sources & Provenance"
32
+ }
33
+ },
34
+ "section_leads": {
35
+ "zh": {
36
+ "01": "本节先给结论:最终怎么裁决、置信度多高、靠哪几条证据。",
37
+ "02": "一图看清:哪些政策效果有支持证据、哪些被反驳。",
38
+ "03": "每条证据来自哪项研究、测了什么、方向与质量如何;可筛选、可搜索。",
39
+ "04": "证据允许主张什么、不允许主张什么;缺失的关键证据是什么。",
40
+ "05": "研究质量可靠吗?哪些方法学问题让结论打折。",
41
+ "06": "不同研究为何结论不同;分歧出在哪一环。",
42
+ "07": "从结论到证据到原始来源,每一步都可追查。",
43
+ "08": "结论适用于谁、什么人群与效果、需要什么条件。",
44
+ "09": "试点怎么分阶段放开干预规则;什么情况必须叫停。",
45
+ "10": "如何验证效果:指标、对照、成功阈值。",
46
+ "11": "EduEvidence 自身基准表现:引用精度与成本。",
47
+ "12": "每篇文献是谁、出自哪里、如何获取。"
48
+ },
49
+ "en": {
50
+ "01": "The verdict first: what we decide, at what confidence, on which evidence.",
51
+ "02": "At a glance: which policy outcomes have supporting evidence, which are contradicted.",
52
+ "03": "Where each piece of evidence comes from, what it measures, its direction and quality — filterable and searchable.",
53
+ "04": "What the evidence lets us claim, what it does not, and what is still missing.",
54
+ "05": "How reliable are these studies, and which methodological concerns discount the conclusions.",
55
+ "06": "Why studies disagree — and where exactly they diverge.",
56
+ "07": "Every step from conclusion to evidence to source stays traceable.",
57
+ "08": "Who the conclusion applies to, for which population and outcomes, under what conditions.",
58
+ "09": "How intervention rules phase in during a pilot, and when we must stop.",
59
+ "10": "How we verify real effects: metrics, comparison, success threshold.",
60
+ "11": "How EduEvidence itself performs: citation precision and cost.",
61
+ "12": "Who wrote each cited study, where it came from, how it was fetched."
62
+ }
63
+ },
64
+ "default_chapters": [
65
+ {
66
+ "key": "decision",
67
+ "title_zh": "结论、裁决与研究边界",
68
+ "title_en": "Decision, Adjudication & Research Boundary",
69
+ "lead_zh": "先明确最终裁决与研究边界,再解释为什么。",
70
+ "lead_en": "State the final adjudication and research boundary before explaining why.",
71
+ "modules": [
72
+ "decision",
73
+ "scope"
74
+ ]
75
+ },
76
+ {
77
+ "key": "evidence",
78
+ "title_zh": "关键证据与结果分离",
79
+ "title_en": "Key Evidence & Outcome Separation",
80
+ "lead_zh": "把过程产出、真实效果、持续性与风险放在同一证据地图中,但不混为一谈。",
81
+ "lead_en": "Place process outputs, real effects, durability and risk on one evidence map without conflating them.",
82
+ "modules": [
83
+ "retrieval",
84
+ "outcomes",
85
+ "evidence"
86
+ ]
87
+ },
88
+ {
89
+ "key": "quality",
90
+ "title_zh": "证据可信度、反证与方法审计",
91
+ "title_en": "Evidence Quality, Counterevidence & Method Audit",
92
+ "lead_zh": "检查证据为什么可信、哪里冲突,以及哪些结论必须降级。",
93
+ "lead_en": "Examine why evidence is credible, where it conflicts, and which conclusions require downgrading.",
94
+ "modules": [
95
+ "quality",
96
+ "conflicts",
97
+ "trace"
98
+ ]
99
+ },
100
+ {
101
+ "key": "action",
102
+ "title_zh": "适用范围与政策行动",
103
+ "title_en": "Applicability & Policy Action",
104
+ "lead_zh": "把可外推范围、护栏和政策动作连接到具体证据。",
105
+ "lead_en": "Connect applicability, guardrails and policy actions to specific evidence.",
106
+ "modules": [
107
+ "applicability",
108
+ "intervention"
109
+ ]
110
+ },
111
+ {
112
+ "key": "evaluation",
113
+ "title_zh": "试点设计、评估与停止条件",
114
+ "title_en": "Pilot, Evaluation & Stop Conditions",
115
+ "lead_zh": "用独立效果测量验证试点,并预先写清停止条件。",
116
+ "lead_en": "Validate the pilot with independent effect measures and pre-specified stop conditions.",
117
+ "modules": [
118
+ "evaluation"
119
+ ]
120
+ },
121
+ {
122
+ "key": "sources",
123
+ "title_zh": "来源、溯源与附录",
124
+ "title_en": "Sources, Traceability & Appendix",
125
+ "lead_zh": "保留原始来源、URL、证据 ID 和获取信息,确保可回查。",
126
+ "lead_en": "Preserve original sources, URLs, evidence IDs and retrieval metadata for auditability.",
127
+ "modules": [
128
+ "sources"
129
+ ]
130
+ }
131
+ ],
132
+ "brief_blocks": {
133
+ "zh": {
134
+ "decision": [
135
+ "先看结论",
136
+ "该不该做、置信度多高、最关键的证据边界在哪。"
137
+ ],
138
+ "lieflat": [
139
+ "Lieflat 实证手作画廊",
140
+ "AI 按数据形状从 Lieflat 目录选型编排;每张图的数字都可溯源到 result.json。"
141
+ ],
142
+ "outcomes": [
143
+ "过程产出 ≠ 政策效果",
144
+ "只展示真正有解释力的结果分离;正向、负向与零效应按 effect_direction 编码。"
145
+ ],
146
+ "tribunal": [
147
+ "证据裁决",
148
+ "支持、不确定、被反驳与缺失证据分开放置,不把长段落平铺在同一层。"
149
+ ],
150
+ "action": [
151
+ "从证据到行动",
152
+ "适用性、护栏、停止条件与评价连成一条可执行路径。"
153
+ ],
154
+ "sources": [
155
+ "关键来源",
156
+ "摘要页只列最关键的来源;完整溯源在完整报告中展开。"
157
+ ]
158
+ },
159
+ "en": {
160
+ "decision": [
161
+ "Decision first",
162
+ "What to do, how confident we are, and the most important evidence boundary."
163
+ ],
164
+ "lieflat": [
165
+ "Lieflat Editorial Gallery",
166
+ "Charts selected and composed by AI from the Lieflat catalog; every number traces back to result.json."
167
+ ],
168
+ "outcomes": [
169
+ "Process output ≠ policy effect",
170
+ "Only informative outcome separation; positive, negative and null effects use effect_direction."
171
+ ],
172
+ "tribunal": [
173
+ "Evidence tribunal",
174
+ "Supported, uncertain, contradicted and missing evidence stay separated instead of flattened into long prose."
175
+ ],
176
+ "action": [
177
+ "Evidence to action",
178
+ "Applicability, guardrails, stop conditions and evaluation form one executable path."
179
+ ],
180
+ "sources": [
181
+ "Key sources",
182
+ "Only the key sources in the brief; full traceability expands in the full report."
183
+ ]
184
+ }
185
+ }
186
+ }
@@ -0,0 +1,64 @@
1
+ {
2
+ "domain": "policy",
3
+ "purpose": "Domain terminology (policy voice). target_learners → 目标人群; intervention → 干预方案; no teaching vocabulary.",
4
+ "methodology_labels": {
5
+ "zh": {
6
+ "evidence_level": "证据等级",
7
+ "causal_identification": "因果识别",
8
+ "external_validity": "外部效度",
9
+ "cost_evidence": "成本证据",
10
+ "stakeholder_representation": "利益相关者代表",
11
+ "implementation_evidence": "实施证据",
12
+ "equity_analysis": "公平性分析",
13
+ "effect_size_reported": "效应量报告",
14
+ "uncertainty_quantified": "不确定性量化",
15
+ "comparator_clarity": "对照与反事实清晰",
16
+ "publication_bias_risk": "发表偏倚风险",
17
+ "generalizability_claims": "可推广性声明"
18
+ },
19
+ "en": {
20
+ "evidence_level": "Evidence level",
21
+ "causal_identification": "Causal identification",
22
+ "external_validity": "External validity",
23
+ "cost_evidence": "Cost evidence",
24
+ "stakeholder_representation": "Stakeholder representation",
25
+ "implementation_evidence": "Implementation evidence",
26
+ "equity_analysis": "Equity analysis",
27
+ "effect_size_reported": "Effect size reported",
28
+ "uncertainty_quantified": "Uncertainty quantified",
29
+ "comparator_clarity": "Comparator clarity",
30
+ "publication_bias_risk": "Publication-bias risk",
31
+ "generalizability_claims": "Generalizability claims"
32
+ }
33
+ },
34
+ "field_labels": {
35
+ "zh": {
36
+ "target_learners": "目标人群",
37
+ "target_population": "目标人群",
38
+ "ai_usage_policy": "干预使用规则",
39
+ "ai_usage_rule": "干预规则",
40
+ "task_vs_learning_guard": "产出 vs 效果护栏",
41
+ "learning_metrics": "效果指标",
42
+ "process_metrics": "过程指标",
43
+ "risk_metrics": "风险指标",
44
+ "task_performance": "过程产出",
45
+ "learning_gain": "目标效果",
46
+ "retention": "持续性",
47
+ "transfer": "扩散效果"
48
+ },
49
+ "en": {
50
+ "target_learners": "Target population",
51
+ "target_population": "Target population",
52
+ "ai_usage_policy": "Intervention usage policy",
53
+ "ai_usage_rule": "Intervention rule",
54
+ "task_vs_learning_guard": "Output vs effect guard",
55
+ "learning_metrics": "Effect metrics",
56
+ "process_metrics": "Process metrics",
57
+ "risk_metrics": "Risk metrics",
58
+ "task_performance": "Process output",
59
+ "learning_gain": "Target effect",
60
+ "retention": "Durability",
61
+ "transfer": "Spillover"
62
+ }
63
+ }
64
+ }
@@ -8,6 +8,16 @@ only two intercepted command domains:
8
8
  eduevidence evolve ...
9
9
  """
10
10
  import sys
11
+
12
+ MIN_PYTHON = (3, 10)
13
+
14
+ if sys.version_info < MIN_PYTHON:
15
+ import platform
16
+ sys.stderr.write(
17
+ f"EduEvidence requires Python {MIN_PYTHON[0]}.{MIN_PYTHON[1]} or newer; "
18
+ f"this interpreter is {platform.python_version()}.\n"
19
+ "Install a supported Python and re-run, or set PYTHON to one.\n")
20
+ raise SystemExit(2)
11
21
  from pathlib import Path
12
22
 
13
23
  ROOT = Path(__file__).resolve().parent