eduevidence 6.0.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 (189) hide show
  1. package/CONTRIBUTING.md +105 -0
  2. package/README.md +93 -38
  3. package/README.zh-CN.md +26 -6
  4. package/SKILL.md +11 -2
  5. package/assets/readme/landing-tour.gif +0 -0
  6. package/assets/readme/studio-tour.gif +0 -0
  7. package/bin/eduevidence.js +2 -1
  8. package/docs/architecture.md +319 -43
  9. package/docs/demo-workplace-ai.md +1 -1
  10. package/docs/install-guide.md +1 -1
  11. package/docs/orchestration-role-model.md +1 -1
  12. package/docs/release-closeout/README.md +1 -1
  13. package/docs/sciverse-api.md +125 -0
  14. package/eduevidence_cli.py +10 -0
  15. package/engine/decision_policy.py +96 -0
  16. package/engine/evidence_graph.py +14 -10
  17. package/engine/gaps.py +42 -22
  18. package/engine/ids.py +2 -0
  19. package/engine/library.py +6 -2
  20. package/engine/living.py +34 -4
  21. package/engine/migration.py +88 -3
  22. package/engine/orchestration.py +5 -5
  23. package/engine/paths.py +2 -0
  24. package/engine/pilot.py +34 -32
  25. package/engine/taxonomy.py +211 -0
  26. package/engine/tribunal.py +43 -31
  27. package/engine/versions.py +1 -1
  28. package/examples/ai-coding-assistant-evidence/EduEvidence_Report.html +1360 -146
  29. package/examples/ai-coding-assistant-evidence/artifact_manifest.json +3 -3
  30. package/examples/ai-coding-assistant-evidence/citation_check.json +1 -1
  31. package/examples/ai-coding-assistant-evidence/final_verdict.json +107 -0
  32. package/examples/ai-coding-assistant-evidence/gate_report.json +101 -0
  33. package/examples/ai-coding-assistant-evidence/report_spec.json +23 -12
  34. package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_academic.html +447 -127
  35. package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_claude.html +447 -127
  36. package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_datalab-dark.html +447 -127
  37. package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_datalab.html +447 -127
  38. package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_presentation.html +447 -127
  39. package/examples/ai-coding-assistant-evidence/reports-5themes/report_academic.html +1360 -146
  40. package/examples/ai-coding-assistant-evidence/reports-5themes/report_claude.html +1360 -146
  41. package/examples/ai-coding-assistant-evidence/reports-5themes/report_datalab-dark.html +1360 -146
  42. package/examples/ai-coding-assistant-evidence/reports-5themes/report_datalab.html +1360 -146
  43. package/examples/ai-coding-assistant-evidence/reports-5themes/report_presentation.html +1360 -146
  44. package/examples/ai-coding-assistant-evidence/result.json +13 -9
  45. package/examples/ai-coding-assistant-evidence/result.zh.json +45 -41
  46. package/examples/ai-coding-assistant-evidence/skeptic.json +72 -0
  47. package/examples/ai-coding-assistant-evidence/verdict.json +6 -2
  48. package/examples/spaced-retrieval-practice/applicability.json +14 -0
  49. package/examples/spaced-retrieval-practice/artifact_manifest.json +15 -0
  50. package/examples/spaced-retrieval-practice/claims.jsonl +3 -0
  51. package/examples/spaced-retrieval-practice/evidence.jsonl +6 -0
  52. package/examples/spaced-retrieval-practice/final_verdict.json +93 -0
  53. package/examples/spaced-retrieval-practice/frame.json +58 -0
  54. package/examples/spaced-retrieval-practice/gate_report.json +101 -0
  55. package/examples/spaced-retrieval-practice/methodology.json +78 -0
  56. package/examples/spaced-retrieval-practice/report_spec.json +212 -0
  57. package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_academic.html +2728 -0
  58. package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_claude.html +2728 -0
  59. package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_datalab-dark.html +2728 -0
  60. package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_datalab.html +2728 -0
  61. package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_presentation.html +2728 -0
  62. package/examples/spaced-retrieval-practice/reports-5themes/report_academic.html +2728 -0
  63. package/examples/spaced-retrieval-practice/reports-5themes/report_claude.html +2728 -0
  64. package/examples/spaced-retrieval-practice/reports-5themes/report_datalab-dark.html +2728 -0
  65. package/examples/spaced-retrieval-practice/reports-5themes/report_datalab.html +2728 -0
  66. package/examples/spaced-retrieval-practice/reports-5themes/report_presentation.html +2728 -0
  67. package/examples/spaced-retrieval-practice/result.json +942 -0
  68. package/examples/spaced-retrieval-practice/result.zh.json +942 -0
  69. package/examples/spaced-retrieval-practice/skeptic.json +70 -0
  70. package/examples/spaced-retrieval-practice/sources.jsonl +7 -0
  71. package/examples/spaced-retrieval-practice/verdict.json +93 -0
  72. package/examples/workplace-ai-assistant/artifact_manifest.json +15 -0
  73. package/examples/workplace-ai-assistant/claims.jsonl +4 -4
  74. package/examples/workplace-ai-assistant/evidence.jsonl +4 -4
  75. package/examples/workplace-ai-assistant/evidence_graph.json +15 -15
  76. package/examples/workplace-ai-assistant/final_verdict.json +78 -0
  77. package/examples/workplace-ai-assistant/gate_report.json +101 -0
  78. package/examples/workplace-ai-assistant/report_spec.json +209 -40
  79. package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_academic.html +435 -105
  80. package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_claude.html +435 -105
  81. package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_datalab-dark.html +435 -105
  82. package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_datalab.html +435 -105
  83. package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_presentation.html +435 -105
  84. package/examples/workplace-ai-assistant/reports-5themes/report_academic.html +2814 -0
  85. package/examples/workplace-ai-assistant/reports-5themes/report_claude.html +2814 -0
  86. package/examples/workplace-ai-assistant/reports-5themes/report_datalab-dark.html +2814 -0
  87. package/examples/workplace-ai-assistant/reports-5themes/report_datalab.html +2814 -0
  88. package/examples/workplace-ai-assistant/reports-5themes/report_presentation.html +2814 -0
  89. package/examples/workplace-ai-assistant/result.json +82 -20
  90. package/examples/workplace-ai-assistant/result.zh.json +82 -20
  91. package/examples/workplace-ai-assistant/skeptic.json +72 -0
  92. package/examples/workplace-ai-assistant/verdict.json +36 -10
  93. package/integrations/agent_mcp.py +2 -2
  94. package/package.json +12 -3
  95. package/pyproject.toml +4 -3
  96. package/references/report-copy-style.md +67 -0
  97. package/references/retrieval-compliance.md +75 -0
  98. package/references/retrieval-protocol.md +20 -0
  99. package/retrieval/audit.py +27 -3
  100. package/retrieval/fetch.py +96 -0
  101. package/retrieval/sciverse.py +398 -0
  102. package/retrieval/search.py +47 -7
  103. package/schemas/applicability.schema.json +94 -0
  104. package/schemas/chart-spec.schema.json +10 -3
  105. package/schemas/evidence.schema.json +316 -43
  106. package/schemas/fetch-result.schema.json +2 -1
  107. package/schemas/report-result.schema.json +3 -3
  108. package/schemas/report-spec.schema.json +98 -100
  109. package/schemas/skeptic.schema.json +86 -0
  110. package/schemas/source.schema.json +21 -2
  111. package/schemas/v2/finding.schema.json +5 -1
  112. package/schemas/v2/methodology-audit.schema.json +5 -1
  113. package/schemas/v2/outcome.schema.json +28 -5
  114. package/schemas/v2/study.schema.json +5 -1
  115. package/schemas/vNext/autoevolve-session.schema.json +34 -1
  116. package/schemas/vNext/eval-snapshot.schema.json +77 -1
  117. package/schemas/vNext/execution-plan.schema.json +50 -1
  118. package/schemas/vNext/gap-priority.schema.json +54 -1
  119. package/schemas/vNext/negative-search-record.schema.json +68 -1
  120. package/schemas/vNext/research-iteration.schema.json +87 -1
  121. package/schemas/vNext/research-strategy.schema.json +62 -1
  122. package/schemas/vNext/skill-experiment.schema.json +90 -1
  123. package/schemas/vNext/task-spec.schema.json +156 -1
  124. package/schemas/vNext/worker-result.schema.json +60 -1
  125. package/schemas/verdict.schema.json +164 -28
  126. package/scripts/build_esl_artifacts.py +2 -2
  127. package/scripts/build_report_variants.py +18 -2
  128. package/scripts/build_result.py +74 -9
  129. package/scripts/check_package_parity.py +85 -0
  130. package/scripts/check_protocol_alignment.py +375 -0
  131. package/scripts/check_versioned_schemas.py +254 -0
  132. package/scripts/claim_audit.py +13 -8
  133. package/scripts/compute_confidence.py +10 -0
  134. package/scripts/did_regression.py +12 -2
  135. package/scripts/evidence_score.py +5 -2
  136. package/scripts/generate_new_projects.py +4 -4
  137. package/scripts/orchestrator.py +120 -24
  138. package/scripts/pre_verdict_gate.py +224 -26
  139. package/scripts/quickstart.py +18 -2
  140. package/scripts/run_workspace.py +7 -1
  141. package/scripts/skill_payload.py +4 -1
  142. package/scripts/test_adversarial_empirical.py +26 -19
  143. package/scripts/validate_schema.py +31 -1
  144. package/skill/agents/evaluation-designer.md +20 -4
  145. package/skill/agents/evidence-analyst.md +19 -3
  146. package/skill/agents/evidence-judge.md +50 -2
  147. package/skill/agents/evidence-retriever.md +20 -3
  148. package/skill/agents/intervention-designer.md +20 -4
  149. package/skill/agents/method-reviewer.md +18 -2
  150. package/skill/agents/{education-planner.md → research-planner.md} +19 -3
  151. package/skill/agents/skeptic.md +18 -2
  152. package/skill/roles/registry.yaml +11 -11
  153. package/skill/sub-skills/aihot-trend-analysis/SKILL.md +28 -9
  154. package/skill/sub-skills/contradiction-analysis/SKILL.md +31 -11
  155. package/skill/sub-skills/data-analysis/SKILL.md +34 -15
  156. package/skill/sub-skills/ethics-review/SKILL.md +33 -10
  157. package/skill/sub-skills/evidence-extraction/SKILL.md +29 -11
  158. package/skill/sub-skills/evidence-review/SKILL.md +31 -12
  159. package/skill/sub-skills/gap-analysis/SKILL.md +31 -9
  160. package/skill/sub-skills/literature-review/SKILL.md +35 -14
  161. package/skill/sub-skills/methodology-audit/SKILL.md +29 -12
  162. package/skill/sub-skills/report-generation/SKILL.md +28 -0
  163. package/skill/sub-skills/research-planning/SKILL.md +41 -14
  164. package/skill/sub-skills/study-design/SKILL.md +30 -9
  165. package/skill/task-briefs/adjudicate.md +32 -7
  166. package/skill/task-briefs/applicability.md +37 -2
  167. package/skill/task-briefs/audit.md +32 -7
  168. package/skill/task-briefs/challenge.md +34 -5
  169. package/skill/task-briefs/evaluate.md +30 -5
  170. package/skill/task-briefs/extract.md +31 -8
  171. package/skill/task-briefs/frame.md +39 -10
  172. package/skill/task-briefs/intervene.md +32 -6
  173. package/skill/task-briefs/present.md +32 -8
  174. package/skill/task-briefs/projection.md +36 -2
  175. package/skill/task-briefs/retrieve.md +36 -6
  176. package/skill/workflows/decision-and-pilot.md +76 -1
  177. package/skill/workflows/evaluate-and-update.md +83 -0
  178. package/skill/workflows/evidence-review.md +104 -0
  179. package/visualization/eduevidence-report/scripts/build_figures.py +25 -3
  180. package/visualization/eduevidence-report/scripts/build_infographics.py +5 -1
  181. package/visualization/eduevidence-report/scripts/build_report.py +512 -65
  182. package/visualization/eduevidence-report/scripts/charts_data.py +2 -0
  183. package/visualization/eduevidence-report/scripts/lieflat_engine.py +349 -38
  184. package/visualization/eduevidence-report/scripts/zh_labels.py +80 -1
  185. package/web/architecture.html +14885 -0
  186. package/web/studio/assets/index-B8tkF44Q.css +1 -0
  187. package/web/studio/index.html +2 -2
  188. package/web/studio/assets/index-CzXocaGv.css +0 -1
  189. /package/web/studio/assets/{index-pa7jD7n4.js → index-CQ6Keoyc.js} +0 -0
