eduevidence 5.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +506 -0
- package/README.zh-CN.md +434 -0
- package/SKILL.md +195 -0
- package/bin/eduevidence.js +127 -0
- package/domains/education/manifest.json +183 -0
- package/domains/education/outcome_taxonomy.json +127 -0
- package/domains/manifest.json +26 -0
- package/domains/policy/frame.schema.json +234 -0
- package/domains/policy/manifest.json +10 -0
- package/domains/policy/methodology_checklist.json +109 -0
- package/domains/policy/outcome_taxonomy.json +53 -0
- package/domains/policy/references/causal-identification.md +45 -0
- package/domains/policy/references/cost-evidence.md +44 -0
- package/domains/policy/references/equity.md +42 -0
- package/domains/policy/references/evidence-hierarchy.md +41 -0
- package/domains/policy/references/implementation-evidence.md +47 -0
- package/eduevidence_cli.py +26 -0
- package/engine/__init__.py +11 -0
- package/engine/__pycache__/__init__.cpython-312.pyc +0 -0
- package/engine/__pycache__/analysis.cpython-312.pyc +0 -0
- package/engine/__pycache__/bias.cpython-312.pyc +0 -0
- package/engine/__pycache__/briefs.cpython-312.pyc +0 -0
- package/engine/__pycache__/capabilities.cpython-312.pyc +0 -0
- package/engine/__pycache__/citation_check.cpython-312.pyc +0 -0
- package/engine/__pycache__/contracts.cpython-312.pyc +0 -0
- package/engine/__pycache__/datasets.cpython-312.pyc +0 -0
- package/engine/__pycache__/events.cpython-312.pyc +0 -0
- package/engine/__pycache__/evidence_graph.cpython-312.pyc +0 -0
- package/engine/__pycache__/evidence_review.cpython-312.pyc +0 -0
- package/engine/__pycache__/evidencecore.cpython-312.pyc +0 -0
- package/engine/__pycache__/gap_lens.cpython-312.pyc +0 -0
- package/engine/__pycache__/gaps.cpython-312.pyc +0 -0
- package/engine/__pycache__/graph_store.cpython-312.pyc +0 -0
- package/engine/__pycache__/graph_validate.cpython-312.pyc +0 -0
- package/engine/__pycache__/ids.cpython-312.pyc +0 -0
- package/engine/__pycache__/library.cpython-312.pyc +0 -0
- package/engine/__pycache__/library_builtin.cpython-312.pyc +0 -0
- package/engine/__pycache__/living.cpython-312.pyc +0 -0
- package/engine/__pycache__/log.cpython-312.pyc +0 -0
- package/engine/__pycache__/meta_analysis.cpython-312.pyc +0 -0
- package/engine/__pycache__/meta_synthesis.cpython-312.pyc +0 -0
- package/engine/__pycache__/migration.cpython-312.pyc +0 -0
- package/engine/__pycache__/mode_router.cpython-312.pyc +0 -0
- package/engine/__pycache__/paths.cpython-312.pyc +0 -0
- package/engine/__pycache__/pilot.cpython-312.pyc +0 -0
- package/engine/__pycache__/planner.cpython-312.pyc +0 -0
- package/engine/__pycache__/project.cpython-312.pyc +0 -0
- package/engine/__pycache__/projections.cpython-312.pyc +0 -0
- package/engine/__pycache__/robustness.cpython-312.pyc +0 -0
- package/engine/__pycache__/run.cpython-312.pyc +0 -0
- package/engine/__pycache__/semantics.cpython-312.pyc +0 -0
- package/engine/__pycache__/study_design.cpython-312.pyc +0 -0
- package/engine/__pycache__/synthesis.cpython-312.pyc +0 -0
- package/engine/__pycache__/tribunal.cpython-312.pyc +0 -0
- package/engine/__pycache__/update.cpython-312.pyc +0 -0
- package/engine/__pycache__/versions.cpython-312.pyc +0 -0
- package/engine/analysis.py +308 -0
- package/engine/bias.py +178 -0
- package/engine/briefs.py +106 -0
- package/engine/capabilities.py +99 -0
- package/engine/citation_check.py +192 -0
- package/engine/contracts.py +117 -0
- package/engine/datasets.py +165 -0
- package/engine/events.py +67 -0
- package/engine/evidence_graph.py +571 -0
- package/engine/evidence_review.py +88 -0
- package/engine/evidencecore.py +182 -0
- package/engine/gap_lens.py +132 -0
- package/engine/gaps.py +169 -0
- package/engine/graph_store.py +335 -0
- package/engine/graph_validate.py +87 -0
- package/engine/ids.py +77 -0
- package/engine/library.py +268 -0
- package/engine/library_builtin.py +301 -0
- package/engine/living.py +671 -0
- package/engine/log.py +39 -0
- package/engine/meta_analysis.py +333 -0
- package/engine/meta_synthesis.py +111 -0
- package/engine/migration.py +397 -0
- package/engine/mode_router.py +72 -0
- package/engine/paths.py +15 -0
- package/engine/pilot.py +368 -0
- package/engine/planner.py +126 -0
- package/engine/project.py +118 -0
- package/engine/projections.py +240 -0
- package/engine/robustness.py +109 -0
- package/engine/run.py +85 -0
- package/engine/semantics.py +135 -0
- package/engine/study_design.py +87 -0
- package/engine/synthesis.py +187 -0
- package/engine/tribunal.py +408 -0
- package/engine/update.py +113 -0
- package/engine/versions.py +12 -0
- package/install.sh +510 -0
- package/integrations/__init__.py +1 -0
- package/integrations/__pycache__/__init__.cpython-312.pyc +0 -0
- package/integrations/__pycache__/agent_mcp.cpython-312.pyc +0 -0
- package/integrations/__pycache__/smart_web_fetch.cpython-312.pyc +0 -0
- package/integrations/agent_mcp.py +856 -0
- package/integrations/smart_web_fetch.py +59 -0
- package/package.json +50 -0
- package/pyproject.toml +55 -0
- package/references/applicability-policy.md +88 -0
- package/references/education-framing.md +132 -0
- package/references/effect_size_formulas.md +35 -0
- package/references/evaluation-design.md +111 -0
- package/references/evidence-quality.md +79 -0
- package/references/grade_framework.md +29 -0
- package/references/intervention-design.md +98 -0
- package/references/methodology-audit.md +103 -0
- package/references/outcome-taxonomy.md +106 -0
- package/references/retrieval-protocol.md +142 -0
- package/references/skeptic-protocol.md +93 -0
- package/references/social_science_pitfalls.md +48 -0
- package/references/source-validity.md +140 -0
- package/references/tribunal-policy.md +112 -0
- package/references/wwc_standards.md +29 -0
- package/retrieval/__init__.py +1 -0
- package/retrieval/__pycache__/__init__.cpython-312.pyc +0 -0
- package/retrieval/__pycache__/corpus_store.cpython-312.pyc +0 -0
- package/retrieval/__pycache__/dedupe.cpython-312.pyc +0 -0
- package/retrieval/__pycache__/failures.cpython-312.pyc +0 -0
- package/retrieval/__pycache__/fetch.cpython-312.pyc +0 -0
- package/retrieval/__pycache__/search.cpython-312.pyc +0 -0
- package/retrieval/__pycache__/source.cpython-312.pyc +0 -0
- package/retrieval/__pycache__/validate.cpython-312.pyc +0 -0
- package/retrieval/corpus_store.py +181 -0
- package/retrieval/dedupe.py +127 -0
- package/retrieval/failures.py +90 -0
- package/retrieval/fetch.py +435 -0
- package/retrieval/search.py +493 -0
- package/retrieval/source.py +160 -0
- package/retrieval/validate.py +257 -0
- package/schemas/agent-mcp-approval.schema.json +57 -0
- package/schemas/chart-spec.schema.json +88 -0
- package/schemas/cross-model-review.schema.json +28 -0
- package/schemas/education-frame.schema.json +106 -0
- package/schemas/evaluation.schema.json +35 -0
- package/schemas/evidence.schema.json +81 -0
- package/schemas/fetch-result.schema.json +119 -0
- package/schemas/intervention.schema.json +46 -0
- package/schemas/methodology.schema.json +102 -0
- package/schemas/report-result.schema.json +381 -0
- package/schemas/report-spec.schema.json +130 -0
- package/schemas/source.schema.json +311 -0
- package/schemas/v2/analysis-plan.schema.json +28 -0
- package/schemas/v2/analysis-run.schema.json +33 -0
- package/schemas/v2/claim.schema.json +26 -0
- package/schemas/v2/dataset-asset.schema.json +40 -0
- package/schemas/v2/decision-snapshot.schema.json +53 -0
- package/schemas/v2/evidence-link.schema.json +38 -0
- package/schemas/v2/finding.schema.json +47 -0
- package/schemas/v2/graph-revision.schema.json +30 -0
- package/schemas/v2/knowledge-gap.schema.json +40 -0
- package/schemas/v2/methodology-audit.schema.json +30 -0
- package/schemas/v2/outcome.schema.json +18 -0
- package/schemas/v2/project.schema.json +31 -0
- package/schemas/v2/research-intent.schema.json +24 -0
- package/schemas/v2/run.schema.json +43 -0
- package/schemas/v2/source.schema.json +24 -0
- package/schemas/v2/study-design.schema.json +67 -0
- package/schemas/v2/study.schema.json +37 -0
- package/schemas/v3/pilot-outcome.schema.json +132 -0
- package/schemas/v3/run-manifest.schema.json +193 -0
- package/schemas/v3/synthesis.schema.json +86 -0
- package/schemas/v4/drift-report.schema.json +66 -0
- package/schemas/v4/evidence-library.schema.json +42 -0
- package/schemas/v4/living-subscription.schema.json +55 -0
- package/schemas/v4/meta-analysis.schema.json +152 -0
- package/schemas/verdict.schema.json +56 -0
- package/scripts/__init__.py +0 -0
- package/scripts/__pycache__/__init__.cpython-312.pyc +0 -0
- package/scripts/__pycache__/benchmark.cpython-312.pyc +0 -0
- package/scripts/__pycache__/benchmark_evaluator.cpython-312.pyc +0 -0
- package/scripts/__pycache__/benchmark_judge.cpython-312.pyc +0 -0
- package/scripts/__pycache__/benchmark_routing.cpython-312.pyc +0 -0
- package/scripts/__pycache__/benchmark_v2.cpython-312.pyc +0 -0
- package/scripts/__pycache__/benchmark_v3.cpython-312.pyc +0 -0
- package/scripts/__pycache__/build_result.cpython-312.pyc +0 -0
- package/scripts/__pycache__/claim_audit.cpython-312.pyc +0 -0
- package/scripts/__pycache__/complexity_gate.cpython-312.pyc +0 -0
- package/scripts/__pycache__/compute_confidence.cpython-312.pyc +0 -0
- package/scripts/__pycache__/dashboard_server.cpython-312.pyc +0 -0
- package/scripts/__pycache__/did_regression.cpython-312.pyc +0 -0
- package/scripts/__pycache__/effect_calculator.cpython-312.pyc +0 -0
- package/scripts/__pycache__/evidence_matrix.cpython-312.pyc +0 -0
- package/scripts/__pycache__/evidence_score.cpython-312.pyc +0 -0
- package/scripts/__pycache__/evidence_semantics.cpython-312.pyc +0 -0
- package/scripts/__pycache__/fetch_benchmark.cpython-312.pyc +0 -0
- package/scripts/__pycache__/lint_report_layout.cpython-312.pyc +0 -0
- package/scripts/__pycache__/orchestrator.cpython-312.pyc +0 -0
- package/scripts/__pycache__/pre_verdict_gate.cpython-312.pyc +0 -0
- package/scripts/__pycache__/recompute_demo_quality.cpython-312.pyc +0 -0
- package/scripts/__pycache__/render_report.cpython-312.pyc +0 -0
- package/scripts/__pycache__/render_report_html.cpython-312.pyc +0 -0
- package/scripts/__pycache__/run_workspace.cpython-312.pyc +0 -0
- package/scripts/__pycache__/skill_lint.cpython-312.pyc +0 -0
- package/scripts/__pycache__/startup_probe.cpython-312.pyc +0 -0
- package/scripts/__pycache__/sync_killer_demo_report.cpython-312.pyc +0 -0
- package/scripts/__pycache__/test_adversarial_empirical.cpython-312-pytest-9.0.2.pyc +0 -0
- package/scripts/__pycache__/test_adversarial_empirical.cpython-312-pytest-9.1.1.pyc +0 -0
- package/scripts/__pycache__/validate_schema.cpython-312.pyc +0 -0
- package/scripts/audit_dois.py +292 -0
- package/scripts/bake_pack.sh +37 -0
- package/scripts/benchmark.py +183 -0
- package/scripts/benchmark_evaluator.py +371 -0
- package/scripts/benchmark_judge.py +535 -0
- package/scripts/benchmark_routing.py +120 -0
- package/scripts/benchmark_v2.py +304 -0
- package/scripts/benchmark_v3.py +552 -0
- package/scripts/build_esl_artifacts.py +1921 -0
- package/scripts/build_evidence_library.py +307 -0
- package/scripts/build_killer_demo.py +295 -0
- package/scripts/build_result.py +311 -0
- package/scripts/check_version_consistency.py +96 -0
- package/scripts/citation_check.py +123 -0
- package/scripts/claim_audit.py +157 -0
- package/scripts/complexity_gate.py +180 -0
- package/scripts/compute_confidence.py +176 -0
- package/scripts/dashboard_server.py +536 -0
- package/scripts/did_regression.py +315 -0
- package/scripts/effect_calculator.py +99 -0
- package/scripts/enrich_projects_human_and_lieflat.py +315 -0
- package/scripts/evidence_matrix.py +129 -0
- package/scripts/evidence_score.py +234 -0
- package/scripts/evidence_semantics.py +87 -0
- package/scripts/fetch_benchmark.py +177 -0
- package/scripts/generate_metrics.py +99 -0
- package/scripts/generate_new_projects.py +686 -0
- package/scripts/generate_promo.py +192 -0
- package/scripts/lint_report_layout.py +182 -0
- package/scripts/orchestrator.py +1456 -0
- package/scripts/pre_verdict_gate.py +513 -0
- package/scripts/quickstart.py +121 -0
- package/scripts/rebake_all_5themes.py +88 -0
- package/scripts/recompute_demo_quality.py +205 -0
- package/scripts/render_report.py +270 -0
- package/scripts/render_report_html.py +356 -0
- package/scripts/retraction_watch.py +110 -0
- package/scripts/run_workspace.py +337 -0
- package/scripts/serve_web.py +54 -0
- package/scripts/skill_lint.py +150 -0
- package/scripts/startup_probe.py +265 -0
- package/scripts/sync_killer_demo_report.py +270 -0
- package/scripts/test_adversarial_empirical.py +541 -0
- package/scripts/validate_schema.py +256 -0
- package/skill/agents/education-planner.md +80 -0
- package/skill/agents/evaluation-designer.md +74 -0
- package/skill/agents/evidence-analyst.md +106 -0
- package/skill/agents/evidence-judge.md +111 -0
- package/skill/agents/evidence-retriever.md +80 -0
- package/skill/agents/intervention-designer.md +82 -0
- package/skill/agents/method-reviewer.md +104 -0
- package/skill/agents/skeptic.md +89 -0
- package/skill/sub-skills/aihot-trend-analysis/SKILL.md +31 -0
- package/skill/sub-skills/contradiction-analysis/SKILL.md +17 -0
- package/skill/sub-skills/data-analysis/SKILL.md +23 -0
- package/skill/sub-skills/ethics-review/SKILL.md +25 -0
- package/skill/sub-skills/evidence-extraction/SKILL.md +19 -0
- package/skill/sub-skills/evidence-review/SKILL.md +18 -0
- package/skill/sub-skills/gap-analysis/SKILL.md +25 -0
- package/skill/sub-skills/literature-review/SKILL.md +21 -0
- package/skill/sub-skills/methodology-audit/SKILL.md +20 -0
- package/skill/sub-skills/report-generation/SKILL.md +51 -0
- package/skill/sub-skills/research-planning/SKILL.md +21 -0
- package/skill/sub-skills/study-design/SKILL.md +16 -0
- package/skill/task-briefs/adjudicate.md +17 -0
- package/skill/task-briefs/audit.md +15 -0
- package/skill/task-briefs/challenge.md +15 -0
- package/skill/task-briefs/evaluate.md +13 -0
- package/skill/task-briefs/extract.md +16 -0
- package/skill/task-briefs/frame.md +17 -0
- package/skill/task-briefs/intervene.md +14 -0
- package/skill/task-briefs/present.md +16 -0
- package/skill/task-briefs/retrieve.md +15 -0
- package/visualization/eduevidence-report/assets/base.css +337 -0
- package/visualization/eduevidence-report/motion/motion.css +157 -0
- package/visualization/eduevidence-report/motion/motion.js +107 -0
- package/visualization/eduevidence-report/references/bilingual-style.md +7 -0
- package/visualization/eduevidence-report/references/component-catalog.md +145 -0
- package/visualization/eduevidence-report/references/evidence-expansion.md +65 -0
- package/visualization/eduevidence-report/references/full-report-outline.md +86 -0
- package/visualization/eduevidence-report/references/layout-constraints.md +63 -0
- package/visualization/eduevidence-report/references/lieflat-composition.md +79 -0
- package/visualization/eduevidence-report/references/motion-system.md +31 -0
- package/visualization/eduevidence-report/schemas/adapter-envelope.schema.json +22 -0
- package/visualization/eduevidence-report/schemas/visual-layout.schema.json +87 -0
- package/visualization/eduevidence-report/scripts/__pycache__/adapter_contract.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/build_artifact_manifest.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/build_charts.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/build_figures.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/build_infographics.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/build_report.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/charts_data.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/lieflat_engine.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/zh_labels.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/adapter_contract.py +72 -0
- package/visualization/eduevidence-report/scripts/build_artifact_manifest.py +70 -0
- package/visualization/eduevidence-report/scripts/build_charts.py +283 -0
- package/visualization/eduevidence-report/scripts/build_figures.py +515 -0
- package/visualization/eduevidence-report/scripts/build_infographics.py +268 -0
- package/visualization/eduevidence-report/scripts/build_report.py +3211 -0
- package/visualization/eduevidence-report/scripts/charts_data.py +617 -0
- package/visualization/eduevidence-report/scripts/check_mobile_layout.js +220 -0
- package/visualization/eduevidence-report/scripts/lieflat_engine.py +852 -0
- package/visualization/eduevidence-report/scripts/zh_labels.py +245 -0
- package/visualization/eduevidence-report/themes/academic.css +94 -0
- package/visualization/eduevidence-report/themes/claude.css +96 -0
- package/visualization/eduevidence-report/themes/datalab-dark.css +147 -0
- package/visualization/eduevidence-report/themes/datalab.css +151 -0
- package/visualization/eduevidence-report/themes/presentation.css +140 -0
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://github.com/37chengshan/eduevidence/schemas/report-spec.schema.json",
|
|
4
|
+
"title": "ReportSpec",
|
|
5
|
+
"description": "report_spec.json — the Visualization Planner output (v5 方案 §9-10, §36). Declares sections and components from the frozen Component Catalog; the deterministic renderer turns it into HTML. No free-form DOM. 扩展字段一律放在各对象 extensions 内。",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"title",
|
|
10
|
+
"theme",
|
|
11
|
+
"sections"
|
|
12
|
+
],
|
|
13
|
+
"properties": {
|
|
14
|
+
"title": {
|
|
15
|
+
"type": "string"
|
|
16
|
+
},
|
|
17
|
+
"theme": {
|
|
18
|
+
"type": "string",
|
|
19
|
+
"enum": [
|
|
20
|
+
"claude",
|
|
21
|
+
"academic",
|
|
22
|
+
"datalab",
|
|
23
|
+
"datalab-dark",
|
|
24
|
+
"presentation"
|
|
25
|
+
]
|
|
26
|
+
},
|
|
27
|
+
"mode": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"enum": [
|
|
30
|
+
"research",
|
|
31
|
+
"demo"
|
|
32
|
+
],
|
|
33
|
+
"default": "research"
|
|
34
|
+
},
|
|
35
|
+
"generated_at": {
|
|
36
|
+
"type": "string",
|
|
37
|
+
"format": "date-time"
|
|
38
|
+
},
|
|
39
|
+
"sections": {
|
|
40
|
+
"type": "array",
|
|
41
|
+
"items": {
|
|
42
|
+
"type": "object",
|
|
43
|
+
"additionalProperties": false,
|
|
44
|
+
"required": [
|
|
45
|
+
"id",
|
|
46
|
+
"title",
|
|
47
|
+
"component"
|
|
48
|
+
],
|
|
49
|
+
"properties": {
|
|
50
|
+
"id": {
|
|
51
|
+
"type": "string",
|
|
52
|
+
"examples": [
|
|
53
|
+
"01-executive-decision"
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
"title": {
|
|
57
|
+
"type": "string"
|
|
58
|
+
},
|
|
59
|
+
"component": {
|
|
60
|
+
"type": "string",
|
|
61
|
+
"enum": [
|
|
62
|
+
"ReportShell",
|
|
63
|
+
"Section",
|
|
64
|
+
"DecisionCard",
|
|
65
|
+
"ConfidenceBadge",
|
|
66
|
+
"OutcomeSummary",
|
|
67
|
+
"InteractiveChart",
|
|
68
|
+
"AcademicFigure",
|
|
69
|
+
"InfographicBlock",
|
|
70
|
+
"EvidenceMatrix",
|
|
71
|
+
"EvidenceRow",
|
|
72
|
+
"TribunalView",
|
|
73
|
+
"MethodologyPanel",
|
|
74
|
+
"ConflictCard",
|
|
75
|
+
"ClaimTrace",
|
|
76
|
+
"ApplicabilityCard",
|
|
77
|
+
"InterventionTimeline",
|
|
78
|
+
"EvaluationFlow",
|
|
79
|
+
"BenchmarkPanel",
|
|
80
|
+
"SourceList",
|
|
81
|
+
"ProvenancePanel",
|
|
82
|
+
"Footnote"
|
|
83
|
+
]
|
|
84
|
+
},
|
|
85
|
+
"data_ref": {
|
|
86
|
+
"type": "string",
|
|
87
|
+
"description": "Pointer into result.json (e.g. 'decision', 'evidence', 'sources')."
|
|
88
|
+
},
|
|
89
|
+
"props": {
|
|
90
|
+
"type": "object",
|
|
91
|
+
"additionalProperties": true,
|
|
92
|
+
"description": "Component props (theme-agnostic)."
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
"charts": {
|
|
98
|
+
"type": "array",
|
|
99
|
+
"description": "Chart declarations (see chart-spec.schema.json).",
|
|
100
|
+
"items": {
|
|
101
|
+
"$ref": "chart-spec.schema.json"
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
"integrity": {
|
|
105
|
+
"type": "object",
|
|
106
|
+
"additionalProperties": false,
|
|
107
|
+
"description": "Scientific Integrity Gate result (v5 方案 §27).",
|
|
108
|
+
"properties": {
|
|
109
|
+
"status": {
|
|
110
|
+
"type": "string",
|
|
111
|
+
"enum": [
|
|
112
|
+
"VALID",
|
|
113
|
+
"REPORT_INVALID"
|
|
114
|
+
]
|
|
115
|
+
},
|
|
116
|
+
"checks": {
|
|
117
|
+
"type": "array",
|
|
118
|
+
"items": {
|
|
119
|
+
"type": "string"
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
"extensions": {
|
|
125
|
+
"type": "object",
|
|
126
|
+
"description": "结构化扩展字段的统一容器(P1-01)。未列入本 schema 的字段必须放在这里,禁止在顶层新增属性。",
|
|
127
|
+
"additionalProperties": true
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://github.com/37chengshan/eduevidence/schemas/source.schema.json",
|
|
4
|
+
"title": "SourceObject",
|
|
5
|
+
"description": "Unified source registry entry (总体实施计划 §11 / v3 方案 §14). Evidence Objects reference only source_id. Fetch provider is a reading path, never the citation target. 扩展字段一律放在 extensions 内。",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"source_id",
|
|
10
|
+
"title",
|
|
11
|
+
"canonical_url",
|
|
12
|
+
"authority_level"
|
|
13
|
+
],
|
|
14
|
+
"properties": {
|
|
15
|
+
"source_id": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"examples": [
|
|
18
|
+
"S-2023-kazemitabaar"
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
"title": {
|
|
22
|
+
"type": "string"
|
|
23
|
+
},
|
|
24
|
+
"authors": {
|
|
25
|
+
"type": "array",
|
|
26
|
+
"items": {
|
|
27
|
+
"type": "string"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"year": {
|
|
31
|
+
"type": [
|
|
32
|
+
"integer",
|
|
33
|
+
"null"
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
"doi": {
|
|
37
|
+
"type": "string",
|
|
38
|
+
"examples": [
|
|
39
|
+
"10.1145/3544548.3580919"
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
"canonical_url": {
|
|
43
|
+
"type": "string",
|
|
44
|
+
"format": "uri"
|
|
45
|
+
},
|
|
46
|
+
"source_location": {
|
|
47
|
+
"type": "string",
|
|
48
|
+
"format": "uri",
|
|
49
|
+
"description": "Legacy alias of the canonical citation pointer (kept for backward compatibility)."
|
|
50
|
+
},
|
|
51
|
+
"source_type": {
|
|
52
|
+
"type": "string",
|
|
53
|
+
"enum": [
|
|
54
|
+
"paper",
|
|
55
|
+
"journal_article",
|
|
56
|
+
"conference_paper",
|
|
57
|
+
"report",
|
|
58
|
+
"institution_page",
|
|
59
|
+
"dataset",
|
|
60
|
+
"thesis",
|
|
61
|
+
"news",
|
|
62
|
+
"web_page",
|
|
63
|
+
"pdf",
|
|
64
|
+
"other"
|
|
65
|
+
]
|
|
66
|
+
},
|
|
67
|
+
"authority_level": {
|
|
68
|
+
"type": "string",
|
|
69
|
+
"enum": [
|
|
70
|
+
"tier1_paper_doi",
|
|
71
|
+
"tier2_academic_database",
|
|
72
|
+
"tier3_professional_institution",
|
|
73
|
+
"tier4_news_secondary",
|
|
74
|
+
"tier5_general_web"
|
|
75
|
+
],
|
|
76
|
+
"description": "学术来源优先级(v3 方案 §9):Tier 1-5。fetch provider 不能提升此值。"
|
|
77
|
+
},
|
|
78
|
+
"discovered_by": {
|
|
79
|
+
"type": "string",
|
|
80
|
+
"examples": [
|
|
81
|
+
"scholar_search",
|
|
82
|
+
"web_search"
|
|
83
|
+
]
|
|
84
|
+
},
|
|
85
|
+
"discovery_provider": {
|
|
86
|
+
"type": "string",
|
|
87
|
+
"examples": [
|
|
88
|
+
"SCP",
|
|
89
|
+
"Scholar-KG",
|
|
90
|
+
"bing"
|
|
91
|
+
]
|
|
92
|
+
},
|
|
93
|
+
"source_locator": {
|
|
94
|
+
"type": "object",
|
|
95
|
+
"description": "精确定位引用内容在源中的位置(P1-03)。type/page/section/paragraph/quote_hash 均可选,但至少应能据此复核原文。",
|
|
96
|
+
"additionalProperties": false,
|
|
97
|
+
"properties": {
|
|
98
|
+
"type": {
|
|
99
|
+
"type": "string",
|
|
100
|
+
"enum": [
|
|
101
|
+
"page",
|
|
102
|
+
"section",
|
|
103
|
+
"paragraph",
|
|
104
|
+
"quote",
|
|
105
|
+
"supplement",
|
|
106
|
+
"other"
|
|
107
|
+
]
|
|
108
|
+
},
|
|
109
|
+
"page": {
|
|
110
|
+
"type": [
|
|
111
|
+
"string",
|
|
112
|
+
"integer",
|
|
113
|
+
"null"
|
|
114
|
+
]
|
|
115
|
+
},
|
|
116
|
+
"section": {
|
|
117
|
+
"type": "string"
|
|
118
|
+
},
|
|
119
|
+
"paragraph": {
|
|
120
|
+
"type": [
|
|
121
|
+
"string",
|
|
122
|
+
"integer",
|
|
123
|
+
"null"
|
|
124
|
+
]
|
|
125
|
+
},
|
|
126
|
+
"quote_hash": {
|
|
127
|
+
"type": "string",
|
|
128
|
+
"description": "SHA-256 或等价指纹,对引用的原文片段计算。"
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
"fetch": {
|
|
133
|
+
"$ref": "#/definitions/fetchProvenance"
|
|
134
|
+
},
|
|
135
|
+
"content_hash": {
|
|
136
|
+
"type": "string"
|
|
137
|
+
},
|
|
138
|
+
"dedupe_keys": {
|
|
139
|
+
"type": "object",
|
|
140
|
+
"additionalProperties": false,
|
|
141
|
+
"description": "去重键(v3 方案 §13):canonical_url / doi / title fingerprint / content_hash",
|
|
142
|
+
"properties": {
|
|
143
|
+
"canonical_url": {
|
|
144
|
+
"type": "string"
|
|
145
|
+
},
|
|
146
|
+
"doi": {
|
|
147
|
+
"type": "string"
|
|
148
|
+
},
|
|
149
|
+
"title_fingerprint": {
|
|
150
|
+
"type": "string"
|
|
151
|
+
},
|
|
152
|
+
"content_hash": {
|
|
153
|
+
"type": "string"
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
"status": {
|
|
158
|
+
"type": "string",
|
|
159
|
+
"enum": [
|
|
160
|
+
"DISCOVERED",
|
|
161
|
+
"FETCHED",
|
|
162
|
+
"VALID",
|
|
163
|
+
"PARTIAL",
|
|
164
|
+
"FAILED",
|
|
165
|
+
"DUPLICATE",
|
|
166
|
+
"INVALID"
|
|
167
|
+
]
|
|
168
|
+
},
|
|
169
|
+
"extensions": {
|
|
170
|
+
"type": "object",
|
|
171
|
+
"description": "结构化扩展字段的统一容器(P1-01)。未列入本 schema 的字段必须放在这里,禁止在顶层新增属性。",
|
|
172
|
+
"additionalProperties": true
|
|
173
|
+
},
|
|
174
|
+
"doi_verified": {
|
|
175
|
+
"type": "boolean",
|
|
176
|
+
"description": "True when the DOI resolved against Crossref/DataCite and the registered title matches (engine.citation_check)."
|
|
177
|
+
},
|
|
178
|
+
"retracted": {
|
|
179
|
+
"type": "boolean",
|
|
180
|
+
"description": "True when the registry marks this work as retracted."
|
|
181
|
+
}
|
|
182
|
+
},
|
|
183
|
+
"definitions": {
|
|
184
|
+
"fetchProvenance": {
|
|
185
|
+
"type": "object",
|
|
186
|
+
"additionalProperties": false,
|
|
187
|
+
"description": "Fetch Provenance(v3 方案 §6,P1-06):清洗服务只是读取路径,真正的证据来源仍是原始 URL/论文。fetch_status 必填:只有 FETCH_VALID(或规则确认的 FETCH_PARTIAL)可进入证据提取。",
|
|
188
|
+
"required": [
|
|
189
|
+
"fetch_status"
|
|
190
|
+
],
|
|
191
|
+
"properties": {
|
|
192
|
+
"original_url": {
|
|
193
|
+
"type": "string",
|
|
194
|
+
"format": "uri"
|
|
195
|
+
},
|
|
196
|
+
"resolved_url": {
|
|
197
|
+
"type": "string",
|
|
198
|
+
"format": "uri"
|
|
199
|
+
},
|
|
200
|
+
"fetch_method": {
|
|
201
|
+
"type": "string",
|
|
202
|
+
"enum": [
|
|
203
|
+
"native",
|
|
204
|
+
"smart_web_fetch"
|
|
205
|
+
]
|
|
206
|
+
},
|
|
207
|
+
"fetch_provider": {
|
|
208
|
+
"type": "string",
|
|
209
|
+
"enum": [
|
|
210
|
+
"builtin",
|
|
211
|
+
"jina_reader",
|
|
212
|
+
"markdown_new",
|
|
213
|
+
"defuddle",
|
|
214
|
+
"raw_html",
|
|
215
|
+
"pdf_parser"
|
|
216
|
+
]
|
|
217
|
+
},
|
|
218
|
+
"fetch_status": {
|
|
219
|
+
"type": "string",
|
|
220
|
+
"enum": [
|
|
221
|
+
"FETCH_VALID",
|
|
222
|
+
"FETCH_PARTIAL",
|
|
223
|
+
"FETCH_FAILED"
|
|
224
|
+
]
|
|
225
|
+
},
|
|
226
|
+
"fetched_at": {
|
|
227
|
+
"type": "string",
|
|
228
|
+
"format": "date-time"
|
|
229
|
+
},
|
|
230
|
+
"content_hash": {
|
|
231
|
+
"type": "string"
|
|
232
|
+
},
|
|
233
|
+
"content_length": {
|
|
234
|
+
"type": "integer",
|
|
235
|
+
"minimum": 0
|
|
236
|
+
},
|
|
237
|
+
"raw_size": {
|
|
238
|
+
"type": "integer",
|
|
239
|
+
"minimum": 0
|
|
240
|
+
},
|
|
241
|
+
"clean_size": {
|
|
242
|
+
"type": "integer",
|
|
243
|
+
"minimum": 0
|
|
244
|
+
},
|
|
245
|
+
"compression_ratio": {
|
|
246
|
+
"type": "number",
|
|
247
|
+
"minimum": 0,
|
|
248
|
+
"maximum": 1
|
|
249
|
+
},
|
|
250
|
+
"fallback_used": {
|
|
251
|
+
"type": "boolean",
|
|
252
|
+
"default": false
|
|
253
|
+
},
|
|
254
|
+
"fallback_chain": {
|
|
255
|
+
"type": "array",
|
|
256
|
+
"items": {
|
|
257
|
+
"type": "string"
|
|
258
|
+
},
|
|
259
|
+
"description": "实际尝试过的 provider 降级链(按顺序)。"
|
|
260
|
+
},
|
|
261
|
+
"content": {
|
|
262
|
+
"type": "string",
|
|
263
|
+
"description": "清洗后的正文(Markdown/文本),仅 FETCH_VALID/PARTIAL 时携带。"
|
|
264
|
+
},
|
|
265
|
+
"status_code": {
|
|
266
|
+
"type": "integer",
|
|
267
|
+
"description": "最终响应 HTTP 状态码(含 redirect 后)。"
|
|
268
|
+
},
|
|
269
|
+
"content_type": {
|
|
270
|
+
"type": "string",
|
|
271
|
+
"description": "最终响应的 Content-Type,如 text/html; charset=utf-8、application/pdf。"
|
|
272
|
+
},
|
|
273
|
+
"charset": {
|
|
274
|
+
"type": "string"
|
|
275
|
+
},
|
|
276
|
+
"response_headers": {
|
|
277
|
+
"type": "object",
|
|
278
|
+
"additionalProperties": {
|
|
279
|
+
"type": "string"
|
|
280
|
+
},
|
|
281
|
+
"description": "最终响应头(供审计,不参与证据判断)。"
|
|
282
|
+
},
|
|
283
|
+
"validation": {
|
|
284
|
+
"type": "object",
|
|
285
|
+
"additionalProperties": true,
|
|
286
|
+
"description": "Fetch Validation Gate 结果(validate_fetch_result 输出)。",
|
|
287
|
+
"properties": {
|
|
288
|
+
"passed": {
|
|
289
|
+
"type": "boolean"
|
|
290
|
+
},
|
|
291
|
+
"checks": {
|
|
292
|
+
"type": "object",
|
|
293
|
+
"additionalProperties": {
|
|
294
|
+
"type": [
|
|
295
|
+
"boolean",
|
|
296
|
+
"null"
|
|
297
|
+
]
|
|
298
|
+
}
|
|
299
|
+
},
|
|
300
|
+
"issues": {
|
|
301
|
+
"type": "array",
|
|
302
|
+
"items": {
|
|
303
|
+
"type": "string"
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://eduevidence.dev/schemas/v2/analysis-plan.schema.json",
|
|
4
|
+
"title": "AnalysisPlan",
|
|
5
|
+
"description": "Separately versioned analysis plan owning design_id (the StudyDesign does NOT reference the plan, avoiding a circular Design↔AnalysisPlan reference).",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"analysis_plan_id", "design_id", "dataset_ids", "primary_analysis",
|
|
10
|
+
"secondary_analyses", "assumption_checks", "preregistered",
|
|
11
|
+
"created_at", "extensions"
|
|
12
|
+
],
|
|
13
|
+
"properties": {
|
|
14
|
+
"analysis_plan_id": { "type": "string", "pattern": "^APL-" },
|
|
15
|
+
"design_id": { "type": "string", "pattern": "^DSN-" },
|
|
16
|
+
"dataset_ids": {
|
|
17
|
+
"type": "array",
|
|
18
|
+
"items": { "type": "string", "pattern": "^DAT-" },
|
|
19
|
+
"uniqueItems": true
|
|
20
|
+
},
|
|
21
|
+
"primary_analysis": { "type": "string", "minLength": 1 },
|
|
22
|
+
"secondary_analyses": { "type": "array", "items": { "type": "string" } },
|
|
23
|
+
"assumption_checks": { "type": "array", "items": { "type": "string" } },
|
|
24
|
+
"preregistered": { "type": "boolean" },
|
|
25
|
+
"created_at": { "type": "string", "format": "date-time" },
|
|
26
|
+
"extensions": { "type": "object" }
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://eduevidence.dev/schemas/v2/analysis-run.schema.json",
|
|
4
|
+
"title": "AnalysisRun",
|
|
5
|
+
"description": "One auditable analysis execution. Advanced results enter only with explicit provider/software/parameter provenance; Native Core never fabricates p-values or effect estimates it cannot compute.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"analysis_run_id", "analysis_plan_id", "dataset_ids", "status",
|
|
10
|
+
"outputs", "assumption_checks", "created_at", "extensions"
|
|
11
|
+
],
|
|
12
|
+
"properties": {
|
|
13
|
+
"analysis_run_id": { "type": "string", "pattern": "^ANL-" },
|
|
14
|
+
"analysis_plan_id": { "type": "string", "pattern": "^APL-" },
|
|
15
|
+
"dataset_ids": {
|
|
16
|
+
"type": "array",
|
|
17
|
+
"items": { "type": "string", "pattern": "^DAT-" },
|
|
18
|
+
"uniqueItems": true
|
|
19
|
+
},
|
|
20
|
+
"status": { "type": "string", "enum": ["completed", "validated", "failed", "capability_unavailable"] },
|
|
21
|
+
"outputs": { "type": "object" },
|
|
22
|
+
"assumption_checks": {
|
|
23
|
+
"type": "array",
|
|
24
|
+
"items": {
|
|
25
|
+
"type": "object",
|
|
26
|
+
"additionalProperties": true,
|
|
27
|
+
"required": ["check", "result"]
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"created_at": { "type": "string", "format": "date-time" },
|
|
31
|
+
"extensions": { "type": "object" }
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://eduevidence.dev/schemas/v2/claim.schema.json",
|
|
4
|
+
"title": "Claim",
|
|
5
|
+
"description": "A project-local interpretive statement. Claims keep stable Project-local IDs across edits; supersession is recorded via status, never silent re-identification.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"claim_id", "text", "claim_type", "primary_outcome_ids", "scope",
|
|
10
|
+
"created_in_revision", "status", "extensions"
|
|
11
|
+
],
|
|
12
|
+
"properties": {
|
|
13
|
+
"claim_id": { "type": "string", "pattern": "^(CLM-|C-)" },
|
|
14
|
+
"text": { "type": "string", "minLength": 1 },
|
|
15
|
+
"claim_type": { "type": "string", "minLength": 1 },
|
|
16
|
+
"primary_outcome_ids": {
|
|
17
|
+
"type": "array",
|
|
18
|
+
"items": { "type": "string", "pattern": "^OUT-" },
|
|
19
|
+
"uniqueItems": true
|
|
20
|
+
},
|
|
21
|
+
"scope": { "type": "string", "minLength": 1 },
|
|
22
|
+
"created_in_revision": { "type": "integer", "minimum": 1 },
|
|
23
|
+
"status": { "type": "string", "enum": ["active", "superseded", "retired"] },
|
|
24
|
+
"extensions": { "type": "object" }
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://eduevidence.dev/schemas/v2/dataset-asset.schema.json",
|
|
4
|
+
"title": "DatasetAsset",
|
|
5
|
+
"description": "Immutable project dataset asset. Raw bytes are copied once into datasets/raw/ and hashed; raw user data is never inserted into the Shared Research Library. Project datasets are Project-private by default.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"dataset_id", "project_id", "design_id", "source_type",
|
|
10
|
+
"path", "content_hash", "schema_summary", "row_count", "column_count",
|
|
11
|
+
"variable_dictionary", "privacy_classification", "consent_metadata",
|
|
12
|
+
"deidentification_status", "created_at", "extensions"
|
|
13
|
+
],
|
|
14
|
+
"properties": {
|
|
15
|
+
"dataset_id": { "type": "string", "pattern": "^DAT-" },
|
|
16
|
+
"project_id": { "type": "string", "pattern": "^PRJ-" },
|
|
17
|
+
"design_id": { "type": "string", "pattern": "^DSN-" },
|
|
18
|
+
"source_type": { "type": "string", "minLength": 1 },
|
|
19
|
+
"path": { "type": "string", "minLength": 1 },
|
|
20
|
+
"content_hash": { "type": "string", "minLength": 1 },
|
|
21
|
+
"schema_summary": { "type": "object" },
|
|
22
|
+
"row_count": { "type": ["integer", "null"], "minimum": 0 },
|
|
23
|
+
"column_count": { "type": ["integer", "null"], "minimum": 0 },
|
|
24
|
+
"variable_dictionary": {
|
|
25
|
+
"type": ["object", "null"],
|
|
26
|
+
"additionalProperties": { "type": "string" }
|
|
27
|
+
},
|
|
28
|
+
"privacy_classification": {
|
|
29
|
+
"type": "string",
|
|
30
|
+
"enum": ["public", "internal", "confidential", "restricted"]
|
|
31
|
+
},
|
|
32
|
+
"consent_metadata": { "type": ["object", "null"] },
|
|
33
|
+
"deidentification_status": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"enum": ["not_done", "in_progress", "done", "not_required"]
|
|
36
|
+
},
|
|
37
|
+
"created_at": { "type": "string", "format": "date-time" },
|
|
38
|
+
"extensions": { "type": "object" }
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://eduevidence.dev/schemas/v2/decision-snapshot.schema.json",
|
|
4
|
+
"title": "DecisionSnapshot",
|
|
5
|
+
"description": "A revision-bound adjudication. Snapshots are immutable: changing the graph later never mutates an old snapshot file.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"decision_snapshot_id", "decision", "confidence_label",
|
|
10
|
+
"confidence_score_internal", "claim_assessments", "key_evidence_links",
|
|
11
|
+
"key_risks", "applicability_boundary", "missing_evidence",
|
|
12
|
+
"graph_revision", "policy_versions", "created_at", "extensions"
|
|
13
|
+
],
|
|
14
|
+
"properties": {
|
|
15
|
+
"decision_snapshot_id": { "type": "string", "pattern": "^DEC-" },
|
|
16
|
+
"decision": {
|
|
17
|
+
"type": "string",
|
|
18
|
+
"enum": ["ADOPT", "PILOT", "REJECT", "INSUFFICIENT_EVIDENCE"]
|
|
19
|
+
},
|
|
20
|
+
"confidence_label": {
|
|
21
|
+
"type": "string",
|
|
22
|
+
"enum": ["High", "Moderate", "Low", "Insufficient"]
|
|
23
|
+
},
|
|
24
|
+
"confidence_score_internal": { "type": "number", "minimum": 0, "maximum": 1 },
|
|
25
|
+
"claim_assessments": {
|
|
26
|
+
"type": "object",
|
|
27
|
+
"additionalProperties": {
|
|
28
|
+
"type": "object",
|
|
29
|
+
"additionalProperties": true
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"key_evidence_links": {
|
|
33
|
+
"type": "array",
|
|
34
|
+
"items": { "type": "string", "minLength": 1 }
|
|
35
|
+
},
|
|
36
|
+
"key_risks": {
|
|
37
|
+
"type": "array",
|
|
38
|
+
"items": { "type": "string" }
|
|
39
|
+
},
|
|
40
|
+
"applicability_boundary": { "type": "string", "minLength": 1 },
|
|
41
|
+
"missing_evidence": {
|
|
42
|
+
"type": "array",
|
|
43
|
+
"items": { "type": "string" }
|
|
44
|
+
},
|
|
45
|
+
"graph_revision": { "type": "integer", "minimum": 1 },
|
|
46
|
+
"policy_versions": {
|
|
47
|
+
"type": "object",
|
|
48
|
+
"additionalProperties": { "type": "string" }
|
|
49
|
+
},
|
|
50
|
+
"created_at": { "type": "string", "format": "date-time" },
|
|
51
|
+
"extensions": { "type": "object" }
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://eduevidence.dev/schemas/v2/evidence-link.schema.json",
|
|
4
|
+
"title": "EvidenceLink",
|
|
5
|
+
"description": "The contextual interpretation connecting a Finding to a Claim. relation_to_claim (does this result support the Claim?) and decision_implication (what does it mean for the current decision?) are strictly separate semantics.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"evidence_link_id", "finding_id", "claim_id", "relation_to_claim",
|
|
10
|
+
"decision_implication", "directness", "applicability",
|
|
11
|
+
"reasoning_note", "created_in_revision", "extensions"
|
|
12
|
+
],
|
|
13
|
+
"properties": {
|
|
14
|
+
"evidence_link_id": { "type": "string", "pattern": "^LNK-" },
|
|
15
|
+
"finding_id": { "type": "string", "pattern": "^FND-" },
|
|
16
|
+
"claim_id": { "type": "string", "pattern": "^(CLM-|C-)" },
|
|
17
|
+
"relation_to_claim": { "type": "string", "enum": ["support", "contradict", "neutral"] },
|
|
18
|
+
"decision_implication": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"enum": ["support_adoption", "oppose_adoption", "conditional", "neutral"]
|
|
21
|
+
},
|
|
22
|
+
"directness": { "type": "integer", "minimum": 0, "maximum": 2 },
|
|
23
|
+
"applicability": {
|
|
24
|
+
"type": "object",
|
|
25
|
+
"additionalProperties": false,
|
|
26
|
+
"required": ["scope_match"],
|
|
27
|
+
"properties": {
|
|
28
|
+
"scope_match": { "type": "string", "enum": ["direct", "partial", "mismatch"] },
|
|
29
|
+
"target_population": { "type": "string" },
|
|
30
|
+
"context_notes": { "type": "string" },
|
|
31
|
+
"extensions": { "type": "object" }
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"reasoning_note": { "type": "string", "minLength": 1 },
|
|
35
|
+
"created_in_revision": { "type": "integer", "minimum": 1 },
|
|
36
|
+
"extensions": { "type": "object" }
|
|
37
|
+
}
|
|
38
|
+
}
|