@@ -0,0 +1,58 @@
1
+ {
2
+ "question": "在大学的程序设计入门课程中,是否应该用间隔重复与检索练习替代传统的集中式复习?这对学生的长期知识保持是否有效?",
3
+ "decision_target": "teaching_decision",
4
+ "learner": {
5
+ "education_level": "undergraduate_year_1",
6
+ "major": "computer_science",
7
+ "prior_knowledge": "introductory_programming_no_prior_experience",
8
+ "special_characteristics": "large_lecture_with_weekly_labs"
9
+ },
10
+ "course": {
11
+ "subject": "introductory_programming",
12
+ "course_type": "lecture_lab",
13
+ "duration": "16_weeks_one_semester"
14
+ },
15
+ "intervention": {
16
+ "teaching_method": "spaced_retrieval_practice",
17
+ "ai_tool": "",
18
+ "allowed_usage": "",
19
+ "frequency": "weekly_short_quizzes",
20
+ "duration": "one_semester"
21
+ },
22
+ "comparison": "concentrated_review_before_exams (business as usual)",
23
+ "outcomes": {
24
+ "primary": [
25
+ "retention",
26
+ "transfer"
27
+ ],
28
+ "secondary": [
29
+ "knowledge_gain",
30
+ "independent_problem_solving"
31
+ ],
32
+ "risk": [
33
+ "reduced_effort"
34
+ ]
35
+ },
36
+ "context": {
37
+ "teacher_support": "TA_supported",
38
+ "class_size": "large",
39
+ "online_or_offline": "offline"
40
+ },
41
+ "scope": {
42
+ "time_range": "2000-2026",
43
+ "geography": "global",
44
+ "study_types": [
45
+ "rct",
46
+ "quasi_experimental"
47
+ ]
48
+ },
49
+ "inclusion_criteria": [
50
+ "studies measuring delayed retention or transfer",
51
+ "programming or STEM novices"
52
+ ],
53
+ "exclusion_criteria": [
54
+ "no delayed measurement",
55
+ "purely correlational"
56
+ ],
57
+ "success_condition": "delayed retention improves or holds while transfer does not decline"
58
+ }
@@ -0,0 +1,101 @@
1
+ {
2
+ "gate_version": "2026-08-13.v1",
3
+ "checked_at": "2026-09-13T03:17:13.784688+00:00",
4
+ "workspace": "examples/spaced-retrieval-practice",
5
+ "items": {
6
+ "research_frame_valid": {
7
+ "title": "Research Frame valid",
8
+ "status": "pass",
9
+ "detail": "frame.json valid (question=在大学的程序设计入门课程中,是否应该用间隔重复与检索练习替代传统的集中式复习?这对学生的长期知识保持是否有效?)",
10
+ "critical": true,
11
+ "blocks_high": true
12
+ },
13
+ "sources_valid": {
14
+ "title": "Sources valid",
15
+ "status": "pass",
16
+ "detail": "7 source record(s) schema-valid",
17
+ "critical": true,
18
+ "blocks_high": true
19
+ },
20
+ "evidence_schema_valid": {
21
+ "title": "Evidence Schema valid",
22
+ "status": "pass",
23
+ "detail": "6 evidence record(s) schema-valid",
24
+ "critical": true,
25
+ "blocks_high": true
26
+ },
27
+ "source_dedupe": {
28
+ "title": "Source dedupe",
29
+ "status": "pass",
30
+ "detail": "7 unique source(s), no duplicates",
31
+ "critical": true,
32
+ "blocks_high": true
33
+ },
34
+ "counter_evidence_search": {
35
+ "title": "Counter-evidence search",
36
+ "status": "pass",
37
+ "detail": "search_performed=true; 9/9 checks run; findings=2; contradictory_evidence_found=False",
38
+ "critical": true,
39
+ "blocks_high": true
40
+ },
41
+ "methodology_audit": {
42
+ "title": "Methodology audit",
43
+ "status": "pass",
44
+ "detail": "methodology verdict=PASS; task/learning separated",
45
+ "critical": true,
46
+ "blocks_high": true
47
+ },
48
+ "claim_evidence_audit": {
49
+ "title": "Claim-Evidence Audit",
50
+ "status": "pass",
51
+ "detail": "all verdict claims bind to existing evidence with consistent categories",
52
+ "critical": true,
53
+ "blocks_high": false
54
+ },
55
+ "outcome_mapping": {
56
+ "title": "Outcome mapping",
57
+ "status": "warn",
58
+ "detail": "outcome keys known; frame-declared outcomes without evidence: independent_problem_solving, knowledge_gain, reduced_effort",
59
+ "critical": false,
60
+ "blocks_high": false
61
+ },
62
+ "scope_calibration": {
63
+ "title": "Scope calibration",
64
+ "status": "pass",
65
+ "detail": "claims bounded: can=2, cannot=2, exceeds_boundary=0",
66
+ "critical": false,
67
+ "blocks_high": true
68
+ },
69
+ "independent_study_count": {
70
+ "title": "Independent study-sample count",
71
+ "status": "pass",
72
+ "detail": "independent studies=6, samples=6",
73
+ "critical": true,
74
+ "blocks_high": true
75
+ },
76
+ "deterministic_confidence": {
77
+ "title": "Deterministic confidence",
78
+ "status": "pass",
79
+ "detail": "deterministic confidence=High (score=0.893, policy=2026-08-12.v3)",
80
+ "critical": true,
81
+ "blocks_high": true
82
+ },
83
+ "decision_action_consistency": {
84
+ "title": "Decision action consistency",
85
+ "status": "pass",
86
+ "detail": "ADOPT is supported: High confidence with direct primary-outcome evidence",
87
+ "critical": true,
88
+ "blocks_high": false
89
+ }
90
+ },
91
+ "passed": true,
92
+ "critical_failures": [],
93
+ "high_confidence_allowed": true,
94
+ "max_confidence": "High",
95
+ "enforcement": {
96
+ "rule": "confidence capped at {max}; High confidence requires a fully passing gate and >= 2 independent studies",
97
+ "max_confidence": "High",
98
+ "requires_action_change": false,
99
+ "action_override": null
100
+ }
101
+ }
@@ -0,0 +1,78 @@
1
+ {
2
+ "target": "overall",
3
+ "verdict": "PASS",
4
+ "audit_items": {
5
+ "control_group": {
6
+ "status": "met",
7
+ "note": "由本轮真实检索到的证据集评估得出"
8
+ },
9
+ "randomization": {
10
+ "status": "partial",
11
+ "note": "由本轮真实检索到的证据集评估得出"
12
+ },
13
+ "pre_test": {
14
+ "status": "partial",
15
+ "note": "由本轮真实检索到的证据集评估得出"
16
+ },
17
+ "post_test": {
18
+ "status": "met",
19
+ "note": "由本轮真实检索到的证据集评估得出"
20
+ },
21
+ "retention_test": {
22
+ "status": "met",
23
+ "note": "由本轮真实检索到的证据集评估得出"
24
+ },
25
+ "transfer_test": {
26
+ "status": "partial",
27
+ "note": "由本轮真实检索到的证据集评估得出"
28
+ },
29
+ "sample_bias": {
30
+ "status": "partial",
31
+ "note": "由本轮真实检索到的证据集评估得出"
32
+ },
33
+ "self_selection": {
34
+ "status": "partial",
35
+ "note": "由本轮真实检索到的证据集评估得出"
36
+ },
37
+ "measurement_validity": {
38
+ "status": "met",
39
+ "note": "由本轮真实检索到的证据集评估得出"
40
+ },
41
+ "confounders": {
42
+ "status": "partial",
43
+ "note": "由本轮真实检索到的证据集评估得出"
44
+ },
45
+ "instructor_effect": {
46
+ "status": "missing",
47
+ "note": "由本轮真实检索到的证据集评估得出"
48
+ },
49
+ "novelty_effect": {
50
+ "status": "missing",
51
+ "note": "由本轮真实检索到的证据集评估得出"
52
+ },
53
+ "tool_version_effect": {
54
+ "status": "not_applicable",
55
+ "note": "由本轮真实检索到的证据集评估得出"
56
+ },
57
+ "ai_usage_policy": {
58
+ "status": "not_applicable",
59
+ "note": "由本轮真实检索到的证据集评估得出"
60
+ },
61
+ "dropout": {
62
+ "status": "missing",
63
+ "note": "由本轮真实检索到的证据集评估得出"
64
+ }
65
+ },
66
+ "task_vs_learning_guard": {
67
+ "measured_construct": "delayed retention and transfer, not immediate task speed",
68
+ "equates_task_with_learning": false,
69
+ "note": "本证据集以延迟保持与迁移为主要结果,未把即时练习表现等同于学习。"
70
+ },
71
+ "limitations": [
72
+ "多数研究来自心理学实验室材料,程序设计课程的现场证据相对有限",
73
+ "间隔长度与练习形式在研究中差异较大"
74
+ ],
75
+ "suggestions": [
76
+ "在课程内固定每周短检索练习并统一延迟后测口径"
77
+ ]
78
+ }
@@ -0,0 +1,212 @@
1
+ {
2
+ "generated_by": "build_report.py",
3
+ "source": "result.json + result.zh.json",
4
+ "question": "在大学的程序设计入门课程中,是否应该用间隔重复与检索练习替代传统的集中式复习?这对学生的长期知识保持是否有效?",
5
+ "theme_selected": "claude",
6
+ "theme_display": "Claude Research [Light]",
7
+ "theme_available": [
8
+ "claude",
9
+ "academic",
10
+ "datalab",
11
+ "datalab-dark",
12
+ "presentation"
13
+ ],
14
+ "theme_selection": "generation_time",
15
+ "lang_default": "zh",
16
+ "lang_switchable": [
17
+ "zh",
18
+ "en"
19
+ ],
20
+ "report_pages": [
21
+ "visual_brief",
22
+ "full_report"
23
+ ],
24
+ "full_report_outline": {
25
+ "chapter_count": 6,
26
+ "source": "safe_fallback",
27
+ "chapters": [
28
+ {
29
+ "key": "decision",
30
+ "title_zh": "结论、裁决与研究边界",
31
+ "title_en": "Decision, Adjudication & Research Boundary",
32
+ "modules": [
33
+ "decision",
34
+ "scope"
35
+ ]
36
+ },
37
+ {
38
+ "key": "evidence",
39
+ "title_zh": "关键证据与结果分离",
40
+ "title_en": "Key Evidence & Outcome Separation",
41
+ "modules": [
42
+ "retrieval",
43
+ "outcomes",
44
+ "evidence"
45
+ ]
46
+ },
47
+ {
48
+ "key": "quality",
49
+ "title_zh": "证据可信度、反证与方法审计",
50
+ "title_en": "Evidence Quality, Counterevidence & Method Audit",
51
+ "modules": [
52
+ "quality",
53
+ "conflicts",
54
+ "trace"
55
+ ]
56
+ },
57
+ {
58
+ "key": "action",
59
+ "title_zh": "适用范围与教学行动",
60
+ "title_en": "Applicability & Teaching Action",
61
+ "modules": [
62
+ "applicability",
63
+ "intervention"
64
+ ]
65
+ },
66
+ {
67
+ "key": "evaluation",
68
+ "title_zh": "试点设计、评估与停止条件",
69
+ "title_en": "Pilot, Evaluation & Stop Conditions",
70
+ "modules": [
71
+ "evaluation"
72
+ ]
73
+ },
74
+ {
75
+ "key": "sources",
76
+ "title_zh": "来源、溯源与附录",
77
+ "title_en": "Sources, Traceability & Appendix",
78
+ "modules": [
79
+ "sources"
80
+ ]
81
+ }
82
+ ]
83
+ },
84
+ "visualization_decisions": {
85
+ "outcome_separation": {
86
+ "render": true,
87
+ "reason": "multiple outcome constructs present"
88
+ },
89
+ "outcome_evidence_balance": {
90
+ "render": false,
91
+ "reason": "suppressed: sparse effect counts (total=6, active=2, nonzero_cells=3, max_cell=4)"
92
+ },
93
+ "claim_trace": {
94
+ "render": true,
95
+ "reason": "claim-evidence-source relationships present"
96
+ },
97
+ "benchmark": {
98
+ "render": false,
99
+ "reason": "suppressed: absent, simulated, or fewer than two baselines"
100
+ }
101
+ },
102
+ "lieflat_gallery": {
103
+ "layout_source": "deterministic_fallback",
104
+ "selected": [
105
+ {
106
+ "chart_id": "lieflat-hundred-field.svg",
107
+ "type": "hundred_field",
108
+ "catalog_ref": "L14 Hundred Field",
109
+ "source": "evidence.study_type_composition"
110
+ },
111
+ {
112
+ "chart_id": "lieflat-tick-gauge.svg",
113
+ "type": "tick_gauge",
114
+ "catalog_ref": "F11 Tick Gauge",
115
+ "source": "decision.confidence_score"
116
+ },
117
+ {
118
+ "chart_id": "lieflat-ballot-tally.svg",
119
+ "type": "ballot_tally",
120
+ "catalog_ref": "L15 Ballot Tally",
121
+ "source": "methodology.flag_rates"
122
+ }
123
+ ],
124
+ "suppressed": [],
125
+ "rejected": [],
126
+ "warnings": [
127
+ "visual_layout missing or fully invalid — data-driven fallback selected hundred_field, tick_gauge, ballot_tally"
128
+ ]
129
+ },
130
+ "charts": [
131
+ {
132
+ "chart_id": "outcome-evidence-overview",
133
+ "purpose": "interactive_analysis",
134
+ "engine": "echarts",
135
+ "data_ref": null,
136
+ "title": "Outcome Evidence Overview",
137
+ "integrity": {
138
+ "numbers_match_result": "NOT_CHECKED",
139
+ "no_axis_distortion": "NOT_CHECKED",
140
+ "no_false_precision": "NOT_CHECKED",
141
+ "colorblind_safe": "NOT_CHECKED"
142
+ }
143
+ },
144
+ {
145
+ "chart_id": "claim-evidence-trace",
146
+ "purpose": "interactive_analysis",
147
+ "engine": "echarts",
148
+ "data_ref": null,
149
+ "title": "Claim-Evidence Trace",
150
+ "integrity": {
151
+ "numbers_match_result": "NOT_CHECKED",
152
+ "no_axis_distortion": "NOT_CHECKED",
153
+ "no_false_precision": "NOT_CHECKED",
154
+ "colorblind_safe": "NOT_CHECKED"
155
+ }
156
+ }
157
+ ],
158
+ "infographics": [
159
+ {
160
+ "chart_id": "workflow",
161
+ "purpose": "process_or_story",
162
+ "engine": "antv_infographic",
163
+ "title": ""
164
+ },
165
+ {
166
+ "chart_id": "tribunal",
167
+ "purpose": "process_or_story",
168
+ "engine": "antv_infographic",
169
+ "title": ""
170
+ },
171
+ {
172
+ "chart_id": "intervention",
173
+ "purpose": "process_or_story",
174
+ "engine": "antv_infographic",
175
+ "title": ""
176
+ },
177
+ {
178
+ "chart_id": "evaluation",
179
+ "purpose": "process_or_story",
180
+ "engine": "antv_infographic",
181
+ "title": ""
182
+ }
183
+ ],
184
+ "academic_figures": [
185
+ {
186
+ "chart_id": "outcome-comparison",
187
+ "purpose": "statistical_publication",
188
+ "engine": "academic_figure",
189
+ "caption": "Fig. 1. Counts of positive / negative / null effects per outcome type (based on effect_direction; publication figure, theme-independent). Source: EduEvidence result.json."
190
+ }
191
+ ],
192
+ "integrity_gate": {
193
+ "status": "PASS",
194
+ "contract_valid": "PASS",
195
+ "claims_bound": "PASS",
196
+ "evidence_bound": 6,
197
+ "sources_resolved": 7,
198
+ "numbers_match_result": "PASS",
199
+ "bilingual_structure_match": "PASS",
200
+ "language_match": "PASS",
201
+ "no_false_precision": "PASS",
202
+ "lieflat_data_bound": "PASS",
203
+ "no_axis_distortion": "NOT_CHECKED",
204
+ "colorblind_safe": "NOT_CHECKED",
205
+ "langs": [
206
+ "zh",
207
+ "en"
208
+ ],
209
+ "generated_by": "build_report.py",
210
+ "source": "result.json + result.zh.json"
211
+ }
212
+ }